From 8a59370e973c6d468279f963b672828a43697791 Mon Sep 17 00:00:00 2001 From: mtojek Date: Wed, 22 Sep 2021 14:57:51 +0200 Subject: [PATCH 1/2] Define two different images --- internal/install/application_configuration.go | 18 +++++++++++++++++- .../install/application_configuration_yml.go | 7 ++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/internal/install/application_configuration.go b/internal/install/application_configuration.go index ffc86b155e..3e6bc6585e 100644 --- a/internal/install/application_configuration.go +++ b/internal/install/application_configuration.go @@ -9,12 +9,16 @@ import ( "os" "path/filepath" + "github.com/Masterminds/semver" "github.com/pkg/errors" "gopkg.in/yaml.v3" "github.com/elastic/elastic-package/internal/configuration/locations" + "github.com/elastic/elastic-package/internal/logger" ) +var elasticAgentCompleteFirstSupportedVersion = semver.MustParse("7.15.0-SNAPSHOT") + // ApplicationConfiguration represents the configuration of the elastic-package. type ApplicationConfiguration struct { c configFile @@ -60,12 +64,24 @@ func (ac *ApplicationConfiguration) DefaultStackImageRefs() ImageRefs { // StackImageRefs function selects the appropriate set of Docker image references for the given stack version. func (ac *ApplicationConfiguration) StackImageRefs(version string) ImageRefs { refs := ac.c.Stack.ImageRefOverridesForVersion(version) - refs.ElasticAgent = stringOrDefault(refs.ElasticAgent, fmt.Sprintf("%s:%s", elasticAgentImageName, version)) + refs.ElasticAgent = stringOrDefault(refs.ElasticAgent, fmt.Sprintf("%s:%s", selectElasticAgentImageName(version), version)) refs.Elasticsearch = stringOrDefault(refs.Elasticsearch, fmt.Sprintf("%s:%s", elasticsearchImageName, version)) refs.Kibana = stringOrDefault(refs.Kibana, fmt.Sprintf("%s:%s", kibanaImageName, version)) return refs } +// selectElasticAgentImageName function returns the appropriate image name for Elastic-Agent depending on the stack version. +// This is mandatory as "elastic-agent-complete" is available since 7.15.0-SNAPSHOT. +func selectElasticAgentImageName(version string) string { + v, err := semver.NewVersion(version) + if err != nil { + logger.Errorf("stack version not in semver format (value: %s): %v", v, err) + } else if v.GreaterThan(elasticAgentCompleteFirstSupportedVersion) { + return elasticAgentCompleteImageName + } + return elasticAgentImageName +} + // Configuration function returns the elastic-package configuration. func Configuration() (*ApplicationConfiguration, error) { configPath, err := locations.NewLocationManager() diff --git a/internal/install/application_configuration_yml.go b/internal/install/application_configuration_yml.go index 6fb0a32231..5f507dd11d 100644 --- a/internal/install/application_configuration_yml.go +++ b/internal/install/application_configuration_yml.go @@ -5,9 +5,10 @@ package install const ( - elasticAgentImageName = "docker.elastic.co/beats/elastic-agent-complete" - elasticsearchImageName = "docker.elastic.co/elasticsearch/elasticsearch" - kibanaImageName = "docker.elastic.co/kibana/kibana" + elasticAgentImageName = "docker.elastic.co/beats/elastic-agent" + elasticAgentCompleteImageName = "docker.elastic.co/beats/elastic-agent-complete" + elasticsearchImageName = "docker.elastic.co/elasticsearch/elasticsearch" + kibanaImageName = "docker.elastic.co/kibana/kibana" ) const applicationConfigurationYmlFile = "config.yml" From 59c539ec6033fb7eda0c11f08eed9e908ba53992 Mon Sep 17 00:00:00 2001 From: mtojek Date: Wed, 22 Sep 2021 15:46:46 +0200 Subject: [PATCH 2/2] Fix --- internal/install/application_configuration.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/install/application_configuration.go b/internal/install/application_configuration.go index 3e6bc6585e..c385cfe03d 100644 --- a/internal/install/application_configuration.go +++ b/internal/install/application_configuration.go @@ -76,7 +76,7 @@ func selectElasticAgentImageName(version string) string { v, err := semver.NewVersion(version) if err != nil { logger.Errorf("stack version not in semver format (value: %s): %v", v, err) - } else if v.GreaterThan(elasticAgentCompleteFirstSupportedVersion) { + } else if !v.LessThan(elasticAgentCompleteFirstSupportedVersion) { return elasticAgentCompleteImageName } return elasticAgentImageName