ectl: fix being able to enable services that do not exist

This commit is contained in:
2026-01-31 10:12:16 +02:00
parent a3403ca151
commit b64d6984be
2 changed files with 36 additions and 0 deletions
+12
View File
@@ -190,6 +190,18 @@ func enableDisableService(subcommand string) {
verb = "disabled"
}
// Ensure service exists
if stage != 0 {
if !serviceExists(service) {
if printJson {
fmt.Printf("{\"error\":\"Service (%s) does not exist\"}\n", verb)
} else {
fmt.Printf("Service (%s) does not exist\n", verb)
}
os.Exit(1)
}
}
// Return if service is already enabled
if _, enabledStage := isServiceEnabled(service); enabledStage == stage {
if printJson {
+24
View File
@@ -9,6 +9,30 @@ import (
"gopkg.in/yaml.v3"
)
func serviceExists(service string) bool {
dirEntries, err := os.ReadDir(path.Join(sysconfdir, "esvm/services"))
if err != nil {
return false
}
for _, entry := range dirEntries {
var dataMap map[string]any
data, err := os.ReadFile(path.Join(sysconfdir, "esvm/services", entry.Name()))
err = yaml.Unmarshal(data, &dataMap)
if err != nil {
return false
}
if name, ok := dataMap["name"]; ok && name == service {
return true
}
}
return false
}
func isServiceEnabled(service string) (bool, int) {
for stage, services := range readEnabledServices() {
if slices.Contains(services, service) {