import (
"fmt"
"strconv"
+ "strings"
- "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-agent.git/lib/xaapiv1"
+ "gerrit.automotivelinux.org/gerrit/src/xds/xds-agent.git/lib/xdsconfig"
"gerrit.automotivelinux.org/gerrit/src/xds/xds-server.git/lib/xsapiv1"
"github.com/gin-gonic/gin"
)
s.apiRouter.GET("/config", s.getConfig)
s.apiRouter.POST("/config", s.setConfig)
- s.apiRouter.GET("/browse", s.browseFS)
+ // s.apiRouter.GET("/browse", s.browseFS)
s.apiRouter.GET("/projects", s.getProjects)
s.apiRouter.GET("/projects/:id", s.getProject)
s.apiRouter.POST("/events/register", s.eventsRegister)
s.apiRouter.POST("/events/unregister", s.eventsUnRegister)
+ s.apiRouter.GET("/supervisor/topo", s.getSupervisorTopo)
+ s.apiRouter.POST("/supervisor/trace/start", s.startSupervisor)
+ s.apiRouter.POST("/supervisor/trace/stop", s.stopSupervisor)
return s
}
} else {
// Create a new server object
+ cfg.URLIndex = strconv.Itoa(s.serverIndex)
+ s.serverIndex = s.serverIndex + 1
if cfg.APIBaseURL == "" {
cfg.APIBaseURL = apiBaseURL
}
if cfg.APIPartialURL == "" {
- cfg.APIPartialURL = "/servers/" + strconv.Itoa(s.serverIndex)
- s.serverIndex = s.serverIndex + 1
+ cfg.APIPartialURL = "/servers/" + cfg.URLIndex
}
// Create a new XDS Server
svr.SetLoggerOutput(s.Config.LogVerboseOut)
- // Passthrough routes (handle by XDS Server)
+ // Define API group for this XDS Server
grp := s.apiRouter.Group(svr.PartialURL)
svr.SetAPIRouterGroup(grp)
- // Declare passthrough routes
+ // Define servers API processed locally
+ s.apiRouter.GET("/servers", s.getServersList) // API /servers
+ svr.apiRouter.GET("", s.getServer) // API /servers/:id
+ svr.apiRouter.POST("/reconnect", s.reconnectServer) // API /servers/:id/reconnect
+
+ // Declare passthrough API/routes
s.sdksPassthroughInit(svr)
+ s.targetsPassthroughInit(svr)
// Register callback on Connection
svr.ConnectOn(func(server *XdsServer) error {
// Add server to list
s.xdsServers[server.ID] = svr
- // Register event forwarder
+ // Register events forwarder
if err := s.sdksEventsForwardInit(server); err != nil {
- s.Log.Errorf("XDS Server %v - sdk event forwarding error: %v", server.ID, err)
+ s.Log.Errorf("XDS Server %v - sdk events forwarding error: %v", server.ID, err)
+ }
+ if err := s.targetsEventsForwardInit(server); err != nil {
+ s.Log.Errorf("XDS Server %v - target events forwarding error: %v", server.ID, err)
+ }
+ if err := s.terminalsEventsForwardInit(server); err != nil {
+ s.Log.Errorf("XDS Server %v - terminal events forwarding error: %v", server.ID, err)
}
// Load projects
s.xdsServers[id].Close()
return nil
}
-}
// UpdateXdsServer Update XDS Server configuration settings
func (s *APIService) UpdateXdsServer(cfg xaapiv1.ServerCfg) error {
return nil
}
+
+// GetXdsServerFromURLIndex Retrieve XdsServer from URLIndex value
+func (s *APIService) GetXdsServerFromURLIndex(urlIdx string) *XdsServer {
+ for _, svr := range s.xdsServers {
+ if svr.URLIndex == urlIdx {
+ return svr
+ }
+ }
+ return nil
+}
+
+// ParamGetIndex Retrieve numerical parameter in request url
+func (s *APIService) ParamGetIndex(c *gin.Context) string {
+ uri := c.Request.RequestURI
+ for idx := strings.LastIndex(uri, "/"); idx > 0; {
+ id := uri[idx+1:]
+ if _, err := strconv.Atoi(id); err == nil {
+ return id
+ }
+ uri = uri[:idx]
+ idx = strings.LastIndex(uri, "/")
+ }
+ return ""
+}