Exemplo n.º 1
0
    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()
Exemplo n.º 2
0
    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