@@ -24,6 +24,7 @@ import (
2424
2525 "github.com/go-logr/logr"
2626 "github.com/oracle/cluster-api-provider-oci/api/v1beta2"
27+ "github.com/oracle/cluster-api-provider-oci/cloud/metrics"
2728 "github.com/oracle/cluster-api-provider-oci/cloud/services/base"
2829 "github.com/oracle/cluster-api-provider-oci/cloud/services/compute"
2930 "github.com/oracle/cluster-api-provider-oci/cloud/services/computemanagement"
@@ -133,7 +134,7 @@ func (c *ClientProvider) GetRegion() (string, error) {
133134}
134135
135136func (c * ClientProvider ) createClients (region string ) (OCIClients , error ) {
136- vcnClient , err := c .createVncClient (region , c .ociAuthConfigProvider , c .Logger )
137+ vcnClient , err := c .createVcnClient (region , c .ociAuthConfigProvider , c .Logger )
137138 if err != nil {
138139 return OCIClients {}, err
139140 }
@@ -182,16 +183,18 @@ func (c *ClientProvider) createClients(region string) (OCIClients, error) {
182183 }, err
183184}
184185
185- func (c * ClientProvider ) createVncClient (region string , ociAuthConfigProvider common.ConfigurationProvider , logger * logr.Logger ) (* core.VirtualNetworkClient , error ) {
186+ func (c * ClientProvider ) createVcnClient (region string , ociAuthConfigProvider common.ConfigurationProvider , logger * logr.Logger ) (* core.VirtualNetworkClient , error ) {
186187 vcnClient , err := core .NewVirtualNetworkClientWithConfigurationProvider (ociAuthConfigProvider )
187188 if err != nil {
188189 logger .Error (err , "unable to create OCI VCN Client" )
189190 return nil , err
190191 }
191192 vcnClient .SetRegion (region )
193+ dispatcher := vcnClient .HTTPClient
194+ vcnClient .HTTPClient = metrics .NewHttpRequestDispatcherWrapper (dispatcher , region )
192195
193196 if c .certOverride != nil {
194- if client , ok := vcnClient . HTTPClient .(* http.Client ); ok {
197+ if client , ok := dispatcher .(* http.Client ); ok {
195198 err = c .setCerts (client )
196199 if err != nil {
197200 logger .Error (err , "unable to create OCI VCN Client" )
@@ -218,9 +221,11 @@ func (c *ClientProvider) createNLbClient(region string, ociAuthConfigProvider co
218221 return nil , err
219222 }
220223 nlbClient .SetRegion (region )
224+ dispatcher := nlbClient .HTTPClient
225+ nlbClient .HTTPClient = metrics .NewHttpRequestDispatcherWrapper (dispatcher , region )
221226
222227 if c .certOverride != nil {
223- if client , ok := nlbClient . HTTPClient .(* http.Client ); ok {
228+ if client , ok := dispatcher .(* http.Client ); ok {
224229 err = c .setCerts (client )
225230 if err != nil {
226231 logger .Error (err , "unable to create OCI NetworkLoadBalancer Client" )
@@ -246,9 +251,11 @@ func (c *ClientProvider) createLBClient(region string, ociAuthConfigProvider com
246251 return nil , err
247252 }
248253 lbClient .SetRegion (region )
254+ dispatcher := lbClient .HTTPClient
255+ lbClient .HTTPClient = metrics .NewHttpRequestDispatcherWrapper (dispatcher , region )
249256
250257 if c .certOverride != nil {
251- if client , ok := lbClient . HTTPClient .(* http.Client ); ok {
258+ if client , ok := dispatcher .(* http.Client ); ok {
252259 err = c .setCerts (client )
253260 if err != nil {
254261 logger .Error (err , "unable to create OCI Loadbalancer Client" )
@@ -274,9 +281,11 @@ func (c *ClientProvider) createIdentityClient(region string, ociAuthConfigProvid
274281 return nil , err
275282 }
276283 identityClt .SetRegion (region )
284+ dispatcher := identityClt .HTTPClient
285+ identityClt .HTTPClient = metrics .NewHttpRequestDispatcherWrapper (dispatcher , region )
277286
278287 if c .certOverride != nil {
279- if client , ok := identityClt . HTTPClient .(* http.Client ); ok {
288+ if client , ok := dispatcher .(* http.Client ); ok {
280289 err = c .setCerts (client )
281290 if err != nil {
282291 logger .Error (err , "unable to create OCI Identity Client" )
@@ -295,16 +304,18 @@ func (c *ClientProvider) createIdentityClient(region string, ociAuthConfigProvid
295304 return & identityClt , nil
296305}
297306
298- func (c * ClientProvider ) createComputeClient (region string , ociAuthConfigProvider common.ConfigurationProvider , logger * logr.Logger ) (* core .ComputeClient , error ) {
307+ func (c * ClientProvider ) createComputeClient (region string , ociAuthConfigProvider common.ConfigurationProvider , logger * logr.Logger ) (compute .ComputeClient , error ) {
299308 computeClient , err := core .NewComputeClientWithConfigurationProvider (ociAuthConfigProvider )
300309 if err != nil {
301310 logger .Error (err , "unable to create OCI Compute Client" )
302311 return nil , err
303312 }
304313 computeClient .SetRegion (region )
314+ dispatcher := computeClient .HTTPClient
315+ computeClient .HTTPClient = metrics .NewHttpRequestDispatcherWrapper (dispatcher , region )
305316
306317 if c .certOverride != nil {
307- if client , ok := computeClient . HTTPClient .(* http.Client ); ok {
318+ if client , ok := dispatcher .(* http.Client ); ok {
308319 err = c .setCerts (client )
309320 if err != nil {
310321 logger .Error (err , "unable to create OCI Compute Client" )
@@ -330,9 +341,11 @@ func (c *ClientProvider) createComputeManagementClient(region string, ociAuthCon
330341 return nil , err
331342 }
332343 computeManagementClient .SetRegion (region )
344+ dispatcher := computeManagementClient .HTTPClient
345+ computeManagementClient .HTTPClient = metrics .NewHttpRequestDispatcherWrapper (dispatcher , region )
333346
334347 if c .certOverride != nil {
335- if client , ok := computeManagementClient . HTTPClient .(* http.Client ); ok {
348+ if client , ok := dispatcher .(* http.Client ); ok {
336349 err = c .setCerts (client )
337350 if err != nil {
338351 logger .Error (err , "unable to create OCI Compute Management Client" )
@@ -358,9 +371,11 @@ func (c *ClientProvider) createContainerEngineClient(region string, ociAuthConfi
358371 return nil , err
359372 }
360373 containerEngineClt .SetRegion (region )
374+ dispatcher := containerEngineClt .HTTPClient
375+ containerEngineClt .HTTPClient = metrics .NewHttpRequestDispatcherWrapper (dispatcher , region )
361376
362377 if c .certOverride != nil {
363- if client , ok := containerEngineClt . HTTPClient .(* http.Client ); ok {
378+ if client , ok := dispatcher .(* http.Client ); ok {
364379 err = c .setCerts (client )
365380 if err != nil {
366381 logger .Error (err , "unable to create OCI Container Engine Client" )
0 commit comments