@@ -17,10 +17,12 @@ limitations under the License.
1717package  api
1818
1919import  (
20+ 	"context" 
2021	"crypto/tls" 
2122	"crypto/x509" 
2223	"fmt" 
2324	"net/http" 
25+ 	"strconv" 
2426	"time" 
2527
2628	httptransport "github.com/go-openapi/runtime/client" 
@@ -30,6 +32,7 @@ import (
3032
3133	"github.com/netbox-community/go-netbox/v3/netbox/client/extras" 
3234	"github.com/netbox-community/netbox-operator/pkg/netbox/interfaces" 
35+ 	"k8s.io/client-go/tools/metrics" 
3336)
3437
3538const  (
@@ -64,6 +67,20 @@ func (r *NetboxClient) VerifyNetboxConfiguration() error {
6467	return  nil 
6568}
6669
70+ type  InstrumentedRoundTripper  struct  {
71+ 	Transport  http.RoundTripper 
72+ }
73+ 
74+ func  (irt  * InstrumentedRoundTripper ) RoundTrip (req  * http.Request ) (* http.Response , error ) {
75+ 	resp , err  :=  irt .Transport .RoundTrip (req )
76+ 	if  err  !=  nil  {
77+ 		return  nil , err 
78+ 	}
79+ 
80+ 	metrics .RequestResult .Increment (context .TODO (), strconv .Itoa (resp .StatusCode ), req .Method , req .Host )
81+ 	return  resp , nil 
82+ }
83+ 
6784func  GetNetboxClient () (* NetboxClient , error ) {
6885
6986	logger  :=  log .StandardLogger ()
@@ -92,8 +109,10 @@ func GetNetboxClient() (*NetboxClient, error) {
92109	}
93110
94111	httpClient  :=  & http.Client {
95- 		Transport : & http.Transport {
96- 			TLSClientConfig : tlsConfig ,
112+ 		Transport : & InstrumentedRoundTripper {
113+ 			Transport : & http.Transport {
114+ 				TLSClientConfig : tlsConfig ,
115+ 			},
97116		},
98117		Timeout : time .Second  *  time .Duration (RequestTimeout ),
99118	}
0 commit comments