Fixed storage of Global and XDS Server configuration.
authorSebastien Douheret <sebastien.douheret@iot.bzh>
Thu, 15 Feb 2018 10:12:32 +0000 (11:12 +0100)
committerSebastien Douheret <sebastien.douheret@iot.bzh>
Fri, 23 Feb 2018 18:15:01 +0000 (19:15 +0100)
Signed-off-by: Sebastien Douheret <sebastien.douheret@iot.bzh>
lib/agent/apiv1-config.go
lib/agent/apiv1.go
webapp/src/app/@core-xds/services/config.service.ts

index 54d3525..b24dc21 100644 (file)
@@ -82,6 +82,14 @@ func (s *APIService) setConfig(c *gin.Context) {
                }
        }
 
+       // Update XdsServer config
+       for _, svrCfg := range cfgArg.Servers {
+               if err := s.UpdateXdsServer(svrCfg); err != nil {
+                       // willingly ignore error
+                       // s.Log.Debugf("Error while updating XDS Server config: %v", err)
+               }
+       }
+
        c.JSON(http.StatusOK, s._getConfig())
 }
 
index c5f4d22..1921f98 100644 (file)
@@ -21,6 +21,7 @@ import (
        "fmt"
        "strconv"
 
+       "gerrit.automotivelinux.org/gerrit/src/xds/xds-agent/lib/xaapiv1"
        "gerrit.automotivelinux.org/gerrit/src/xds/xds-agent/lib/xdsconfig"
        "gerrit.automotivelinux.org/gerrit/src/xds/xds-server.git/lib/xsapiv1"
        "github.com/gin-gonic/gin"
@@ -163,3 +164,18 @@ func (s *APIService) DelXdsServer(id string) error {
        s.xdsServers[id].Close()
        return nil
 }
+}
+
+// UpdateXdsServer Update XDS Server configuration settings
+func (s *APIService) UpdateXdsServer(cfg xaapiv1.ServerCfg) error {
+       if _, exist := s.xdsServers[cfg.ID]; !exist {
+               return fmt.Errorf("Unknown Server ID %s", cfg.ID)
+       }
+
+       svr := s.xdsServers[cfg.ID]
+
+       // Update only some configurable fields
+       svr.ConnRetry = cfg.ConnRetry
+
+       return nil
+}
index cc4d237..168b278 100644 (file)
 
 import { Injectable } from '@angular/core';
 import { CookieService } from 'ngx-cookie';
+import { NbThemeService } from '@nebular/theme';
+
 import { Observable } from 'rxjs/Observable';
 import { BehaviorSubject } from 'rxjs/BehaviorSubject';
 
-import { AlertService, IAlert } from '../services/alert.service';
-
 export interface IConfig {
-    language: string;
-    projectsRootDir: string;
+  language: string;
+  theme: string;
 }
 
 @Injectable()
 export class ConfigService {
 
-    public Conf$: Observable<IConfig>;
+  public Conf$: Observable<IConfig>;
 
-    private confSubject: BehaviorSubject<IConfig>;
-    private confStore: IConfig;
+  private confSubject: BehaviorSubject<IConfig>;
+  private confStore: IConfig;
 
-    constructor(
-        private cookie: CookieService,
-        private alert: AlertService,
-    ) {
-        this.load();
-        this.confSubject = <BehaviorSubject<IConfig>>new BehaviorSubject(this.confStore);
-        this.Conf$ = this.confSubject.asObservable();
-    }
+  constructor(
+    private cookie: CookieService,
+    private themeService: NbThemeService,
+  ) {
+    this.confSubject = <BehaviorSubject<IConfig>>new BehaviorSubject(this.confStore);
+    this.Conf$ = this.confSubject.asObservable();
 
-    // Load config
-    load() {
-        // Try to retrieve previous config from cookie
-        const cookConf = this.cookie.getObject('xds-config');
-        if (cookConf != null) {
-            this.confStore = <IConfig>cookConf;
-        } else {
-            // Set default config
-            this.confStore = {
-                language: 'ENG',
-                projectsRootDir: '',
-                // projects: []
-            };
-        }
-    }
+    // Load initial config and apply it
+    this.load();
+    this.themeService.changeTheme(this.confStore.theme);
 
-    // Save config into cookie
-    save() {
-        // Notify subscribers
-        this.confSubject.next(Object.assign({}, this.confStore));
+    // Save selected theme in cookie
+    this.themeService.onThemeChange().subscribe(tm => {
+      if (tm.name !== this.confStore.theme) {
+        this.confStore.theme = tm.name;
+        this.save();
+      }
+    });
+  }
 
-        // Don't save projects in cookies (too big!)
-        const cfg = Object.assign({}, this.confStore);
-        this.cookie.putObject('xds-config', cfg);
+  // Load config
+  load() {
+    // Try to retrieve previous config from cookie
+    const cookConf = this.cookie.getObject('xds-config');
+    if (cookConf != null) {
+      this.confStore = <IConfig>cookConf;
+    } else {
+      // Set default config
+      this.confStore = {
+        language: 'ENG',
+        theme: 'default',
+      };
     }
+  }
 
-    set projectsRootDir(p: string) {
-        this.confStore.projectsRootDir = p;
-        this.save();
-    }
+  // Save config into cookie
+  save() {
+    // Notify subscribers
+    this.confSubject.next(Object.assign({}, this.confStore));
+
+    this.cookie.putObject('xds-config', this.confStore);
+  }
 
 }