Skip to content

Commit 4ac06a9

Browse files
removed manifest complexity
1 parent eaacf05 commit 4ac06a9

File tree

5 files changed

+42
-44
lines changed

5 files changed

+42
-44
lines changed

test/cases/common/config.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
//go:build e2e
2+
3+
package common
4+
5+
import (
6+
"flag"
7+
"github.com/octago/sflags/gen/gpflag"
8+
"github.com/spf13/pflag"
9+
)
10+
11+
// for adding common flags using gpflag
12+
var MetricDimensions = make(map[string]string)
13+
14+
func InitFlags(config interface{}) {
15+
flags, err := gpflag.Parse(config)
16+
if err != nil {
17+
panic(err)
18+
}
19+
flags.StringToStringVar(&MetricDimensions, "metricDimensions", nil, "Metric dimensions as key=value pairs")
20+
21+
flags.VisitAll(func(pf *pflag.Flag) {
22+
flag.CommandLine.Var(pf.Value, pf.Name, pf.Usage)
23+
})
24+
}

test/cases/nvidia-training/main_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"context"
77
_ "embed"
88
"fmt"
9+
"github.com/aws/aws-k8s-tester/test/cases/common"
910
"log"
1011
"os"
1112
"os/signal"
@@ -36,7 +37,7 @@ func TestMain(m *testing.M) {
3637
testenv = env.NewWithConfig(cfg).WithContext(ctx)
3738

3839
// Render CloudWatch Agent manifest with dynamic dimensions
39-
renderedCloudWatchAgentManifest, err := manifests.RenderCloudWatchAgentManifest(testConfig.MetricDimensions)
40+
renderedCloudWatchAgentManifest, err := manifests.RenderCloudWatchAgentManifest(common.MetricDimensions)
4041
if err != nil {
4142
log.Printf("Warning: failed to render CloudWatch Agent manifest: %v", err)
4243
}

test/cases/nvidia-training/vars.go

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,14 @@
33
package training
44

55
import (
6-
"flag"
7-
"github.com/octago/sflags/gen/gpflag"
8-
"github.com/spf13/pflag"
6+
"github.com/aws/aws-k8s-tester/test/cases/common"
97
"sigs.k8s.io/e2e-framework/pkg/env"
108
)
119

1210
type Config struct {
13-
BertTrainingImage string `flag:"bertTrainingImage" desc:"Docker image used for BERT training workload"`
14-
EfaEnabled bool `flag:"efaEnabled" desc:"Enable Elastic Fabric Adapter (EFA)"`
15-
NodeType string `flag:"nodeType" desc:"Instance type for cluster nodes"`
16-
MetricDimensions []string `flag:"metricDimensions" desc:"Metric dimensions as comma-separated key=value pairs"`
11+
BertTrainingImage string `flag:"bertTrainingImage" desc:"Docker image used for BERT training workload"`
12+
EfaEnabled bool `flag:"efaEnabled" desc:"Enable Elastic Fabric Adapter (EFA)"`
13+
NodeType string `flag:"nodeType" desc:"Instance type for cluster nodes"`
1714
}
1815

1916
// Shared global variables
@@ -27,11 +24,5 @@ var (
2724
)
2825

2926
func init() {
30-
flags, err := gpflag.Parse(testConfig)
31-
if err != nil {
32-
panic(err)
33-
}
34-
flags.VisitAll(func(pf *pflag.Flag) {
35-
flag.CommandLine.Var(pf.Value, pf.Name, pf.Usage)
36-
})
27+
common.InitFlags(testConfig)
3728
}

test/manifests/assets/cloudwatch-agent.yaml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ data:
1818
{
1919
"source_labels": ["job"],
2020
"label_matcher": "dcgm-exporter",
21-
"dimensions": [[{{- if .MetricDimensions}}{{$first := true}}{{range $key, $value := .MetricDimensions}}{{if not $first}}, {{end}}"{{$key}}"{{$first = false}}{{end}}{{- end}}]],
21+
"dimensions": [[{{.DimensionKeys}}]],
2222
"metric_selectors": [
2323
"^DCGM_FI_DEV_GPU_UTIL$",
2424
"^DCGM_FI_DEV_MEM_COPY_UTIL$",
@@ -53,11 +53,9 @@ data:
5353
- dcgm-exporter.kube-system.svc.cluster.local:9400
5454
metrics_path: /metrics
5555
metric_relabel_configs:
56-
{{- if .MetricDimensions}}
5756
{{- range $key, $value := .MetricDimensions}}
5857
- {action: replace, target_label: {{$key}}, replacement: '{{$value}}'}
5958
{{- end}}
60-
{{- end}}
6159
---
6260
apiVersion: apps/v1
6361
kind: DaemonSet

test/manifests/raw.go

Lines changed: 10 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
_ "embed"
66
"fmt"
7+
"html/template"
78
"log"
89
"strings"
910
"time"
@@ -37,34 +38,17 @@ var (
3738
CloudWatchAgentManifest []byte
3839
)
3940

40-
// GetMetricDimensions parses CW metric dimensions from key=value pairs
41-
func GetMetricDimensions(metricDimensions []string) (map[string]string, error) {
42-
dimensions := make(map[string]string)
43-
for _, pair := range metricDimensions {
44-
kv := strings.Split(strings.TrimSpace(pair), "=")
45-
if len(kv) != 2 {
46-
return nil, fmt.Errorf("invalid dimension: %q", pair)
47-
}
48-
key, value := strings.TrimSpace(kv[0]), strings.TrimSpace(kv[1])
49-
if key == "" || value == "" {
50-
return nil, fmt.Errorf("invalid dimension: %q", pair)
51-
}
52-
dimensions[key] = value
53-
}
54-
return dimensions, nil
55-
}
56-
5741
// RenderCloudWatchAgentManifest renders the CloudWatch Agent manifest with dynamic dimensions
58-
func RenderCloudWatchAgentManifest(metricDimensionsSlice []string) ([]byte, error) {
59-
metricDimensions, err := GetMetricDimensions(metricDimensionsSlice)
60-
if err != nil {
61-
return nil, fmt.Errorf("failed to parse metric dimensions: %w", err)
62-
}
63-
renderedManifest, err := fwext.RenderManifests(CloudWatchAgentManifest, map[string]interface{}{"MetricDimensions": metricDimensions})
64-
if err != nil {
65-
return nil, fmt.Errorf("failed to render CloudWatch Agent manifest: %w", err)
42+
func RenderCloudWatchAgentManifest(metricDimensions map[string]string) ([]byte, error) {
43+
var keys []string
44+
for key := range metricDimensions {
45+
keys = append(keys, `"`+key+`"`)
6646
}
67-
return renderedManifest, nil
47+
dimensionsStr := strings.Join(keys, ", ")
48+
return fwext.RenderManifests(CloudWatchAgentManifest, map[string]interface{}{
49+
"MetricDimensions": metricDimensions,
50+
"DimensionKeys": template.HTML(dimensionsStr),
51+
})
6852
}
6953

7054
// DeployDaemonSet returns a function to deploy and wait for a DaemonSet to be ready

0 commit comments

Comments
 (0)