From de8d365919a95902073afa27cb4d323dd0b8c8b1 Mon Sep 17 00:00:00 2001 From: David Wertenteil Date: Tue, 28 Mar 2023 16:03:31 +0300 Subject: [PATCH 1/2] load account details Signed-off-by: David Wertenteil --- core/cautils/customerloader.go | 29 ++++++++++++++++++++++ core/cautils/customerloader_test.go | 31 +++++++++++++++++++++++ core/cautils/getter/kscloudapi.go | 38 +++++++++++++---------------- 3 files changed, 77 insertions(+), 21 deletions(-) diff --git a/core/cautils/customerloader.go b/core/cautils/customerloader.go index c02bbb5b..fe7974dd 100644 --- a/core/cautils/customerloader.go +++ b/core/cautils/customerloader.go @@ -94,6 +94,9 @@ type ITenantConfig interface { // ============================ Local Config ============================================ // ====================================================================================== // Config when scanning YAML files or URL but not a Kubernetes cluster + +var _ ITenantConfig = &LocalConfig{} + type LocalConfig struct { backendAPI getter.IBackend configObj *ConfigObj @@ -146,6 +149,16 @@ func NewLocalConfig( } logger.L().Debug("Kubescape Cloud URLs", helpers.String("api", lc.backendAPI.GetCloudAPIURL()), helpers.String("auth", lc.backendAPI.GetCloudAuthURL()), helpers.String("report", lc.backendAPI.GetCloudReportURL()), helpers.String("UI", lc.backendAPI.GetCloudUIURL())) + cloud := getter.GetKSCloudAPIConnector() + cloud.SetAccountID(lc.configObj.AccountID) + cloud.SetClientID(lc.configObj.ClientID) + cloud.SetSecretKey(lc.configObj.SecretKey) + cloud.SetCloudAuthURL(lc.backendAPI.GetCloudAuthURL()) + cloud.SetCloudReportURL(lc.backendAPI.GetCloudReportURL()) + cloud.SetCloudUIURL(lc.backendAPI.GetCloudUIURL()) + cloud.SetCloudAPIURL(lc.backendAPI.GetCloudAPIURL()) + getter.SetKSCloudAPIConnector(cloud) + return lc } @@ -220,6 +233,8 @@ KS_SECRET_KEY TODO - support: KS_CACHE // path to cached files */ +var _ ITenantConfig = &ClusterConfig{} + type ClusterConfig struct { backendAPI getter.IBackend k8s *k8sinterface.KubernetesApi @@ -288,6 +303,8 @@ func NewClusterConfig(k8s *k8sinterface.KubernetesApi, backendAPI getter.IBacken } logger.L().Debug("Kubescape Cloud URLs", helpers.String("api", c.backendAPI.GetCloudAPIURL()), helpers.String("auth", c.backendAPI.GetCloudAuthURL()), helpers.String("report", c.backendAPI.GetCloudReportURL()), helpers.String("UI", c.backendAPI.GetCloudUIURL())) + initializeCloudAPI(c) + return c } @@ -622,3 +639,15 @@ func updateCloudURLs(configObj *ConfigObj) { } } + +func initializeCloudAPI(c ITenantConfig) { + cloud := getter.GetKSCloudAPIConnector() + cloud.SetAccountID(c.GetAccountID()) + cloud.SetClientID(c.GetClientID()) + cloud.SetSecretKey(c.GetSecretKey()) + cloud.SetCloudAuthURL(c.GetCloudAuthURL()) + cloud.SetCloudReportURL(c.GetCloudReportURL()) + cloud.SetCloudUIURL(c.GetCloudUIURL()) + cloud.SetCloudAPIURL(c.GetCloudAPIURL()) + getter.SetKSCloudAPIConnector(cloud) +} diff --git a/core/cautils/customerloader_test.go b/core/cautils/customerloader_test.go index 6f8b2e5c..04829fb5 100644 --- a/core/cautils/customerloader_test.go +++ b/core/cautils/customerloader_test.go @@ -5,6 +5,7 @@ import ( "os" "testing" + "github.com/kubescape/kubescape/v2/core/cautils/getter" "github.com/stretchr/testify/assert" corev1 "k8s.io/api/core/v1" ) @@ -268,3 +269,33 @@ func TestUpdateCloudURLs(t *testing.T) { updateCloudURLs(co) assert.Equal(t, co.CloudAPIURL, mockCloudAPIURL) } + +func Test_initializeCloudAPI(t *testing.T) { + type args struct { + c ITenantConfig + } + tests := []struct { + name string + args args + }{ + { + name: "test", + args: args{ + c: mockClusterConfig(), + }, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + initializeCloudAPI(tt.args.c) + cloud := getter.GetKSCloudAPIConnector() + assert.Equal(t, tt.args.c.GetCloudAPIURL(), cloud.GetCloudAPIURL()) + assert.Equal(t, tt.args.c.GetCloudAuthURL(), cloud.GetCloudAuthURL()) + assert.Equal(t, tt.args.c.GetCloudUIURL(), cloud.GetCloudUIURL()) + assert.Equal(t, tt.args.c.GetCloudReportURL(), cloud.GetCloudReportURL()) + assert.Equal(t, tt.args.c.GetAccountID(), cloud.GetAccountID()) + assert.Equal(t, tt.args.c.GetClientID(), cloud.GetClientID()) + assert.Equal(t, tt.args.c.GetSecretKey(), cloud.GetSecretKey()) + }) + } +} diff --git a/core/cautils/getter/kscloudapi.go b/core/cautils/getter/kscloudapi.go index 4a228c5b..9c09bffa 100644 --- a/core/cautils/getter/kscloudapi.go +++ b/core/cautils/getter/kscloudapi.go @@ -94,28 +94,24 @@ var ( // KSCloudAPI allows to access the API of the Kubescape Cloud offering. type KSCloudAPI struct { - cloudAPIURL string - cloudAuthURL string - accountID string - clientID string - - secretKey string - authCookie *http.Cookie - feToken feLoginResponse - invitationToken string - loggedIn bool - - // URLs schemes and hosts, pre-parsed to support http vs https schemes. - scheme string - host string - authscheme string - authhost string - uischeme string - uihost string - reportscheme string - reporthost string - + authCookie *http.Cookie *ksCloudOptions + authhost string + cloudAPIURL string + secretKey string + accountID string + cloudAuthURL string + invitationToken string + reporthost string + scheme string + host string + authscheme string + clientID string + uischeme string + uihost string + reportscheme string + feToken feLoginResponse + loggedIn bool } // SetKSCloudAPIConnector registers a global instance of the KS Cloud client. From 64b8f48469e0913bc143190c5c0cc8ae71c16b9d Mon Sep 17 00:00:00 2001 From: David Wertenteil Date: Tue, 28 Mar 2023 16:54:02 +0300 Subject: [PATCH 2/2] clean code Signed-off-by: David Wertenteil --- core/cautils/customerloader.go | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/core/cautils/customerloader.go b/core/cautils/customerloader.go index fe7974dd..05d48c9d 100644 --- a/core/cautils/customerloader.go +++ b/core/cautils/customerloader.go @@ -149,15 +149,7 @@ func NewLocalConfig( } logger.L().Debug("Kubescape Cloud URLs", helpers.String("api", lc.backendAPI.GetCloudAPIURL()), helpers.String("auth", lc.backendAPI.GetCloudAuthURL()), helpers.String("report", lc.backendAPI.GetCloudReportURL()), helpers.String("UI", lc.backendAPI.GetCloudUIURL())) - cloud := getter.GetKSCloudAPIConnector() - cloud.SetAccountID(lc.configObj.AccountID) - cloud.SetClientID(lc.configObj.ClientID) - cloud.SetSecretKey(lc.configObj.SecretKey) - cloud.SetCloudAuthURL(lc.backendAPI.GetCloudAuthURL()) - cloud.SetCloudReportURL(lc.backendAPI.GetCloudReportURL()) - cloud.SetCloudUIURL(lc.backendAPI.GetCloudUIURL()) - cloud.SetCloudAPIURL(lc.backendAPI.GetCloudAPIURL()) - getter.SetKSCloudAPIConnector(cloud) + initializeCloudAPI(lc) return lc }