Skip to content

Commit 7cd9109

Browse files
committed
Single Run command
The change modifies so that we have a single run command, rather than multiple. Although it means that we now need to ignore the cases, it makes it simpler to use as you don't need to decide which function to use based on which output you want - you get all of them. In the future we might add something like exec, where we know we don't expect any output, and maybe this function will be renamed to out.
1 parent 0df9d3a commit 7cd9109

18 files changed

+123
-153
lines changed

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ run `go test --run TestGuestProperty`.
121121
### Re-generate mock
122122

123123
```bash
124-
mockgen -source=vbcmd.go -destination=mockvbcmd_test.go -package=virtualbox -mock_names=Command=MockCommand
124+
go generate ./...
125125
```
126126

127127
## Using local changes with your own project

dhcp.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ func addDHCP(kind, name string, d DHCP) error {
2828
} else {
2929
args = append(args, "--disable")
3030
}
31-
return Manage().run(args...)
31+
_, _, err := Manage().run(args...)
32+
return err
3233
}
3334

3435
// AddInternalDHCP adds a DHCP server to an internal network.
@@ -43,7 +44,7 @@ func AddHostonlyDHCP(ifname string, d DHCP) error {
4344

4445
// DHCPs gets all DHCP server settings in a map keyed by DHCP.NetworkName.
4546
func DHCPs() (map[string]*DHCP, error) {
46-
out, err := Manage().runOut("list", "dhcpservers")
47+
out, _, err := Manage().run("list", "dhcpservers")
4748
if err != nil {
4849
return nil, err
4950
}

dhcp_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ func TestDHCPs(t *testing.T) {
1212
if ManageMock != nil {
1313
listDhcpServersOut := ReadTestData("vboxmanage-list-dhcpservers-1.out")
1414
gomock.InOrder(
15-
ManageMock.EXPECT().runOut("list", "dhcpservers").Return(listDhcpServersOut, nil).Times(1),
15+
ManageMock.EXPECT().run("list", "dhcpservers").Return(listDhcpServersOut, "", nil).Times(1),
1616
)
1717
}
1818
m, err := DHCPs()

extra.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@ package virtualbox
22

33
// SetExtra sets extra data. Name could be "global"|<uuid>|<vmname>
44
func SetExtra(name, key, val string) error {
5-
return Manage().run("setextradata", name, key, val)
5+
_, _, err := Manage().run("setextradata", name, key, val)
6+
return err
67
}
78

89
// DelExtra deletes extra data. Name could be "global"|<uuid>|<vmname>
910
func DelExtra(name, key string) error {
10-
return Manage().run("setextradata", name, key)
11+
_, _, err := Manage().run("setextradata", name, key)
12+
return err
1113
}

guestprop.go

+12-8
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,21 @@ var (
2222
// SetGuestProperty writes a VirtualBox guestproperty to the given value.
2323
func SetGuestProperty(vm string, prop string, val string) error {
2424
if Manage().isGuest() {
25-
return Manage().setOpts(sudo(true)).run("guestproperty", "set", prop, val)
25+
_, _, err := Manage().setOpts(sudo(true)).run("guestproperty", "set", prop, val)
26+
return err
2627
}
27-
return Manage().run("guestproperty", "set", vm, prop, val)
28+
_, _, err := Manage().run("guestproperty", "set", vm, prop, val)
29+
return err
2830
}
2931

3032
// GetGuestProperty reads a VirtualBox guestproperty.
3133
func GetGuestProperty(vm string, prop string) (string, error) {
3234
var out string
3335
var err error
3436
if Manage().isGuest() {
35-
out, err = Manage().setOpts(sudo(true)).runOut("guestproperty", "get", prop)
37+
out, _, err = Manage().setOpts(sudo(true)).run("guestproperty", "get", prop)
3638
} else {
37-
out, err = Manage().runOut("guestproperty", "get", vm, prop)
39+
out, _, err = Manage().run("guestproperty", "get", vm, prop)
3840
}
3941
if err != nil {
4042
return "", err
@@ -61,12 +63,12 @@ func WaitGuestProperty(vm string, prop string) (string, string, error) {
6163
var err error
6264
Debug("WaitGuestProperty(): wait on '%s'", prop)
6365
if Manage().isGuest() {
64-
_, err = Manage().setOpts(sudo(true)).runOut("guestproperty", "wait", prop)
66+
_, _, err = Manage().setOpts(sudo(true)).run("guestproperty", "wait", prop)
6567
if err != nil {
6668
return "", "", err
6769
}
6870
}
69-
out, err = Manage().runOut("guestproperty", "wait", vm, prop)
71+
out, _, err = Manage().run("guestproperty", "wait", vm, prop)
7072
if err != nil {
7173
log.Print(err)
7274
return "", "", err
@@ -129,7 +131,9 @@ func WaitGuestProperties(vm string, propPattern string, done chan bool, wg *sync
129131
// DeleteGuestProperty deletes a VirtualBox guestproperty.
130132
func DeleteGuestProperty(vm string, prop string) error {
131133
if Manage().isGuest() {
132-
return Manage().setOpts(sudo(true)).run("guestproperty", "delete", prop)
134+
_, _, err := Manage().setOpts(sudo(true)).run("guestproperty", "delete", prop)
135+
return err
133136
}
134-
return Manage().run("guestproperty", "delete", vm, prop)
137+
_, _, err := Manage().run("guestproperty", "delete", vm, prop)
138+
return err
135139
}

guestprop_test.go

+9-9
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ func TestGuestProperty(t *testing.T) {
1616
t.Logf("ManageMock=%v (type=%T)", ManageMock, ManageMock)
1717
if ManageMock != nil {
1818
ManageMock.EXPECT().isGuest().Return(false)
19-
ManageMock.EXPECT().run("guestproperty", "set", VM, "test_key", "test_val").Return(nil)
19+
ManageMock.EXPECT().run("guestproperty", "set", VM, "test_key", "test_val").Return("", "", nil)
2020
}
2121
err := SetGuestProperty(VM, "test_key", "test_val")
2222
if err != nil {
@@ -26,7 +26,7 @@ func TestGuestProperty(t *testing.T) {
2626

2727
if ManageMock != nil {
2828
ManageMock.EXPECT().isGuest().Return(false)
29-
ManageMock.EXPECT().runOut("guestproperty", "get", VM, "test_key").Return("Value: test_val", nil).Times(1)
29+
ManageMock.EXPECT().run("guestproperty", "get", VM, "test_key").Return("Value: test_val", "", nil).Times(1)
3030
}
3131
val, err := GetGuestProperty(VM, "test_key")
3232
if err != nil {
@@ -41,7 +41,7 @@ func TestGuestProperty(t *testing.T) {
4141
// Now deletes it...
4242
if ManageMock != nil {
4343
ManageMock.EXPECT().isGuest().Return(false)
44-
ManageMock.EXPECT().run("guestproperty", "delete", VM, "test_key").Return(nil).Times(1)
44+
ManageMock.EXPECT().run("guestproperty", "delete", VM, "test_key").Return("", "", nil).Times(1)
4545
}
4646
err = DeleteGuestProperty(VM, "test_key")
4747
if err != nil {
@@ -52,7 +52,7 @@ func TestGuestProperty(t *testing.T) {
5252
// ...and check that it is no longer readable
5353
if ManageMock != nil {
5454
ManageMock.EXPECT().isGuest().Return(false)
55-
ManageMock.EXPECT().runOut("guestproperty", "get", VM, "test_key").Return("", errors.New("foo")).Times(1)
55+
ManageMock.EXPECT().run("guestproperty", "get", VM, "test_key").Return("", "", errors.New("foo")).Times(1)
5656
}
5757
_, err = GetGuestProperty(VM, "test_key")
5858
if err == nil {
@@ -71,7 +71,7 @@ func TestWaitGuestProperty(t *testing.T) {
7171
waitGuestProperty1Out := ReadTestData("vboxmanage-guestproperty-wait-1.out")
7272
gomock.InOrder(
7373
ManageMock.EXPECT().isGuest().Return(false),
74-
ManageMock.EXPECT().runOut("guestproperty", "wait", VM, "test_*").Return(waitGuestProperty1Out, nil).Times(1),
74+
ManageMock.EXPECT().run("guestproperty", "wait", VM, "test_*").Return(waitGuestProperty1Out, "", nil).Times(1),
7575
)
7676
} else {
7777
go func() {
@@ -105,11 +105,11 @@ func TestWaitGuestProperties(t *testing.T) {
105105
waitGuestProperty2Out := ReadTestData("vboxmanage-guestproperty-wait-2.out")
106106
gomock.InOrder(
107107
ManageMock.EXPECT().isGuest().Return(false),
108-
ManageMock.EXPECT().runOut("guestproperty", "wait", VM, "test_*").Return(waitGuestProperty1Out, nil).Times(1),
108+
ManageMock.EXPECT().run("guestproperty", "wait", VM, "test_*").Return(waitGuestProperty1Out, "", nil).Times(1),
109109
ManageMock.EXPECT().isGuest().Return(false),
110-
ManageMock.EXPECT().runOut("guestproperty", "wait", VM, "test_*").Return(waitGuestProperty2Out, nil).Times(1),
110+
ManageMock.EXPECT().run("guestproperty", "wait", VM, "test_*").Return(waitGuestProperty2Out, "", nil).Times(1),
111111
ManageMock.EXPECT().isGuest().Return(false),
112-
ManageMock.EXPECT().runOut("guestproperty", "wait", VM, "test_*").Return(waitGuestProperty1Out, nil).Times(1),
112+
ManageMock.EXPECT().run("guestproperty", "wait", VM, "test_*").Return(waitGuestProperty1Out, "", nil).Times(1),
113113
)
114114
} else {
115115
go func() {
@@ -164,7 +164,7 @@ func TestWaitGuestPropertiesQuit(t *testing.T) {
164164
waitGuestProperty1Out := ReadTestData("vboxmanage-guestproperty-wait-1.out")
165165
gomock.InOrder(
166166
ManageMock.EXPECT().isGuest().Return(false),
167-
ManageMock.EXPECT().runOut("guestproperty", "wait", VM, "test_*").Return(waitGuestProperty1Out, nil).Times(1),
167+
ManageMock.EXPECT().run("guestproperty", "wait", VM, "test_*").Return(waitGuestProperty1Out, "", nil).Times(1),
168168
)
169169
} else {
170170
go func() {

hostonlynet.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ type HostonlyNet struct {
3636

3737
// CreateHostonlyNet creates a new host-only network.
3838
func CreateHostonlyNet() (*HostonlyNet, error) {
39-
out, err := Manage().runOut("hostonlyif", "create")
39+
out, _, err := Manage().run("hostonlyif", "create")
4040
if err != nil {
4141
return nil, err
4242
}
@@ -66,27 +66,27 @@ func (n *HostonlyNet) Config() error {
6666
}
6767
}
6868
if n.DHCP {
69-
if err := Manage().run("hostonlyif", "ipconfig", fmt.Sprintf("\"%s\"", n.Name), "--dhcp"); err != nil { // not implemented as of VirtualBox 4.3
69+
if _, _, err := Manage().run("hostonlyif", "ipconfig", fmt.Sprintf("\"%s\"", n.Name), "--dhcp"); err != nil { // not implemented as of VirtualBox 4.3
7070
return err
7171
}
7272
}
7373

7474
} else {
7575
if n.IPv4.IP != nil && n.IPv4.Mask != nil {
76-
if err := Manage().run("hostonlyif", "ipconfig", n.Name, "--ip", n.IPv4.IP.String(), "--netmask", net.IP(n.IPv4.Mask).String()); err != nil {
76+
if _, _, err := Manage().run("hostonlyif", "ipconfig", n.Name, "--ip", n.IPv4.IP.String(), "--netmask", net.IP(n.IPv4.Mask).String()); err != nil {
7777
return err
7878
}
7979
}
8080

8181
if n.IPv6.IP != nil && n.IPv6.Mask != nil {
8282
prefixLen, _ := n.IPv6.Mask.Size()
83-
if err := Manage().run("hostonlyif", "ipconfig", n.Name, "--ipv6", n.IPv6.IP.String(), "--netmasklengthv6", fmt.Sprintf("%d", prefixLen)); err != nil {
83+
if _, _, err := Manage().run("hostonlyif", "ipconfig", n.Name, "--ipv6", n.IPv6.IP.String(), "--netmasklengthv6", fmt.Sprintf("%d", prefixLen)); err != nil {
8484
return err
8585
}
8686
}
8787

8888
if n.DHCP {
89-
if err := Manage().run("hostonlyif", "ipconfig", n.Name, "--dhcp"); err != nil { // not implemented as of VirtualBox 4.3
89+
if _, _, err := Manage().run("hostonlyif", "ipconfig", n.Name, "--dhcp"); err != nil { // not implemented as of VirtualBox 4.3
9090
return err
9191
}
9292
}
@@ -98,7 +98,7 @@ func (n *HostonlyNet) Config() error {
9898

9999
// HostonlyNets gets all host-only networks in a map keyed by HostonlyNet.NetworkName.
100100
func HostonlyNets() (map[string]*HostonlyNet, error) {
101-
out, err := Manage().runOut("list", "hostonlyifs")
101+
out, _, err := Manage().run("list", "hostonlyifs")
102102
if err != nil {
103103
return nil, err
104104
}

hostonlynet_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ func TestHostonlyNets(t *testing.T) {
1212
if ManageMock != nil {
1313
listHostOnlyIfsOut := ReadTestData("vboxmanage-list-hostonlyifs-1.out")
1414
gomock.InOrder(
15-
ManageMock.EXPECT().runOut("list", "hostonlyifs").Return(listHostOnlyIfsOut, nil).Times(1),
15+
ManageMock.EXPECT().run("list", "hostonlyifs").Return(listHostOnlyIfsOut, "", nil).Times(1),
1616
)
1717
}
1818
m, err := HostonlyNets()

import.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@ package virtualbox
22

33
// ImportOV imports ova or ovf from the given path
44
func ImportOV(path string) error {
5-
return Manage().run("import", path)
5+
_, _, err := Manage().run("import", path)
6+
return err
67
}

0 commit comments

Comments
 (0)