package cluster import ( "strings" ) // parseSnapshotPathFromEtcdSnapshotList runs one orchestration or CLI step. // Signature: parseSnapshotPathFromEtcdSnapshotList(out string) string. // Why: keeps behavior explicit so startup/shutdown workflows remain maintainable as services evolve. func parseSnapshotPathFromEtcdSnapshotList(out string) string { for _, line := range lines(out) { trimmed := strings.TrimSpace(line) lower := strings.ToLower(trimmed) if strings.HasPrefix(lower, "name") && strings.Contains(lower, "location") { continue } for _, field := range strings.Fields(trimmed) { candidate := strings.Trim(strings.TrimSpace(field), "\",") candidate = strings.TrimPrefix(candidate, "file://") if strings.HasPrefix(candidate, "/var/lib/rancher/k3s/server/db/snapshots/") { return candidate } } } return "" }