diff --git a/cmd/ectl/go.mod b/cmd/ectl/go.mod index 529f147..28b0013 100644 --- a/cmd/ectl/go.mod +++ b/cmd/ectl/go.mod @@ -2,7 +2,4 @@ module ectl go 1.23.4 -require ( - gopkg.in/yaml.v3 v3.0.1 // indirect - rsc.io/getopt v0.0.0-20170811000552-20be20937449 // indirect -) +require gopkg.in/yaml.v3 v3.0.1 diff --git a/cmd/ectl/go.sum b/cmd/ectl/go.sum index 50f68f8..a62c313 100644 --- a/cmd/ectl/go.sum +++ b/cmd/ectl/go.sum @@ -1,5 +1,4 @@ +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -rsc.io/getopt v0.0.0-20170811000552-20be20937449 h1:UukjJOsjQH0DIuyyrcod6CXHS6cdaMMuJmrt+SN1j4A= -rsc.io/getopt v0.0.0-20170811000552-20be20937449/go.mod h1:dhCdeqAxkyt5u3/sKRkUXuHaMXUu1Pt13GTQAM2xnig= diff --git a/cmd/ectl/main.go b/cmd/ectl/main.go index 2bd322f..dc8ca6e 100644 --- a/cmd/ectl/main.go +++ b/cmd/ectl/main.go @@ -226,26 +226,13 @@ func main() { log.Fatalf("Could not get service status! Error: %s\n", err) } - var state uint64 - bytes, err := os.ReadFile(path.Join(runstatedir, "esvm", flag.Args()[2], "state")) - if err != nil { - state = 0 - } - state, err = strconv.ParseUint(string(bytes), 10, 8) + state := getServiceState(flag.Args()[2]) + enabled := strconv.FormatBool(isServiceEnabled(flag.Args()[2])) + enabled = strings.ToUpper(enabled[:1]) + strings.ToLower(enabled[1:]) fmt.Println("Service name: " + flag.Args()[2]) - switch state { - case 0: - fmt.Println("Service state: Unknown") - case 1: - fmt.Println("Service state: Unloaded") - case 2: - fmt.Println("Service state: Running") - case 3: - fmt.Println("Service state: Stopped") - case 4: - fmt.Println("Service state: Crashed") - } + fmt.Printf(" State: %s\n", state) + fmt.Printf(" Enabled: %s\n", enabled) return } } @@ -254,6 +241,53 @@ func main() { os.Exit(1) } +func getServiceState(serviceName string) string { + if _, err := os.Stat(path.Join(runstatedir, "esvm", serviceName)); err != nil { + return "" + } + + var state uint64 + bytes, err := os.ReadFile(path.Join(runstatedir, "esvm", serviceName, "state")) + if err != nil { + state = 0 + } + state, err = strconv.ParseUint(string(bytes), 10, 8) + + switch state { + case 1: + return "Unloaded" + case 2: + return "Running" + case 3: + return "Stopped" + case 4: + return "Crashed" + case 5: + return "Completed" + default: + return "Unknown" + } +} + +func isServiceEnabled(serviceName string) bool { + if _, err := os.Stat(path.Join(sysconfdir, "esvm/enabled_services")); err != nil { + return false + } + + file, err := os.ReadFile(path.Join(sysconfdir, "esvm/enabled_services")) + if err != nil { + return false + } + + for _, line := range strings.Split(string(file), "\n") { + if strings.TrimSpace(line) == serviceName { + return true + } + } + + return false +} + func printUsage() { fmt.Println("Available sucommands:") fmt.Println("ectl version | Show enit version")