Skip to content

Commit

Permalink
ipv6
Browse files Browse the repository at this point in the history
  • Loading branch information
fridgei committed May 6, 2013
1 parent 2860045 commit b5c3079
Show file tree
Hide file tree
Showing 9 changed files with 36 additions and 24 deletions.
4 changes: 3 additions & 1 deletion cyder/core/ctnr/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from cyder.cydhcp.range.models import Range
from cyder.cydhcp.workgroup.models import Workgroup


class Ctnr(models.Model, ObjectUrlMixin):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=100, unique=True)
Expand Down Expand Up @@ -40,7 +41,8 @@ def build_legacy_class(self):
self.name, range_.start_str, range_.end_str)
build_str += "\tmatch hardware;\n"
build_str += "}\n"
dynamic_clients = DynamicInterface.objects.filter(range=range_, ctnr=self)
dynamic_clients = DynamicInterface.objects.filter(
range=range_, ctnr=self)
for client in dynamic_clients:
client.build_subclass(self.name)
return build_str
Expand Down
14 changes: 3 additions & 11 deletions cyder/cydhcp/build/subnet.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,11 @@
import os

from django.core.exceptions import ObjectDoesNotExist

import chili_manage

from cyder.core.ctnr.models import Ctnr
from cyder.cydhcp.interface.static_intr.models import StaticInterface
from cyder.cydhcp.interface.dynamic_intr.models import DynamicInterface
from cyder.cydhcp.network.models import Network, NetworkKeyValue
from cyder.cydhcp.network.models import Network
from cyder.cydhcp.network.utils import calc_networks
#from cyder.cydhcp.interface.dynamic_intr.models import DynamicIntrfKeyValue
#from django.core.exceptions import ObjectDoesNotExist, ValidationError
#from cyder.cydhcp.vlan.models import Vlan
from cyder.cydhcp.range.models import Range, RangeKeyValue
from cyder.cydhcp.vrf.models import Vrf
from cyder.cydhcp.workgroup.models import Workgroup, WorkgroupKeyValue
from cyder.cydhcp.workgroup.models import Workgroup


def main():
Expand Down
2 changes: 1 addition & 1 deletion cyder/cydhcp/interface/dynamic_intr/models.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
from django.db import models

from cyder.base.constants import IP_TYPES, IP_TYPE_4, IP_TYPE_6
from cyder.cydhcp.keyvalue.base_option import CommonOption
from cyder.cydhcp.range.models import Range
from cyder.cydhcp.utils import join_dhcp_args
Expand Down Expand Up @@ -68,6 +67,7 @@ def get_fqdn(self):
else:
return "{0}.{1}".format(self.system.name, self.domain.name)


class DynamicIntrKeyValue(CommonOption):
intr = models.ForeignKey(DynamicInterface, null=False)

Expand Down
23 changes: 23 additions & 0 deletions cyder/cydhcp/interface/static_intr/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,29 @@ def build_subclass(self, contained_range, allowed):
return "subclass \"{0}:{1}:{2}\" 1:{3};\n".format(
allowed.name, contained_range.start_str, contained_range.end_str)

def clean(self, *args, **kwargs):
self.mac = self.mac.lower()
if not self.system:
raise ValidationError(
"An interface means nothing without it's system."
)

from cyder.cydns.ptr.models import PTR

if PTR.objects.filter(ip_str=self.ip_str, name=self.fqdn).exists():
raise ValidationError('A PTR already uses this Name and IP')
if AddressRecord.objects.filter(ip_str=self.ip_str, fqdn=self.fqdn
).exists():
raise ValidationError('An A record already uses this Name and IP')

if kwargs.pop('validate_glue', True):
self.check_glue_status()

self.update_reverse_domain()
self.check_no_ns_soa_condition(self.reverse_domain)
super(StaticInterface, self).clean(validate_glue=False,
ignore_interface=True)

