27 lines
854 B
Go
27 lines
854 B
Go
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 ""
|
|
}
|