/* * 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" common "gerrit.automotivelinux.org/gerrit/src/xds/xds-common.git" "github.com/gin-gonic/gin" ) // getSupervisorTopo : return current AGL daemons topology using supervisor func (s *APIService) getSupervisorTopo(c *gin.Context) { xdspvr, err := s._initXdsSupervisor() if err != nil { common.APIError(c, err.Error()) return } var res XdsSuperVReply if err = xdspvr.GetTopo(&res); err != nil { common.APIError(c, err.Error()) return } if res.Request.Status != "success" { common.APIError(c, res.Request.Info) return } c.JSON(http.StatusOK, res.Response) } // startSupervisor : resquest to supervisor to start tracing func (s *APIService) startSupervisor(c *gin.Context) { xdspvr, err := s._initXdsSupervisor() if err != nil { common.APIError(c, err.Error()) return } var cfg XdsSuperVTraceConfig if c.BindJSON(&cfg) != nil { common.APIError(c, "Invalid config argument") return } s.Log.Debugf("Start Supervisor cfgArg %v\n", cfg) var res XdsSuperVReply if err = xdspvr.StartTrace(cfg, &res); err != nil { common.APIError(c, err.Error()) return } if res.Request.Status != "success" { common.APIError(c, res.Request.Info) return } c.JSON(http.StatusOK, res.Response) } // stopSupervisor : resquest to supervisor to stop tracing func (s *APIService) stopSupervisor(c *gin.Context) { xdspvr, err := s._initXdsSupervisor() if err != nil { common.APIError(c, err.Error()) return } var res XdsSuperVReply if err = xdspvr.StopTrace(&res); err != nil { common.APIError(c, err.Error()) return } if res.Request.Status != "success" { common.APIError(c, res.Request.Info) return } c.JSON(http.StatusOK, res.Response) } // _initXdsSupervisor . func (s *APIService) _initXdsSupervisor() (*XdsSupervisor, error) { if s.XdsSupervisor == nil { xs := NewXdsSupervisor(s.Context) if err := xs.Connect(); err != nil { return nil, err } s.XdsSupervisor = xs } return s.XdsSupervisor, nil }