From 856ea5a3c65f77bd691448e38ea99a3d4dd95b77 Mon Sep 17 00:00:00 2001 From: Dan Kortschak Date: Thu, 18 Sep 2025 07:42:13 +0930 Subject: [PATCH 1/2] internal/servicedeployer: expose environment, and project identifier and construction --- internal/servicedeployer/compose.go | 38 ++++++++++++++---------- internal/servicedeployer/custom_agent.go | 2 +- internal/servicedeployer/info.go | 7 +++++ internal/servicedeployer/terraform.go | 2 +- 4 files changed, 31 insertions(+), 18 deletions(-) diff --git a/internal/servicedeployer/compose.go b/internal/servicedeployer/compose.go index 3b2ba477a6..4b4edf4b31 100644 --- a/internal/servicedeployer/compose.go +++ b/internal/servicedeployer/compose.go @@ -76,7 +76,7 @@ func (d *DockerComposeServiceDeployer) SetUp(ctx context.Context, svcInfo Servic logger.Debug("setting up service using Docker Compose service deployer") service := dockerComposeDeployedService{ ymlPaths: d.ymlPaths, - project: fmt.Sprintf("elastic-package-service-%s", svcInfo.Test.RunID), + project: svcInfo.Project(), variant: d.variant, env: []string{ fmt.Sprintf("%s=%s", serviceLogsDirEnv, svcInfo.Logs.Folder.Local), @@ -84,7 +84,7 @@ func (d *DockerComposeServiceDeployer) SetUp(ctx context.Context, svcInfo Servic }, } - p, err := compose.NewProject(service.project, service.ymlPaths...) + p, err := service.Project() if err != nil { return nil, fmt.Errorf("could not create Docker Compose project for service: %w", err) } @@ -114,9 +114,7 @@ func (d *DockerComposeServiceDeployer) SetUp(ctx context.Context, svcInfo Servic } opts := compose.CommandOptions{ - Env: append( - service.env, - d.variant.Env...), + Env: service.Env(), ExtraArgs: []string{"--build", "-d"}, } @@ -194,17 +192,29 @@ func (d *DockerComposeServiceDeployer) SetUp(ctx context.Context, svcInfo Servic return &service, nil } +// Project returns the project for the deployed service. +func (s *dockerComposeDeployedService) Project() (*compose.Project, error) { + p, err := compose.NewProject(s.project, s.ymlPaths...) + if err != nil { + return nil, fmt.Errorf("could not create Docker Compose project for service: %w", err) + } + return p, nil +} + +// Env returns a copy of the full env for the deployed service including any variant env. +func (s *dockerComposeDeployedService) Env() []string { + return append(s.env[:len(s.env):len(s.env)], s.variant.Env...) +} + // Signal sends a signal to the service. func (s *dockerComposeDeployedService) Signal(ctx context.Context, signal string) error { - p, err := compose.NewProject(s.project, s.ymlPaths...) + p, err := s.Project() if err != nil { return fmt.Errorf("could not create Docker Compose project for service: %w", err) } opts := compose.CommandOptions{ - Env: append( - s.env, - s.variant.Env...), + Env: s.Env(), ExtraArgs: []string{"-s", signal}, } if s.svcInfo.Name != "" { @@ -220,15 +230,13 @@ func (s *dockerComposeDeployedService) Signal(ctx context.Context, signal string // ExitCode returns true if the service is exited and its exit code. func (s *dockerComposeDeployedService) ExitCode(ctx context.Context, service string) (bool, int, error) { - p, err := compose.NewProject(s.project, s.ymlPaths...) + p, err := s.Project() if err != nil { return false, -1, fmt.Errorf("could not create Docker Compose project for service: %w", err) } opts := compose.CommandOptions{ - Env: append( - s.env, - s.variant.Env...), + Env: s.Env(), } return p.ServiceExitCode(ctx, service, opts) @@ -261,9 +269,7 @@ func (s *dockerComposeDeployedService) TearDown(ctx context.Context) error { } opts := compose.CommandOptions{ - Env: append( - s.env, - s.variant.Env...), + Env: s.Env(), } extraArgs := []string{} diff --git a/internal/servicedeployer/custom_agent.go b/internal/servicedeployer/custom_agent.go index 6f9ee5253c..4c84787e19 100644 --- a/internal/servicedeployer/custom_agent.go +++ b/internal/servicedeployer/custom_agent.go @@ -108,7 +108,7 @@ func (d *CustomAgentDeployer) SetUp(ctx context.Context, svcInfo ServiceInfo) (D service := dockerComposeDeployedService{ ymlPaths: ymlPaths, - project: fmt.Sprintf("elastic-package-service-%s", svcInfo.Test.RunID), + project: svcInfo.Project(), variant: ServiceVariant{ Name: dockerCustomAgentName, Env: env, diff --git a/internal/servicedeployer/info.go b/internal/servicedeployer/info.go index a577cff09e..89141f62dd 100644 --- a/internal/servicedeployer/info.go +++ b/internal/servicedeployer/info.go @@ -4,6 +4,8 @@ package servicedeployer +import "fmt" + const ( localCACertEnv = "LOCAL_CA_CERT" serviceLogsDirEnv = "SERVICE_LOGS_DIR" @@ -95,3 +97,8 @@ func (sc *ServiceInfo) Aliases() map[string]interface{} { } return m } + +// Project returns the project identifier for the service. +func (sc *ServiceInfo) Project() string { + return fmt.Sprintf("elastic-package-service-%s", sc.Test.RunID) +} diff --git a/internal/servicedeployer/terraform.go b/internal/servicedeployer/terraform.go index 6c609514fe..5b5a555fae 100644 --- a/internal/servicedeployer/terraform.go +++ b/internal/servicedeployer/terraform.go @@ -113,7 +113,7 @@ func (tsd TerraformServiceDeployer) SetUp(ctx context.Context, svcInfo ServiceIn service := dockerComposeDeployedService{ ymlPaths: ymlPaths, - project: fmt.Sprintf("elastic-package-service-%s", svcInfo.Test.RunID), + project: svcInfo.Project(), env: tfEnvironment, shutdownTimeout: 300 * time.Second, configDir: configDir, From e42fc591f082aab01abaa9ad7e719de3a04643b6 Mon Sep 17 00:00:00 2001 From: Dan Kortschak Date: Mon, 22 Sep 2025 06:30:16 +0930 Subject: [PATCH 2/2] ServiceInfo.{Project=>ProjectName} --- internal/servicedeployer/compose.go | 2 +- internal/servicedeployer/custom_agent.go | 2 +- internal/servicedeployer/info.go | 4 ++-- internal/servicedeployer/terraform.go | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/internal/servicedeployer/compose.go b/internal/servicedeployer/compose.go index 4b4edf4b31..d15c0a6954 100644 --- a/internal/servicedeployer/compose.go +++ b/internal/servicedeployer/compose.go @@ -76,7 +76,7 @@ func (d *DockerComposeServiceDeployer) SetUp(ctx context.Context, svcInfo Servic logger.Debug("setting up service using Docker Compose service deployer") service := dockerComposeDeployedService{ ymlPaths: d.ymlPaths, - project: svcInfo.Project(), + project: svcInfo.ProjectName(), variant: d.variant, env: []string{ fmt.Sprintf("%s=%s", serviceLogsDirEnv, svcInfo.Logs.Folder.Local), diff --git a/internal/servicedeployer/custom_agent.go b/internal/servicedeployer/custom_agent.go index 4c84787e19..360477f3fa 100644 --- a/internal/servicedeployer/custom_agent.go +++ b/internal/servicedeployer/custom_agent.go @@ -108,7 +108,7 @@ func (d *CustomAgentDeployer) SetUp(ctx context.Context, svcInfo ServiceInfo) (D service := dockerComposeDeployedService{ ymlPaths: ymlPaths, - project: svcInfo.Project(), + project: svcInfo.ProjectName(), variant: ServiceVariant{ Name: dockerCustomAgentName, Env: env, diff --git a/internal/servicedeployer/info.go b/internal/servicedeployer/info.go index 89141f62dd..c46b87156b 100644 --- a/internal/servicedeployer/info.go +++ b/internal/servicedeployer/info.go @@ -98,7 +98,7 @@ func (sc *ServiceInfo) Aliases() map[string]interface{} { return m } -// Project returns the project identifier for the service. -func (sc *ServiceInfo) Project() string { +// ProjectName returns the project name for the service. +func (sc *ServiceInfo) ProjectName() string { return fmt.Sprintf("elastic-package-service-%s", sc.Test.RunID) } diff --git a/internal/servicedeployer/terraform.go b/internal/servicedeployer/terraform.go index 5b5a555fae..54b62154d6 100644 --- a/internal/servicedeployer/terraform.go +++ b/internal/servicedeployer/terraform.go @@ -113,7 +113,7 @@ func (tsd TerraformServiceDeployer) SetUp(ctx context.Context, svcInfo ServiceIn service := dockerComposeDeployedService{ ymlPaths: ymlPaths, - project: svcInfo.Project(), + project: svcInfo.ProjectName(), env: tfEnvironment, shutdownTimeout: 300 * time.Second, configDir: configDir,