...

Source file src/edge-infra.dev/pkg/sds/ien/network/netplan/dbus.go

Documentation: edge-infra.dev/pkg/sds/ien/network/netplan

     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