Skip to content

Commit e739c45

Browse files
authored
Review serverless teardown (#1515)
Review serverless teardown operation (elastic-package stack down), allowing to delete the serverless project even if the local docker-compose down command fails
1 parent 8042059 commit e739c45

File tree

1 file changed

+33
-24
lines changed

1 file changed

+33
-24
lines changed

internal/stack/serverless.go

Lines changed: 33 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,29 @@ func (sp *serverlessProvider) deleteProject(project *serverless.Project, options
125125
return sp.client.DeleteProject(project)
126126
}
127127

128+
func (sp *serverlessProvider) currentProjectWithClientsAndFleetEndpoint(config Config) (*serverless.Project, error) {
129+
project, err := sp.currentProject(config)
130+
if err != nil {
131+
return nil, err
132+
}
133+
134+
err = sp.createClients(project)
135+
if err != nil {
136+
return nil, err
137+
}
138+
139+
fleetURL, found := config.Parameters[paramServerlessFleetURL]
140+
if !found {
141+
fleetURL, err = project.DefaultFleetServerURL(sp.kibanaClient)
142+
if err != nil {
143+
return nil, fmt.Errorf("failed to get fleet URL: %w", err)
144+
}
145+
}
146+
project.Endpoints.Fleet = fleetURL
147+
148+
return project, nil
149+
}
150+
128151
func (sp *serverlessProvider) currentProject(config Config) (*serverless.Project, error) {
129152
projectID, found := config.Parameters[paramServerlessProjectID]
130153
if !found {
@@ -147,20 +170,6 @@ func (sp *serverlessProvider) currentProject(config Config) (*serverless.Project
147170
project.Credentials.Username = config.ElasticsearchUsername
148171
project.Credentials.Password = config.ElasticsearchPassword
149172

150-
err = sp.createClients(project)
151-
if err != nil {
152-
return nil, err
153-
}
154-
155-
fleetURL := config.Parameters[paramServerlessFleetURL]
156-
if true {
157-
fleetURL, err = project.DefaultFleetServerURL(sp.kibanaClient)
158-
if err != nil {
159-
return nil, fmt.Errorf("failed to get fleet URL: %w", err)
160-
}
161-
}
162-
project.Endpoints.Fleet = fleetURL
163-
164173
return project, nil
165174
}
166175

@@ -246,16 +255,11 @@ func (sp *serverlessProvider) BootUp(options Options) error {
246255
return fmt.Errorf("failed to create deployment: %w", err)
247256
}
248257

249-
project, err = sp.currentProject(config)
258+
project, err = sp.currentProjectWithClientsAndFleetEndpoint(config)
250259
if err != nil {
251260
return fmt.Errorf("failed to retrieve latest project created: %w", err)
252261
}
253262

254-
err = sp.createClients(project)
255-
if err != nil {
256-
return err
257-
}
258-
259263
logger.Infof("Creating agent policy")
260264
err = project.CreateAgentPolicy(options.StackVersion, sp.kibanaClient)
261265
if err != nil {
@@ -327,9 +331,12 @@ func (sp *serverlessProvider) TearDown(options Options) error {
327331
return fmt.Errorf("failed to load configuration: %w", err)
328332
}
329333

334+
var errs error
335+
330336
err = sp.destroyLocalAgent()
331337
if err != nil {
332-
return fmt.Errorf("failed to destroy local agent: %w", err)
338+
logger.Errorf("failed to destroy local agent: %v", err)
339+
errs = fmt.Errorf("failed to destroy local agent: %w", err)
333340
}
334341

335342
project, err := sp.currentProject(config)
@@ -341,11 +348,13 @@ func (sp *serverlessProvider) TearDown(options Options) error {
341348

342349
err = sp.deleteProject(project, options)
343350
if err != nil {
344-
return fmt.Errorf("failed to delete project: %w", err)
351+
logger.Errorf("failed to delete project: %v", err)
352+
errs = errors.Join(errs, fmt.Errorf("failed to delete project: %w", err))
345353
}
354+
logger.Infof("Project %s (%s) deleted", project.Name, project.ID)
346355

347356
// TODO: if GeoIP database is specified, remove the geoip Bundle (if needed)
348-
return nil
357+
return errs
349358
}
350359

351360
func (sp *serverlessProvider) destroyLocalAgent() error {
@@ -377,7 +386,7 @@ func (sp *serverlessProvider) Status(options Options) ([]ServiceStatus, error) {
377386
return nil, fmt.Errorf("failed to load configuration: %w", err)
378387
}
379388

380-
project, err := sp.currentProject(config)
389+
project, err := sp.currentProjectWithClientsAndFleetEndpoint(config)
381390
if errors.Is(serverless.ErrProjectNotExist, err) {
382391
return nil, nil
383392
}

0 commit comments

Comments
 (0)