def network(self): """ Allow easy lookup of an SREG's network object if it exists """ if self.decommissioned: return None parents, _ = calc_networks_str("{0}/32".format(self.ip_str), self.ip_type) if not parents: return None else: return parents[-1]
def network(self): """ Allow easy lookup of an SREG's network object if it exists """ if self.decommissioned: return None parents, _ = calc_networks_str( "{0}/32".format(self.ip_str), self.ip_type ) if not parents: return None else: return parents[-1]
NetworkCls = ipaddr.IPv4Network if ip_type == "4" else ipaddr.IPv6Network try: ip = NetworkCls(ip_str).network network_str = str(NetworkCls(ip_str)) except ipaddr.AddressValueError: raise BadDirective("{0} isn't a valid " "IP address.".format(ip_str)) except ipaddr.NetmaskValueError, e: raise BadDirective("The netmask '{0}' doesn't make any sense.".format(e)) try: network = Network.objects.get(network_str=network_str) network_q = objects_to_Q([network]) site = network.site vlan = network.vlan except Network.DoesNotExist: parents, children = calc_networks_str(str(NetworkCls(ip_str)), ip_type) network_q = objects_to_Q(parents) | objects_to_Q(children) # Find the site. This will be the site of the smallest network that is # in parents or if there are no parents, the largest child. site = None vlan = None for parent in reversed(parents): if parent.site: site = parent.site vlan = parent.vlan break if not site: for child in children: if child.site:
network_str = str(NetworkCls(ip_str)) except ipaddr.AddressValueError: raise BadDirective("{0} isn't a valid " "IP address.".format(ip_str)) except ipaddr.NetmaskValueError, e: raise BadDirective( "The netmask '{0}' doesn't make any sense.".format(e) ) try: network = Network.objects.get(network_str=network_str) network_q = objects_to_Q([network]) site = network.site vlan = network.vlan except Network.DoesNotExist: parents, children = calc_networks_str(str(NetworkCls(ip_str)), ip_type) network_q = objects_to_Q(parents) | objects_to_Q(children) # Find the site. This will be the site of the smallest network that is # in parents or if there are no parents, the largest child. site = None vlan = None for parent in reversed(parents): if parent.site: site = parent.site vlan = parent.vlan break if not site: for child in children: if child.site: