Skip to content

Commit 95775ea

Browse files
committed
feat: Add PortLayout model
1 parent 75273f1 commit 95775ea

File tree

2 files changed

+65
-0
lines changed

2 files changed

+65
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
from django.db import migrations, models
2+
import django.db.models.deletion
3+
4+
5+
class Migration(migrations.Migration):
6+
7+
dependencies = [
8+
('dcim', '0161_cabling_cleanup'),
9+
('netbox_cmdb', '0040_snmpcommunity_snmp'),
10+
]
11+
12+
operations = [
13+
migrations.CreateModel(
14+
name='PortLayout',
15+
fields=[
16+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)),
17+
('created', models.DateTimeField(auto_now_add=True, null=True)),
18+
('last_updated', models.DateTimeField(auto_now=True, null=True)),
19+
('name', models.CharField(max_length=64)),
20+
('label_name', models.CharField(max_length=64)),
21+
('logical_name', models.CharField(max_length=64)),
22+
('vendor_name', models.CharField(max_length=64)),
23+
('vendor_short_name', models.CharField(max_length=64)),
24+
('vendor_long_name', models.CharField(max_length=64)),
25+
('device_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_device_type', to='dcim.devicetype')),
26+
('network_role', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_network_role', to='dcim.devicerole')),
27+
],
28+
options={
29+
'abstract': False,
30+
},
31+
),
32+
]

netbox_cmdb/netbox_cmdb/models/interface.py

+33
Original file line numberDiff line numberDiff line change
@@ -160,3 +160,36 @@ def save(self, *args, **kwargs):
160160

161161
class Meta:
162162
unique_together = ("index", "parent_interface")
163+
164+
165+
class PortLayout(ChangeLoggedModel):
166+
"""A port layout configuration on a Network device."""
167+
168+
device_type = models.ForeignKey(
169+
to="dcim.DeviceType",
170+
related_name="%(class)s_device_type",
171+
on_delete=models.CASCADE,
172+
help_text="The hardware associated with this PortLayout",
173+
)
174+
network_role = models.ForeignKey(
175+
to="dcim.DeviceRole",
176+
related_name="%(class)s_network_role",
177+
on_delete=models.CASCADE,
178+
help_text="The specific network role this port layout is designed to support.",
179+
)
180+
name = models.CharField(max_length=64, help_text="The generic name assigned to the interface.")
181+
label_name = models.CharField(
182+
max_length=64, help_text="The physical label name of the interface on the device."
183+
)
184+
logical_name = models.CharField(
185+
max_length=64, help_text="The logical name used to identify the interface in the system."
186+
)
187+
vendor_name = models.CharField(
188+
max_length=64, help_text="The vendor-specific name of the interface."
189+
)
190+
vendor_short_name = models.CharField(
191+
max_length=64, help_text="The short vendor-specific name of the interface."
192+
)
193+
vendor_long_name = models.CharField(
194+
max_length=64, help_text="The long vendor-specific name of the interface."
195+
)

0 commit comments

Comments
 (0)