diff --git a/changelog/fragments/1677780422-fix-container-paths-config-parsing.yaml b/changelog/fragments/1677780422-fix-container-paths-config-parsing.yaml new file mode 100644 index 00000000000..fee07b4291f --- /dev/null +++ b/changelog/fragments/1677780422-fix-container-paths-config-parsing.yaml @@ -0,0 +1,32 @@ +# Kind can be one of: +# - breaking-change: a change to previously-documented behavior +# - deprecation: functionality that is being removed in a later release +# - bug-fix: fixes a problem in a previous version +# - enhancement: extends functionality but does not break or fix existing behavior +# - feature: new functionality +# - known-issue: problems that we are aware of in a given version +# - security: impacts on the security of a product or a user’s deployment. +# - upgrade: important information for someone upgrading from a prior version +# - other: does not fit into any of the other categories +kind: bug-fix + +# Change summary; a 80ish characters long description of the change. +summary: Fix parsing of paths from container-paths.yml file + +# Long description; in case the summary is not enough to describe the change +# this field accommodate a description without length limits. +# NOTE: This field will be rendered only for breaking-change and known-issue kinds at the moment. +#description: + +# Affected component; a word indicating the component this changeset affects. +component: agent + +# PR URL; optional; the PR number that added the changeset. +# If not present is automatically filled by the tooling finding the PR where this changelog fragment has been added. +# NOTE: the tooling supports backports, so it's able to fill the original PR number instead of the backport PR number. +# Please provide it if you are adding a fragment for a different PR. +pr: https://github.com/elastic/elastic-agent/pull/2340 + +# Issue URL; optional; the GitHub issue related to this changeset (either closes or is part of). +# If not present is automatically filled by the tooling with the issue linked to the PR number. +#issue: https://github.com/owner/repo/1234 diff --git a/internal/pkg/agent/cmd/container.go b/internal/pkg/agent/cmd/container.go index 1762a2994ee..ccb65e37b2f 100644 --- a/internal/pkg/agent/cmd/container.go +++ b/internal/pkg/agent/cmd/container.go @@ -848,8 +848,8 @@ func setPaths(statePath, configPath, logsPath string, writePaths bool) error { type containerPaths struct { StatePath string `config:"state_path" yaml:"state_path"` - ConfigPath string `config:"state_path" yaml:"config_path,omitempty"` - LogsPath string `config:"state_path" yaml:"logs_path,omitempty"` + ConfigPath string `config:"config_path" yaml:"config_path,omitempty"` + LogsPath string `config:"logs_path" yaml:"logs_path,omitempty"` } func writeContainerPaths(original, statePath, configPath, logsPath string) error { diff --git a/internal/pkg/agent/cmd/container_test.go b/internal/pkg/agent/cmd/container_test.go new file mode 100644 index 00000000000..d104628c658 --- /dev/null +++ b/internal/pkg/agent/cmd/container_test.go @@ -0,0 +1,58 @@ +// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one +// or more contributor license agreements. Licensed under the Elastic License; +// you may not use this file except in compliance with the Elastic License. + +package cmd + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/elastic/elastic-agent/internal/pkg/config" +) + +func TestContainerTestPaths(t *testing.T) { + cases := map[string]struct { + config string + expected containerPaths + }{ + "only_state_path": { + config: `state_path: /foo/bar/state`, + expected: containerPaths{ + StatePath: "/foo/bar/state", + ConfigPath: "", + LogsPath: "", + }, + }, + "only_config_path": { + config: `config_path: /foo/bar/config`, + expected: containerPaths{ + StatePath: "", + ConfigPath: "/foo/bar/config", + LogsPath: "", + }, + }, + "only_logs_path": { + config: `logs_path: /foo/bar/logs`, + expected: containerPaths{ + StatePath: "", + ConfigPath: "", + LogsPath: "/foo/bar/logs", + }, + }, + } + + for name, c := range cases { + t.Run(name, func(t *testing.T) { + cfg, err := config.NewConfigFrom(c.config) + require.NoError(t, err) + + var paths containerPaths + err = cfg.Unpack(&paths) + require.NoError(t, err) + + require.Equal(t, c.expected, paths) + }) + } +}