"bytes"
"fmt"
"io"
+ "log"
"os"
"path/filepath"
"strings"
}
func (d *sessionProvider) executeRemoteCommand(cmd string) ([]byte, []byte, error) {
+ log.Println("exec:", cmd)
session, err := d.newSession()
if err != nil {
return nil, nil, err
session.Stderr = &stderr
err = session.Run(cmd)
+ if err != nil {
+ log.Println(stderr.String())
+ }
return stdout.Bytes(), stderr.Bytes(), err
}
// SendFile is a part of SessionProvider interface.
func (d *sessionProvider) SendFile(src, dst string) error {
+ log.Println("send a file", src, "->", dst)
f, err := os.Open(src)
if err != nil {
return err
// ReceiveFile is a part of SessionProvider interface.
func (d *sessionProvider) ReceiveFile(src, dst string) error {
+ log.Println("receiving a file", src, "->", dst)
session, err := d.newSession()
if err != nil {
return err
// Generate partition mapping for FOTA and store it on Dryad.
urls := make([]string, 0, len(d.conf.Action.Deploy.Images))
for _, image := range d.conf.Action.Deploy.Images {
- if p := image.Path; p != "" {
+ if p := image.URI; p != "" {
urls = append(urls, p)
}
}
}
mapping := newMapping(partLayout)
- _, _, err = d.rusalka.Exec([]string{"echo", string(mapping), ">", fotaFilePath})
+ _, _, err = d.rusalka.Exec([]string{"echo", "'" + string(mapping) + "'", ">", fotaFilePath})
if err != nil {
return
}
}
func (f *fotaCmd) GetCmd() (cmd []string) {
- cmd = []string{"fota",
+ cmd = []string{"/usr/local/bin/fota",
"-map", f.mapping,
- "-sdcard", f.sdcard}
+ "-card", f.sdcard}
if f.md5sums != "" {
cmd = append(cmd, "-md5")
cmd = append(cmd, f.md5sums)