Use go module as dependency tool instead of glide
[src/xds/xds-server.git] / lib / xdsserver / sdk.go
index 68c92b4..cda334c 100644 (file)
@@ -26,9 +26,9 @@ import (
        "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"
 )
@@ -220,7 +220,7 @@ func NewCrossSDK(ctx *Context, sdk xsapiv1.SDK, scriptDir string) (*CrossSDK, er
 // 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 {
@@ -268,7 +268,7 @@ func (s *CrossSDK) Install(file string, force bool, timeout int, args []string,
                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
@@ -305,11 +305,13 @@ func (s *CrossSDK) Install(file string, force bool, timeout int, args []string,
 
        // 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)
@@ -393,6 +395,10 @@ func (s *CrossSDK) Install(file string, force bool, timeout int, args []string,
        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