+#==================================================================================
+# Copyright (c) 2019 AT&T Intellectual Property.
+# Copyright (c) 2019 Nokia
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#==================================================================================
swagger: '2.0'
info:
description: This is a draft API for RIC appmgr
type: string
rmrEndpoint:
type: string
+ config:
+ type: string
+ description: Configuration in JSON string format
deregisterRequest:
type: object
required:
)
type XappData struct {
- httpendpoint string
- rmrendpoint string
- rmrserviceep string
- status string
- xappname string
- xappinstname string
- xappversion string
- xappconfigpath string
- xappInstance *models.XappInstance
+ httpendpoint string
+ rmrendpoint string
+ rmrserviceep string
+ status string
+ xappname string
+ xappinstname string
+ xappversion string
+ xappconfigpath string
+ xappdynamiconfig bool
+ xappInstance *models.XappInstance
}
var xappmap = map[string]map[string]*XappData{}
func (r *Restful) PrepareConfig(params models.RegisterRequest, updateflag bool) (xapp *models.Xapp, err error) {
maxRetries := 5
- //tmpString := strings.Split(*params.HTTPEndpoint, "//")
+ configPresent := false
+ var xappconfig *string
appmgr.Logger.Info("http endpoint is %s", *params.HTTPEndpoint)
for i := 1; i <= maxRetries; i++ {
- xappconfig := httpGetXAppsconfig(fmt.Sprintf("http://%s%s", *params.HTTPEndpoint, params.ConfigPath))
+ if params.Config != "" {
+ appmgr.Logger.Info("Getting config during xapp register: %v", params.Config)
+ xappconfig = ¶ms.Config
+ configPresent = true
+ } else {
+ appmgr.Logger.Info("Getting config from xapp:")
+ xappconfig = httpGetXAppsconfig(fmt.Sprintf("http://%s%s", *params.HTTPEndpoint, params.ConfigPath))
+ }
if xappconfig != nil {
data := parseConfig(xappconfig)
//xapp.Status = params.Status
r.rh.UpdateAppData(params, updateflag)
- return r.FillInstanceData(params, &xapp, *data)
+ return r.FillInstanceData(params, &xapp, *data, configPresent)
break
} else {
- appmgr.Logger.Error("Couldn't get data due to" + err.Error())
+ appmgr.Logger.Error("No Data from xapp")
+ }
+ if configPresent == true {
+ break
}
time.Sleep(2 * time.Second)
}
return nil, errors.New("Unable to get configmap after 5 retries")
}
-func (r *Restful) FillInstanceData(params models.RegisterRequest, xapp *models.Xapp, rtData appmgr.RtmData) (xapps *models.Xapp, err error) {
+func (r *Restful) FillInstanceData(params models.RegisterRequest, xapp *models.Xapp, rtData appmgr.RtmData, configFlag bool) (xapps *models.Xapp, err error) {
- //tmpString := strings.Split(*params.RmrEndpoint, "//")
endPointStr := strings.Split(*params.RmrEndpoint, ":")
var x models.XappInstance
x.Name = params.AppInstanceName
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}
+ rmrendpoint: *params.RmrEndpoint,
+ rmrserviceep: rmrsrvname,
+ status: "deployed",
+ xappname: *params.AppName,
+ xappversion: params.AppVersion,
+ xappinstname: *params.AppInstanceName,
+ xappconfigpath: params.ConfigPath,
+ xappdynamiconfig: configFlag,
+ xappInstance: &x}
if _, ok := xappmap[*params.AppName]; ok {
xappmap[*params.AppName][*params.AppInstanceName] = a
func (r *Restful) getAppConfig() (configList models.AllXappConfig) {
for _, v := range xappmap {
- namespace := "ricxapp" //Namespace hardcode, to be removed later
+ namespace := "ricxapp" //Namespace hardcoded, to be removed later
for _, j := range v {
var activeConfig interface{}
+ if j.xappdynamiconfig {
+ continue
+ }
xappconfig := httpGetXAppsconfig(fmt.Sprintf("http://%s%s", j.httpendpoint, j.xappconfigpath))
if xappconfig == nil {
)
func NewResthook(restoreData bool) *Resthook {
- return createResthook(restoreData, sdl.NewSdlInstance("appmgr", sdl.NewDatabase()),sdl.NewSdlInstance("appdb", sdl.NewDatabase()))
+ return createResthook(restoreData, sdl.NewSdlInstance("appmgr", sdl.NewDatabase()), sdl.NewSdlInstance("appdb", sdl.NewDatabase()))
}
func createResthook(restoreData bool, sdlInst iSdl, sdlInst2 iSdl) *Resthook {
rh := &Resthook{
client: &http.Client{},
db: sdlInst,
- db2: sdlInst2,
+ db2: sdlInst2,
}
if restoreData {
return
}
+ //Ensure config is empty string, as we dont want to store config in DB
+ if params.Config != "" {
+ params.Config = ""
+ }
+
value, err := rh.db2.Get([]string{"endpoints"})
if err != nil {
appmgr.Logger.Error("DB.session.Get failed: %v ", err.Error())