From 474fd8fab8716141a6703a0d055f618f4e7f9753 Mon Sep 17 00:00:00 2001 From: Roberto Dip Date: Tue, 27 Sep 2022 16:31:23 -0300 Subject: [PATCH] fix flag formatting in Orbit (#7981) --- orbit/pkg/update/flag_runner.go | 20 ++++++++++++++++---- orbit/pkg/update/flag_runner_test.go | 10 +++++++++- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/orbit/pkg/update/flag_runner.go b/orbit/pkg/update/flag_runner.go index d12bf4615b..49048c8a2a 100644 --- a/orbit/pkg/update/flag_runner.go +++ b/orbit/pkg/update/flag_runner.go @@ -4,14 +4,16 @@ import ( "encoding/json" "errors" "fmt" - "github.com/fleetdm/fleet/v4/orbit/pkg/constant" - "github.com/fleetdm/fleet/v4/server/service" - "github.com/rs/zerolog/log" "os" "path/filepath" "reflect" + "strconv" "strings" "time" + + "github.com/fleetdm/fleet/v4/orbit/pkg/constant" + "github.com/fleetdm/fleet/v4/server/service" + "github.com/rs/zerolog/log" ) // FlagRunner is a specialized runner to periodically check and update flags from Fleet @@ -144,8 +146,18 @@ func getFlagsFromJSON(flags json.RawMessage) (map[string]string, error) { } for k, v := range data { - result["--"+k] = fmt.Sprintf("%v", v) + switch t := v.(type) { + case string: + result["--"+k] = t + case bool: + result["--"+k] = strconv.FormatBool(t) + case float64: + result["--"+k] = fmt.Sprintf("%.f", v) + default: + result["--"+k] = fmt.Sprintf("%v", v) + } } + return result, nil } diff --git a/orbit/pkg/update/flag_runner_test.go b/orbit/pkg/update/flag_runner_test.go index 41e02d5ad1..3b214acd15 100644 --- a/orbit/pkg/update/flag_runner_test.go +++ b/orbit/pkg/update/flag_runner_test.go @@ -8,7 +8,7 @@ import ( "github.com/stretchr/testify/require" ) -var rawJSONFlags = json.RawMessage(`{"verbose":true, "num":5, "hello":"world"}`) +var rawJSONFlags = json.RawMessage(`{"verbose":true, "num":5, "hello":"world", "largeNum":1234567890}`) func TestGetFlagsFromJson(t *testing.T) { flagsJson, err := getFlagsFromJSON(rawJSONFlags) @@ -39,6 +39,14 @@ func TestGetFlagsFromJson(t *testing.T) { if value != "world" { t.Errorf(`expected "world", got %s`, value) } + + value, ok = flagsJson["--largeNum"] + if !ok { + t.Errorf(`key "--largeNum" expected but not found`) + } + if value != "1234567890" { + t.Errorf(`expected "1234567890", got %s`, value) + } } func TestWriteFlagFile(t *testing.T) {