Skip to content

Commit c08c84b

Browse files
committed
added json field to helm manager
1 parent 1f9b296 commit c08c84b

File tree

3 files changed

+60
-16
lines changed

3 files changed

+60
-16
lines changed

test/e2e/envutils.go

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -43,23 +43,27 @@ func ApplyResources(k8ctl *utils.K8CtlManager, helm *utils.HelmManager, env *env
4343
//}
4444

4545
// Install Helm chart
46-
values := map[string]any{
47-
"clusterName": env.EKSClusterName,
48-
"region": env.Region,
49-
"agent.image.repository": env.CloudwatchAgentRepository,
50-
"agent.image.tag": env.CloudwatchAgentTag,
51-
"agent.image.repositoryDomainMap.public": env.CloudwatchAgentRepositoryURL,
52-
"manager.image.repository": env.CloudwatchAgentOperatorRepository,
53-
"manager.image.tag": env.CloudwatchAgentOperatorTag,
54-
"manager.image.repositoryDomainMap.public": env.CloudwatchAgentOperatorRepositoryURL,
46+
values := map[string]utils.HelmValue{
47+
"clusterName": utils.NewHelmValue(env.EKSClusterName),
48+
"region": utils.NewHelmValue(env.Region),
49+
"agent.image.repository": utils.NewHelmValue(env.CloudwatchAgentRepository),
50+
"agent.image.tag": utils.NewHelmValue(env.CloudwatchAgentTag),
51+
"agent.image.repositoryDomainMap.public": utils.NewHelmValue(env.CloudwatchAgentRepositoryURL),
52+
"manager.image.repository": utils.NewHelmValue(env.CloudwatchAgentOperatorRepository),
53+
"manager.image.tag": utils.NewHelmValue(env.CloudwatchAgentOperatorTag),
54+
"manager.image.repositoryDomainMap.public": utils.NewHelmValue(env.CloudwatchAgentOperatorRepositoryURL),
5555
}
56+
5657
if env.ComputeType == computetype.ROSA {
57-
values["k8sMode"] = string(computetype.ROSA)
58+
values["k8sMode"] = utils.NewHelmValue(string(computetype.ROSA))
5859
}
5960

6061
if env.AgentConfig != "" {
6162
if agentConfigContent, err := os.ReadFile(env.AgentConfig); err == nil {
62-
values["agent.config"] = string(agentConfigContent)
63+
values["agent.config"] = utils.HelmValue{
64+
Value: string(agentConfigContent),
65+
Type: utils.HelmValueJSON,
66+
}
6367
} else {
6468
return fmt.Errorf("failed to read agent config file: %w", err)
6569
}

test/e2e/testutils.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ import (
2525
//------------------------------------------------------------------------------
2626

2727
const (
28-
Wait = 10 * time.Minute
29-
WaitForResourceCreation = 2 * time.Minute
28+
Wait = 10 * time.Second
29+
WaitForResourceCreation = 2 * time.Second
3030
interval = 30 * time.Second
3131
)
3232

test/e2e/utils/helm_manager.go

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,25 @@ import (
77
"strings"
88
)
99

10+
// HelmValueType is a string-based enum for Helm value types
11+
type HelmValueType string
12+
13+
// Enum values for HelmValueType
14+
const (
15+
HelmValueText HelmValueType = "text" // Default
16+
HelmValueJSON HelmValueType = "json"
17+
)
18+
19+
// IsValid checks if the HelmValueType is a valid enum value
20+
func (hvt HelmValueType) IsValid() bool {
21+
switch hvt {
22+
case HelmValueText, HelmValueJSON:
23+
return true
24+
default:
25+
return false
26+
}
27+
}
28+
1029
// HelmManager handles Helm operations.
1130
type HelmManager struct{}
1231

@@ -15,16 +34,37 @@ func NewHelmManager() *HelmManager {
1534
return &HelmManager{}
1635
}
1736

37+
// HelmValue represents a Helm chart value with a type
38+
type HelmValue struct {
39+
Value string `json:"value"`
40+
Type HelmValueType `json:"type,omitempty"`
41+
}
42+
43+
// NewHelmValue creates a new HelmValue with the given value and default text type
44+
func NewHelmValue(value string) HelmValue {
45+
return HelmValue{
46+
Value: value,
47+
Type: HelmValueText,
48+
}
49+
}
50+
1851
// InstallOrUpdate installs or upgrades a Helm release.
19-
func (h *HelmManager) InstallOrUpdate(releaseName, chartPath string, values map[string]any, namespace string) error {
52+
func (h *HelmManager) InstallOrUpdate(releaseName, chartPath string, values map[string]HelmValue, namespace string) error {
2053
args := []string{"upgrade", "--install", releaseName, chartPath, "--namespace", namespace, "--create-namespace"}
2154

2255
// Convert values map to --set flags
2356
for key, value := range values {
24-
if value.(string) == "" {
57+
if !value.Type.IsValid() {
58+
return fmt.Errorf("invalid helm value type: %s for %s", value.Type, key)
59+
}
60+
if value.Value == "" {
2561
continue
2662
}
27-
args = append(args, "--set", fmt.Sprintf("%s=%v", key, value))
63+
setFlag := "--set"
64+
if value.Type == HelmValueJSON {
65+
setFlag = "--set-json"
66+
}
67+
args = append(args, setFlag, fmt.Sprintf("%s=%v", key, value.Value))
2868
}
2969

3070
helmCmd := exec.Command("helm", args...)

0 commit comments

Comments
 (0)