go/svc/leasifier: fixes, add statusz table
diff --git a/go/svc/leasifier/main.go b/go/svc/leasifier/main.go
index 9b2cf5a..09090b6 100644
--- a/go/svc/leasifier/main.go
+++ b/go/svc/leasifier/main.go
@@ -138,14 +138,16 @@
 }
 
 type service struct {
-	leaseFile string
-	leaseC    chan chan []lease
+	leaseFile          string
+	leaseRefreshString string
+	leaseRefresh       time.Duration
+	leaseC             chan chan []lease
 }
 
 func (s *service) work(ctx context.Context) {
 	leases := []lease{}
 
-	ticker := time.NewTicker(30 * time.Second)
+	ticker := time.NewTicker(s.leaseRefresh)
 	start := make(chan struct{}, 1)
 	start <- struct{}{}
 
@@ -189,7 +191,9 @@
 	s.leaseC <- c
 	leases := <-c
 
-	res := &hpb.LeasifierLeasesResponse{}
+	res := &hpb.LeasifierLeasesResponse{
+		Leases: make([]*hpb.LeasifierLease, len(leases)),
+	}
 
 	for i, l := range leases {
 		res.Leases[i] = &hpb.LeasifierLease{
@@ -207,8 +211,15 @@
 	}
 
 	flag.StringVar(&s.leaseFile, "lease_file", "/var/db/dhcpd.leases", "Location of leasefile")
+	flag.StringVar(&s.leaseRefreshString, "lease_refresh", "1m", "How often to refresh leases")
 	flag.Parse()
 
+	d, err := time.ParseDuration(s.leaseRefreshString)
+	if err != nil {
+		glog.Exit(err)
+	}
+	s.leaseRefresh = d
+
 	m := mirko.New()
 	if err := m.Listen(); err != nil {
 		glog.Exitf("Could not listen: %v", err)
@@ -216,6 +227,7 @@
 
 	hpb.RegisterLeasifierServer(m.GRPC(), s)
 
+	s.setupStatusz(m)
 	go s.work(m.Context())
 
 	if err := m.Serve(); err != nil {