github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/apiserver/common/networkingcommon/shims.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package networkingcommon 5 6 import ( 7 "github.com/juju/errors" 8 9 "github.com/juju/juju/state" 10 ) 11 12 // linkLayerMachine wraps a state.Machine reference in order to 13 // implement the LinkLayerMachine indirection. 14 type linkLayerMachine struct { 15 *state.Machine 16 } 17 18 // AllLinkLayerDevices returns all layer-2 devices for the machine 19 // as a slice of the LinkLayerDevice indirection. 20 func (m *linkLayerMachine) AllLinkLayerDevices() ([]LinkLayerDevice, error) { 21 devList, err := m.Machine.AllLinkLayerDevices() 22 if err != nil { 23 return nil, err 24 } 25 26 out := make([]LinkLayerDevice, len(devList)) 27 for i, dev := range devList { 28 out[i] = dev 29 } 30 31 return out, nil 32 } 33 34 // AllDeviceAddresses returns all layer-3 addresses for the machine 35 // as a slice of the LinkLayerAddress indirection. 36 func (m *linkLayerMachine) AllDeviceAddresses() ([]LinkLayerAddress, error) { 37 addrList, err := m.Machine.AllDeviceAddresses() 38 if err != nil { 39 return nil, err 40 } 41 42 out := make([]LinkLayerAddress, len(addrList)) 43 for i, addr := range addrList { 44 out[i] = addr 45 } 46 47 return out, nil 48 } 49 50 type linkLayerState struct { 51 *state.State 52 } 53 54 func (s *linkLayerState) Machine(id string) (LinkLayerMachine, error) { 55 m, err := s.State.Machine(id) 56 return &linkLayerMachine{m}, errors.Trace(err) 57 }