Skip to content

Commit 77cb200

Browse files
pranavsriram8l-technicore
authored andcommitted
AuthSDK changes for SingleStack IPv6
1 parent 1d09443 commit 77cb200

File tree

1 file changed

+63
-1
lines changed

1 file changed

+63
-1
lines changed

pkg/oci/client/client.go

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ package client
1616

1717
import (
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

Comments
 (0)