+ g.httpCli.SetLogLevel(g.log.Level.String())
+ g.log.Infoln("HTTP session ID:", g.httpCli.GetClientID())
+
+ // First call to check that xds-agent and server are alive
+ ver := xaapiv1.XDSVersion{}
+ if err := g.httpCli.Get("/version", &ver); err != nil {
+ return int(syscallEBADE), err
+ }
+ g.log.Infoln("XDS agent & server version:", ver)
+
+ // Get current config and update connection to server when needed
+ xdsConf := xaapiv1.APIConfig{}
+ if err := g.httpCli.Get("/config", &xdsConf); err != nil {
+ return int(syscallEBADE), err
+ }
+ // FIXME: add multi-servers support
+ idx := 0
+ svrCfg := xdsConf.Servers[idx]
+ if g.serverURL != "" && (svrCfg.URL != g.serverURL || !svrCfg.Connected) {
+ svrCfg.URL = g.serverURL
+ svrCfg.ConnRetry = 10
+ newCfg := xaapiv1.APIConfig{}
+ if err := g.httpCli.Post("/config", xdsConf, &newCfg); err != nil {
+ return int(syscallEBADE), err
+ }