def _get_host(self, host_id): """Helper method for getting the DnsOwner for the given host ID, which can either be an IP address, an A record or a CName alias.""" finder = Find(self.db, self.default_zone) tmp = host_id.split(".") if host_id.find(":") == -1 and tmp[-1].isdigit(): # host_id is an IP owner_id = finder.find_target_by_parsing(host_id, IP_NUMBER) else: owner_id = finder.find_target_by_parsing(host_id, DNS_OWNER) # Check if it is a Cname, if so: update the owner_id try: cname_record = CNameRecord(self.db) cname_record.find_by_cname_owner_id(owner_id) owner_id = cname_record.target_owner_id except Errors.NotFoundError: pass dns_owner = DnsOwner.DnsOwner(self.db) try: dns_owner.find(owner_id) except Errors.NotFoundError: raise CerebrumError('Unknown host: %s' % host_id) return dns_owner
def _get_host(self, host_id): """Helper method for getting the DnsOwner for the given host ID, which can either be an IP address, an A record or a CName alias.""" finder = Find(self.db, self.default_zone) tmp = host_id.split(".") if host_id.find(":") == -1 and tmp[-1].isdigit(): # host_id is an IP owner_id = finder.find_target_by_parsing(host_id, IP_NUMBER) else: owner_id = finder.find_target_by_parsing(host_id, DNS_OWNER) # Check if it is a Cname, if so: update the owner_id try: cname_record = CNameRecord(self.db) cname_record.find_by_cname_owner_id(owner_id) owner_id = cname_record.target_owner_id except Errors.NotFoundError: pass dns_owner = DnsOwner.DnsOwner(self.db) try: dns_owner.find(owner_id) except Errors.NotFoundError: raise CerebrumError('Unknown host: %r' % host_id) return dns_owner
def has_adresses_in_use(self): """Check whether or not there are any IPs in use on this subnet. Return 'True' if there are. """ # Need to import Utils here, since Utils imports this module, # and we cannot have circular module dependencies. from Cerebrum.modules.dns.Utils import Find default_zone = self.const.DnsZone( getattr(cereconf, 'DNS_DEFAULT_ZONE', 'uio')) find = Find(self._db, default_zone) return bool(find.find_used_ips(self.subnet_ip))
def check_reserved_addresses_in_use(self): """TODO: DOC """ # Need to import Utils here, since Utils imports this module, # and we cannot have circular module dependencies. from Cerebrum.modules.dns.Utils import Find default_zone = self.const.DnsZone(getattr(cereconf, 'DNS_DEFAULT_ZONE', 'uio')) find = Find(self._db, default_zone) ip_number = IPNumber.IPNumber(self._db) ip_number.clear() res_adr_in_use = [] for row in ip_number.find_in_range(self.ip_min, self.ip_max): current_address = long(row['ipnr']) if current_address in self.reserved_adr: res_adr_in_use.append(IPCalc.long_to_ip(current_address)) if res_adr_in_use: res_adr_in_use.sort() raise SubnetError( "The following reserved ip's are already in use " + "on (new?) subnet %s/%s: " % (self.subnet_ip, self.subnet_mask) + "'%s'." % (', '.join(res_adr_in_use)))
def has_adresses_in_use(self): """Check whether or not there are any IPs in use on this subnet. Return 'True' if there are. """ # Need to import Utils here, since Utils imports this module, # and we cannot have circular module dependencies. from Cerebrum.modules.dns.Utils import Find default_zone = self.const.DnsZone(getattr(cereconf, 'DNS_DEFAULT_ZONE', 'uio')) find = Find(self._db, default_zone) if find.find_used_ips(self.subnet_ip): return True else: return False