class Host(BaseBackend): name = "Host" def __init__(self): BaseBackend.__init__(self, models.Host) self.ip = IP() self.user = User() def add(self, *args, **kwargs): (result, host) = self.get(hostname=kwargs['hostname']) if result: return (True, host) if not "ip" in kwargs.keys(): ## TODO: add dns cache try: kwargs['ip'] = gethostbyname(kwargs['hostname']) except: return (False, "gethostbyname failed for %s" % (kwargs['hostname'])) (result, ip) = self.ip.get(ip=kwargs['ip']) if not result: (result, ip) = self.ip.add(ip=kwargs['ip']) if not result: return (False, ip) (result, user) = self.user.get(username=kwargs['user']) if not result: (result, user) = self.user.add(username=kwargs['user']) if not result: return (False, user) host = models.Host( hostname=kwargs['hostname'], ip=ip, owner=user, ) host.save() return (True, host)
def __init__(self): BaseBackend.__init__(self, models.Host) self.ip = IP() self.user = User()