def check_glue_status(self):
"""If this interface is a 'glue' record for a Nameserver instance,
do not allow modifications to this record. The Nameserver will
Expand Down
8 changes: 4 additions & 4 deletions cyder/cydhcp/network/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ def clean(self):
except ipaddr.NetmaskValueError, e:
raise ValidationError("Bad Netmask {0}".format(e))
if (Network.objects.filter(ip_upper=ip_upper,
ip_lower=ip_lower).exists()):
ip_lower=ip_lower).exists()):
raise ValidationError("This network has already been allocated.")
return cleaned_data

Expand All @@ -59,7 +59,7 @@ class NetworkForm_network(forms.Form):
network = forms.CharField(
required=True,
help_text='Enter the address and mask in '
'CIDR notation (e.g. 10.0.0.0/24)')
'CIDR notation (e.g. 10.0.0.0/24)')
ip_type = forms.ChoiceField(choices=IP_TYPES.items())

def clean(self):
Expand All @@ -80,11 +80,12 @@ def clean(self):
except ipaddr.NetmaskValueError, e:
raise ValidationError("Bad Netmask {0}".format(e))
if (Network.objects.filter(ip_upper=ip_upper,
ip_lower=ip_lower).exists()):
ip_lower=ip_lower).exists()):
raise ValidationError("This network has already been allocated.")
# TODO add parent calculaitons
return cleaned_data


class NetworkForm_site(forms.Form):
site = forms.ModelChoiceField(
queryset=Site.objects.all(),
Expand All @@ -99,7 +100,6 @@ def clean(self):
return cleaned_data



class NetworkForm_vlan(forms.Form):
vlan = forms.ModelChoiceField(
queryset=Vlan.objects.all(),
Expand Down
5 changes: 1 addition & 4 deletions cyder/cydhcp/network/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from cyder.base.constants import IP_TYPES, IP_TYPE_4, IP_TYPE_6
from cyder.base.mixins import ObjectUrlMixin
from cyder.cydhcp.keyvalue.base_option import CommonOption
from cyder.cydhcp.utils import IPFilter, start_end_filter, join_dhcp_args
from cyder.cydhcp.utils import IPFilter, join_dhcp_args
from cyder.cydhcp.vlan.models import Vlan
from cyder.cydhcp.keyvalue.utils import AuxAttr
from cyder.cydhcp.site.models import Site
Expand Down Expand Up @@ -189,12 +189,9 @@ def get_related_sites(self, related_networks):
return set([network.site for network in related_networks])

def build_subnet(self, raw=False):
from cyder.cydhcp.interface.static_intr.models import StaticInterface
self.update_network()
statements = self.networkkeyvalue_set.filter(is_statement=True)
options = self.networkkeyvalue_set.filter(is_option=True)
ip_start = int(self.network.network)
ip_end = int(self.network.broadcast)
ranges = self.range_set.all()
if self.ip_type == IP_TYPE_4:
build_str = "\nsubnet {0} netmask {1} {{\n".format(
Expand Down
1 change: 0 additions & 1 deletion cyder/cydhcp/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

from cyder.base.constants import IP_TYPE_4, IP_TYPE_6

from django.core.exceptions import ValidationError
from django.db.models import Q


Expand Down
2 changes: 0 additions & 2 deletions cyder/cydhcp/vrf/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
from cyder.cydhcp.network.models import Network
from cyder.cydhcp.keyvalue.models import KeyValue

from itertools import chain

class Vrf(models.Model, ObjectUrlMixin):
id = models.AutoField(primary_key=True)
Expand Down Expand Up @@ -34,7 +33,6 @@ def eg_metadata(self):
{'name': 'network', 'datatype': 'string', 'editable': False},
]}


def build_vrf(self):
build_str = ''
dynamic_clients = self.dynamicinterface_set.all()
Expand Down
1 change: 1 addition & 0 deletions cyder/cydhcp/workgroup/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from cyder.cydhcp.keyvalue.base_option import CommonOption
from cyder.cydhcp.utils import join_dhcp_args


class Workgroup(models.Model, ObjectUrlMixin):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=100, unique=True)
Expand Down

0 comments on commit b5c3079

Please sign in to comment.