Skip to content

Commit

Permalink
Merge pull request #92 from kubescape/fix/eks-region-parser
Browse files Browse the repository at this point in the history
Fixed parse eks region
  • Loading branch information
dwertent committed Feb 22, 2024
2 parents cde5aed + 23cdfaa commit 9309d64
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 10 deletions.
4 changes: 3 additions & 1 deletion cloudsupport/v1/ekssupport.go
Original file line number Diff line number Diff line change
Expand Up @@ -125,8 +125,10 @@ func (eksSupport *EKSSupport) GetRegion(cluster string) (string, error) {
splittedClusterContext := strings.Split(cluster, "-")
if len(splittedClusterContext) < 4 {
return "", fmt.Errorf("failed to get region")
} else {
} else if len(splittedClusterContext) >= 6 {
return strings.Join(splittedClusterContext[3:6], "-"), nil
} else {
return "", fmt.Errorf("failed to get region")
}
}
region = splittedClusterContext[3]
Expand Down
65 changes: 56 additions & 9 deletions cloudsupport/v1/ekssupport_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package v1

import (
"os"
"strings"
"testing"

Expand All @@ -27,14 +28,60 @@ func TestGetContextName(t *testing.T) {
}

func TestGetRegion(t *testing.T) {
mockname1 := "arn:aws:eks:eu-north-1:123456789:cluster-test-cluster"
eksSupport := NewEKSSupport()
region, err := eksSupport.GetRegion(mockname1)
assert.NoError(t, err)
assert.Equal(t, "eu-north-1", region)
tests := []struct {
name string
cluster string
envRegion string
expectedRegion string
expectErr bool
}{
{
name: "Region is extracted from cluster name 1",
cluster: "arn:aws:eks:eu-north-1:123456789:cluster-test-cluster",
expectedRegion: "eu-north-1",
expectErr: false,
},
{
name: "Region is extracted from cluster name 2",
cluster: "arn-aws-eks-eu-west-2-XXXXXXXXXXXX-cluster-Yiscah-test-g2am5",
expectedRegion: "eu-west-2",
expectErr: false,
},
{
name: "Region is present in environment variable",
envRegion: "us-west-2",
expectedRegion: "us-west-2",
expectErr: false,
},
{
name: "Region is extracted from cluster name with ':' separator",
cluster: "cluster:us-west-2:eks",
expectedRegion: "us-west-2",
expectErr: true,
},
{
name: "Failed to get region",
cluster: "cluster",
expectErr: true,
},
}

mockname2 := "arn-aws-eks-eu-west-2-XXXXXXXXXXXX-cluster-Yiscah-test-g2am5"
region, err = eksSupport.GetRegion(mockname2)
assert.NoError(t, err)
assert.Equal(t, "eu-west-2", region)
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if tt.envRegion != "" {
os.Setenv(KS_CLOUD_REGION_ENV_VAR, tt.envRegion)
defer os.Unsetenv(KS_CLOUD_REGION_ENV_VAR)
}

eksSupport := &EKSSupport{}
region, err := eksSupport.GetRegion(tt.cluster)

if tt.expectErr {
assert.Error(t, err)
} else {
assert.NoError(t, err)
assert.Equal(t, tt.expectedRegion, region)
}
})
}
}

0 comments on commit 9309d64

Please sign in to comment.