From: wahidw Date: Sat, 9 Jan 2021 06:02:22 +0000 (+0000) Subject: Added 'ric/v1/config' back X-Git-Tag: 0.5.3~8 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=78c892e865c7ba0c90ec344ffb10db4ebc461ca9;p=ric-plt%2Fappmgr.git Added 'ric/v1/config' back Reverted to RMR services Name in App ocnfiguration Signed-off-by: wahidw Change-Id: If6eee12e34ec8cab947ae3404c25ceb5c6522da2 --- diff --git a/Dockerfile b/Dockerfile index 7f313d8..5f43439 100755 --- a/Dockerfile +++ b/Dockerfile @@ -15,7 +15,7 @@ #----------------------------------------------------------- -FROM nexus3.o-ran-sc.org:10004/o-ran-sc/bldr-ubuntu18-c-go:9-u18.04 AS appmgr-build +FROM nexus3.o-ran-sc.org:10002/o-ran-sc/bldr-ubuntu18-c-go:1.9.0 AS appmgr-build RUN apt-get update -y && apt-get install -y jq diff --git a/container-tag.yaml b/container-tag.yaml index 643454e..7d8248c 100755 --- a/container-tag.yaml +++ b/container-tag.yaml @@ -1,4 +1,4 @@ # The Jenkins job uses this string for the tag in the image name # for example nexus3.o-ran-sc.org:10004/my-image-name:my-tag --- -tag: '0.5.1' +tag: '0.5.2' diff --git a/pkg/restful/restful.go b/pkg/restful/restful.go index e450547..077eea0 100755 --- a/pkg/restful/restful.go +++ b/pkg/restful/restful.go @@ -47,6 +47,7 @@ import ( type XappData struct { httpendpoint string rmrendpoint string + rmrserviceep string status string xappname string xappinstname string @@ -173,6 +174,12 @@ func (r *Restful) SetupHandler() *operations.AppManagerAPI { return xapp.NewGetAllXappsInternalServerError() }) + // URL: /ric/v1/config + api.XappGetAllXappConfigHandler = xapp.GetAllXappConfigHandlerFunc( + func(params xapp.GetAllXappConfigParams) middleware.Responder { + return xapp.NewGetAllXappConfigOK().WithPayload(r.getAppConfig()) + }) + api.RegisterXappHandler = operations.RegisterXappHandlerFunc( func(params operations.RegisterXappParams) middleware.Responder { appmgr.Logger.Info("appname is %s", (*params.RegisterRequest.AppName)) @@ -198,11 +205,11 @@ func (r *Restful) SetupHandler() *operations.AppManagerAPI { return api } -func httpGetXAppsconfig(url string) (*appmgr.RtmData, error) { +func httpGetXAppsconfig(url string) *string { appmgr.Logger.Info("Invoked httprestful.httpGetXApps: " + url) resp, err := http.Get(url) if err != nil { - return nil, err + return nil } defer resp.Body.Close() @@ -211,59 +218,63 @@ func httpGetXAppsconfig(url string) (*appmgr.RtmData, error) { appmgr.Logger.Info("http client raw response: %v", resp) if err := json.NewDecoder(resp.Body).Decode(&data); err != nil { appmgr.Logger.Error("Json decode failed: " + err.Error()) - return nil, err + return nil } //data[0] assuming only for one app str := fmt.Sprintf("%v", data[0].Config) appmgr.Logger.Info("HTTP BODY: %v", str) resp.Body.Close() + return &str + } else { + appmgr.Logger.Info("httprestful got an unexpected http status code: %v", resp.StatusCode) + return nil + } +} + +func parseConfig(config *string) *appmgr.RtmData { + var p fastjson.Parser + var msgs appmgr.RtmData + + v, err := p.Parse(*config) + if err != nil { + appmgr.Logger.Info("fastjson.Parser for failed: %v", err) + return nil + } - var p fastjson.Parser - var msgs appmgr.RtmData + if v.Exists("rmr") { + for _, m := range v.GetArray("rmr", "txMessages") { + msgs.TxMessages = append(msgs.TxMessages, strings.Trim(m.String(), `"`)) + } - v, err := p.Parse(str) - if err != nil { - appmgr.Logger.Info("fastjson.Parser for failed: %v", err) - return nil, err + for _, m := range v.GetArray("rmr", "rxMessages") { + msgs.RxMessages = append(msgs.RxMessages, strings.Trim(m.String(), `"`)) } - if v.Exists("rmr") { - for _, m := range v.GetArray("rmr", "txMessages") { + for _, m := range v.GetArray("rmr", "policies") { + if val, err := strconv.Atoi(strings.Trim(m.String(), `"`)); err == nil { + msgs.Policies = append(msgs.Policies, int64(val)) + } + } + } else { + for _, p := range v.GetArray("messaging", "ports") { + appmgr.Logger.Info("txMessages=%v, rxMessages=%v", p.GetArray("txMessages"), p.GetArray("rxMessages")) + for _, m := range p.GetArray("txMessages") { msgs.TxMessages = append(msgs.TxMessages, strings.Trim(m.String(), `"`)) } - for _, m := range v.GetArray("rmr", "rxMessages") { + for _, m := range p.GetArray("rxMessages") { msgs.RxMessages = append(msgs.RxMessages, strings.Trim(m.String(), `"`)) } - for _, m := range v.GetArray("rmr", "policies") { + for _, m := range p.GetArray("policies") { if val, err := strconv.Atoi(strings.Trim(m.String(), `"`)); err == nil { msgs.Policies = append(msgs.Policies, int64(val)) } } - } else { - for _, p := range v.GetArray("messaging", "ports") { - appmgr.Logger.Info("txMessages=%v, rxMessages=%v", p.GetArray("txMessages"), p.GetArray("rxMessages")) - for _, m := range p.GetArray("txMessages") { - msgs.TxMessages = append(msgs.TxMessages, strings.Trim(m.String(), `"`)) - } - - for _, m := range p.GetArray("rxMessages") { - msgs.RxMessages = append(msgs.RxMessages, strings.Trim(m.String(), `"`)) - } - - for _, m := range p.GetArray("policies") { - if val, err := strconv.Atoi(strings.Trim(m.String(), `"`)); err == nil { - msgs.Policies = append(msgs.Policies, int64(val)) - } - } - } } - return &msgs, nil } - appmgr.Logger.Info("httprestful got an unexpected http status code: %v", resp.StatusCode) - return nil, nil + return &msgs } func (r *Restful) RegisterXapp(params models.RegisterRequest) (xapp *models.Xapp, err error) { @@ -295,27 +306,27 @@ func (r *Restful) PrepareConfig(params models.RegisterRequest, updateflag bool) //tmpString := strings.Split(*params.HTTPEndpoint, "//") appmgr.Logger.Info("http endpoint is %s", *params.HTTPEndpoint) for i := 1; i <= maxRetries; i++ { - data, err := httpGetXAppsconfig(fmt.Sprintf("http://%s%s", *params.HTTPEndpoint, params.ConfigPath)) - - if data != nil && err == nil { - appmgr.Logger.Info("iRetry Count = %v", i) - var xapp models.Xapp - - xapp.Name = params.AppName - xapp.Version = params.AppVersion - //xapp.Status = params.Status - - r.rh.UpdateAppData(params, updateflag) - return r.FillInstanceData(params, &xapp, *data) - break - } else if err == nil { - appmgr.Logger.Error("Unexpected HTTP status code/JSON Parsing error") - } else { - appmgr.Logger.Error("Couldn't get data due to" + err.Error()) + xappconfig := httpGetXAppsconfig(fmt.Sprintf("http://%s%s", *params.HTTPEndpoint, params.ConfigPath)) + + if xappconfig != nil { + data := parseConfig(xappconfig) + if data != nil { + appmgr.Logger.Info("iRetry Count = %v", i) + var xapp models.Xapp + + xapp.Name = params.AppName + xapp.Version = params.AppVersion + //xapp.Status = params.Status + + r.rh.UpdateAppData(params, updateflag) + return r.FillInstanceData(params, &xapp, *data) + break + } else { + appmgr.Logger.Error("Couldn't get data due to" + err.Error()) + } + time.Sleep(2 * time.Second) } - time.Sleep(2 * time.Second) } - return nil, errors.New("Unable to get configmap after 5 retries") } @@ -327,14 +338,24 @@ func (r *Restful) FillInstanceData(params models.RegisterRequest, xapp *models.X x.Name = params.AppInstanceName //x.Status = strings.ToLower(params.Status) x.Status = "deployed" - x.IP = endPointStr[0] + //x.IP = endPointStr[0] + x.IP = fmt.Sprintf("service-ricxapp-%s-rmr.ricxapp", *params.AppInstanceName) x.Port, _ = strconv.ParseInt(endPointStr[1], 10, 64) x.TxMessages = rtData.TxMessages x.RxMessages = rtData.RxMessages x.Policies = rtData.Policies xapp.Instances = append(xapp.Instances, &x) - - a := &XappData{httpendpoint: *params.HTTPEndpoint, rmrendpoint: *params.RmrEndpoint, status: "deployed", xappname: *params.AppName, xappversion: params.AppVersion, xappinstname: *params.AppInstanceName, xappconfigpath: params.ConfigPath, xappInstance: &x} + rmrsrvname := fmt.Sprintf("service-ricxapp-%s-rmr.ricxapp:%s", *params.AppInstanceName, x.Port) + + a := &XappData{httpendpoint: *params.HTTPEndpoint, + rmrendpoint: *params.RmrEndpoint, + rmrserviceep: rmrsrvname, + status: "deployed", + xappname: *params.AppName, + xappversion: params.AppVersion, + xappinstname: *params.AppInstanceName, + xappconfigpath: params.ConfigPath, + xappInstance: &x} if _, ok := xappmap[*params.AppName]; ok { xappmap[*params.AppName][*params.AppInstanceName] = a @@ -366,3 +387,28 @@ func (r *Restful) GetApps() (xapps models.AllDeployedXapps, err error) { return xapps, nil } + +func (r *Restful) getAppConfig() (configList models.AllXappConfig) { + for _, v := range xappmap { + namespace := "ricxapp" //Namespace hardcode, to be removed later + for _, j := range v { + var activeConfig interface{} + xappconfig := httpGetXAppsconfig(fmt.Sprintf("http://%s%s", j.httpendpoint, j.xappconfigpath)) + + if xappconfig == nil { + appmgr.Logger.Info("config not found for %s", &j.xappname) + continue + } + json.Unmarshal([]byte(*xappconfig), &activeConfig) + + c := models.XAppConfig{ + Metadata: &models.ConfigMetadata{XappName: &j.xappname, Namespace: &namespace}, + Config: activeConfig, + } + configList = append(configList, &c) + + } + + } + return +}