ops: add feature that monitoring route of gobgp

This commit is contained in:
Naoto Hanaue
2016-02-19 21:14:59 -08:00
committed by FUJITA Tomonori
parent 4e03f6ae68
commit bbd5a2cfae
2 changed files with 43 additions and 1 deletions
+1 -1
View File
@@ -161,7 +161,7 @@ func main() {
log.Errorf("Failed to start ops config manager: %s", err)
os.Exit(1)
}
go m.Serve()
m.Serve()
} else if opts.ConfigFile != "" {
go config.ReadConfigfileServe(opts.ConfigFile, opts.ConfigType, configCh, reloadCh)
reloadCh <- true
+42
View File
@@ -239,6 +239,12 @@ func (m *OpsManager) handleNeighborUpdate(update ovsdb.TableUpdate) []*server.Gr
}
func (m *OpsManager) Serve() error {
go m.OpsServe()
go m.GobgpServe()
return nil
}
func (m *OpsManager) OpsServe() error {
initial, err := m.client.MonitorAll("OpenSwitch", "")
if err != nil {
return err
@@ -297,6 +303,42 @@ func (m *OpsManager) Serve() error {
return nil
}
func (m *OpsManager) GobgpServe() error {
family := bgp.RF_IPv4_UC
arg := &api.Arguments{
Resource: api.Resource_GLOBAL,
Family: uint32(family),
}
stream, err := client.MonitorBestChanged(context.Background(), arg)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
for {
d, err := stream.Recv()
if err == io.EOF {
break
} else if err != nil {
fmt.Println(err)
os.Exit(1)
}
p, err := ApiStruct2Path(d.Paths[0])
if err != nil {
fmt.Println(err)
os.Exit(1)
}
if globalOpts.Json {
j, _ := json.Marshal(p)
fmt.Println(string(j))
} else {
ShowRoute(p, false, false, false, true, false)
}
}
return nil
}
func NewOpsManager(ch chan *server.GrpcRequest) (*OpsManager, error) {
cli, err := ovsdb.ConnectUnix("")
if err != nil {