You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.0 KiB
72 lines
2.0 KiB
From 73f22c10770ba07ffe55e37480c5d50beb3c0c35 Mon Sep 17 00:00:00 2001
|
|
From: xsoalokinx <soalokin@live.com>
|
|
Date: Sun, 29 Oct 2023 07:42:02 +0000
|
|
Subject: [PATCH] cmd/lxd-to-incus: Add OpenRC target support
|
|
|
|
Signed-off-by: xsoalokinx <soalokin@live.com>
|
|
---
|
|
cmd/lxd-to-incus/targets.go | 46 ++++++++++++++++++++++++++++++++++++-
|
|
1 file changed, 45 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/cmd/lxd-to-incus/targets.go b/cmd/lxd-to-incus/targets.go
|
|
index ed84d3ebc..0940e1597 100644
|
|
--- a/cmd/lxd-to-incus/targets.go
|
|
+++ b/cmd/lxd-to-incus/targets.go
|
|
@@ -16,7 +16,7 @@ type Target interface {
|
|
Paths() (*DaemonPaths, error)
|
|
}
|
|
|
|
-var targets = []Target{&targetSystemd{}}
|
|
+var targets = []Target{&targetSystemd{}, &targetOpenRC{}}
|
|
|
|
type targetSystemd struct{}
|
|
|
|
@@ -61,3 +61,47 @@ func (s *targetSystemd) Paths() (*DaemonPaths, error) {
|
|
Cache: "/var/cache/incus/",
|
|
}, nil
|
|
}
|
|
+
|
|
+type targetOpenRC struct{}
|
|
+
|
|
+func (s *targetOpenRC) Present() bool {
|
|
+ if !util.PathExists("/var/lib/incus/") {
|
|
+ return false
|
|
+ }
|
|
+
|
|
+ _, err := subprocess.RunCommand("rc-service", "--exists", "incus")
|
|
+ if err != nil {
|
|
+ return false
|
|
+ }
|
|
+
|
|
+ return true
|
|
+}
|
|
+
|
|
+func (s *targetOpenRC) Stop() error {
|
|
+ _, err := subprocess.RunCommand("rc-service", "incus", "stop")
|
|
+ return err
|
|
+}
|
|
+
|
|
+func (s *targetOpenRC) Start() error {
|
|
+ _, err := subprocess.RunCommand("rc-service", "incus", "start")
|
|
+ if err != nil {
|
|
+ return err
|
|
+ }
|
|
+
|
|
+ // Wait for the socket to become available.
|
|
+ time.Sleep(5 * time.Second)
|
|
+
|
|
+ return nil
|
|
+}
|
|
+
|
|
+func (s *targetOpenRC) Connect() (incus.InstanceServer, error) {
|
|
+ return incus.ConnectIncusUnix("/var/lib/incus/unix.socket", nil)
|
|
+}
|
|
+
|
|
+func (s *targetOpenRC) Paths() (*DaemonPaths, error) {
|
|
+ return &DaemonPaths{
|
|
+ Daemon: "/var/lib/incus/",
|
|
+ Logs: "/var/log/incus/",
|
|
+ Cache: "/var/cache/incus/",
|
|
+ }, nil
|
|
+}
|