summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/agent/apiv1-config.go8
-rw-r--r--lib/agent/apiv1.go16
-rw-r--r--webapp/src/app/@core-xds/services/config.service.ts85
3 files changed, 68 insertions, 41 deletions
diff --git a/lib/agent/apiv1-config.go b/lib/agent/apiv1-config.go
index 54d3525..b24dc21 100644
--- a/lib/agent/apiv1-config.go
+++ b/lib/agent/apiv1-config.go
@@ -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())
}
diff --git a/lib/agent/apiv1.go b/lib/agent/apiv1.go
index c5f4d22..1921f98 100644
--- a/lib/agent/apiv1.go
+++ b/lib/agent/apiv1.go
@@ -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
+}
diff --git a/webapp/src/app/@core-xds/services/config.service.ts b/webapp/src/app/@core-xds/services/config.service.ts
index cc4d237..168b278 100644
--- a/webapp/src/app/@core-xds/services/config.service.ts
+++ b/webapp/src/app/@core-xds/services/config.service.ts
@@ -18,62 +18,65 @@
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);
+ }
}