fix debugging

This commit is contained in:
Wolfgang Hottgenroth
2007-11-16 09:19:26 +01:00
parent c9e6c2f6b0
commit b370beb829
8 changed files with 63 additions and 36 deletions

View File

@ -1,14 +1,13 @@
CC=gcc
CFLAGS=-g
all: yadync
md5.o: md5.c md5.h
yadync.o: yadync.c md5.h
%.o : %.c
$(CC) -c $(CFLAGS) $< -o $@
yadync: yadync.o md5.o
clean:
-rm *.o yadync

View File

@ -38,10 +38,10 @@ int main(int argc, char **argv) {
md5_state_t state;
md5_init(&state);
md5_append(&state, buf, strlen(buf));
md5_append(&state, (const unsigned char *) buf, strlen(buf));
char c[16];
md5_finish(&state, c);
md5_finish(&state, (unsigned char *) c);
sprintf(buf, "%s %d %02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
dynid, t,

View File

@ -22,9 +22,6 @@ class MyCmd(cmd.Cmd):
self.intro = "Hello at the yadyn cli\n"
self.prompt = "yadyn> "
def do_hello(self, l):
self.stdout.write("DO: %s\n" % l)
def do_list(self, l):
try:
parts = l.split(' ')
@ -89,6 +86,20 @@ class MyCmd(cmd.Cmd):
except LocalMyCmdException, e:
self.stdout.write("Failure: %s\n" % str(e.msg))
def do_debug(self, l):
try:
parts = l.split(' ')
if len(parts) != 1:
raise LocalMyCmdException("illegal number of arguments")
if parts[0] == 'on':
Logger.debugEnable()
elif parts[0] == 'off':
Logger.debugDisable()
else:
raise LocalMyCmdException("illegal argument")
except LocalMyCmdException, e:
self.stdout.write("Failure: %s\n" % str(e.msg))
def do_quit(self, l):
self.stdout.write("Bye\n")

View File

@ -24,7 +24,8 @@ class DnsHandler(threading.Thread):
while(True):
msg = self.msgQueue.get()
name = msg.name
dynid = msg.dynid
name = msg.name
zone = msg.zone
address = msg.address
@ -32,15 +33,15 @@ class DnsHandler(threading.Thread):
if self.statusMap.has_key(fullName):
if self.statusMap[fullName] != address:
self.deleteARR(name, zone, self.statusMap[fullName])
self.insertARR(name, zone, address)
self.deleteARR(dynid, name, zone, self.statusMap[fullName])
self.insertARR(dynid, name, zone, address)
self.statusMap[fullName] = address
else:
self.insertARR(name, zone, address)
self.insertARR(dynid, name, zone, address)
self.statusMap[fullName] = address
def insertARR(self, name, zone, address):
def insertARR(self, dynid, name, zone, address):
# send A-RR insertion for ip to DNS server
rr = dns.rdtypes.IN.A.A(dns.rdataclass.IN, dns.rdatatype.A, address)
u = dns.update.Update(zone, keyring=self.keyring)
@ -49,13 +50,15 @@ class DnsHandler(threading.Thread):
if r.rcode() != 0:
# failure
Logger.log("failure when inserting A-RR %s -> %s into %s" % (name, address, zone))
Logger.log("failure for %s when inserting A-RR %s -> %s into %s" %
(dynid, name, address, zone))
else:
# success
Logger.log("insert ARR %s -> %s into %s" % (name, address, zone))
Logger.log("insert for %s ARR %s -> %s into %s" %
(dynid, name, address, zone))
def deleteARR(self, name, zone, address):
def deleteARR(self, dynid, name, zone, address):
# send A-RR deletion for ip to DNS server
rr = dns.rdtypes.IN.A.A(dns.rdataclass.IN, dns.rdatatype.A, address)
u = dns.update.Update(zone, keyring=self.keyring)
@ -64,10 +67,12 @@ class DnsHandler(threading.Thread):
if r.rcode() != 0:
# failure
Logger.log("failure when deleting A-RR %s -> %s from %s" % (name, address, zone))
Logger.log("failure for %s when deleting A-RR %s -> %s from %s" %
(dynid, name, address, zone))
else:
# success
Logger.log("delete ARR %s -> %s from %s" % (name, address, zone))
Logger.log("delete for %s ARR %s -> %s from %s" %
(dynid, name, address, zone))

View File

@ -14,7 +14,7 @@ class DynHandler(threading.Thread):
event = self.eventq.get()
try:
event.prepare()
Logger.log("Processing event %s" % str(event))
Logger.debug("Processing event %s" % str(event))
event.process()
except Event.IllegalEventException, e:
Logger.log("Some failure: %s" % e.msg)
Logger.log("Some failure: %s when processing event %s" % (e.msg, str(event)))

View File

@ -14,15 +14,15 @@ class Expirer(threading.Thread):
def run(self):
while True:
Logger.log("Expiring ...")
Logger.debug("Expiring ...")
currentTime = int(time.time())
for entry in self.entries.values():
Logger.log("Checking %s" % str(entry))
Logger.debug("Checking %s" % str(entry))
if entry.lastEventTime != 0 and entry.lastEventTime + self.eventLifeTime < currentTime:
Logger.log("Entry %s expired" % entry.dynid)
Logger.debug("Entry %s expired" % entry.dynid)
entry.lastEventTime = 0
entry.address = self.nullAddress
Logger.log("Set in DNS: %s -> %s" % (entry.name, entry.address))
Logger.debug("Set in DNS: %s -> %s" % (entry.name, entry.address))
try:
self.dnsq.put_nowait(entry)
except Queue.Full, e:

View File

@ -2,25 +2,29 @@ import syslog
class Logger(object):
@staticmethod
def log(data):
syslog.syslog(syslog.LOG_INFO, data)
if Logger.debugFlag:
print data
@staticmethod
def debug(data):
syslog.syslog(syslog.LOG_DEBUG, data)
if Logger.debugFlag:
syslog.syslog(syslog.LOG_DEBUG, data)
print data
@staticmethod
def openlog():
syslog.openlog('hsc', syslog.LOG_PID, syslog.LOG_LOCAL0)
syslog.openlog('yadyn', syslog.LOG_PID, syslog.LOG_LOCAL0)
@staticmethod
def debugEnable():
Logger.debugFlag = True
log = staticmethod(log)
debug = staticmethod(debug)
openlog = staticmethod(openlog)
debugEnable = staticmethod(debugEnable)
@staticmethod
def debugDisable():
Logger.debugFlag = False
debugFlag = False

View File

@ -49,38 +49,46 @@ Logger.openlog()
if DEBUG:
Logger.debugEnable()
Logger.log("yadyn starting")
entries = shelve.open(ENTRIES_FILE, flag='c', writeback=True)
statusMap = shelve.open(STATUSMAP_FILE, flag='c', writeback=True)
Logger.debug("Shelves opened")
try:
eventq = Queue.Queue()
dnsq = Queue.Queue()
Logger.debug("Queues created")
Event.Event.setParams(entries, MSG_TIME_CORRIDOR, dnsq)
dynHandler = DynHandler.DynHandler(eventq)
dynHandler.start()
Logger.debug("DynHandler started")
dnsHandler = DnsHandler.DnsHandler(dnsq, TSIGKEY, NAMESERVER, TTL, statusMap)
dnsHandler.start()
Logger.debug("DnsHandler started")
dynReceiver = DynReceiver.DynReceiver(("", 8053), eventq)
dynReceiver.start()
Logger.debug("DynReceiver started")
expirer = Expirer.Expirer(entries, EVENT_LIFE_TIME, NULL_ADDRESS, EXPIRY_PERIOD, dnsq)
expirer.start()
Logger.debug("Expirer started")
cmdReceiver = CmdReceiver.CmdReceiver(("", 8023), entries, ADMIN_PWD)
cmdReceiver.start()
Logger.debug("CmdReceiver started")
Logger.log("yadyn running")
while True:
entries.sync()
statusMap.sync()
time.sleep(10)
finally:
Logger.log("Closing shelves")
entries.close()
statusMap.close()
Logger.debug("Shelves closed")
Logger.log("yadyn terminating")