From dfb60e97d0aa5587ec01cbec60a66d0d241dca78 Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Molins Date: Thu, 19 Oct 2023 09:47:18 +0200 Subject: [PATCH 1/3] Split currentProject project --- internal/stack/serverless.go | 56 +++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 26 deletions(-) diff --git a/internal/stack/serverless.go b/internal/stack/serverless.go index 7119f6c7f0..c8dc573545 100644 --- a/internal/stack/serverless.go +++ b/internal/stack/serverless.go @@ -125,6 +125,29 @@ func (sp *serverlessProvider) deleteProject(project *serverless.Project, options return sp.client.DeleteProject(project) } +func (sp *serverlessProvider) currentProjectWithClientsAndFleetEndpoint(config Config) (*serverless.Project, error) { + project, err := sp.currentProject(config) + if err != nil { + return nil, err + } + + err = sp.createClients(project) + if err != nil { + return nil, err + } + + fleetURL := config.Parameters[paramServerlessFleetURL] + if true { + fleetURL, err = project.DefaultFleetServerURL(sp.kibanaClient) + if err != nil { + return nil, fmt.Errorf("failed to get fleet URL: %w", err) + } + } + project.Endpoints.Fleet = fleetURL + + return project, nil +} + func (sp *serverlessProvider) currentProject(config Config) (*serverless.Project, error) { projectID, found := config.Parameters[paramServerlessProjectID] if !found { @@ -147,20 +170,6 @@ func (sp *serverlessProvider) currentProject(config Config) (*serverless.Project project.Credentials.Username = config.ElasticsearchUsername project.Credentials.Password = config.ElasticsearchPassword - err = sp.createClients(project) - if err != nil { - return nil, err - } - - fleetURL := config.Parameters[paramServerlessFleetURL] - if true { - fleetURL, err = project.DefaultFleetServerURL(sp.kibanaClient) - if err != nil { - return nil, fmt.Errorf("failed to get fleet URL: %w", err) - } - } - project.Endpoints.Fleet = fleetURL - return project, nil } @@ -246,16 +255,11 @@ func (sp *serverlessProvider) BootUp(options Options) error { return fmt.Errorf("failed to create deployment: %w", err) } - project, err = sp.currentProject(config) + project, err = sp.currentProjectWithClientsAndFleetEndpoint(config) if err != nil { return fmt.Errorf("failed to retrieve latest project created: %w", err) } - err = sp.createClients(project) - if err != nil { - return err - } - logger.Infof("Creating agent policy") err = project.CreateAgentPolicy(options.StackVersion, sp.kibanaClient) if err != nil { @@ -327,11 +331,6 @@ func (sp *serverlessProvider) TearDown(options Options) error { return fmt.Errorf("failed to load configuration: %w", err) } - err = sp.destroyLocalAgent() - if err != nil { - return fmt.Errorf("failed to destroy local agent: %w", err) - } - project, err := sp.currentProject(config) if err != nil { return fmt.Errorf("failed to find current project: %w", err) @@ -344,6 +343,11 @@ func (sp *serverlessProvider) TearDown(options Options) error { return fmt.Errorf("failed to delete project: %w", err) } + err = sp.destroyLocalAgent() + if err != nil { + return fmt.Errorf("failed to destroy local agent: %w", err) + } + // TODO: if GeoIP database is specified, remove the geoip Bundle (if needed) return nil } @@ -377,7 +381,7 @@ func (sp *serverlessProvider) Status(options Options) ([]ServiceStatus, error) { return nil, fmt.Errorf("failed to load configuration: %w", err) } - project, err := sp.currentProject(config) + project, err := sp.currentProjectWithClientsAndFleetEndpoint(config) if errors.Is(serverless.ErrProjectNotExist, err) { return nil, nil } From bddd6a1963e701c7533aca8365a1ef097d39399a Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Molins Date: Thu, 19 Oct 2023 10:05:28 +0200 Subject: [PATCH 2/3] Allow to delete project even if local docker-compose down fails --- internal/stack/serverless.go | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/internal/stack/serverless.go b/internal/stack/serverless.go index c8dc573545..72840dae8a 100644 --- a/internal/stack/serverless.go +++ b/internal/stack/serverless.go @@ -331,6 +331,14 @@ func (sp *serverlessProvider) TearDown(options Options) error { return fmt.Errorf("failed to load configuration: %w", err) } + var errs error + + err = sp.destroyLocalAgent() + if err != nil { + logger.Errorf("failed to destroy local agent: %v", err) + errs = fmt.Errorf("failed to destroy local agent: %w", err) + } + project, err := sp.currentProject(config) if err != nil { return fmt.Errorf("failed to find current project: %w", err) @@ -340,16 +348,13 @@ func (sp *serverlessProvider) TearDown(options Options) error { err = sp.deleteProject(project, options) if err != nil { - return fmt.Errorf("failed to delete project: %w", err) - } - - err = sp.destroyLocalAgent() - if err != nil { - return fmt.Errorf("failed to destroy local agent: %w", err) + logger.Errorf("failed to delete project: %v", err) + errs = errors.Join(errs, fmt.Errorf("failed to delete project: %w", err)) } + logger.Infof("Project %s (%s) deleted", project.Name, project.ID) // TODO: if GeoIP database is specified, remove the geoip Bundle (if needed) - return nil + return errs } func (sp *serverlessProvider) destroyLocalAgent() error { From 690eb9e52c585b078eba139db6a78e03b070ddba Mon Sep 17 00:00:00 2001 From: Mario Rodriguez Molins Date: Thu, 19 Oct 2023 16:32:57 +0200 Subject: [PATCH 3/3] Fix checking the existence of a map element --- internal/stack/serverless.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/internal/stack/serverless.go b/internal/stack/serverless.go index 72840dae8a..02197a753d 100644 --- a/internal/stack/serverless.go +++ b/internal/stack/serverless.go @@ -136,8 +136,8 @@ func (sp *serverlessProvider) currentProjectWithClientsAndFleetEndpoint(config C return nil, err } - fleetURL := config.Parameters[paramServerlessFleetURL] - if true { + fleetURL, found := config.Parameters[paramServerlessFleetURL] + if !found { fleetURL, err = project.DefaultFleetServerURL(sp.kibanaClient) if err != nil { return nil, fmt.Errorf("failed to get fleet URL: %w", err)