@@ -16,6 +16,8 @@ package client
1616
1717import (
1818 "context"
19+ "os"
20+ "strings"
1921 "time"
2022
2123 "github.com/oracle/oci-go-sdk/v65/common"
@@ -193,14 +195,50 @@ type client struct {
193195 logger * zap.SugaredLogger
194196}
195197
198+ func setupBaseClient (log * zap.SugaredLogger , client * common.BaseClient , signer common.HTTPRequestSigner , interceptor common.RequestInterceptor , endpointOverrideEnvVar string ) {
199+ client .Signer = signer
200+ client .Interceptor = interceptor
201+ if endpointOverrideEnvVar != "" {
202+ endpointOverride , ok := os .LookupEnv (endpointOverrideEnvVar )
203+ if ok && endpointOverride != "" {
204+ client .Host = endpointOverride
205+ }
206+ }
207+ clusterIpFamily , ok := os .LookupEnv (ClusterIpFamilyEnv )
208+ // currently as dual stack endpoints are going to be present in selected regions, only for IPv6 single stack cluster we will be using dual stack endpoints
209+ if ok && strings .EqualFold (clusterIpFamily , Ipv6Stack ) {
210+ // TODO: Uncomment once method is available in Public SDK
211+ //client.EnableDualStackEndpoints(true)
212+
213+ region , ok := os .LookupEnv ("OCI_RESOURCE_PRINCIPAL_REGION" )
214+ if ! ok {
215+ log .Errorf ("unable to get OCI_RESOURCE_PRINCIPAL_REGION env var for region" )
216+ }
217+
218+ authEndpoint , ok := os .LookupEnv ("OCI_SDK_AUTH_CLIENT_REGION_URL" )
219+ if ! ok {
220+ authDualStackEndpoint := common .StringToRegion (region ).EndpointForTemplate ("" , "ds.auth.{region}.oci.{secondLevelDomain}" )
221+ if err := os .Setenv ("OCI_SDK_AUTH_CLIENT_REGION_URL" , authDualStackEndpoint ); err != nil {
222+ log .Errorf ("unable to set OCI_SDK_AUTH_CLIENT_REGION_URL env var for oci auth dual stack endpoint" )
223+ } else {
224+ log .Infof ("OCI_SDK_AUTH_CLIENT_REGION_URL env var set to: %s" , authDualStackEndpoint )
225+ }
226+ } else {
227+ log .Infof ("OCI_SDK_AUTH_CLIENT_REGION_URL env var set to: %s" , authEndpoint )
228+ }
229+ }
230+ }
231+
196232// New constructs an OCI API client.
197- func New (logger * zap.SugaredLogger , cp common.ConfigurationProvider , opRateLimiter * RateLimiter ) (Interface , error ) {
233+ func New (logger * zap.SugaredLogger , cp common.ConfigurationProvider , opRateLimiter * RateLimiter , targetTenancyID string ) (Interface , error ) {
198234
199235 compute , err := core .NewComputeClientWithConfigurationProvider (cp )
200236 if err != nil {
201237 return nil , errors .Wrap (err , "NewComputeClientWithConfigurationProvider" )
202238 }
203239
240+ setupBaseClient (logger , & compute .BaseClient , nil , nil , "" )
241+
204242 err = configureCustomTransport (logger , & compute .BaseClient )
205243 if err != nil {
206244 return nil , errors .Wrap (err , "configuring load balancer client custom transport" )
@@ -211,6 +249,8 @@ func New(logger *zap.SugaredLogger, cp common.ConfigurationProvider, opRateLimit
211249 return nil , errors .Wrap (err , "NewVirtualNetworkClientWithConfigurationProvider" )
212250 }
213251
252+ setupBaseClient (logger , & network .BaseClient , nil , nil , "" )
253+
214254 err = configureCustomTransport (logger , & network .BaseClient )
215255 if err != nil {
216256 return nil , errors .Wrap (err , "configuring load balancer client custom transport" )
@@ -221,6 +261,8 @@ func New(logger *zap.SugaredLogger, cp common.ConfigurationProvider, opRateLimit
221261 return nil , errors .Wrap (err , "NewLoadBalancerClientWithConfigurationProvider" )
222262 }
223263
264+ setupBaseClient (logger , & lb .BaseClient , nil , nil , "" )
265+
224266 err = configureCustomTransport (logger , & lb .BaseClient )
225267 if err != nil {
226268 return nil , errors .Wrap (err , "configuring loadbalancer client custom transport" )
@@ -231,6 +273,8 @@ func New(logger *zap.SugaredLogger, cp common.ConfigurationProvider, opRateLimit
231273 return nil , errors .Wrap (err , "NewNetworkLoadBalancerClientWithConfigurationProvider" )
232274 }
233275
276+ setupBaseClient (logger , & nlb .BaseClient , nil , nil , "" )
277+
234278 err = configureCustomTransport (logger , & nlb .BaseClient )
235279 if err != nil {
236280 return nil , errors .Wrap (err , "configuring networkloadbalancer client custom transport" )
@@ -241,6 +285,8 @@ func New(logger *zap.SugaredLogger, cp common.ConfigurationProvider, opRateLimit
241285 return nil , errors .Wrap (err , "NewIdentityClientWithConfigurationProvider" )
242286 }
243287
288+ setupBaseClient (logger , & identity .BaseClient , nil , nil , "" )
289+
244290 err = configureCustomTransport (logger , & identity .BaseClient )
245291 if err != nil {
246292 return nil , errors .Wrap (err , "configuring identity service client custom transport" )
@@ -252,6 +298,8 @@ func New(logger *zap.SugaredLogger, cp common.ConfigurationProvider, opRateLimit
252298 // return nil, errors.Wrap(err, "NewCompartmentsClientWithConfigurationProvider")
253299 //}
254300 //
301+ //setupBaseClient(logger, &compartment.BaseClient, nil, nil, "")
302+ //
255303 //err = configureCustomTransport(logger, &compartment.BaseClient)
256304 //if err != nil {
257305 // return nil, errors.Wrap(err, "configuring compartment service client custom transport")
@@ -262,6 +310,8 @@ func New(logger *zap.SugaredLogger, cp common.ConfigurationProvider, opRateLimit
262310 return nil , errors .Wrap (err , "NewBlockstorageClientWithConfigurationProvider" )
263311 }
264312
313+ setupBaseClient (logger , & bs .BaseClient , nil , nil , "" )
314+
265315 err = configureCustomTransport (logger , & bs .BaseClient )
266316 if err != nil {
267317 return nil , errors .Wrap (err , "configuring block storage service client custom transport" )
@@ -272,6 +322,8 @@ func New(logger *zap.SugaredLogger, cp common.ConfigurationProvider, opRateLimit
272322 return nil , errors .Wrap (err , "NewFileStorageClientWithConfigurationProvider" )
273323 }
274324
325+ setupBaseClient (logger , & fss .BaseClient , nil , nil , "" )
326+
275327 err = configureCustomTransport (logger , & fss .BaseClient )
276328 if err != nil {
277329 return nil , errors .Wrap (err , "configuring file storage service client custom transport" )
@@ -342,6 +394,7 @@ func (c *client) LoadBalancer(logger *zap.SugaredLogger, lbType string, targetTe
342394 logger .Error ("Failed to get new LB client with oke workload identity configuration provider! Error:" + err .Error ())
343395 return nil
344396 }
397+ setupBaseClient (logger , & lb .BaseClient , nil , nil , "" )
345398
346399 err = configureCustomTransport (logger , & lb .BaseClient )
347400 if err != nil {
@@ -361,6 +414,7 @@ func (c *client) LoadBalancer(logger *zap.SugaredLogger, lbType string, targetTe
361414 logger .Error ("Failed to get new NLB client with oke workload identity configuration provider! Error:" + err .Error ())
362415 return nil
363416 }
417+ setupBaseClient (logger , & nlb .BaseClient , nil , nil , "" )
364418
365419 err = configureCustomTransport (logger , & nlb .BaseClient )
366420 if err != nil {
@@ -391,6 +445,8 @@ func (c *client) Networking(ociClientConfig *OCIClientConfig) NetworkingInterfac
391445 return nil
392446 }
393447
448+ setupBaseClient (c .logger , & network .BaseClient , nil , nil , "" )
449+
394450 err = configureCustomTransport (c .logger , & network .BaseClient )
395451 if err != nil {
396452 c .logger .Error ("Failed configure custom transport for Network Client %v" , err )
@@ -427,6 +483,8 @@ func (c *client) Identity(ociClientConfig *OCIClientConfig) IdentityInterface {
427483 return nil
428484 }
429485
486+ setupBaseClient (c .logger , & identity .BaseClient , nil , nil , "" )
487+
430488 err = configureCustomTransport (c .logger , & identity .BaseClient )
431489 if err != nil {
432490 c .logger .Error ("Failed configure custom transport for Identity Client %v" , err )
@@ -440,6 +498,8 @@ func (c *client) Identity(ociClientConfig *OCIClientConfig) IdentityInterface {
440498 // return nil
441499 //}
442500 //
501+ //setupBaseClient(c.logger, &compartment.BaseClient, nil, nil, "")
502+ //
443503 //err = configureCustomTransport(c.logger, &compartment.BaseClient)
444504 //if err != nil {
445505 // c.logger.Error("Failed configure custom transport for Compartments Client %v", err)
@@ -476,6 +536,8 @@ func (c *client) FSS(ociClientConfig *OCIClientConfig) FileStorageInterface {
476536 return nil
477537 }
478538
539+ setupBaseClient (c .logger , & fc .BaseClient , nil , nil , "" )
540+
479541 err = configureCustomTransport (c .logger , & fc .BaseClient )
480542 if err != nil {
481543 c .logger .Errorf ("Failed configure custom transport for FSS Client %v" , err .Error ())
0 commit comments