Skip to content

Commit

Permalink
Fix container paths config (#2340)
Browse files Browse the repository at this point in the history
* Fix config struct tags for containerPaths

* Add unit test

* Adding CHANGELOG file

* Adding PR to CHANGELOG entry file

* Running mage fmt
  • Loading branch information
ycombinator authored Apr 17, 2023
1 parent 0fd3447 commit d7adf66
Show file tree
Hide file tree
Showing 3 changed files with 92 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -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
4 changes: 2 additions & 2 deletions internal/pkg/agent/cmd/container.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
58 changes: 58 additions & 0 deletions internal/pkg/agent/cmd/container_test.go
Original file line number Diff line number Diff line change
@@ -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)
})
}
}

0 comments on commit d7adf66

Please sign in to comment.