def snap(self): dev = Device(host=self.hostname, user=user, password=password) dev.open() # get basic Node facts node = Node(self.snapshot, self.hostname) node.fqdn = dev.facts['fqdn'] node.hostname = dev.facts['hostname'] node.model = dev.facts['model'] node.personality = dev.facts['personality'] node.serialnumber = dev.facts['serialnumber'] node.switch_style = dev.facts['switch_style'] node.version = dev.facts['version'] node.uptime = dev.facts['RE0']['up_time'] node.reboot_reason = dev.facts['RE0']['last_reboot_reason'] roumiga.session.add(node) roumiga.session.flush() # do the ARP dance import jnpr.junos.op.arp raw_arp = jnpr.junos.op.arp.ArpTable(dev) for a in raw_arp.get(): arp_entry = ArpEntry.from_dict(snapshot, node, a) roumiga.session.add(arp_entry) self.arp.append(arp_entry) # do the BGP dance import jnpr.junos.op.bgppeer raw_bgp = jnpr.junos.op.bgppeer.BgpPeerTable(dev) for b in raw_bgp.get(): bgp_peer = BgpPeer.from_dict(snapshot, node, b) roumiga.session.add(bgp_peer) self.bgp.append(bgp_peer) dev.close()
if args.create_tables: roumiga.DeclarativeBase.metadata.create_all(roumiga.engine, checkfirst=True) if args.take_snapshot: snapshot = roumiga.Snapshot() roumiga.session.add(snapshot) roumiga.session.flush() for node in args.junos_node: ncj = NodeCaptureJnpr(snapshot, node, user, password) ncj.snap() roumiga.session.commit() if args.summary: s = roumiga.Snapshot.from_id(args.summary) print "Snapshot ID: %-5d taken at: %s" % (s.id, str(s.time)[:19]) for node in Node.from_snapshot(s): print " ", node.hostname if args.list_snapshots: for s in roumiga.Snapshot.list(): print "Snapshot ID: %-5d taken at: %s" % (s.id, str(s.time)[:19]) for node in Node.from_snapshot(s): print " Node: ", node.hostname if args.compare: s1 = roumiga.Snapshot.from_id(args.compare[0]) s2 = roumiga.Snapshot.from_id(args.compare[1]) nodes1 = {} for n in Node.from_snapshot(s1): nodes1[n.fqdn] = n