...
1 package netplan
2
3 import (
4 "fmt"
5
6 "github.com/godbus/dbus/v5"
7 )
8
9 type Connection interface {
10 Connect() error
11 Apply() (bool, error)
12 Close() error
13 }
14
15 type API struct {
16 *dbus.Conn
17 }
18
19 func (c *API) Connect() error {
20 conn, err := dbus.ConnectSystemBus()
21 if err != nil {
22 return fmt.Errorf("failed to establish connection to system dbus: %w", err)
23 }
24 c.Conn = conn
25 return nil
26 }
27
28 func (c *API) Apply() (bool, error) {
29 obj := c.Conn.Object("io.netplan.Netplan", "/io/netplan/Netplan")
30 var reply bool
31 response := obj.Call("io.netplan.Netplan.Apply", 0)
32 err := response.Store(&reply)
33 if err != nil {
34 return reply, err
35 }
36 return reply, response.Err
37 }
38
View as plain text