diff --git a/netbox/circuits/migrations/0003_provider_32bit_asn_support.py b/netbox/circuits/migrations/0003_provider_32bit_asn_support.py new file mode 100644 index 000000000..f1010064e --- /dev/null +++ b/netbox/circuits/migrations/0003_provider_32bit_asn_support.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-07-13 19:24 +from __future__ import unicode_literals + +import dcim.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('circuits', '0002_auto_20160622_1821'), + ] + + operations = [ + migrations.AlterField( + model_name='provider', + name='asn', + field=dcim.fields.ASNField(blank=True, null=True, verbose_name=b'ASN'), + ), + ] diff --git a/netbox/circuits/models.py b/netbox/circuits/models.py index d785eb1f2..c7c60378e 100644 --- a/netbox/circuits/models.py +++ b/netbox/circuits/models.py @@ -1,6 +1,7 @@ from django.core.urlresolvers import reverse from django.db import models +from dcim.fields import ASNField from dcim.models import Site, Interface from utilities.models import CreatedUpdatedModel @@ -12,7 +13,7 @@ class Provider(CreatedUpdatedModel): """ name = models.CharField(max_length=50, unique=True) slug = models.SlugField(unique=True) - asn = models.PositiveIntegerField(blank=True, null=True, verbose_name='ASN') + asn = ASNField(blank=True, null=True, verbose_name='ASN') account = models.CharField(max_length=30, blank=True, verbose_name='Account number') portal_url = models.URLField(blank=True, verbose_name='Portal') noc_contact = models.TextField(blank=True, verbose_name='NOC contact') diff --git a/netbox/dcim/fields.py b/netbox/dcim/fields.py index e00b1115f..6b45f6e65 100644 --- a/netbox/dcim/fields.py +++ b/netbox/dcim/fields.py @@ -1,11 +1,20 @@ from netaddr import EUI, mac_unix_expanded from django.core.exceptions import ValidationError +from django.core.validators import MinValueValidator, MaxValueValidator from django.db import models from .formfields import MACAddressFormField +class ASNField(models.BigIntegerField): + description = "32-bit ASN field" + default_validators = [ + MinValueValidator(1), + MaxValueValidator(4294967295), + ] + + class mac_unix_expanded_uppercase(mac_unix_expanded): word_fmt = '%.2X' diff --git a/netbox/dcim/migrations/0009_site_32bit_asn_support.py b/netbox/dcim/migrations/0009_site_32bit_asn_support.py new file mode 100644 index 000000000..c93340cea --- /dev/null +++ b/netbox/dcim/migrations/0009_site_32bit_asn_support.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-07-13 19:24 +from __future__ import unicode_literals + +import dcim.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('dcim', '0008_device_remove_primary_ip'), + ] + + operations = [ + migrations.AlterField( + model_name='site', + name='asn', + field=dcim.fields.ASNField(blank=True, null=True, verbose_name=b'ASN'), + ), + ] diff --git a/netbox/dcim/models.py b/netbox/dcim/models.py index c51714a71..8bf97224c 100644 --- a/netbox/dcim/models.py +++ b/netbox/dcim/models.py @@ -11,7 +11,7 @@ from extras.rpc import RPC_CLIENTS from utilities.fields import NullableCharField from utilities.models import CreatedUpdatedModel -from .fields import MACAddressField +from .fields import ASNField, MACAddressField RACK_FACE_FRONT = 0 RACK_FACE_REAR = 1 @@ -145,7 +145,7 @@ class Site(CreatedUpdatedModel): name = models.CharField(max_length=50, unique=True) slug = models.SlugField(unique=True) facility = models.CharField(max_length=50, blank=True) - asn = models.PositiveIntegerField(blank=True, null=True, verbose_name='ASN') + asn = ASNField(blank=True, null=True, verbose_name='ASN') physical_address = models.CharField(max_length=200, blank=True) shipping_address = models.CharField(max_length=200, blank=True) comments = models.TextField(blank=True)