From 2fb16f969ea36f1dcea5a1d5e2565efc3caf7826 Mon Sep 17 00:00:00 2001 From: Jason Novinger Date: Mon, 3 Mar 2025 09:57:36 -0600 Subject: [PATCH] Adds L2VPN.status field, associated L2VPNStatusChoices, and migration --- netbox/vpn/choices.py | 14 ++++++++++++++ netbox/vpn/migrations/0008_add_l2vpn_status.py | 16 ++++++++++++++++ netbox/vpn/models/l2vpn.py | 8 +++++++- 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 netbox/vpn/migrations/0008_add_l2vpn_status.py diff --git a/netbox/vpn/choices.py b/netbox/vpn/choices.py index 7aea90232..3c38a9901 100644 --- a/netbox/vpn/choices.py +++ b/netbox/vpn/choices.py @@ -267,3 +267,17 @@ class L2VPNTypeChoices(ChoiceSet): TYPE_EPLAN, TYPE_EPTREE ) + + +class L2VPNStatusChoices(ChoiceSet): + key = 'L2VPN.status' + + STATUS_PLANNED = 'planned' + STATUS_ACTIVE = 'active' + STATUS_DECOMMISSIONED = 'decommissioned' + + CHOICES = [ + (STATUS_PLANNED, _('Planned')), + (STATUS_ACTIVE, _('Active')), + (STATUS_DECOMMISSIONED, _('Decommissioned')), + ] diff --git a/netbox/vpn/migrations/0008_add_l2vpn_status.py b/netbox/vpn/migrations/0008_add_l2vpn_status.py new file mode 100644 index 000000000..8b0267e45 --- /dev/null +++ b/netbox/vpn/migrations/0008_add_l2vpn_status.py @@ -0,0 +1,16 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('vpn', '0007_natural_ordering'), + ] + + operations = [ + migrations.AddField( + model_name='l2vpn', + name='status', + field=models.CharField(default='active', max_length=50), + ), + ] diff --git a/netbox/vpn/models/l2vpn.py b/netbox/vpn/models/l2vpn.py index 3e562531d..05d6ff4fb 100644 --- a/netbox/vpn/models/l2vpn.py +++ b/netbox/vpn/models/l2vpn.py @@ -7,7 +7,7 @@ from django.utils.translation import gettext_lazy as _ from core.models import ObjectType from netbox.models import NetBoxModel, PrimaryModel from netbox.models.features import ContactsMixin -from vpn.choices import L2VPNTypeChoices +from vpn.choices import L2VPNStatusChoices, L2VPNTypeChoices from vpn.constants import L2VPN_ASSIGNMENT_MODELS __all__ = ( @@ -33,6 +33,12 @@ class L2VPN(ContactsMixin, PrimaryModel): max_length=50, choices=L2VPNTypeChoices ) + status = models.CharField( + verbose_name=_('status'), + max_length=50, + choices=L2VPNStatusChoices, + default=L2VPNStatusChoices.STATUS_ACTIVE, + ) identifier = models.BigIntegerField( verbose_name=_('identifier'), null=True,