diff --git a/src/lib/bind-cfgd/python/bind-cfgd.py b/src/lib/bind-cfgd/python/bind-cfgd.py index ad4abd58f1..ba17cac2e9 100644 --- a/src/lib/bind-cfgd/python/bind-cfgd.py +++ b/src/lib/bind-cfgd/python/bind-cfgd.py @@ -18,6 +18,7 @@ class ConfigManager: self.cc.group_subscribe("ConfigManager") self.cc.group_subscribe("Boss") self.config = ConfigData() + self.db_filename = "/tmp/parkinglot.db" self.running = False def notify_boss(self): @@ -25,6 +26,7 @@ class ConfigManager: def add_zone(self, zone_name): self.config.add_zone(zone_name, "todo") + self.write_config() print("sending update zone add") self.cc.group_sendmsg({"zone_added": zone_name }, "ParkingLot") @@ -33,20 +35,25 @@ class ConfigManager: print("sending update zone del") self.cc.group_sendmsg({"zone_deleted": zone_name }, "ParkingLot") - def read_config(self, filename): + def read_config(self): print("Reading config") try: - file = open(filename, 'rb'); + file = open(self.db_filename, 'rb'); self.config = pickle.load(file) + file.close() except IOError as ioe: print("No config file found, starting with empty config") except EOFError as eofe: print("Config file empty, starting with empty config") - def write_config(self, filename): + def write_config(self): print("Writing config") - file = open(filename, 'wb'); - pickle.dump(self.config, file) + try: + file = open(self.db_filename, 'wb'); + pickle.dump(self.config, file) + file.close() + except IOError as ioe: + print("Unable to write config file; configuration not stored") def handle_msg(self, msg): """return answer message""" @@ -99,21 +106,20 @@ def signal_handler(signal, frame): if __name__ == "__main__": print("Hello, BIND10 world!") - db_file = "/tmp/parkinglot.db" try: cm = ConfigManager() signal.signal(signal.SIGINT, signal_handler) signal.signal(signal.SIGTERM, signal_handler) - cm.read_config(db_file) + cm.read_config() # do loading here if necessary cm.notify_boss() cm.run() - cm.write_config(db_file) + cm.write_config() except ISC.CC.SessionError as se: print("Error creating config manager, " "is the command channel daemon running?") except KeyboardInterrupt as kie: print("Got ctrl-c, save config and exit") - cm.write_config(db_file) + cm.write_config()