forked from Cloud-Foundations/Dominator
/
addDevice.go
38 lines (33 loc) · 878 Bytes
/
addDevice.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package main
import (
"fmt"
"io"
"os"
"os/exec"
uclient "github.com/Cloud-Foundations/Dominator/imageunpacker/client"
"github.com/Cloud-Foundations/Dominator/lib/log"
"github.com/Cloud-Foundations/Dominator/lib/srpc"
)
func addDeviceSubcommand(args []string, logger log.DebugLogger) error {
if err := addDevice(getClient(), args[0], args[1], args[2:]); err != nil {
return fmt.Errorf("error adding device: %s", err)
}
return nil
}
func addDevice(client *srpc.Client, deviceId, command string,
args []string) error {
return uclient.AddDevice(client, deviceId,
func() error { return adder(command, args) })
}
func adder(command string, args []string) error {
cmd := exec.Command(command, args...)
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
if err := cmd.Run(); err != nil {
if err != io.EOF {
return err
}
}
return nil
}