Skip to content

Commit 1725815

Browse files
committed
get return codes for ipconfig at least
1 parent c820189 commit 1725815

File tree

2 files changed

+14
-7
lines changed

2 files changed

+14
-7
lines changed

cns/restserver/ipam.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ func (service *HTTPRestService) requestIPConfigHandler(w http.ResponseWriter, r
3434
Message: returnMessage,
3535
},
3636
}
37+
w.Header().Set(cns_return_code, reserveResp.Response.ReturnCode.String())
3738
err = service.Listener.Encode(w, &reserveResp)
3839
logger.ResponseEx(service.Name+operationName, ipconfigRequest, reserveResp, reserveResp.Response.ReturnCode, err)
3940
return
@@ -51,6 +52,7 @@ func (service *HTTPRestService) requestIPConfigHandler(w http.ResponseWriter, r
5152
},
5253
PodIpInfo: podIPInfo,
5354
}
55+
w.Header().Set(cns_return_code, reserveResp.Response.ReturnCode.String())
5456
err = service.Listener.Encode(w, &reserveResp)
5557
logger.ResponseEx(service.Name+operationName, ipconfigRequest, reserveResp, reserveResp.Response.ReturnCode, err)
5658
return
@@ -69,7 +71,7 @@ func (service *HTTPRestService) requestIPConfigHandler(w http.ResponseWriter, r
6971
},
7072
PodIpInfo: podIPInfo,
7173
}
72-
74+
w.Header().Set(cns_return_code, reserveResp.Response.ReturnCode.String())
7375
err = service.Listener.Encode(w, &reserveResp)
7476
logger.ResponseEx(service.Name+operationName, ipconfigRequest, reserveResp, reserveResp.Response.ReturnCode, err)
7577
}
@@ -84,6 +86,7 @@ func (service *HTTPRestService) releaseIPConfigHandler(w http.ResponseWriter, r
8486
Message: err.Error(),
8587
}
8688
logger.Errorf("releaseIPConfigHandler decode failed becase %v, release IP config info %s", resp.Message, req)
89+
w.Header().Set(cns_return_code, resp.ReturnCode.String())
8790
err = service.Listener.Encode(w, &resp)
8891
logger.ResponseEx(service.Name, req, resp, resp.ReturnCode, err)
8992
return
@@ -100,6 +103,7 @@ func (service *HTTPRestService) releaseIPConfigHandler(w http.ResponseWriter, r
100103
ReturnCode: returnCode,
101104
Message: message,
102105
}
106+
w.Header().Set(cns_return_code, resp.ReturnCode.String())
103107
err = service.Listener.Encode(w, &resp)
104108
logger.ResponseEx(service.Name, req, resp, resp.ReturnCode, err)
105109
}

cns/restserver/metrics.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,7 @@ var httpRequestLatency = prometheus.NewHistogramVec(
1717
//nolint:gomnd // default bucket consts
1818
Buckets: prometheus.ExponentialBuckets(0.001, 2, 15), // 1 ms to ~16 seconds
1919
},
20-
// TODO(rbtr):
21-
// there's no easy way to extract the HTTP response code from the response due to the
22-
// way the restserver is designed currently - but we should fix that and include "code" as
23-
// a label and value.
24-
[]string{"url", "verb"},
20+
[]string{"url", "verb", cns_return_code},
2521
)
2622

2723
var ipAssignmentLatency = prometheus.NewHistogram(
@@ -51,11 +47,18 @@ func init() {
5147
)
5248
}
5349

50+
const cns_return_code = "cns-return-code"
51+
52+
//Every http response is 200 so we really want cns response code.
53+
//Hard tto do with middleware unless we derserialize the responses but making it an explit header works around it.
54+
//if that doesn't work we could have a seperate countervec just for response codes.
55+
5456
func newHandlerFuncWithHistogram(handler http.HandlerFunc, histogram *prometheus.HistogramVec) http.HandlerFunc {
5557
return func(w http.ResponseWriter, req *http.Request) {
5658
start := time.Now()
5759
defer func() {
58-
histogram.WithLabelValues(req.URL.RequestURI(), req.Method).Observe(time.Since(start).Seconds())
60+
code := w.Header().Get(cns_return_code)
61+
histogram.WithLabelValues(req.URL.RequestURI(), req.Method, code).Observe(time.Since(start).Seconds())
5962
}()
6063
handler(w, req)
6164
}

0 commit comments

Comments
 (0)