+/*
+ * Copyright (C) 2017-2018 "IoT.bzh"
+ * Author Sebastien Douheret <sebastien@iot.bzh>
+ *
+ * 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()
// 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
}
}
- // 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,
}
}
+ // 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,