Skip to content

Commit ce026d1

Browse files
authored
Merge pull request #2368 from Nordix/lentzi90/e2e-console-log
🌱 E2E: Collect console log from machines
2 parents ddecf67 + 4911a5e commit ce026d1

File tree

4 files changed

+55
-1
lines changed

4 files changed

+55
-1
lines changed

pkg/clients/compute.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ type ComputeClient interface {
6868
DeleteAttachedInterface(serverID, portID string) error
6969

7070
ListServerGroups() ([]servergroups.ServerGroup, error)
71+
GetConsoleOutput(serverID string) (string, error)
7172
WithMicroversion(required string) (ComputeClient, error)
7273
}
7374

@@ -186,6 +187,11 @@ func (c computeClient) ListServerGroups() ([]servergroups.ServerGroup, error) {
186187
return servergroups.ExtractServerGroups(allPages)
187188
}
188189

190+
func (c computeClient) GetConsoleOutput(serverID string) (string, error) {
191+
opts := servers.ShowConsoleOutputOpts{}
192+
return servers.ShowConsoleOutput(context.TODO(), c.client, serverID, opts).Extract()
193+
}
194+
189195
// WithMicroversion checks that the required Nova microversion is supported and sets it for
190196
// the ComputeClient.
191197
func (c computeClient) WithMicroversion(required string) (ComputeClient, error) {
@@ -244,6 +250,10 @@ func (e computeErrorClient) ListServerGroups() ([]servergroups.ServerGroup, erro
244250
return nil, e.error
245251
}
246252

253+
func (e computeErrorClient) GetConsoleOutput(_ string) (string, error) {
254+
return "", e.error
255+
}
256+
247257
func (e computeErrorClient) WithMicroversion(_ string) (ComputeClient, error) {
248258
return nil, e.error
249259
}

pkg/clients/mock/compute.go

Lines changed: 15 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/e2e/shared/common.go

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,21 @@ func (o OpenStackLogCollector) CollectMachineLog(ctx context.Context, management
191191
return fmt.Errorf("couldn't create directory %q for logs: %s", outputPath, err)
192192
}
193193

194+
if m.Spec.ProviderID == nil {
195+
return fmt.Errorf("unable to get logs for machine since it has no provider ID")
196+
}
197+
providerID := getIDFromProviderID(*m.Spec.ProviderID)
198+
199+
consolLog, err := GetOpenStackServerConsoleLog(o.E2EContext, providerID)
200+
if err != nil {
201+
return fmt.Errorf("error getting console log for machine: %s", err)
202+
}
203+
logFile := path.Join(outputPath, "console.log")
204+
if err := os.WriteFile(logFile, []byte(consolLog), 0o600); err != nil {
205+
return fmt.Errorf("error writing log file: %s", err)
206+
}
207+
Logf("Console log for machine %q saved", m.Name)
208+
194209
openStackCluster, err := getOpenStackClusterFromMachine(ctx, managementClusterClient, m)
195210
if err != nil {
196211
return fmt.Errorf("error getting OpenStackCluster for Machine: %s", err)
@@ -201,7 +216,7 @@ func (o OpenStackLogCollector) CollectMachineLog(ctx context.Context, management
201216
}
202217
ip := m.Status.Addresses[0].Address
203218

204-
srv, err := GetOpenStackServerWithIP(o.E2EContext, getIDFromProviderID(*m.Spec.ProviderID), openStackCluster)
219+
srv, err := GetOpenStackServerWithIP(o.E2EContext, providerID, openStackCluster)
205220
if err != nil {
206221
return fmt.Errorf("error getting OpenStack server: %w", err)
207222
}

test/e2e/shared/openstack.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -929,3 +929,17 @@ func DumpOpenStackLoadBalancers(e2eCtx *E2EContext, filter loadbalancers.ListOpt
929929
}
930930
return loadBalancersList, nil
931931
}
932+
933+
func GetOpenStackServerConsoleLog(e2eCtx *E2EContext, id string) (string, error) {
934+
providerClient, clientOpts, _, err := GetTenantProviderClient(e2eCtx)
935+
if err != nil {
936+
_, _ = fmt.Fprintf(GinkgoWriter, "error creating provider client: %s\n", err)
937+
return "", nil
938+
}
939+
940+
computeClient, err := clients.NewComputeClient(providerClient, clientOpts)
941+
if err != nil {
942+
return "", fmt.Errorf("unable to create compute client: %w", err)
943+
}
944+
return computeClient.GetConsoleOutput(id)
945+
}

0 commit comments

Comments
 (0)