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 {