From d829c25d8318c33f61e51e9976d53af4bb9197c3 Mon Sep 17 00:00:00 2001 From: "jose.vazquez" Date: Wed, 16 Oct 2024 11:02:59 +0200 Subject: [PATCH 1/2] CLOUDP-278912: Export without Fed Auth --- .../kubernetes/operator/config_exporter.go | 8 ++++++++ .../atlas/kubernetes_config_generate_test.go | 20 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/internal/kubernetes/operator/config_exporter.go b/internal/kubernetes/operator/config_exporter.go index f4a8a22858..3241ab10b7 100644 --- a/internal/kubernetes/operator/config_exporter.go +++ b/internal/kubernetes/operator/config_exporter.go @@ -417,6 +417,9 @@ func (e *ConfigExporter) exportAtlasFederatedAuth(projectName string) ([]runtime // Gets the FederationAuthSetting federatedAuthentificationSetting, err := e.dataProvider.FederationSetting(&admin.GetFederationSettingsApiParams{OrgId: e.orgID}) if err != nil { + if isAPIError(err, "RESOURCE_NOT_FOUND") { + return nil, nil + } return nil, fmt.Errorf("failed to retrieve federation settings: %w", err) } // Does not have an IdenityProvider set then no need to generate @@ -443,3 +446,8 @@ func (e *ConfigExporter) exportAtlasFederatedAuth(projectName string) ([]runtime } return append(result, federatedAuthentification), nil } + +func isAPIError(err error, errorCode string) bool { + oaErr, ok := err.(*admin.GenericOpenAPIError) + return ok && oaErr.Model().ErrorCode != nil && *oaErr.Model().ErrorCode == errorCode +} diff --git a/test/e2e/atlas/kubernetes_config_generate_test.go b/test/e2e/atlas/kubernetes_config_generate_test.go index 58c3678d10..80556825cc 100644 --- a/test/e2e/atlas/kubernetes_config_generate_test.go +++ b/test/e2e/atlas/kubernetes_config_generate_test.go @@ -131,6 +131,26 @@ func InitialSetup(t *testing.T) KubernetesConfigGenerateProjectSuite { return s } +func TestExportWorksWithoutFedAuth(t *testing.T) { + s := InitialSetup(t) + cliPath := s.cliPath + generator := s.generator + cmd := exec.Command(cliPath, + "kubernetes", + "config", + "generate", + "--projectId", + generator.projectID) + cmd.Env = os.Environ() + resp, err := cmd.CombinedOutput() + t.Log(string(resp)) + require.NoError(t, err, string(resp)) + var objects []runtime.Object + objects, err = getK8SEntities(resp) + require.NoError(t, err, fmt.Sprintf("should not fail on decode but got:\n%s", string(resp))) + require.NotEmpty(t, objects) +} + func TestFederatedAuthTest(t *testing.T) { t.Run("PreRequisite Get the federation setting ID", func(t *testing.T) { s := InitialSetup(t) From 755a8c841c8db0df3139f38cc461aa5d47f5c28c Mon Sep 17 00:00:00 2001 From: "jose.vazquez" Date: Wed, 16 Oct 2024 11:50:13 +0200 Subject: [PATCH 2/2] Fix linter and error check Signed-off-by: jose.vazquez --- internal/kubernetes/operator/config_exporter.go | 9 ++------- test/e2e/atlas/kubernetes_config_generate_test.go | 2 +- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/internal/kubernetes/operator/config_exporter.go b/internal/kubernetes/operator/config_exporter.go index 3241ab10b7..9611723a3c 100644 --- a/internal/kubernetes/operator/config_exporter.go +++ b/internal/kubernetes/operator/config_exporter.go @@ -417,12 +417,12 @@ func (e *ConfigExporter) exportAtlasFederatedAuth(projectName string) ([]runtime // Gets the FederationAuthSetting federatedAuthentificationSetting, err := e.dataProvider.FederationSetting(&admin.GetFederationSettingsApiParams{OrgId: e.orgID}) if err != nil { - if isAPIError(err, "RESOURCE_NOT_FOUND") { + if admin.IsErrorCode(err, "RESOURCE_NOT_FOUND") { return nil, nil } return nil, fmt.Errorf("failed to retrieve federation settings: %w", err) } - // Does not have an IdenityProvider set then no need to generate + // Does not have an IdentityProvider set then no need to generate if !federatedAuthentificationSetting.HasIdentityProviderStatus() || federatedAuthentificationSetting.GetIdentityProviderStatus() == InactiveStatus { return nil, nil } @@ -446,8 +446,3 @@ func (e *ConfigExporter) exportAtlasFederatedAuth(projectName string) ([]runtime } return append(result, federatedAuthentification), nil } - -func isAPIError(err error, errorCode string) bool { - oaErr, ok := err.(*admin.GenericOpenAPIError) - return ok && oaErr.Model().ErrorCode != nil && *oaErr.Model().ErrorCode == errorCode -} diff --git a/test/e2e/atlas/kubernetes_config_generate_test.go b/test/e2e/atlas/kubernetes_config_generate_test.go index 80556825cc..d1452c20e8 100644 --- a/test/e2e/atlas/kubernetes_config_generate_test.go +++ b/test/e2e/atlas/kubernetes_config_generate_test.go @@ -147,7 +147,7 @@ func TestExportWorksWithoutFedAuth(t *testing.T) { require.NoError(t, err, string(resp)) var objects []runtime.Object objects, err = getK8SEntities(resp) - require.NoError(t, err, fmt.Sprintf("should not fail on decode but got:\n%s", string(resp))) + require.NoError(t, err, "should not fail on decode but got:\n"+string(resp)) require.NotEmpty(t, objects) }