summaryrefslogtreecommitdiff
path: root/examples/dhcpleases.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/dhcpleases.py')
-rwxr-xr-xexamples/dhcpleases.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/examples/dhcpleases.py b/examples/dhcpleases.py
new file mode 100755
index 0000000..c172dc2
--- /dev/null
+++ b/examples/dhcpleases.py
@@ -0,0 +1,53 @@
+#!/usr/bin/env python
+# netdhcpleases - print leases info for given virtual network
+
+import libvirt
+import sys
+import time
+
+def usage():
+ print "Usage: %s [URI] NETWORK" % sys.argv[0]
+ print " Print leases info for a given virtual network"
+
+uri = None
+network = None
+args = len(sys.argv)
+
+if args == 2:
+ network = sys.argv[1]
+elif args == 3:
+ uri = sys.argv[1]
+ network = sys.argv[2]
+else:
+ usage()
+ sys.exit(2)
+
+conn = libvirt.open(uri)
+if conn == None:
+ print "Unable to open connection to libvirt"
+ sys.exit(1)
+
+try:
+ net = conn.networkLookupByName(network)
+except libvirt.libvirtError:
+ print "Network %s not found" % network
+ sys.exit(0)
+
+leases = net.DHCPLeases();
+if (leases == None):
+ print "Failed to get leases for %s" % net.name()
+ sys.exit(0)
+
+def toIPAddrType(addrType):
+ if addrType == libvirt.VIR_IP_ADDR_TYPE_IPV4:
+ return "ipv4"
+ elif addrType == libvirt.VIR_IP_ADDR_TYPE_IPV6:
+ return "ipv6"
+
+print " {0:20} {1:18} {2:9} {3:25} {4:15} {5}".format("Expiry Time", "MAC address", "Protocol", "IP address", "Hostname", "Client ID or DUID")
+print "-"*115
+
+for lease in leases:
+ print " {0:20}".format(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(lease['expirytime']))),
+ print "{0:18} {1:9}".format(lease['mac'], toIPAddrType(lease['type'])),
+ print "{0:<25} {1:15} {2}".format("{}/{}".format(lease['ipaddr'], lease['prefix']), lease['hostname'], lease['clientid'])