summaryrefslogtreecommitdiff
path: root/app-containers/incus/files/incus-0.2-lxd-to-incus-openrc-support.patch
blob: 9ab26752f9f87737f1fe9c7a2a4e29122b3d466a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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
+}