diff --git a/README.md b/README.md index d56deb06..0f242598 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ Documentation is [available here](https://kube-burner.github.io/kube-burner-ocp/ Some of the benefits the OCP wrapper provides are: - Simplified execution of the supported workloads. (Only some flags are required) -- Adds OpenShift metadata to the generated documents. +- Adds OpenShift metadata to generated jobSummary and a small subset of metadata fields to the remaining metrics. - Prevents modifying configuration files to tweak some of the parameters of the workloads. - Discovers the Prometheus URL and authentication token, so the user does not have to perform those operations before using them. - Workloads configuration is directly embedded in the binary. diff --git a/cluster-density.go b/cluster-density.go index 8577dfc1..4249faeb 100644 --- a/cluster-density.go +++ b/cluster-density.go @@ -34,6 +34,7 @@ func NewClusterDensity(wh *workloads.WorkloadHelper, variant string) *cobra.Comm var churnDeletionStrategy string var podReadyThreshold time.Duration var metricsProfiles []string + var rc int cmd := &cobra.Command{ Use: variant, Short: fmt.Sprintf("Runs %v workload", variant), @@ -62,7 +63,10 @@ func NewClusterDensity(wh *workloads.WorkloadHelper, variant string) *cobra.Comm } } setMetrics(cmd, metricsProfiles) - wh.Run(cmd.Name()) + rc = wh.Run(cmd.Name()) + }, + PostRun: func(cmd *cobra.Command, args []string) { + os.Exit(rc) }, } cmd.Flags().DurationVar(&podReadyThreshold, "pod-ready-threshold", 2*time.Minute, "Pod ready timeout threshold") diff --git a/common.go b/common.go index 6ed51322..7621f734 100644 --- a/common.go +++ b/common.go @@ -63,6 +63,10 @@ func GatherMetadata(wh *workloads.WorkloadHelper, alerting bool) error { if err != nil { return err } - json.Unmarshal(jsonData, &wh.Metadata) + json.Unmarshal(jsonData, &wh.SummaryMetadata) + wh.MetricsMetadata = map[string]interface{}{ + "ocpMajorVersion": clusterMetadata.OCPMajorVersion, + "ocpVersion": clusterMetadata.OCPVersion, + } return nil } diff --git a/go.mod b/go.mod index a19ab129..ce7362fd 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ toolchain go1.22.3 require ( github.com/cloud-bulldozer/go-commons v1.0.16 github.com/google/uuid v1.6.0 - github.com/kube-burner/kube-burner v1.10.7 + github.com/kube-burner/kube-burner v1.10.8 github.com/openshift/api v0.0.0-20240527133614-ba11c1587003 github.com/openshift/client-go v0.0.0-20240821135114-75c118605d5f github.com/praserx/ipconv v1.2.1 diff --git a/go.sum b/go.sum index 65539519..3ec765db 100644 --- a/go.sum +++ b/go.sum @@ -358,8 +358,8 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kube-burner/kube-burner v1.10.7 h1:QcEQt0x7AxoPT9VTzyO1TZNAdQYAKk4Fz9NJ/uSunjA= -github.com/kube-burner/kube-burner v1.10.7/go.mod h1:NKtSusPSi2rmS5kYAYC1A+JTsC4RsI0VIHFt6ET4EJE= +github.com/kube-burner/kube-burner v1.10.8 h1:WD93tpAbwMWige449qLYUn5T7DRShKQQRepNLiPK/YE= +github.com/kube-burner/kube-burner v1.10.8/go.mod h1:NKtSusPSi2rmS5kYAYC1A+JTsC4RsI0VIHFt6ET4EJE= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= diff --git a/index.go b/index.go index 6b2b76bf..cbcbaf64 100644 --- a/index.go +++ b/index.go @@ -105,7 +105,7 @@ func NewIndex(metricsEndpoint *string, ocpMetaAgent *ocpmetadata.Metadata) *cobr ConfigSpec: &workloads.ConfigSpec, MetricsEndpoint: *metricsEndpoint, UserMetaData: userMetadata, - RawMetadata: metadata, + MetricsMetadata: metadata, }) for _, prometheusClient := range metricsScraper.PrometheusClients { prometheusJob := prometheus.Job{ @@ -137,7 +137,7 @@ func NewIndex(metricsEndpoint *string, ocpMetaAgent *ocpmetadata.Metadata) *cobr JobConfig: config.Job{ Name: jobName, }, - Metadata: metricsScraper.Metadata, + Metadata: metricsScraper.SummaryMetadata, MetricName: "jobSummary", Version: fmt.Sprintf("%v@%v", version.Version, version.GitCommit), Passed: rc == 0, diff --git a/test/helpers.bash b/test/helpers.bash index 9ceab3ad..b29dc09e 100644 --- a/test/helpers.bash +++ b/test/helpers.bash @@ -90,7 +90,8 @@ print_events() { check_metric_value() { sleep 3s # There's some delay on the documents to show up in OpenSearch for metric in "${@}"; do - endpoint="${ES_SERVER}/${ES_INDEX}/_search?q=uuid.keyword:${UUID}+AND+metricName.keyword:${metric}" + query="uuid.keyword:${UUID}+AND+metricName.keyword:${metric}+AND+(metadata.ocpVersion.keyword:*+OR+ocpVersion.keyword:*)" + endpoint="${ES_SERVER}/${ES_INDEX}/_search?q=${query}" RESULT=$(curl -sS ${endpoint} | jq '.hits.total.value // error') RETURN_CODE=$? if [ "${RETURN_CODE}" -ne 0 ]; then diff --git a/workers-scale.go b/workers-scale.go index 47fa8725..c51b541b 100644 --- a/workers-scale.go +++ b/workers-scale.go @@ -119,7 +119,8 @@ func NewWorkersScale(metricsEndpoint *string, ocpMetaAgent *ocpmetadata.Metadata ConfigSpec: &workloads.ConfigSpec, MetricsEndpoint: *metricsEndpoint, UserMetaData: userMetadata, - RawMetadata: metadata, + MetricsMetadata: metadata, + SummaryMetadata: metadata, }) var indexerValue indexers.Indexer for _, value := range metricsScraper.IndexerList { @@ -130,7 +131,7 @@ func NewWorkersScale(metricsEndpoint *string, ocpMetaAgent *ocpmetadata.Metadata scenario.OrchestrateWorkload(wscale.ScaleConfig{ UUID: uuid, AdditionalWorkerNodes: additionalWorkerNodes, - Metadata: metricsScraper.Metadata, + Metadata: metricsScraper.MetricsMetadata, Indexer: indexerValue, GC: gc, ScaleEventEpoch: scaleEventEpoch, @@ -162,7 +163,7 @@ func NewWorkersScale(metricsEndpoint *string, ocpMetaAgent *ocpmetadata.Metadata JobConfig: config.Job{ Name: wscale.JobName, }, - Metadata: metricsScraper.Metadata, + Metadata: metricsScraper.SummaryMetadata, MetricName: "jobSummary", Version: fmt.Sprintf("%v@%v", version.Version, version.GitCommit), Passed: rc == 0,