Skip to content

Commit

Permalink
fix: observe GRPC client (#330)
Browse files Browse the repository at this point in the history
* fix: observe grpc client

Signed-off-by: gatici <[email protected]>

* fix: add version

Signed-off-by: gatici <[email protected]>

* organizing managegrpcclient method

Signed-off-by: gatici <[email protected]>

* chore: update config5g version

Signed-off-by: gatici <[email protected]>

* removing spots

Signed-off-by: gatici <[email protected]>

---------

Signed-off-by: gatici <[email protected]>
  • Loading branch information
gatici authored Oct 26, 2024
1 parent c7da455 commit 3c60ac9
Show file tree
Hide file tree
Showing 4 changed files with 59 additions and 9 deletions.
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.5.1-dev
1.5.1
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ require (
github.com/mitchellh/mapstructure v1.5.0
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826
github.com/omec-project/aper v1.2.1
github.com/omec-project/config5g v1.5.1
github.com/omec-project/config5g v1.5.4
github.com/omec-project/nas v1.4.1
github.com/omec-project/ngap v1.3.0
github.com/omec-project/openapi v1.3.1
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -163,8 +163,8 @@ github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
github.com/omec-project/aper v1.2.1 h1:A4KhlTMta5mUA1DX2njOjOn0SuFi5WoWnSqdbRnl9Q8=
github.com/omec-project/aper v1.2.1/go.mod h1:CbCZ0uNmcD3XA4YM6wBwpqP1PYtGAaC3RqLL4B5gG2U=
github.com/omec-project/config5g v1.5.1 h1:JaVgr76tnjJIb7Uoesv5a9GI72NdOXtCvfukj0/ONio=
github.com/omec-project/config5g v1.5.1/go.mod h1:o04ZdwGcM7tbGjuT5t/WzYSKLXOSnFl6vH7b6BGAspU=
github.com/omec-project/config5g v1.5.4 h1:5JMw5Fsr5qyLZpQi3IZQaQPj78QJMFQXDVS3QDMOY9Y=
github.com/omec-project/config5g v1.5.4/go.mod h1:HOvQtmi79f8cw35AiFHWHDoCTuZbXfMjeFJWgtPbwaI=
github.com/omec-project/nas v1.4.1 h1:Ui3k5TnOQ8IGt09qUboaZ05IuMuVSbjZ54Y7iy85iVs=
github.com/omec-project/nas v1.4.1/go.mod h1:R0x9ehAHi/CUdsMWP+XmefjloEGwobkqz1/c8308yBo=
github.com/omec-project/ngap v1.3.0 h1:NuAc6GZRup6E3jg+fGTy8aR4VkOlB1mnkaaYr6OGmMc=
Expand Down
60 changes: 55 additions & 5 deletions service/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ import (
"github.com/omec-project/amf/producer/callback"
"github.com/omec-project/amf/util"
aperLogger "github.com/omec-project/aper/logger"
gClient "github.com/omec-project/config5g/proto/client"
grpcClient "github.com/omec-project/config5g/proto/client"
protos "github.com/omec-project/config5g/proto/sdcoreConfig"
nasLogger "github.com/omec-project/nas/logger"
ngapLogger "github.com/omec-project/ngap/logger"
Expand Down Expand Up @@ -144,10 +144,8 @@ func (amf *AMF) Initialize(c *cli.Context) error {
factory.AmfConfig.Configuration.ServedGumaiList = nil
factory.AmfConfig.Configuration.SupportTAIList = nil
factory.AmfConfig.Configuration.PlmnSupportList = nil
logger.InitLog.Infoln("reading Amf related configuration from ROC")
client := gClient.ConnectToConfigServer(factory.AmfConfig.Configuration.WebuiUri)
configChannel := client.PublishOnConfigChange(true)
go amf.UpdateConfig(configChannel)
logger.InitLog.Infoln("Reading Amf related configuration from ROC")
go manageGrpcClient(factory.AmfConfig.Configuration.WebuiUri, amf)
} else {
go func() {
logger.GrpcLog.Infoln("reading Amf Configuration from Helm")
Expand All @@ -159,6 +157,58 @@ func (amf *AMF) Initialize(c *cli.Context) error {
return nil
}

// manageGrpcClient connects the config pod GRPC server and subscribes the config changes.
// Then it updates AMF configuration.
func manageGrpcClient(webuiUri string, amf *AMF) {
var configChannel chan *protos.NetworkSliceResponse
var client grpcClient.ConfClient
var stream protos.ConfigService_NetworkSliceSubscribeClient
var err error
count := 0
for {
if client != nil {
if client.CheckGrpcConnectivity() != "ready" {
time.Sleep(time.Second * 30)
count++
if count > 5 {
err = client.GetConfigClientConn().Close()
if err != nil {
logger.InitLog.Infof("failing ConfigClient is not closed properly: %+v", err)
}
client = nil
count = 0
}
logger.InitLog.Infoln("checking the connectivity readiness")
continue
}

if stream == nil {
stream, err = client.SubscribeToConfigServer()
if err != nil {
logger.InitLog.Infof("failing SubscribeToConfigServer: %+v", err)
continue
}
}

if configChannel == nil {
configChannel = client.PublishOnConfigChange(true, stream)
logger.InitLog.Infoln("PublishOnConfigChange is triggered")
go amf.UpdateConfig(configChannel)
logger.InitLog.Infoln("AMF updateConfig is triggered")
}
} else {
client, err = grpcClient.ConnectToConfigServer(webuiUri)
stream = nil
configChannel = nil
logger.InitLog.Infoln("connecting to config server")
if err != nil {
logger.InitLog.Errorf("%+v", err)
}
continue
}
}
}

func (amf *AMF) WatchConfig() {
viper.WatchConfig()
viper.OnConfigChange(func(e fsnotify.Event) {
Expand Down

0 comments on commit 3c60ac9

Please sign in to comment.