Skip to content
Merged
13 changes: 9 additions & 4 deletions aitelemetry/telemetrywrapper_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,15 @@ func TestMain(m *testing.M) {
fmt.Printf("TestST LogDir configuration succeeded\n")
}

p := platform.NewExecClient()
if runtime.GOOS == "linux" {
platform.ExecuteCommand("cp metadata_test.json /tmp/azuremetadata.json")
//nolint:errcheck // initial test setup
p.ExecuteCommand("cp metadata_test.json /tmp/azuremetadata.json")
} else {
metadataFile := filepath.FromSlash(os.Getenv("TEMP")) + "\\azuremetadata.json"
cmd := fmt.Sprintf("copy metadata_test.json %s", metadataFile)
platform.ExecuteCommand(cmd)
//nolint:errcheck // initial test setup
p.ExecuteCommand(cmd)
}

hostu, _ := url.Parse("tcp://" + hostAgentUrl)
Expand All @@ -54,11 +57,13 @@ func TestMain(m *testing.M) {
exitCode := m.Run()

if runtime.GOOS == "linux" {
platform.ExecuteCommand("rm /tmp/azuremetadata.json")
//nolint:errcheck // test cleanup
p.ExecuteCommand("rm /tmp/azuremetadata.json")
} else {
metadataFile := filepath.FromSlash(os.Getenv("TEMP")) + "\\azuremetadata.json"
cmd := fmt.Sprintf("del %s", metadataFile)
platform.ExecuteCommand(cmd)
//nolint:errcheck // initial test cleanup
p.ExecuteCommand(cmd)
}

log.Close()
Expand Down
2 changes: 1 addition & 1 deletion cni/network/network.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ func NewPlugin(name string,

nl := netlink.NewNetlink()
// Setup network manager.
nm, err := network.NewNetworkManager(nl)
nm, err := network.NewNetworkManager(nl, platform.NewExecClient())
if err != nil {
return nil, err
}
Expand Down
2 changes: 1 addition & 1 deletion cnm/network/network.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ func NewPlugin(config *common.PluginConfig) (NetPlugin, error) {

nl := netlink.NewNetlink()
// Setup network manager.
nm, err := network.NewNetworkManager(nl)
nm, err := network.NewNetworkManager(nl, platform.NewExecClient())
if err != nil {
return nil, err
}
Expand Down
2 changes: 1 addition & 1 deletion cnms/service/networkmonitor.go
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ func main() {
}

nl := netlink.NewNetlink()
nm, err := network.NewNetworkManager(nl)
nm, err := network.NewNetworkManager(nl, platform.NewExecClient())
if err != nil {
log.Printf("[monitor] Failed while creating network manager")
return
Expand Down
3 changes: 2 additions & 1 deletion cns/dockerclient/dockerclient.go
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,7 @@ func (dockerClient *DockerClient) CreateNetwork(networkName string, nicInfo *imd

// DeleteNetwork creates a network using docker network create.
func (dockerClient *DockerClient) DeleteNetwork(networkName string) error {
p := platform.NewExecClient()
logger.Printf("[Azure CNS] DeleteNetwork")

url := dockerClient.connectionURL + inspectNetworkPath + networkName
Expand Down Expand Up @@ -178,7 +179,7 @@ func (dockerClient *DockerClient) DeleteNetwork(networkName string) error {

cmd := fmt.Sprintf("iptables -t nat -D POSTROUTING -m iprange ! --dst-range 168.63.129.16 -m addrtype ! --dst-type local ! -d %v -j MASQUERADE",
primaryNic.Subnet)
_, err = platform.ExecuteCommand(cmd)
_, err = p.ExecuteCommand(cmd)
if err != nil {
logger.Printf("[Azure CNS] Error Removing Outbound SNAT rule %v", err)
}
Expand Down
7 changes: 4 additions & 3 deletions ebtables/ebtables.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,11 +129,11 @@ func GetEbtableRules(tableName, chainName string) ([]string, error) {
inChain bool
rules []string
)

p := platform.NewExecClient()
command := fmt.Sprintf(
"ebtables -t %s -L %s --Lmac2",
tableName, chainName)
out, err := platform.ExecuteCommand(command)
out, err := p.ExecuteCommand(command)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -226,8 +226,9 @@ func EbTableRuleExists(tableName, chainName, matchSet string) (bool, error) {

// runEbCmd runs an EB rule command.
func runEbCmd(table, action, chain, rule string) error {
p := platform.NewExecClient()
command := fmt.Sprintf("ebtables -t %s %s %s %s", table, action, chain, rule)
_, err := platform.ExecuteCommand(command)
_, err := p.ExecuteCommand(command)

return err
}
3 changes: 3 additions & 0 deletions ipam/ipv6Ipam.go
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@ func (source *ipv6IpamSource) refresh() error {
}

if source.isLoaded {
log.Printf("ipv6 source already loaded")
return nil
}

Expand Down Expand Up @@ -212,7 +213,9 @@ func (source *ipv6IpamSource) refresh() error {
return err
}

source.isLoaded = true
log.Printf("[ipam] Address space successfully populated from Kubernetes API Server")

return err
}

Expand Down
3 changes: 2 additions & 1 deletion iptables/iptables.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,7 @@ type IPTableEntry struct {
func RunCmd(version, params string) error {
var cmd string

p := platform.NewExecClient()
iptCmd := iptables
if version == V6 {
iptCmd = ip6tables
Expand All @@ -105,7 +106,7 @@ func RunCmd(version, params string) error {
cmd = fmt.Sprintf("%s -w %d %s", iptCmd, lockTimeout, params)
}

if _, err := platform.ExecuteCommand(cmd); err != nil {
if _, err := p.ExecuteCommand(cmd); err != nil {
return err
}

Expand Down
File renamed without changes.
File renamed without changes.
32 changes: 15 additions & 17 deletions network/bridge_endpointclient_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,10 @@ import (

"github.com/Azure/azure-container-networking/ebtables"
"github.com/Azure/azure-container-networking/log"
"github.com/Azure/azure-container-networking/netio"
"github.com/Azure/azure-container-networking/netlink"
"github.com/Azure/azure-container-networking/network/epcommon"
"github.com/Azure/azure-container-networking/network/networkutils"
"github.com/Azure/azure-container-networking/platform"
)

const (
Expand All @@ -26,6 +28,9 @@ type LinuxBridgeEndpointClient struct {
hostIPAddresses []*net.IPNet
mode string
netlink netlink.NetlinkInterface
plClient platform.ExecClient
netioshim netio.NetIOInterface
nuc networkutils.NetworkUtils
}

func NewLinuxBridgeEndpointClient(
Expand All @@ -34,6 +39,7 @@ func NewLinuxBridgeEndpointClient(
containerVethName string,
mode string,
nl netlink.NetlinkInterface,
plc platform.ExecClient,
) *LinuxBridgeEndpointClient {

client := &LinuxBridgeEndpointClient{
Expand All @@ -45,16 +51,17 @@ func NewLinuxBridgeEndpointClient(
hostIPAddresses: []*net.IPNet{},
mode: mode,
netlink: nl,
plClient: plc,
netioshim: &netio.NetIO{},
}

client.hostIPAddresses = append(client.hostIPAddresses, extIf.IPAddresses...)

client.nuc = networkutils.NewNetworkUtils(nl, plc)
return client
}

func (client *LinuxBridgeEndpointClient) AddEndpoints(epInfo *EndpointInfo) error {
epc := epcommon.NewEPCommon(client.netlink)
if err := epc.CreateEndpoint(client.hostVethName, client.containerVethName); err != nil {
if err := client.nuc.CreateEndpoint(client.hostVethName, client.containerVethName); err != nil {
return err
}

Expand Down Expand Up @@ -164,8 +171,7 @@ func (client *LinuxBridgeEndpointClient) MoveEndpointsToContainerNS(epInfo *Endp
}

func (client *LinuxBridgeEndpointClient) SetupContainerInterfaces(epInfo *EndpointInfo) error {
epc := epcommon.NewEPCommon(client.netlink)
if err := epc.SetupContainerInterface(client.containerVethName, epInfo.IfName); err != nil {
if err := client.nuc.SetupContainerInterface(client.containerVethName, epInfo.IfName); err != nil {
return err
}

Expand All @@ -175,19 +181,11 @@ func (client *LinuxBridgeEndpointClient) SetupContainerInterfaces(epInfo *Endpoi
}

func (client *LinuxBridgeEndpointClient) ConfigureContainerInterfacesAndRoutes(epInfo *EndpointInfo) error {
if epInfo.IPV6Mode != "" {
// Enable ipv6 setting in container
if err := epcommon.UpdateIPV6Setting(0); err != nil {
return err
}
}

epc := epcommon.NewEPCommon(client.netlink)
if err := epc.AssignIPToInterface(client.containerVethName, epInfo.IPAddresses); err != nil {
if err := client.nuc.AssignIPToInterface(client.containerVethName, epInfo.IPAddresses); err != nil {
return err
}

if err := addRoutes(client.netlink, client.containerVethName, epInfo.Routes); err != nil {
if err := addRoutes(client.netlink, client.netioshim, client.containerVethName, epInfo.Routes); err != nil {
return err
}

Expand Down Expand Up @@ -280,7 +278,7 @@ func (client *LinuxBridgeEndpointClient) setupIPV6Routes(epInfo *EndpointInfo) e
routes = append(routes, defaultV6Route)

log.Printf("[net] Adding ipv6 routes in container %+v", routes)
if err := addRoutes(client.netlink, client.containerVethName, routes); err != nil {
if err := addRoutes(client.netlink, client.netioshim, client.containerVethName, routes); err != nil {
return nil
}
}
Expand Down
14 changes: 11 additions & 3 deletions network/bridge_networkclient_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ import (
"github.com/Azure/azure-container-networking/ebtables"
"github.com/Azure/azure-container-networking/log"
"github.com/Azure/azure-container-networking/netlink"
"github.com/Azure/azure-container-networking/network/epcommon"
"github.com/Azure/azure-container-networking/network/networkutils"
"github.com/Azure/azure-container-networking/platform"
)

const (
Expand All @@ -26,19 +27,22 @@ type LinuxBridgeClient struct {
hostInterfaceName string
nwInfo NetworkInfo
netlink netlink.NetlinkInterface
nuClient networkutils.NetworkUtils
}

func NewLinuxBridgeClient(
bridgeName string,
hostInterfaceName string,
nwInfo NetworkInfo,
nl netlink.NetlinkInterface,
plc platform.ExecClient,
) *LinuxBridgeClient {
client := &LinuxBridgeClient{
bridgeName: bridgeName,
nwInfo: nwInfo,
hostInterfaceName: hostInterfaceName,
netlink: nl,
nuClient: networkutils.NewNetworkUtils(nl, plc),
}

return client
Expand All @@ -58,7 +62,11 @@ func (client *LinuxBridgeClient) CreateBridge() error {
return err
}

return epcommon.DisableRAForInterface(client.bridgeName)
if err := client.nuClient.DisableRAForInterface(client.bridgeName); err != nil {
return fmt.Errorf("CreateBridge:%w", err)
}

return nil
}

func (client *LinuxBridgeClient) DeleteBridge() error {
Expand Down Expand Up @@ -123,7 +131,7 @@ func (client *LinuxBridgeClient) AddL2Rules(extIf *externalInterface) error {
return err
}

if err := epcommon.EnableIPV6Forwarding(); err != nil {
if err := client.nuClient.EnableIPV6Forwarding(); err != nil {
return err
}
}
Expand Down
9 changes: 5 additions & 4 deletions network/endpoint.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"github.com/Azure/azure-container-networking/log"
"github.com/Azure/azure-container-networking/netlink"
"github.com/Azure/azure-container-networking/network/policy"
"github.com/Azure/azure-container-networking/platform"
)

const (
Expand Down Expand Up @@ -98,7 +99,7 @@ type apipaClient interface {
}

// NewEndpoint creates a new endpoint in the network.
func (nw *network) newEndpoint(cli apipaClient, nl netlink.NetlinkInterface, epInfo *EndpointInfo) (*endpoint, error) {
func (nw *network) newEndpoint(cli apipaClient, nl netlink.NetlinkInterface, plc platform.ExecClient, epInfo *EndpointInfo) (*endpoint, error) {
var ep *endpoint
var err error

Expand All @@ -110,7 +111,7 @@ func (nw *network) newEndpoint(cli apipaClient, nl netlink.NetlinkInterface, epI
}()

// Call the platform implementation.
ep, err = nw.newEndpointImpl(cli, nl, epInfo)
ep, err = nw.newEndpointImpl(cli, nl, plc, epInfo)
if err != nil {
return nil, err
}
Expand All @@ -122,7 +123,7 @@ func (nw *network) newEndpoint(cli apipaClient, nl netlink.NetlinkInterface, epI
}

// DeleteEndpoint deletes an existing endpoint from the network.
func (nw *network) deleteEndpoint(cli apipaClient, nl netlink.NetlinkInterface, endpointID string) error {
func (nw *network) deleteEndpoint(cli apipaClient, nl netlink.NetlinkInterface, plc platform.ExecClient, endpointID string) error {
var err error

log.Printf("[net] Deleting endpoint %v from network %v.", endpointID, nw.Id)
Expand All @@ -140,7 +141,7 @@ func (nw *network) deleteEndpoint(cli apipaClient, nl netlink.NetlinkInterface,
}

// Call the platform implementation.
err = nw.deleteEndpointImpl(cli, nl, ep)
err = nw.deleteEndpointImpl(cli, nl, plc, ep)
if err != nil {
return err
}
Expand Down
Loading