def clean_int_v4netmaskbit(self): ip = self.cleaned_data.get("int_ipv4address") nw = self.cleaned_data.get("int_v4netmaskbit") if not nw or not ip: return nw network = IPNetwork('%s/%s' % (ip, nw)) used_networks = [] qs = models.Interfaces.objects.all() if self.instance.id: qs = qs.exclude(id=self.instance.id) for iface in qs: if iface.int_v4netmaskbit: used_networks.append( IPNetwork('%s/%s' % ( iface.int_ipv4address, iface.int_v4netmaskbit, ))) for alias in iface.alias_set.all(): if alias.alias_v4netmaskbit: used_networks.append( IPNetwork('%s/%s' % ( alias.alias_v4address, alias.alias_v4netmaskbit, ))) for unet in used_networks: if unet.overlaps(network): raise forms.ValidationError( _("The network %s is already in use by another NIC.") % (network.masked(), )) return nw
def clean_int_v4netmaskbit(self): ip = self.cleaned_data.get("int_ipv4address") nw = self.cleaned_data.get("int_v4netmaskbit") if not nw or not ip: return nw network = IPNetwork('%s/%s' % (ip, nw)) used_networks = [] qs = models.Interfaces.objects.all() if self.instance.id: qs = qs.exclude(id=self.instance.id) for iface in qs: if iface.int_v4netmaskbit: used_networks.append( IPNetwork('%s/%s' % ( iface.int_ipv4address, iface.int_v4netmaskbit, )) ) for alias in iface.alias_set.all(): if alias.alias_v4netmaskbit: used_networks.append( IPNetwork('%s/%s' % ( alias.alias_v4address, alias.alias_v4netmaskbit, )) ) for unet in used_networks: if unet.overlaps(network): raise forms.ValidationError( _("The network %s is already in use by another NIC.") % ( network.masked(), ) ) return nw
def clean_alias_v4netmaskbit(self): vip = self.cleaned_data.get("alias_vip") ip = self.cleaned_data.get("alias_v4address") nw = self.cleaned_data.get("alias_v4netmaskbit") if not nw or not ip: return nw network = IPNetwork('%s/%s' % (ip, nw)) if vip: if not network.overlaps(IPNetwork('%s/%s' % (vip, nw))): raise forms.ValidationError(_( 'Virtual IP is not in the same network' )) if ( self.instance.id and self.instance.alias_interface.int_interface.startswith('carp') ): return nw used_networks = [] qs = models.Interfaces.objects.all().exclude( int_interface__startswith='carp' ) if self.instance.id: qs = qs.exclude(id=self.instance.alias_interface.id) elif self.parent.instance.id: qs = qs.exclude(id=self.parent.instance.id) for iface in qs: if iface.int_v4netmaskbit: used_networks.append( IPNetwork('%s/%s' % ( iface.int_ipv4address, iface.int_v4netmaskbit, )) ) for alias in iface.alias_set.all(): if alias.alias_v4netmaskbit: used_networks.append( IPNetwork('%s/%s' % ( alias.alias_v4address, alias.alias_v4netmaskbit, )) ) for unet in used_networks: if unet.overlaps(network): raise forms.ValidationError( _("The network %s is already in use by another NIC.") % ( network.masked(), ) ) return nw
def clean_alias_v4netmaskbit(self): vip = self.cleaned_data.get("alias_vip") ip = self.cleaned_data.get("alias_v4address") nw = self.cleaned_data.get("alias_v4netmaskbit") if not nw or not ip: return nw network = IPNetwork('%s/%s' % (ip, nw)) if vip: if not network.overlaps(IPNetwork('%s/%s' % (vip, nw))): raise forms.ValidationError(_( 'Virtual IP is not in the same network' )) if ( self.instance.id and self.instance.alias_interface.int_interface.startswith('carp') ): return nw used_networks = [] qs = models.Interfaces.objects.all().exclude( int_interface__startswith='carp' ) if self.instance.id: qs = qs.exclude(id=self.instance.alias_interface.id) elif self.parent.instance.id: qs = qs.exclude(id=self.parent.instance.id) for iface in qs: if iface.int_v4netmaskbit: used_networks.append( IPNetwork('%s/%s' % ( iface.int_ipv4address, iface.int_v4netmaskbit, )) ) for alias in iface.alias_set.all(): if alias.alias_v4netmaskbit: used_networks.append( IPNetwork('%s/%s' % ( alias.alias_v4address, alias.alias_v4netmaskbit, )) ) for unet in used_networks: if unet.overlaps(network): raise forms.ValidationError( _("The network %s is already in use by another NIC.") % ( network.masked(), ) ) return nw