X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;ds=inline;f=pkg%2Fxapp%2Fxapp.go;h=0e85845be990680f503ea58a6423cf16d74af59f;hb=fea604a8972776006ac5231425ea5799a93cf06c;hp=f778265edee516733e3ef6affa0c93bdac93dda8;hpb=9ea6c7860300c299b9fe68caaf8aff61b3ec71d2;p=ric-plt%2Fxapp-frame.git diff --git a/pkg/xapp/xapp.go b/pkg/xapp/xapp.go index f778265..0e85845 100755 --- a/pkg/xapp/xapp.go +++ b/pkg/xapp/xapp.go @@ -23,16 +23,25 @@ import ( "bytes" "encoding/json" "fmt" - "github.com/spf13/viper" + "net" "net/http" "os" "os/signal" "strings" "sync/atomic" "syscall" + "testing" "time" + + "github.com/spf13/viper" ) +// For testing purpose go version 1.13 -> +var _ = func() bool { + testing.Init() + return true +}() + type ReadyCB func(interface{}) type ShutdownCB func() @@ -111,6 +120,8 @@ func getService(host, service string) string { svc := fmt.Sprintf(service, strings.ToUpper(appnamespace), strings.ToUpper(host)) url := strings.Split(os.Getenv(strings.Replace(svc, "-", "_", -1)), "//") + + Logger.Info("getService: %+v %+v", svc, url) if len(url) > 1 { return url[1] } @@ -259,12 +270,40 @@ func init() { InstallSignalHandler() } +func getIpAdress() string { + var ip net.IP + itf, err := net.InterfaceByName(os.Getenv("INTERFACE_NAME")) + if err != nil { + Logger.Info("Interface name is not able to resolve " + err.Error()) + return ip.String() + } + item, err := itf.Addrs() + if err != nil { + Logger.Info("IP address is not able to resolve " + err.Error()) + return ip.String() + } + for _, addr := range item { + switch v := addr.(type) { + case *net.IPNet: + if !v.IP.IsLinkLocalUnicast() { + ip = v.IP + } + } + } + return ip.String() +} + func RunWithParams(c MessageConsumer, sdlcheck bool) { Rmr = NewRMRClient() Rmr.SetReadyCB(XappReadyCb, nil) - - host := fmt.Sprintf(":%d", GetPortData("http").Port) + ipString := getIpAdress() + var host string + if ipString == "" { + host = fmt.Sprintf(":%d", GetPortData("http").Port) + } else { + host = fmt.Sprintf("%s:%d", ipString, GetPortData("http").Port) + } go http.ListenAndServe(host, Resource.router) Logger.Info(fmt.Sprintf("Xapp started, listening on: %s", host))