Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 22 additions & 16 deletions internal/servicedeployer/compose.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,15 +76,15 @@ 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.ProjectName(),
variant: d.variant,
env: []string{
fmt.Sprintf("%s=%s", serviceLogsDirEnv, svcInfo.Logs.Folder.Local),
fmt.Sprintf("%s=%s", testRunIDEnv, svcInfo.Test.RunID),
},
}

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)
}
Expand Down Expand Up @@ -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"},
}

Expand Down Expand Up @@ -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 != "" {
Expand All @@ -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)
Expand Down Expand Up @@ -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{}
Expand Down
2 changes: 1 addition & 1 deletion internal/servicedeployer/custom_agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.ProjectName(),
variant: ServiceVariant{
Name: dockerCustomAgentName,
Env: env,
Expand Down
7 changes: 7 additions & 0 deletions internal/servicedeployer/info.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

package servicedeployer

import "fmt"

const (
localCACertEnv = "LOCAL_CA_CERT"
serviceLogsDirEnv = "SERVICE_LOGS_DIR"
Expand Down Expand Up @@ -95,3 +97,8 @@ func (sc *ServiceInfo) Aliases() map[string]interface{} {
}
return m
}

// ProjectName returns the project name for the service.
func (sc *ServiceInfo) ProjectName() string {
return fmt.Sprintf("elastic-package-service-%s", sc.Test.RunID)
}
2 changes: 1 addition & 1 deletion internal/servicedeployer/terraform.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.ProjectName(),
env: tfEnvironment,
shutdownTimeout: 300 * time.Second,
configDir: configDir,
Expand Down