def add_node(logger, args): logger.debug("action: add_node") p = argparse.ArgumentParser(usage="%(prog)s add_node IP PLUGIN [-u USERNAME] [-p PASSWORD]") p.add_argument("ip") p.add_argument("plugin") p.add_argument("-u", "--username") p.add_argument("-p", "--password") o, a = p.parse_known_args(args) logger.debug("action opts: %s", o) logger.debug("action args: %s", a) if o.ip and o.plugin: try: load_plugin(o.plugin) except ImportError: logger.error("%s is not a valid plugin", o.plugin) sys_exit(1) node = Node(o.ip, o.plugin) try: session.add(node) node.username = o.username node.password = o.password session.commit() logger.info("Node added") except IntegrityError: logger.error("Node already exists") sys_exit(1)
def update_probe(logger, args): logger.debug("action: update_probe") p = argparse.ArgumentParser(usage="%(prog)s update_probe [options]") p.add_argument("id", help="probe id") p.add_argument("-n", help="name") p.add_argument("-x", help="x position") p.add_argument("-y", help="y position") p.add_argument("-z", help="z position") p.add_argument("-w", help="width") p.add_argument("-d", help="depth") p.add_argument("-t", help="height") o, a = p.parse_known_args(args) logger.debug("action opts: %s", o) logger.debug("action args: %s", a) if o.n is o.x is o.y is o.z is o.w is o.d is o.t is None: p.print_help() else: probe = session.query(Probe).filter(Probe.id == o.id).first() # Try name if id doesn't match any probes if not probe: logger.info("No probe found with id '%s', trying to match by name", o.id) probe = session.query(Probe).filter(Probe.name == o.id).all() if len(probe) > 1: logger.error("%d probes found with the name '%s', use ID to update each in turn", len(probe), o.id) for p in probe: print p sys_exit(1) probe = probe[0] if probe: if o.n: probe.name = o.n if o.x: probe.x = o.x if o.y: probe.y = o.y if o.z: probe.z = o.z if o.w: probe.w = o.w if o.t: probe.h = o.t if o.d: probe.d = o.d session.commit() logger.info("Probe updated") else: logger.error("No probe found with id or name '%s'", o.id)
def remove_node(logger, args): logger.debug("action: remove_node") p = argparse.ArgumentParser(usage="%(prog)s remove_node IP") p.add_argument("ip") o, a = p.parse_known_args(args) logger.debug("action opts: %s", o) logger.debug("action args: %s", a) if o.ip: node = session.query(Node).filter(Node.ip == o.ip).first() if node: session.delete(node) session.commit() logger.info("Node removed") else: logger.error("No node found with the IP %s", o.ip)
# Update timestamp probe = session.query(Probe).filter(Probe.id == serial).first() if (probe.name <> n): print("Mismatch of name against node %s vs %s" % (probe.name, n)) probe.lastcontact = datetime.now() probe.remote_name = name probe.node = source_node row = [serial, value, n, x, y, h, w] snapshot_list.append(row) # Commit outside loop session.commit() # Prep config c = dict(config.items("room")) for i in ['offset_x', 'offset_y', 'offset_z', 'unit_x', 'unit_y', 'unit_z', 'height', 'width']: c[i] = int(c[i]) for i in ['reverse_x', 'reverse_y', 'reverse_z']: c[i] = config.getboolean("room", i) #Dump data dump_prep = { "config" : c, "probes" : snapshot_list, }