Skip to content

Commit

Permalink
Fixes netbox-community#268: Added support for full 32-bit ASN space
Browse files Browse the repository at this point in the history
  • Loading branch information
jeremystretch committed Jul 13, 2016
1 parent 139ddec commit a2cfa7c
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 3 deletions.
21 changes: 21 additions & 0 deletions 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'),
),
]
3 changes: 2 additions & 1 deletion 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

Expand All @@ -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')
Expand Down
9 changes: 9 additions & 0 deletions 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'

Expand Down
21 changes: 21 additions & 0 deletions 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'),
),
]
4 changes: 2 additions & 2 deletions netbox/dcim/models.py
Expand Up @@ -11,7 +11,7 @@
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
Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit a2cfa7c

Please sign in to comment.