Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: observe GRPC client #135

Merged
merged 30 commits into from
Nov 6, 2024
Merged
Show file tree
Hide file tree
Changes from 29 commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
337a678
fix: observe GRPC client
gatici Oct 21, 2024
8caa683
chore: add fmt and golint to `make` options
gatici Oct 21, 2024
cf9f7f3
fix: rename and organize a method
gatici Oct 22, 2024
64edc10
chore: change config5g
gatici Oct 23, 2024
9b16a51
adding gClient
gatici Oct 23, 2024
d2ef0a8
do not return if message is not available
gatici Oct 23, 2024
66c7cc2
chore: change the orders
gatici Oct 23, 2024
2b4faaf
fix: get the new stream
gatici Oct 23, 2024
13c240e
fix: change method
gatici Oct 23, 2024
da162bb
modify subscribeToConfigPod
gatici Oct 23, 2024
e03d0fa
compare old response and new response
gatici Oct 24, 2024
01f1bcf
Trigger config updates in service
gatici Oct 24, 2024
ada6214
add log
gatici Oct 24, 2024
2c57586
get stream once
gatici Oct 24, 2024
1b7929f
increasing timeout
gatici Oct 24, 2024
fe5f645
check stream availability
gatici Oct 24, 2024
13d923f
create stream
gatici Oct 24, 2024
15a2ac9
use random client subscription id
gatici Oct 25, 2024
744a84f
refactoring methods
gatici Oct 25, 2024
f6a61d4
If config server restarted, reset the channel
gatici Oct 25, 2024
0952a2d
Replacing config5g with local folder for testing
gatici Oct 25, 2024
95eb71d
adding gclient again
gatici Oct 25, 2024
eef705d
arrranging sleep seconds
gatici Oct 25, 2024
eead42b
importing gclient from config5g
gatici Oct 25, 2024
e5dd1a0
resolve merge conflicts
gatici Oct 25, 2024
76e96de
fix linting issues
gatici Oct 25, 2024
2ab654f
chore: use updated config5g version
gatici Oct 26, 2024
78cd8b1
removing spots
gatici Oct 26, 2024
5a55120
move if clause to check MANAGED_BY_CONFIG_POD env value to service
gatici Oct 27, 2024
861633a
Create UpdateDB channel in config.go init function
gatici Nov 6, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -95,3 +95,8 @@ test: .coverage
-v \
./ ./...

fmt:
@go fmt ./...

golint:
@docker run --rm -v $(CURDIR):/app -w /app golangci/golangci-lint:latest golangci-lint run -v --config /app/.golangci.yml
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.6.1-dev
1.6.1
2 changes: 1 addition & 1 deletion factory/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ func (c *Config) addSmPolicyInfo(nwSlice *protos.NetworkSlice, dbUpdateChannel c
return nil
}

func (c *Config) updateConfig(commChannel chan *protos.NetworkSliceResponse, dbUpdateChannel chan *UpdateDb) bool {
func (c *Config) UpdateConfig(commChannel chan *protos.NetworkSliceResponse, dbUpdateChannel chan *UpdateDb) bool {
var minConfig bool
for rsp := range commChannel {
logger.GrpcLog.Infoln("received updateConfig in the udr app:", rsp)
Expand Down
13 changes: 0 additions & 13 deletions factory/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ import (
"fmt"
"os"

"github.com/omec-project/config5g/proto/client"
protos "github.com/omec-project/config5g/proto/sdcoreConfig"
"github.com/omec-project/udr/logger"
"gopkg.in/yaml.v2"
Expand Down Expand Up @@ -52,18 +51,6 @@ func InitConfigFactory(f string) error {
if UdrConfig.Configuration.WebuiUri == "" {
UdrConfig.Configuration.WebuiUri = "webui:9876"
}
roc := os.Getenv("MANAGED_BY_CONFIG_POD")
if roc == "true" {
logger.InitLog.Infoln("MANAGED_BY_CONFIG_POD is true")
commChannel := client.ConfigWatcher(UdrConfig.Configuration.WebuiUri)
ConfigUpdateDbTrigger = make(chan *UpdateDb, 10)
go UdrConfig.updateConfig(commChannel, ConfigUpdateDbTrigger)
} else {
go func() {
logger.InitLog.Infoln("use helm chart config")
ConfigPodTrigger <- true
}()
}
}

return nil
Expand Down
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ require (
github.com/gin-gonic/gin v1.10.0
github.com/google/uuid v1.6.0
github.com/mitchellh/mapstructure v1.5.0
github.com/omec-project/config5g v1.5.1
github.com/omec-project/config5g v1.5.4
github.com/omec-project/openapi v1.3.1
github.com/omec-project/util v1.2.3
github.com/prometheus/client_golang v1.20.5
Expand Down Expand Up @@ -70,7 +70,7 @@ require (
golang.org/x/text v0.19.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect
google.golang.org/grpc v1.67.1 // indirect
google.golang.org/protobuf v1.34.2 // indirect
google.golang.org/protobuf v1.35.1 // indirect
gopkg.in/h2non/gock.v1 v1.1.2 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
8 changes: 4 additions & 4 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,8 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32 h1:W6apQkHrMkS0Muv8G/TipAy/FJl/rCYT0+EuS8+Z0z4=
github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms=
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/openapi v1.3.1 h1:NCteMRdMtWnMhf1CXYduuLgeu8fEhc/7XO1CiE7fN3Y=
github.com/omec-project/openapi v1.3.1/go.mod h1:cR6Iharp2TLOzEmskQ/EdCVFZnpKh0zTvUSSuyXAYLE=
github.com/omec-project/util v1.2.3 h1:h32ZYFT99+fB9VPp1CQUIKwrSP6RtX+PbFDcqmEHmn0=
Expand Down Expand Up @@ -183,8 +183,8 @@ google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E=
google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA=
google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg=
google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw=
google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA=
google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
Expand Down
65 changes: 65 additions & 0 deletions service/init.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ import (
"syscall"
"time"

grpcClient "github.com/omec-project/config5g/proto/client"
protos "github.com/omec-project/config5g/proto/sdcoreConfig"
"github.com/omec-project/openapi/models"
"github.com/omec-project/udr/consumer"
"github.com/omec-project/udr/context"
Expand Down Expand Up @@ -85,9 +87,72 @@ func (udr *UDR) Initialize(c *cli.Context) error {
return err
}

if os.Getenv("MANAGED_BY_CONFIG_POD") == "true" {
logger.InitLog.Infoln("MANAGED_BY_CONFIG_POD is true")
go manageGrpcClient(factory.UdrConfig.Configuration.WebuiUri)
} else {
go func() {
logger.InitLog.Infoln("use helm chart config")
factory.ConfigPodTrigger <- true
}()
}

return nil
}

// manageGrpcClient connects the config pod GRPC server and subscribes the config changes.
// Then it updates UDR configuration.
func manageGrpcClient(webuiUri string) {
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")
factory.ConfigUpdateDbTrigger = make(chan *factory.UpdateDb, 10)
gatici marked this conversation as resolved.
Show resolved Hide resolved
go factory.UdrConfig.UpdateConfig(configChannel, factory.ConfigUpdateDbTrigger)
logger.InitLog.Infoln("UDR 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 (udr *UDR) setLogLevel() {
if factory.UdrConfig.Logger == nil {
logger.InitLog.Warnln("UDR config without log level setting")
Expand Down