Skip to content

Commit e16a230

Browse files
authored
add a hidden command that prints the embedded data (#387)
* add a hidden command that prints the embedded data application, cluster config, channel release, and host preflights test the command * rename 'ec version embed' to 'ec version embedded-data'
1 parent 2c21a41 commit e16a230

File tree

2 files changed

+85
-3
lines changed

2 files changed

+85
-3
lines changed

cmd/embedded-cluster/version.go

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import (
2020
var versionCommand = &cli.Command{
2121
Name: "version",
2222
Usage: fmt.Sprintf("Show the %s component versions", defaults.BinaryName()),
23-
Subcommands: []*cli.Command{metadataCommand},
23+
Subcommands: []*cli.Command{metadataCommand, embeddedDataCommand},
2424
Action: func(c *cli.Context) error {
2525
opts := []addons.Option{addons.Quiet(), addons.WithoutPrompt()}
2626
versions, err := addons.NewApplier(opts...).Versions(config.AdditionalCharts())
@@ -111,3 +111,61 @@ var metadataCommand = &cli.Command{
111111
return nil
112112
},
113113
}
114+
115+
var embeddedDataCommand = &cli.Command{
116+
Name: "embedded-data",
117+
Usage: "read the application data embedded in the cluster",
118+
Hidden: true,
119+
Action: func(context *cli.Context) error {
120+
// Application
121+
app, err := release.GetApplication()
122+
if err != nil {
123+
return fmt.Errorf("failed to get embedded application: %w", err)
124+
}
125+
fmt.Printf("Application:\n%s\n\n", string(app))
126+
127+
// Embedded Cluster Config
128+
cfg, err := release.GetEmbeddedClusterConfig()
129+
if err != nil {
130+
return fmt.Errorf("failed to get embedded cluster config: %w", err)
131+
}
132+
if cfg != nil {
133+
cfgJson, err := json.MarshalIndent(cfg, "", " ")
134+
if err != nil {
135+
return fmt.Errorf("failed to marshal embedded cluster config: %w", err)
136+
}
137+
138+
fmt.Printf("Embedded Cluster Config:\n%s\n\n", string(cfgJson))
139+
}
140+
141+
// Channel Release
142+
rel, err := release.GetChannelRelease()
143+
if err != nil {
144+
return fmt.Errorf("failed to get release: %w", err)
145+
}
146+
if rel != nil {
147+
relJson, err := json.MarshalIndent(rel, "", " ")
148+
if err != nil {
149+
return fmt.Errorf("failed to marshal release: %w", err)
150+
}
151+
152+
fmt.Printf("Release:\n%s\n\n", string(relJson))
153+
}
154+
155+
// Host Preflights
156+
pre, err := release.GetHostPreflights()
157+
if err != nil {
158+
return fmt.Errorf("failed to get host preflights: %w", err)
159+
}
160+
if pre != nil {
161+
preJson, err := json.MarshalIndent(pre, "", " ")
162+
if err != nil {
163+
return fmt.Errorf("failed to marshal host preflights: %w", err)
164+
}
165+
166+
fmt.Printf("Preflights:\n%s\n\n", string(preJson))
167+
}
168+
169+
return nil
170+
},
171+
}

e2e/version_test.go

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ func TestVersion(t *testing.T) {
2121
EmbeddedClusterPath: "../output/bin/embedded-cluster",
2222
})
2323
defer tc.Destroy()
24-
t.Logf("%s: validating embedded-cluster version in node 0", time.Now().Format(time.RFC3339))
24+
t.Logf("%s: validating 'embedded-cluster version' in node 0", time.Now().Format(time.RFC3339))
2525
line := []string{"embedded-cluster", "version"}
2626
stdout, stderr, err := RunRegularUserCommandOnNode(t, tc, 0, line)
2727
if err != nil {
@@ -42,6 +42,7 @@ func TestVersion(t *testing.T) {
4242
return
4343
}
4444

45+
t.Logf("%s: validating 'embedded-cluster version metadata' in node 0", time.Now().Format(time.RFC3339))
4546
line2 := []string{"embedded-cluster", "version", "metadata"}
4647
stdout, stderr, err = RunRegularUserCommandOnNode(t, tc, 0, line2)
4748
if err != nil {
@@ -90,7 +91,30 @@ func TestVersion(t *testing.T) {
9091

9192
if failed {
9293
t.Log(output)
93-
return
94+
t.FailNow()
95+
}
96+
97+
t.Logf("%s: validating 'embedded-cluster version embedded-data' in node 0", time.Now().Format(time.RFC3339))
98+
line3 := []string{"embedded-cluster", "version", "embedded-data"}
99+
stdout, stderr, err = RunRegularUserCommandOnNode(t, tc, 0, line3)
100+
if err != nil {
101+
t.Fatalf("fail to run metadata command on node %s: %v", tc.Nodes[0], err)
102+
}
103+
104+
sections := []string{"Application", "Embedded Cluster Config", "Release", "Preflights"}
105+
for _, section := range sections {
106+
if !strings.Contains(stdout, section) {
107+
t.Errorf("missing %q section in 'embed' output", section)
108+
failed = true
109+
}
110+
}
111+
112+
if failed {
113+
t.Log("stdout")
114+
t.Log(stdout)
115+
t.Log("stderr")
116+
t.Log(stderr)
117+
t.FailNow()
94118
}
95119

96120
t.Logf("%s: test complete", time.Now().Format(time.RFC3339))

0 commit comments

Comments
 (0)