"strings"
"time"
- common "gerrit.automotivelinux.org/gerrit/src/xds/xds-common.git/golib"
- "gerrit.automotivelinux.org/gerrit/src/xds/xds-common.git/golib/eows"
- "gerrit.automotivelinux.org/gerrit/src/xds/xds-server/lib/xsapiv1"
+ common "gerrit.automotivelinux.org/gerrit/src/xds/xds-common.git"
+ "gerrit.automotivelinux.org/gerrit/src/xds/xds-common.git/eows"
+ "gerrit.automotivelinux.org/gerrit/src/xds/xds-server.git/lib/xsapiv1"
"github.com/Sirupsen/logrus"
uuid "github.com/satori/go.uuid"
)
// Install a SDK (non blocking command, IOW run in background)
func (s *CrossSDK) Install(file string, force bool, timeout int, args []string, sess *ClientSession) error {
- if s.sdk.Status == xsapiv1.SdkStatusInstalled {
+ if s.sdk.Status == xsapiv1.SdkStatusInstalled && !force {
return fmt.Errorf("already installed")
}
if s.sdk.Status == xsapiv1.SdkStatusInstalling {
data := e.UserData
sdkID := (*data)["SDKID"].(string)
if sdkID != s.sdk.ID {
- s.Log.Errorln("BUG: sdk ID differs: %v != %v", sdkID, s.sdk.ID)
+ s.Log.Errorf("BUG: sdk ID differs: %v != %v", sdkID, s.sdk.ID)
}
// IO socket can be nil when disconnected
// Define callback for output
s.installCmd.ExitCB = func(e *eows.ExecOverWS, code int, exitError error) {
+ defer LockXdsUpdateCounter(s.Context, false)
+
// paranoia
data := e.UserData
sdkID := (*data)["SDKID"].(string)
if sdkID != s.sdk.ID {
- s.Log.Errorln("BUG: sdk ID differs: %v != %v", sdkID, s.sdk.ID)
+ s.Log.Errorf("BUG: sdk ID differs: %v != %v", sdkID, s.sdk.ID)
}
s.Log.Infof("Command SDK ID %s [Cmd ID %s] exited: code %d, exitError: %v", sdkID[:16], e.CmdID, code, exitError)
s.sdk.Status = xsapiv1.SdkStatusInstalling
s.sdk.LastError = ""
+ if err := s.events.Emit(xsapiv1.EVTSDKStateChange, s.sdk, sess.ID); err != nil {
+ s.Log.Errorf("WS Emit EVTSDKStateChange installing : %v", err)
+ }
+
err := s.installCmd.Start()
return err