Skip to content

Commit 3548b6f

Browse files
authored
Merge pull request noobaa#1955 from shirady/cli-connect-external
DFBUGS-7108 | Add `ConnectAuto` instead of `Connect` To Use CLI Commands From Operator Pod
2 parents 6ae1d09 + 8e3442f commit 3548b6f

10 files changed

Lines changed: 39 additions & 18 deletions

File tree

pkg/cosi/cosi_bucket_access.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ func RunStatusBucketAccessClaim(cmd *cobra.Command, args []string) {
209209
log.Fatalf(`❌ Could not find COSI bucket access claim secret %q in namespace %q`, secret.Name, cosiBucketAccessClaim.Namespace)
210210
}
211211

212-
sysClient, err := system.Connect(true)
212+
sysClient, err := system.ConnectAuto()
213213
if err != nil {
214214
util.Logger().Fatalf("❌ %s", err)
215215
}

pkg/cosi/cosi_bucket_claim.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ func RunStatusBucketClaim(cmd *cobra.Command, args []string) {
206206
}
207207
}
208208

209-
sysClient, err := system.Connect(true)
209+
sysClient, err := system.ConnectAuto()
210210
if err != nil {
211211
util.Logger().Fatalf("❌ %s", err)
212212
}

pkg/cosi/cosi_cli_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ var _ = Describe("COSI CLI tests", func() {
3434
var nsResource *nbv1.NamespaceStore
3535
log := util.Logger()
3636

37-
sysClient, err := system.Connect(true)
37+
sysClient, err := system.ConnectAuto()
3838
if err != nil {
3939
log.Infof("COSI bucket creation tests, can't create sysclient: err= %q", err)
4040
}

pkg/cosi/cosi_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ var _ = Describe("COSI driver/provisioner tests", func() {
3636

3737
log := util.Logger()
3838
nbClient := system.GetNBClient()
39-
sysClient, err := system.Connect(true)
39+
sysClient, err := system.ConnectAuto()
4040
if err != nil {
4141
log.Infof("COSI bucket creation tests, can't create sysclient: err= %q", err)
4242
}

pkg/noobaaaccount/noobaaaccount.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ func RunUpdate(cmd *cobra.Command, args []string) {
256256
noobaaAccount.Name = name
257257
noobaaAccount.Namespace = options.Namespace
258258

259-
sysClient, err := system.Connect(true)
259+
sysClient, err := system.ConnectAuto()
260260
if err != nil {
261261
log.Fatalf("❌ failed to run RPC call: %s", err)
262262
}
@@ -303,7 +303,7 @@ func RunUpdate(cmd *cobra.Command, args []string) {
303303
RunStatus(cmd, args)
304304
}
305305
} else {
306-
sysClient, err := system.Connect(true)
306+
sysClient, err := system.ConnectAuto()
307307
if err != nil {
308308
log.Fatalf(`❌ Unable to create RPC client %s`, err)
309309
}
@@ -614,7 +614,7 @@ func GenerateAccountKeys(name string) error {
614614

615615
var accessKeys nb.S3AccessKeys
616616

617-
sysClient, err := system.Connect(true)
617+
sysClient, err := system.ConnectAuto()
618618
if err != nil {
619619
return err
620620
}
@@ -671,7 +671,7 @@ func GenerateNonCrdAccountKeys(name string) error {
671671

672672
var accessKeys nb.S3AccessKeys
673673

674-
sysClient, err := system.Connect(true)
674+
sysClient, err := system.ConnectAuto()
675675
if err != nil {
676676
return err
677677
}
@@ -708,7 +708,7 @@ func GenerateNonCrdAccountKeys(name string) error {
708708
func UpdateAccountKeys(name string, accessKeys nb.S3AccessKeys) error {
709709
log := util.Logger()
710710

711-
sysClient, err := system.Connect(true)
711+
sysClient, err := system.ConnectAuto()
712712
if err != nil {
713713
return err
714714
}
@@ -764,7 +764,7 @@ func UpdateAccountKeys(name string, accessKeys nb.S3AccessKeys) error {
764764
func UpdateNonCrdAccountKeys(name string, accessKeys nb.S3AccessKeys) error {
765765
log := util.Logger()
766766

767-
sysClient, err := system.Connect(true)
767+
sysClient, err := system.ConnectAuto()
768768
if err != nil {
769769
return err
770770
}

pkg/obc/obc.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,7 @@ func RunStatus(cmd *cobra.Command, args []string) {
443443
}
444444
}
445445

446-
sysClient, err := system.Connect(true)
446+
sysClient, err := system.ConnectAuto()
447447
if err != nil {
448448
util.Logger().Fatalf("❌ %s", err)
449449
}
@@ -658,7 +658,7 @@ func GenerateAccountKeys(name, accountName, appNamespace string) error {
658658

659659
var accessKeys nb.S3AccessKeys
660660

661-
sysClient, err := system.Connect(true)
661+
sysClient, err := system.ConnectAuto()
662662
if err != nil {
663663
return err
664664
}

pkg/sts/sts.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ func RunAssign(cmd *cobra.Command, args []string) {
7171
log.Fatalf(`❌ The provided role configuration is not valid JSON`)
7272
}
7373

74-
sysClient, err := system.Connect(true)
74+
sysClient, err := system.ConnectAuto()
7575
if err != nil {
7676
log.Fatalf(`❌ Failed to create RPC client %s`, err)
7777
}
@@ -100,7 +100,7 @@ func RunAssign(cmd *cobra.Command, args []string) {
100100
func RunRemove(cmd *cobra.Command, args []string) {
101101
email, _ := cmd.Flags().GetString("email")
102102

103-
sysClient, err := system.Connect(true)
103+
sysClient, err := system.ConnectAuto()
104104
if err != nil {
105105
log.Fatalf(`❌ Failed to create RPC client %s`, err)
106106
}

pkg/system/cmd_api_call.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func RunAPICall(cmd *cobra.Command, args []string) {
3535
apiName += "_api"
3636
}
3737

38-
sysClient, err := Connect(true)
38+
sysClient, err := ConnectAuto()
3939
if err != nil {
4040
log.Fatalf("❌ %s", err)
4141
}

pkg/system/system.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import (
3535
"k8s.io/apimachinery/pkg/util/wait"
3636
"k8s.io/cli-runtime/pkg/printers"
3737
"k8s.io/client-go/kubernetes/scheme"
38+
"k8s.io/client-go/rest"
3839
"sigs.k8s.io/controller-runtime/pkg/client"
3940
"sigs.k8s.io/controller-runtime/pkg/reconcile"
4041
)
@@ -1229,7 +1230,7 @@ type Client struct {
12291230

12301231
// GetNBClient returns an api client
12311232
func GetNBClient() nb.Client {
1232-
c, err := Connect(true)
1233+
c, err := ConnectAuto()
12331234
if err != nil {
12341235
util.Logger().Fatalf("❌ %s", err)
12351236
}
@@ -1345,6 +1346,22 @@ func Connect(isExternal bool) (*Client, error) {
13451346
}, nil
13461347
}
13471348

1349+
// IsRunningInCluster returns true when the process runs inside a Kubernetes pod.
1350+
// It uses rest.InClusterConfig(), which checks KUBERNETES_SERVICE_HOST/PORT and
1351+
// the service account token/CA at /var/run/secrets/kubernetes.io/serviceaccount/.
1352+
// KUBECONFIG does not affect this detection.
1353+
func IsRunningInCluster() bool {
1354+
_, err := rest.InClusterConfig()
1355+
return err == nil
1356+
}
1357+
1358+
// ConnectAuto connects to the NooBaa system
1359+
// external to cluster or internal to cluster based on the running environment
1360+
func ConnectAuto() (*Client, error) {
1361+
isExternal := !IsRunningInCluster()
1362+
return Connect(isExternal)
1363+
}
1364+
13481365
// GetDesiredDBImage returns the desired DB image according to spec or env or default (in options)
13491366
func GetDesiredDBImage(sys *nbv1.NooBaa, currentImage string) string {
13501367
// Postgres upgrade failure workaround

pkg/validations/common_bucket_validations.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,13 @@ func ValidateReplicationPolicy(bucketName string, replicationPolicy string, upda
8282
}
8383

8484
log.Infof("ValidateReplicationPolicy: validating replication: replicationParams: %+v", replicationParams)
85-
IsExternalRPCConnection := util.IsTestEnv() || isCLI
8685

87-
sysClient, err := system.Connect(IsExternalRPCConnection)
86+
var sysClient *system.Client
87+
if isCLI {
88+
sysClient, err = system.ConnectAuto()
89+
} else {
90+
sysClient, err = system.Connect(util.IsTestEnv())
91+
}
8892
if err != nil {
8993
return fmt.Errorf("Provisioner Failed to validate replication of bucket %q with error: %v", bucketName, err)
9094
}

0 commit comments

Comments
 (0)