added ipv6 support in models

This commit is contained in:
Tor Martin Slåen committed 2011-05-08 21:43:35 +02:00
1 parent 080acaaec3
commit ef6e8e9cf6
3 files changed
+54 -7

No files matched your search

+9 -5
View File
@@ -1,13 +1,18 @@
from mdb.models import *
from django.contrib import admin
class Ip6AddressInline(admin.TabularInline):
model = Ip6Address
extra = 0
class InterfaceInline(admin.TabularInline):
inlines = [Ip6AddressInline]
model = Interface
extra = 0
class HostAdmin(admin.ModelAdmin):
inlines = [InterfaceInline]
list_display = ['hostname', 'brand', 'owner', 'host_type', 'location', 'serial_number', 'in_domain', 'created_date']
list_display = ['hostname', 'brand', 'owner', 'host_type', 'location', 'serial_number', 'in_domain', 'created_date', 'ipv6_enabled']
readonly_fields = ['kerberos_principal_name', 'kerberos_principal_created_date',
'kerberos_principal_created']
fieldsets = (
@@ -20,13 +25,10 @@ class HostAdmin(admin.ModelAdmin):
}),
('Domain and Kerberos Information', {
'description' : 'If this host is a member of the LDAP domain, you need to tick the request kerberos principal checkbox. A principal will then be created for the host.',
# 'classes' : [ 'collapse' ],
'classes' : [ 'collapse' ],
'fields' : ( 'request_kerberos_principal', 'kerberos_principal_created',
('kerberos_principal_name', 'kerberos_principal_created_date'))
}),
# ('Operating System and Architecture', {
# 'fields' : ('virtual' )
# })
)
class Ip4AddressInline(admin.TabularInline):
@@ -69,6 +71,8 @@ class HostTypeAdmin(admin.ModelAdmin):
admin.site.register(Domain, DomainAdmin)
admin.site.register(Host, HostAdmin)
admin.site.register(Ip4Subnet, SubnetAdmin)
admin.site.register(Ip6Subnet)
admin.site.register(Ip6Address)
admin.site.register(Nameserver)
admin.site.register(MailExchange)
admin.site.register(OperatingSystem)
+44 -1
View File
@@ -194,6 +194,27 @@ class DhcpConfig(models.Model):
def __unicode__(self):
return self.name
class Ip6Subnet(models.Model):
name = models.CharField(max_length=255)
network = models.CharField(max_length=255)
netmask = models.IntegerField(default=64)
created_date = models.DateTimeField(auto_now_add=True)
domain_name = models.CharField(max_length=255, editable=False)
domain_nameservers = models.ManyToManyField(Nameserver)
domain_soa = models.CharField(max_length=255)
domain_ttl = models.IntegerField(default=60)
domain_serial = models.IntegerField(default=1)
domain_active_serial = models.IntegerField(default=0, editable=False)
domain_refresh = models.IntegerField(default=28800)
domain_retry = models.IntegerField(default=7200)
domain_expire = models.IntegerField(default=604800)
domain_minimum_ttl = models.IntegerField(default=86400)
domain_admin = models.EmailField()
domain_filename = models.CharField(max_length=256)
def __unicode__(self):
return self.network + " (" + self.name + ")"
class Ip4Subnet(models.Model):
name = models.CharField(max_length=256)
@@ -316,6 +337,7 @@ class Ip4Address(models.Model):
assigned_to_host.short_description = "Assigned to Host"
class HostType(models.Model):
host_type = models.CharField(max_length=64)
description = models.CharField(max_length=1024)
@@ -370,6 +392,12 @@ class Host(models.Model):
in_domain.short_description = "in domains"
def ipv6_enabled(self):
for interface in self.interface_set.all():
if interface.ipv6_enabled():
return True
return False
def get_ip_addresses(self):
addresses = []
for interface in self.interface_set.all():
@@ -395,7 +423,22 @@ class Interface(models.Model):
domain = models.ForeignKey(Domain)
def __unicode__(self):
return self.macaddr
return "%s (%s on %s)" % (self.macaddr, self.name, self.host.hostname)
def ipv6_enabled(self):
return self.ip6address_set.count() > 0;
class Ip6Address(models.Model):
subnet = models.ForeignKey(Ip6Subnet)
address = models.CharField(max_length=64)
interface = models.ForeignKey(Interface)
def full_address(self):
return self.subnet.network + self.address
def __unicode__(self):
return "%s (%s on %s)" % (self.full_address(), self.interface.name, self.interface.host.hostname)
@receiver(post_save, sender=Ip4Subnet)
def create_ips_for_subnet(sender, instance, created, **kwargs):
+1 -1
View File
@@ -16,7 +16,7 @@ DATABASES = {
'NAME': 'dns_mdb', # Or path to database file if using sqlite3.
'USER': 'dns_mdb', # Not used with sqlite3.
'PASSWORD': 'dns_mdb', # Not used with sqlite3.
'HOST': 'snes', # Set to empty string for localhost. Not used with sqlite3.
'HOST': 'hel', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '3306', # Set to empty string for default. Not used with sqlite3.
}
}