Fixed sdk from local file installation
[src/xds/xds-server.git] / lib / xdsserver / sdks.go
index a18d94f..ee6a269 100644 (file)
@@ -38,8 +38,8 @@ type SDKs struct {
        stop  chan struct{} // signals intentional stop
 }
 
-// NewSDKs creates a new instance of SDKs
-func NewSDKs(ctx *Context) (*SDKs, error) {
+// SDKsConstructor creates a new instance of SDKs
+func SDKsConstructor(ctx *Context) (*SDKs, error) {
        s := SDKs{
                Context:      ctx,
                Sdks:         make(map[string]*CrossSDK),
@@ -63,6 +63,12 @@ func NewSDKs(ctx *Context) (*SDKs, error) {
                return &s, err
        }
 
+       // Update SDK DB on startup by default (can be disable using config file)
+       update := true
+       if s.Config.FileConf.SdkDbUpdate != "startup" {
+               update = false
+       }
+
        s.mutex.Lock()
        defer s.mutex.Unlock()
 
@@ -73,10 +79,11 @@ func NewSDKs(ctx *Context) (*SDKs, error) {
                        continue
                }
 
-               sdksList, err := ListCrossSDK(d, s.Log)
+               sdksList, err := ListCrossSDK(d, update, s.Log)
                if err != nil {
                        // allow to use XDS even if error on list
                        s.Log.Errorf("Cannot retrieve SDK list: %v", err)
+                       sdksList, _ = ListCrossSDK(d, false, s.Log)
                }
                s.LogSillyf("'%s' SDKs list: %v", d, sdksList)
 
@@ -211,7 +218,7 @@ func (s *SDKs) monitorSDKInstallation(watchingDirs []string) {
                                sdk.Path = sdkDef.SetupFile
 
                                // Emit Folder state change event
-                               if err := s.events.Emit(xsapiv1.EVTSDKInstall, sdk, ""); err != nil {
+                               if err := s.events.Emit(xsapiv1.EVTSDKAdd, sdk, ""); err != nil {
                                        s.Log.Warningf("Cannot notify SDK install: %v", err)
                                }
 
@@ -333,7 +340,7 @@ func (s *SDKs) Install(id, filepath string, force bool, timeout int, args []stri
 
                // Update path when not set
                if sdk.Path == "" {
-                       sdkDef, err := GetSDKInfo(scriptDir, sdk.URL, "", "", s.Log)
+                       sdkDef, err := GetSDKInfo(scriptDir, sdk.URL, "", "", sdk.UUID, s.Log)
                        if err != nil || sdkDef.Path == "" {
                                return nil, fmt.Errorf("cannot retrieve sdk path %v", err)
                        }
@@ -349,7 +356,7 @@ func (s *SDKs) Install(id, filepath string, force bool, timeout int, args []stri
                }
 
                for _, sf := range s.SdksFamilies {
-                       sdkDef, err := GetSDKInfo(sf.ScriptsDir, "", sdkFilename, "", s.Log)
+                       sdkDef, err := GetSDKInfo(sf.ScriptsDir, "", sdkFilename, "", "", s.Log)
                        if err == nil {
                                // OK, sdk found
                                sdk = &sdkDef