Skip to content

Commit fc4da42

Browse files
authored
refactor: create safer command execution method (#2899)
* rename ExecuteCommand to ExecuteRawCommand * add safer execute command method * fix windows platform command test * add uts and comments * address feedback * add parent context to execute command
1 parent 277aad5 commit fc4da42

18 files changed

+208
-74
lines changed

aitelemetry/telemetrywrapper_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,12 @@ func TestMain(m *testing.M) {
3232
p := platform.NewExecClient(nil)
3333
if runtime.GOOS == "linux" {
3434
//nolint:errcheck // initial test setup
35-
p.ExecuteCommand("cp metadata_test.json /tmp/azuremetadata.json")
35+
p.ExecuteRawCommand("cp metadata_test.json /tmp/azuremetadata.json")
3636
} else {
3737
metadataFile := filepath.FromSlash(os.Getenv("TEMP")) + "\\azuremetadata.json"
3838
cmd := fmt.Sprintf("copy metadata_test.json %s", metadataFile)
3939
//nolint:errcheck // initial test setup
40-
p.ExecuteCommand(cmd)
40+
p.ExecuteRawCommand(cmd)
4141
}
4242

4343
hostu, _ := url.Parse("tcp://" + hostAgentUrl)
@@ -58,12 +58,12 @@ func TestMain(m *testing.M) {
5858

5959
if runtime.GOOS == "linux" {
6060
//nolint:errcheck // test cleanup
61-
p.ExecuteCommand("rm /tmp/azuremetadata.json")
61+
p.ExecuteRawCommand("rm /tmp/azuremetadata.json")
6262
} else {
6363
metadataFile := filepath.FromSlash(os.Getenv("TEMP")) + "\\azuremetadata.json"
6464
cmd := fmt.Sprintf("del %s", metadataFile)
6565
//nolint:errcheck // initial test cleanup
66-
p.ExecuteCommand(cmd)
66+
p.ExecuteRawCommand(cmd)
6767
}
6868

6969
log.Close()

cns/dockerclient/dockerclient.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ func (c *Client) DeleteNetwork(networkName string) error {
181181

182182
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",
183183
primaryNic.Subnet)
184-
_, err = p.ExecuteCommand(cmd)
184+
_, err = p.ExecuteRawCommand(cmd)
185185
if err != nil {
186186
logger.Printf("[Azure CNS] Error Removing Outbound SNAT rule %v", err)
187187
}

ebtables/ebtables.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ func GetEbtableRules(tableName, chainName string) ([]string, error) {
133133
command := fmt.Sprintf(
134134
"ebtables -t %s -L %s --Lmac2",
135135
tableName, chainName)
136-
out, err := p.ExecuteCommand(command)
136+
out, err := p.ExecuteRawCommand(command)
137137
if err != nil {
138138
return nil, err
139139
}
@@ -228,7 +228,7 @@ func EbTableRuleExists(tableName, chainName, matchSet string) (bool, error) {
228228
func runEbCmd(table, action, chain, rule string) error {
229229
p := platform.NewExecClient(nil)
230230
command := fmt.Sprintf("ebtables -t %s %s %s %s", table, action, chain, rule)
231-
_, err := p.ExecuteCommand(command)
231+
_, err := p.ExecuteRawCommand(command)
232232

233233
return err
234234
}

iptables/iptables.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ func (c *Client) RunCmd(version, params string) error {
109109
cmd = fmt.Sprintf("%s -w %d %s", iptCmd, lockTimeout, params)
110110
}
111111

112-
if _, err := p.ExecuteCommand(cmd); err != nil {
112+
if _, err := p.ExecuteRawCommand(cmd); err != nil {
113113
return err
114114
}
115115

network/network_linux.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ func isGreaterOrEqaulUbuntuVersion(versionToMatch int) bool {
256256
}
257257

258258
func (nm *networkManager) systemVersion() (string, error) {
259-
osVersion, err := nm.plClient.ExecuteCommand("lsb_release -rs")
259+
osVersion, err := nm.plClient.ExecuteRawCommand("lsb_release -rs")
260260
if err != nil {
261261
return osVersion, errors.Wrap(err, "error retrieving the system distribution version")
262262
}
@@ -327,7 +327,7 @@ func (nm *networkManager) readDNSInfo(ifName string) (DNSInfo, error) {
327327
return dnsInfo, errors.Wrap(err, "Error generating interface name status cmd")
328328
}
329329

330-
out, err := nm.plClient.ExecuteCommand(cmd)
330+
out, err := nm.plClient.ExecuteRawCommand(cmd)
331331
if err != nil {
332332
return dnsInfo, errors.Wrapf(err, "Error executing interface status with cmd %s", cmd)
333333
}
@@ -434,7 +434,7 @@ func (nm *networkManager) applyDNSConfig(extIf *externalInterface, ifName string
434434
return errors.Wrap(err, "Error generating add DNS Servers cmd")
435435
}
436436
if cmd != "" {
437-
_, err = nm.plClient.ExecuteCommand(cmd)
437+
_, err = nm.plClient.ExecuteRawCommand(cmd)
438438
if err != nil {
439439
return errors.Wrapf(err, "Error executing add DNS Servers with cmd %s", cmd)
440440
}
@@ -447,7 +447,7 @@ func (nm *networkManager) applyDNSConfig(extIf *externalInterface, ifName string
447447
return errors.Wrap(err, "Error generating add domain cmd")
448448
}
449449

450-
_, err = nm.plClient.ExecuteCommand(cmd)
450+
_, err = nm.plClient.ExecuteRawCommand(cmd)
451451
if err != nil {
452452
return errors.Wrapf(err, "Error executing add Domain with cmd %s", cmd)
453453
}
@@ -533,7 +533,7 @@ func (nm *networkManager) connectExternalInterface(extIf *externalInterface, nwI
533533
isSystemdResolvedActive := false
534534
if isGreaterOrEqualUbuntu17 {
535535
// Don't copy dns servers if systemd-resolved isn't available
536-
if _, cmderr := nm.plClient.ExecuteCommand("systemctl status systemd-resolved"); cmderr == nil {
536+
if _, cmderr := nm.plClient.ExecuteRawCommand("systemctl status systemd-resolved"); cmderr == nil {
537537
isSystemdResolvedActive = true
538538
logger.Info("Saving dns config from", zap.String("Name", hostIf.Name))
539539
if err = nm.saveDNSConfig(extIf); err != nil {

network/network_windows.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -214,13 +214,13 @@ func (nm *networkManager) appIPV6RouteEntry(nwInfo *EndpointInfo) error {
214214

215215
cmd := fmt.Sprintf(routeCmd, "delete", nwInfo.Subnets[1].Prefix.String(),
216216
ifName, ipv6DefaultHop)
217-
if out, err = nm.plClient.ExecuteCommand(cmd); err != nil {
217+
if out, err = nm.plClient.ExecuteRawCommand(cmd); err != nil {
218218
logger.Error("Deleting ipv6 route failed", zap.Any("out", out), zap.Error(err))
219219
}
220220

221221
cmd = fmt.Sprintf(routeCmd, "add", nwInfo.Subnets[1].Prefix.String(),
222222
ifName, ipv6DefaultHop)
223-
if out, err = nm.plClient.ExecuteCommand(cmd); err != nil {
223+
if out, err = nm.plClient.ExecuteRawCommand(cmd); err != nil {
224224
logger.Error("Adding ipv6 route failed", zap.Any("out", out), zap.Error(err))
225225
}
226226
}

network/networkutils/networkutils_linux.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ func (nu NetworkUtils) BlockIPAddresses(iptablesClient ipTablesClient, bridgeNam
209209
}
210210

211211
func (nu NetworkUtils) EnableIPV4Forwarding() error {
212-
_, err := nu.plClient.ExecuteCommand(enableIPV4ForwardCmd)
212+
_, err := nu.plClient.ExecuteRawCommand(enableIPV4ForwardCmd)
213213
if err != nil {
214214
logger.Error("Enable ipv4 forwarding failed with", zap.Error(err))
215215
return errors.Wrap(err, "enable ipv4 forwarding failed")
@@ -220,7 +220,7 @@ func (nu NetworkUtils) EnableIPV4Forwarding() error {
220220

221221
func (nu NetworkUtils) EnableIPV6Forwarding() error {
222222
cmd := fmt.Sprint(enableIPV6ForwardCmd)
223-
_, err := nu.plClient.ExecuteCommand(cmd)
223+
_, err := nu.plClient.ExecuteRawCommand(cmd)
224224
if err != nil {
225225
logger.Error("Enable ipv6 forwarding failed with", zap.Error(err))
226226
return err
@@ -233,7 +233,7 @@ func (nu NetworkUtils) EnableIPV6Forwarding() error {
233233
func (nu NetworkUtils) UpdateIPV6Setting(disable int) error {
234234
// sysctl -w net.ipv6.conf.all.disable_ipv6=0/1
235235
cmd := fmt.Sprintf(toggleIPV6Cmd, disable)
236-
_, err := nu.plClient.ExecuteCommand(cmd)
236+
_, err := nu.plClient.ExecuteRawCommand(cmd)
237237
if err != nil {
238238
logger.Error("Update IPV6 Setting failed with", zap.Error(err))
239239
}
@@ -261,7 +261,7 @@ func (nu NetworkUtils) DisableRAForInterface(ifName string) error {
261261
}
262262

263263
cmd := fmt.Sprintf(disableRACmd, ifName)
264-
out, err := nu.plClient.ExecuteCommand(cmd)
264+
out, err := nu.plClient.ExecuteRawCommand(cmd)
265265
if err != nil {
266266
logger.Error("Diabling ra failed with", zap.Error(err), zap.Any("out", out))
267267
}
@@ -271,7 +271,7 @@ func (nu NetworkUtils) DisableRAForInterface(ifName string) error {
271271

272272
func (nu NetworkUtils) SetProxyArp(ifName string) error {
273273
cmd := fmt.Sprintf("echo 1 > /proc/sys/net/ipv4/conf/%v/proxy_arp", ifName)
274-
_, err := nu.plClient.ExecuteCommand(cmd)
274+
_, err := nu.plClient.ExecuteRawCommand(cmd)
275275
return errors.Wrapf(err, "failed to set proxy arp for interface %v", ifName)
276276
}
277277

network/snat/snat_linux.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,7 @@ func (client *Client) addMasqueradeRule(snatBridgeIPWithPrefix string) error {
469469

470470
// Drop all vlan traffic on linux bridge
471471
func (client *Client) addVlanDropRule() error {
472-
out, err := client.plClient.ExecuteCommand(l2PreroutingEntries)
472+
out, err := client.plClient.ExecuteRawCommand(l2PreroutingEntries)
473473
if err != nil {
474474
logger.Error("Error while listing ebtable rules")
475475
return err
@@ -482,15 +482,15 @@ func (client *Client) addVlanDropRule() error {
482482
}
483483

484484
logger.Info("Adding ebtable rule to drop vlan traffic on snat bridge", zap.String("vlanDropAddRule", vlanDropAddRule))
485-
_, err = client.plClient.ExecuteCommand(vlanDropAddRule)
485+
_, err = client.plClient.ExecuteRawCommand(vlanDropAddRule)
486486
return err
487487
}
488488

489489
// This function enables ip forwarding in VM and allow forwarding packets from the interface
490490
func (client *Client) EnableIPForwarding() error {
491491
// Enable ip forwading on linux vm.
492492
// sysctl -w net.ipv4.ip_forward=1
493-
_, err := client.plClient.ExecuteCommand(enableIPForwardCmd)
493+
_, err := client.plClient.ExecuteRawCommand(enableIPForwardCmd)
494494
if err != nil {
495495
return errors.Wrap(err, "enable ipforwarding command failed")
496496
}

network/transparent_endpointclient_linux.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ func NewTransparentEndpointClient(
7373

7474
func (client *TransparentEndpointClient) setArpProxy(ifName string) error {
7575
cmd := fmt.Sprintf("echo 1 > /proc/sys/net/ipv4/conf/%v/proxy_arp", ifName)
76-
_, err := client.plClient.ExecuteCommand(cmd)
76+
_, err := client.plClient.ExecuteRawCommand(cmd)
7777
return err
7878
}
7979

network/transparent_vlan_endpointclient_linux.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -371,12 +371,12 @@ func (client *TransparentVlanEndpointClient) PopulateVnet(epInfo *EndpointInfo)
371371
}
372372
client.vnetMac = vnetVethIf.HardwareAddr
373373
// Disable rp filter again to allow asymmetric routing for tunneling packets
374-
_, err = client.plClient.ExecuteCommand(DisableRPFilterCmd)
374+
_, err = client.plClient.ExecuteRawCommand(DisableRPFilterCmd)
375375
if err != nil {
376376
return errors.Wrap(err, "transparent vlan failed to disable rp filter in vnet")
377377
}
378378
disableRPFilterVlanIfCmd := strings.Replace(DisableRPFilterCmd, "all", client.vlanIfName, 1)
379-
_, err = client.plClient.ExecuteCommand(disableRPFilterVlanIfCmd)
379+
_, err = client.plClient.ExecuteRawCommand(disableRPFilterVlanIfCmd)
380380
if err != nil {
381381
return errors.Wrap(err, "transparent vlan failed to disable rp filter vlan interface in vnet")
382382
}

0 commit comments

Comments
 (0)