X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?p=src%2Fxds%2Fxds-agent.git;a=blobdiff_plain;f=lib%2Fagent%2Fapiv1-config.go;h=543a5e15cbe6503ccba8a9ee64d77628fd820c31;hp=31d8de62fbdbc74e23e48f1339bd80f7b77040a5;hb=247bb7c2db5f0d48178398599348249bf886ebbc;hpb=2d90eac319979dba64371258b30e61e77a15db7d diff --git a/lib/agent/apiv1-config.go b/lib/agent/apiv1-config.go index 31d8de6..543a5e1 100644 --- a/lib/agent/apiv1-config.go +++ b/lib/agent/apiv1-config.go @@ -1,37 +1,34 @@ +/* + * Copyright (C) 2017-2018 "IoT.bzh" + * Author Sebastien Douheret + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + package agent import ( "net/http" "sync" + "gerrit.automotivelinux.org/gerrit/src/xds/xds-agent.git/lib/xaapiv1" + "gerrit.automotivelinux.org/gerrit/src/xds/xds-agent.git/lib/xdsconfig" + common "gerrit.automotivelinux.org/gerrit/src/xds/xds-common.git" "github.com/gin-gonic/gin" - "github.com/iotbzh/xds-agent/lib/xdsconfig" - common "github.com/iotbzh/xds-common/golib" ) var confMut sync.Mutex -// APIConfig parameters (json format) of /config command -type APIConfig struct { - Servers []ServerCfg `json:"servers"` - - // Not exposed outside in JSON - Version string `json:"-"` - APIVersion string `json:"-"` - VersionGitTag string `json:"-"` -} - -// ServerCfg . -type ServerCfg struct { - ID string `json:"id"` - URL string `json:"url"` - APIURL string `json:"apiUrl"` - PartialURL string `json:"partialUrl"` - ConnRetry int `json:"connRetry"` - Connected bool `json:"connected"` - Disabled bool `json:"disabled"` -} - // GetConfig returns the configuration func (s *APIService) getConfig(c *gin.Context) { confMut.Lock() @@ -44,7 +41,7 @@ func (s *APIService) getConfig(c *gin.Context) { // SetConfig sets configuration func (s *APIService) setConfig(c *gin.Context) { - var cfgArg APIConfig + var cfgArg xaapiv1.APIConfig if c.BindJSON(&cfgArg) != nil { common.APIError(c, "Invalid arguments") return @@ -69,8 +66,11 @@ func (s *APIService) setConfig(c *gin.Context) { } } - // Add new XDS Server + // Add new / unconnected XDS Server for _, svr := range cfgArg.Servers { + if svr.Connected && svr.ID != "" { + continue + } cfg := xdsconfig.XDSServerConf{ ID: svr.ID, URL: svr.URL, @@ -82,19 +82,27 @@ 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()) } -func (s *APIService) _getConfig() APIConfig { - cfg := APIConfig{ +func (s *APIService) _getConfig() xaapiv1.APIConfig { + cfg := xaapiv1.APIConfig{ Version: s.Config.Version, APIVersion: s.Config.APIVersion, VersionGitTag: s.Config.VersionGitTag, - Servers: []ServerCfg{}, + Servers: []xaapiv1.ServerCfg{}, } for _, svr := range s.xdsServers { - cfg.Servers = append(cfg.Servers, ServerCfg{ + cfg.Servers = append(cfg.Servers, xaapiv1.ServerCfg{ ID: svr.ID, URL: svr.BaseURL, APIURL: svr.APIURL,