Skip to content

Commit 19d791f

Browse files
authored
Merge pull request #4761 from randomvariable/remove-kubetest-viper
🌱 kubetest: Remove usage of Viper, converting config files to kubetest arguments
2 parents 2c7a4f3 + 8445e16 commit 19d791f

File tree

1 file changed

+25
-7
lines changed

1 file changed

+25
-7
lines changed

test/framework/kubetest/run.go

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package kubetest
1919

2020
import (
2121
"context"
22+
"fmt"
2223
"os"
2324
"os/exec"
2425
"os/user"
@@ -32,6 +33,7 @@ import (
3233
"k8s.io/client-go/discovery"
3334
"k8s.io/client-go/tools/clientcmd"
3435
"sigs.k8s.io/cluster-api/test/framework"
36+
"sigs.k8s.io/yaml"
3537
)
3638

3739
const (
@@ -111,12 +113,11 @@ func Run(ctx context.Context, input RunInput) error {
111113
"slowSpecThreshold": strconv.Itoa(input.GinkgoSlowSpecThreshold),
112114
}
113115

114-
// Copy configuration files for kubetest into the artifacts directory
115-
// to avoid issues with volume mounts on MacOS
116-
tmpConfigFilePath := path.Join(kubetestConfigDir, "viper-config.yaml")
117-
if err := copyFile(input.ConfigFilePath, tmpConfigFilePath); err != nil {
116+
config, err := parseKubetestConfig(input.ConfigFilePath)
117+
if err != nil {
118118
return err
119119
}
120+
120121
tmpKubeConfigPath, err := dockeriseKubeconfig(kubetestConfigDir, input.ClusterProxy.GetKubeconfigPath())
121122
if err != nil {
122123
return err
@@ -138,7 +139,6 @@ func Run(ctx context.Context, input RunInput) error {
138139
"dump-logs-on-failure": "false",
139140
"report-prefix": "kubetest.",
140141
"num-nodes": strconv.FormatInt(int64(input.NumberOfNodes), 10),
141-
"viper-config": "/tmp/viper-config.yaml",
142142
}
143143
ginkgoArgs := buildArgs(ginkgoVars, "-")
144144
e2eArgs := buildArgs(e2eVars, "--")
@@ -147,15 +147,14 @@ func Run(ctx context.Context, input RunInput) error {
147147
}
148148
kubeConfigVolumeMount := volumeArg(tmpKubeConfigPath, "/tmp/kubeconfig")
149149
outputVolumeMount := volumeArg(reportDir, "/output")
150-
viperVolumeMount := volumeArg(tmpConfigFilePath, "/tmp/viper-config.yaml")
151150
user, err := user.Current()
152151
if err != nil {
153152
return errors.Wrap(err, "unable to determine current user")
154153
}
155154
userArg := user.Uid + ":" + user.Gid
156155
entrypointArg := "--entrypoint=/usr/local/bin/ginkgo"
157156
networkArg := "--network=kind"
158-
e2eCmd := exec.Command("docker", "run", "--user", userArg, entrypointArg, kubeConfigVolumeMount, outputVolumeMount, viperVolumeMount, "-t", networkArg)
157+
e2eCmd := exec.Command("docker", "run", "--user", userArg, entrypointArg, kubeConfigVolumeMount, outputVolumeMount, "-t", networkArg)
159158
if len(testRepoListVolumeArgs) > 0 {
160159
e2eCmd.Args = append(e2eCmd.Args, testRepoListVolumeArgs...)
161160
}
@@ -164,13 +163,32 @@ func Run(ctx context.Context, input RunInput) error {
164163
e2eCmd.Args = append(e2eCmd.Args, "/usr/local/bin/e2e.test")
165164
e2eCmd.Args = append(e2eCmd.Args, "--")
166165
e2eCmd.Args = append(e2eCmd.Args, e2eArgs...)
166+
e2eCmd.Args = append(e2eCmd.Args, config.toFlags()...)
167167
e2eCmd = framework.CompleteCommand(e2eCmd, "Running e2e test", false)
168168
if err := e2eCmd.Run(); err != nil {
169169
return errors.Wrap(err, "Unable to run conformance tests")
170170
}
171171
return framework.GatherJUnitReports(reportDir, input.ArtifactsDirectory)
172172
}
173173

174+
type kubetestConfig map[string]string
175+
176+
func (c kubetestConfig) toFlags() []string {
177+
return buildArgs(c, "-")
178+
}
179+
180+
func parseKubetestConfig(kubetestConfigFile string) (kubetestConfig, error) {
181+
conf := make(kubetestConfig)
182+
data, err := os.ReadFile(kubetestConfigFile)
183+
if err != nil {
184+
return nil, fmt.Errorf("unable to read kubetest config file %s: %w", kubetestConfigFile, err)
185+
}
186+
if err := yaml.Unmarshal(data, conf); err != nil {
187+
return nil, fmt.Errorf("unable to parse kubetest config file %s as valid, non-nested YAML: %w", kubetestConfigFile, err)
188+
}
189+
return conf, nil
190+
}
191+
174192
func isUsingCIArtifactsVersion(k8sVersion string) bool {
175193
return strings.Contains(k8sVersion, "-")
176194
}

0 commit comments

Comments
 (0)