Skip to content

Commit b33a3e8

Browse files
fix: fix whitespace typo when customizing CloudResourceDetectors (#136)
### Description fix whitespace typo when customizing CloudResourceDetectors. Before this change, the generated config was `detectors:[ec2]` instead of `detectors: [ec2]` ### Checklist - [x] Created tests which fail without the change (if possible) - [ ] Extended the README / documentation, if necessary
1 parent cdb91d8 commit b33a3e8

File tree

11 files changed

+67
-44
lines changed

11 files changed

+67
-44
lines changed

integration/scripts/test_configure.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
@u.print_test_decorator
66
def run_test_windows(remote_host: u.Host, env_vars: dict) -> None:
7-
init_command = r'Set-Location "C:\Program Files\Observe\observe-agent"; ./observe-agent init-config --token {} --observe_url {}'.format(
7+
init_command = r'Set-Location "C:\Program Files\Observe\observe-agent"; ./observe-agent init-config --token {} --observe_url {} --cloud_resource_detectors ec2'.format(
88
env_vars["observe_token"], env_vars["observe_url"]
99
)
1010

@@ -18,7 +18,7 @@ def run_test_windows(remote_host: u.Host, env_vars: dict) -> None:
1818
@u.print_test_decorator
1919
def run_test_docker(remote_host: u.Host, env_vars: dict) -> None:
2020
docker_prefix = u.get_docker_prefix(remote_host, False)
21-
init_command = "{} init-config --token {} --observe_url {}".format(
21+
init_command = "{} init-config --token {} --observe_url {} --cloud_resource_detectors ec2".format(
2222
docker_prefix, env_vars["observe_token"], env_vars["observe_url"]
2323
)
2424

@@ -31,7 +31,7 @@ def run_test_docker(remote_host: u.Host, env_vars: dict) -> None:
3131

3232
@u.print_test_decorator
3333
def run_test_linux(remote_host: u.Host, env_vars: dict) -> None:
34-
init_command = "sudo observe-agent init-config --token {} --observe_url {}".format(
34+
init_command = "sudo observe-agent init-config --token {} --observe_url {} --cloud_resource_detectors ec2".format(
3535
env_vars["observe_token"], env_vars["observe_url"]
3636
)
3737

internal/commands/initconfig/initconfig.go

Lines changed: 44 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ var (
1818
config_path string
1919
token string
2020
observe_url string
21+
cloud_resource_detectors []string
2122
self_monitoring_enabled bool
2223
host_monitoring_enabled bool
2324
host_monitoring_logs_enabled bool
@@ -33,6 +34,7 @@ const configTemplate = "observe-agent.tmpl"
3334
type FlatAgentConfig struct {
3435
Token string
3536
ObserveURL string
37+
CloudResourceDetectors []string
3638
SelfMonitoring_Enabled bool
3739
HostMonitoring_Enabled bool
3840
HostMonitoring_LogsEnabled bool
@@ -41,67 +43,79 @@ type FlatAgentConfig struct {
4143
HostMonitoring_Metrics_ProcessEnabled bool
4244
}
4345

44-
func NewConfigureCmd() *cobra.Command {
46+
func NewConfigureCmd(v *viper.Viper) *cobra.Command {
4547
return &cobra.Command{
4648
Use: "init-config",
4749
Short: "Initialize agent configuration",
4850
Long: `This command takes in parameters and creates an initialized observe agent configuration file. Will overwrite existing config file and should only be used to initialize.`,
4951
RunE: func(cmd *cobra.Command, args []string) error {
5052
configValues := FlatAgentConfig{
51-
Token: viper.GetString("token"),
52-
ObserveURL: viper.GetString("observe_url"),
53-
SelfMonitoring_Enabled: viper.GetBool("self_monitoring::enabled"),
54-
HostMonitoring_Enabled: viper.GetBool("host_monitoring::enabled"),
55-
HostMonitoring_LogsEnabled: viper.GetBool("host_monitoring::logs::enabled"),
56-
HostMonitoring_Metrics_HostEnabled: viper.GetBool("host_monitoring::metrics::host::enabled"),
57-
HostMonitoring_Metrics_ProcessEnabled: viper.GetBool("host_monitoring::metrics::process::enabled"),
53+
Token: v.GetString("token"),
54+
ObserveURL: v.GetString("observe_url"),
55+
CloudResourceDetectors: v.GetStringSlice("cloud_resource_detectors"),
56+
SelfMonitoring_Enabled: v.GetBool("self_monitoring::enabled"),
57+
HostMonitoring_Enabled: v.GetBool("host_monitoring::enabled"),
58+
HostMonitoring_LogsEnabled: v.GetBool("host_monitoring::logs::enabled"),
59+
HostMonitoring_Metrics_HostEnabled: v.GetBool("host_monitoring::metrics::host::enabled"),
60+
HostMonitoring_Metrics_ProcessEnabled: v.GetBool("host_monitoring::metrics::process::enabled"),
5861
}
5962
if configValues.HostMonitoring_LogsEnabled {
60-
configValues.HostMonitoring_LogsInclude = viper.GetStringSlice("host_monitoring::logs::include")
63+
configValues.HostMonitoring_LogsInclude = v.GetStringSlice("host_monitoring::logs::include")
6164
}
62-
var outputPath string
63-
if config_path != "" {
64-
outputPath = config_path
65+
var f *os.File
66+
if v.GetBool("print") {
67+
f = os.Stdout
6568
} else {
66-
outputPath = viper.ConfigFileUsed()
69+
var outputPath string
70+
if config_path != "" {
71+
outputPath = config_path
72+
} else {
73+
outputPath = v.ConfigFileUsed()
74+
}
75+
var err error
76+
f, err = os.Create(outputPath)
77+
if err != nil {
78+
return err
79+
}
80+
defer f.Close()
81+
fmt.Printf("Writing configuration values to %s...\n\n", outputPath)
6782
}
68-
f, err := os.Create(outputPath)
69-
if err != nil {
70-
return err
71-
}
72-
defer f.Close()
7383
t := template.Must(template.New(configTemplate).ParseFS(configTemplateFS, configTemplate))
7484
if err := t.ExecuteTemplate(f, configTemplate, configValues); err != nil {
7585
return err
7686
}
77-
fmt.Printf("Writing configuration values to %s...\n\n", outputPath)
7887
return nil
7988
},
8089
}
8190
}
8291

8392
func init() {
84-
configureCmd := NewConfigureCmd()
85-
RegisterConfigFlags(configureCmd)
93+
v := viper.GetViper()
94+
configureCmd := NewConfigureCmd(v)
95+
RegisterConfigFlags(configureCmd, v)
8696
root.RootCmd.AddCommand(configureCmd)
8797
}
8898

89-
func RegisterConfigFlags(cmd *cobra.Command) {
99+
func RegisterConfigFlags(cmd *cobra.Command, v *viper.Viper) {
90100
cmd.Flags().StringVarP(&config_path, "config_path", "", "", "Path to write config output file to")
101+
cmd.PersistentFlags().Bool("print", false, "Print the configuration to stdout instead of writing to a file")
91102
cmd.PersistentFlags().StringVar(&token, "token", "", "Observe token")
92103
cmd.PersistentFlags().StringVar(&observe_url, "observe_url", "", "Observe data collection url")
104+
cmd.PersistentFlags().StringSliceVar(&cloud_resource_detectors, "cloud_resource_detectors", []string{}, "The cloud environments from which to detect resources")
93105
cmd.PersistentFlags().BoolVar(&self_monitoring_enabled, "self_monitoring::enabled", true, "Enable self monitoring")
94106
cmd.PersistentFlags().BoolVar(&host_monitoring_enabled, "host_monitoring::enabled", true, "Enable host monitoring")
95107
cmd.PersistentFlags().BoolVar(&host_monitoring_logs_enabled, "host_monitoring::logs::enabled", true, "Enable host monitoring logs")
96108
cmd.PersistentFlags().StringSliceVar(&host_monitoring_logs_include, "host_monitoring::logs::include", nil, "Set host monitoring log include paths")
97109
cmd.PersistentFlags().BoolVar(&host_monitoring_metrics_host_enabled, "host_monitoring::metrics::host::enabled", true, "Enable host monitoring host metrics")
98110
cmd.PersistentFlags().BoolVar(&host_monitoring_metrics_process_enabled, "host_monitoring::metrics::process::enabled", false, "Enable host monitoring process metrics")
99-
viper.BindPFlag("token", cmd.PersistentFlags().Lookup("token"))
100-
viper.BindPFlag("observe_url", cmd.PersistentFlags().Lookup("observe_url"))
101-
viper.BindPFlag("self_monitoring::enabled", cmd.PersistentFlags().Lookup("self_monitoring::enabled"))
102-
viper.BindPFlag("host_monitoring::enabled", cmd.PersistentFlags().Lookup("host_monitoring::enabled"))
103-
viper.BindPFlag("host_monitoring::logs::enabled", cmd.PersistentFlags().Lookup("host_monitoring::logs::enabled"))
104-
viper.BindPFlag("host_monitoring::logs::include", cmd.PersistentFlags().Lookup("host_monitoring::logs::include"))
105-
viper.BindPFlag("host_monitoring::metrics::host::enabled", cmd.PersistentFlags().Lookup("host_monitoring::metrics::host::enabled"))
106-
viper.BindPFlag("host_monitoring::metrics::process::enabled", cmd.PersistentFlags().Lookup("host_monitoring::metrics::process::enabled"))
111+
v.BindPFlag("print", cmd.PersistentFlags().Lookup("print"))
112+
v.BindPFlag("token", cmd.PersistentFlags().Lookup("token"))
113+
v.BindPFlag("observe_url", cmd.PersistentFlags().Lookup("observe_url"))
114+
v.BindPFlag("cloud_resource_detectors", cmd.PersistentFlags().Lookup("cloud_resource_detectors"))
115+
v.BindPFlag("self_monitoring::enabled", cmd.PersistentFlags().Lookup("self_monitoring::enabled"))
116+
v.BindPFlag("host_monitoring::enabled", cmd.PersistentFlags().Lookup("host_monitoring::enabled"))
117+
v.BindPFlag("host_monitoring::logs::enabled", cmd.PersistentFlags().Lookup("host_monitoring::logs::enabled"))
118+
v.BindPFlag("host_monitoring::logs::include", cmd.PersistentFlags().Lookup("host_monitoring::logs::include"))
119+
v.BindPFlag("host_monitoring::metrics::host::enabled", cmd.PersistentFlags().Lookup("host_monitoring::metrics::host::enabled"))
120+
v.BindPFlag("host_monitoring::metrics::process::enabled", cmd.PersistentFlags().Lookup("host_monitoring::metrics::process::enabled"))
107121
}

internal/commands/initconfig/initconfig_test.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"testing"
66

77
"github.com/observeinc/observe-agent/internal/config"
8+
"github.com/spf13/viper"
89
"github.com/stretchr/testify/assert"
910
"gopkg.in/yaml.v2"
1011
)
@@ -67,8 +68,9 @@ func Test_InitConfigCommand(t *testing.T) {
6768
expectErr: "",
6869
},
6970
}
70-
initConfigCmd := NewConfigureCmd()
71-
RegisterConfigFlags(initConfigCmd)
71+
v := viper.New()
72+
initConfigCmd := NewConfigureCmd(v)
73+
RegisterConfigFlags(initConfigCmd, v)
7274
for _, tc := range testcases {
7375
initConfigCmd.SetArgs(tc.args)
7476
err := initConfigCmd.Execute()

internal/commands/initconfig/observe-agent.tmpl

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,13 @@ observe_url: {{ .ObserveURL }}
77
# Debug mode - Sets agent log level to debug
88
debug: false
99

10+
{{ if .CloudResourceDetectors -}}
11+
cloud_resource_detectors:
12+
{{- range .CloudResourceDetectors }}
13+
- {{ . }}
14+
{{- end }}
15+
{{- end }}
16+
1017
self_monitoring:
1118
enabled: {{ .SelfMonitoring_Enabled }}
1219

internal/connections/templatefuncs.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ func TplInlineArray[T any](arr []T) string {
2222
for i := range arr {
2323
strs[i] = TmplValueToYaml(arr[i])
2424
}
25-
return "[" + strings.Join(strs, ",") + "]"
25+
return "[" + strings.Join(strs, ", ") + "]"
2626
}
2727

2828
func TmplValueToYaml(value any) string {

internal/connections/templatefuncs_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,13 @@ func TestTmplValueToYaml(t *testing.T) {
1616

1717
func TestTplInlineArray(t *testing.T) {
1818
strSlice := []string{"a", "b", "c", "y"}
19-
assert.Equal(t, "[a,b,c,\"y\"]", TplInlineArray(strSlice))
19+
assert.Equal(t, "[a, b, c, \"y\"]", TplInlineArray(strSlice))
2020

2121
intSlice := []int{1, 2, 3}
22-
assert.Equal(t, "[1,2,3]", TplInlineArray(intSlice))
22+
assert.Equal(t, "[1, 2, 3]", TplInlineArray(intSlice))
2323

2424
strIntSlice := []any{"a", 1, "b", 2}
25-
assert.Equal(t, "[a,1,b,2]", TplInlineArray(strIntSlice))
25+
assert.Equal(t, "[a, 1, b, 2]", TplInlineArray(strIntSlice))
2626
}
2727

2828
func TestTplToYaml(t *testing.T) {

internal/connections/test/testHelloWorld.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
string: hello world
2-
in-line-array: [1,2,3]
2+
in-line-array: [1, 2, 3]
33
multi-line-array:
44
- 4
55
- 5

packaging/docker/observe-agent/otel-collector.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ processors:
6969
resourcedetection/cloud:
7070
detectors:
7171
{{- if .CloudResourceDetectors }}
72-
{{- inlineArrayStr .CloudResourceDetectors }}
72+
{{- " " }}{{ inlineArrayStr .CloudResourceDetectors }}
7373
{{- else }} ["gcp", "ecs", "ec2", "azure"]
7474
{{- end }}
7575
timeout: 2s

packaging/linux/etc/observe-agent/otel-collector.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ processors:
6969
resourcedetection/cloud:
7070
detectors:
7171
{{- if .CloudResourceDetectors }}
72-
{{- inlineArrayStr .CloudResourceDetectors }}
72+
{{- " " }}{{ inlineArrayStr .CloudResourceDetectors }}
7373
{{- else }} ["gcp", "ecs", "ec2", "azure"]
7474
{{- end }}
7575
timeout: 2s

packaging/macos/config/otel-collector.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ processors:
6969
resourcedetection/cloud:
7070
detectors:
7171
{{- if .CloudResourceDetectors }}
72-
{{- inlineArrayStr .CloudResourceDetectors }}
72+
{{- " " }}{{ inlineArrayStr .CloudResourceDetectors }}
7373
{{- else }} ["gcp", "ecs", "ec2", "azure"]
7474
{{- end }}
7575
timeout: 2s

0 commit comments

Comments
 (0)