"gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp"
"io/ioutil"
"os"
- "routing-manager/pkg/rtmgr"
"routing-manager/pkg/models"
+ "routing-manager/pkg/rtmgr"
+ "strings"
)
/*
var rcs *rtmgr.RicComponents
jsonFile, err := os.Open(file)
if err != nil {
- return nil, errors.New("cannot open the file due to: " + err.Error())
+ return nil, errors.New("Cannot open the file due to: " + err.Error())
}
defer jsonFile.Close()
byteValue, err := ioutil.ReadAll(jsonFile)
}
func (f *File) WriteAll(file string, rcs *rtmgr.RicComponents) error {
- xapp.Logger.Debug("Invoked sdl.WriteAll")
- xapp.Logger.Debug("file.fileWriteAll writes into file: " + file)
- xapp.Logger.Debug("file.fileWriteAll writes data: %v", *rcs)
+ xapp.Logger.Debug("Invoked sdl.WriteAll:" + file + ", file.fileWriteAll writes data: %v", *rcs )
byteValue, err := json.Marshal(rcs)
if err != nil {
- return errors.New("cannot convert data due to: " + err.Error())
+ return errors.New("Cannot convert data due to: " + err.Error())
}
err = ioutil.WriteFile(file, byteValue, 0644)
if err != nil {
}
func (f *File) WriteXApps(file string, xApps *[]rtmgr.XApp) error {
- xapp.Logger.Debug("Invoked sdl.WriteXApps")
- xapp.Logger.Debug("file.fileWriteXApps writes into file: " + file)
- xapp.Logger.Debug("file.fileWriteXApps writes data: %v", *xApps)
+ xapp.Logger.Debug("Invoked sdl.WriteXApps: " + file + ", file.fileWriteXApps writes data: %v", *xApps )
ricData, err := NewFile().ReadAll(file)
if err != nil {
- xapp.Logger.Error("cannot get data from sdl interface due to: " + err.Error())
- return errors.New("cannot read full ric data to modify xApps data, due to: " + err.Error())
+ xapp.Logger.Error("Cannot get data from sdl interface due to: " + err.Error())
+ return errors.New("Cannot read full ric data to modify xApps data, due to: " + err.Error())
}
ricData.XApps = *xApps
return nil
}
-func (f *File) WriteNewE2TInstance(file string, E2TInst *rtmgr.E2TInstance) error {
- xapp.Logger.Debug("Invoked sdl.WriteNewE2TInstance")
- xapp.Logger.Debug("file.WriteNewE2TInstance writes into file: " + file)
- xapp.Logger.Debug("file.WriteNewE2TInstance writes data: %v", *E2TInst)
+func (f *File) WriteNewE2TInstance(file string, E2TInst *rtmgr.E2TInstance, meiddata string) error {
+ xapp.Logger.Debug("Invoked sdl.WriteNewE2TInstance: " + file + ", file.WriteNewE2TInstance writes data: %v", *E2TInst )
- ricData, err := NewFile().ReadAll(file)
+ ricData, err := NewFile().ReadAll(file)
if err != nil {
- xapp.Logger.Error("cannot get data from sdl interface due to: " + err.Error())
- return errors.New("cannot read full ric data to modify xApps data, due to: " + err.Error())
- }
- ricData.E2Ts[E2TInst.Fqdn] = *E2TInst
+ xapp.Logger.Error("Cannot get data from sdl interface due to: " + err.Error())
+ return errors.New("cannot read full ric data to modify xApps data due to: " + err.Error())
+ }
+ ricData.E2Ts[E2TInst.Fqdn] = *E2TInst
+ if len(meiddata) > 0 {
+ ricData.MeidMap = append(ricData.MeidMap, meiddata)
+ }
+ /*{
+ ricData.MeidMap = []string {meiddata}
+ }
+ else {
+ ricData.MeidMap = []string {}
+ }*/
- byteValue, err := json.Marshal(ricData)
- if err != nil {
- return errors.New("cannot convert data due to: " + err.Error())
- }
- err = ioutil.WriteFile(file, byteValue, 0644)
- if err != nil {
- return errors.New("cannot write file due to: " + err.Error())
- }
- return nil
+ byteValue, err := json.Marshal(ricData)
+ if err != nil {
+ return errors.New("cannot convert data due to: " + err.Error())
+ }
+ err = ioutil.WriteFile(file, byteValue, 0644)
+ if err != nil {
+ return errors.New("cannot write file due to: " + err.Error())
+ }
+ return nil
}
func (f *File) WriteAssRANToE2TInstance(file string, rane2tmap models.RanE2tMap) error {
- xapp.Logger.Debug("Invoked sdl.WriteAssRANToE2TInstance")
- xapp.Logger.Debug("file.WriteAssRANToE2TInstance writes into file: " + file)
- xapp.Logger.Debug("file.WriteAssRANToE2TInstance writes data: %v", rane2tmap)
+ xapp.Logger.Debug("Invoked sdl.WriteAssRANToE2TInstance: " + file + ", file.WriteAssRANToE2TInstance writes data: %v", rane2tmap)
- ricData, err := NewFile().ReadAll(file)
- if err != nil {
- xapp.Logger.Error("cannot get data from sdl interface due to: " + err.Error())
- return errors.New("cannot read full ric data to modify xApps data, due to: " + err.Error())
- }
+ ricData, err := NewFile().ReadAll(file)
+ if err != nil {
+ xapp.Logger.Error("Cannot get data from sdl interface due to: " + err.Error())
+ return errors.New("cannot read full ric data to modify xApps data due to: " + err.Error())
+ }
+
+ //ricData.MeidMap = []string{}
for _, element := range rane2tmap {
- xapp.Logger.Info("data received")
+ xapp.Logger.Info("Data received")
+ var str, meidar string
+ for _, meid := range element.RanNamelist {
+ meidar += meid + " "
+ }
+ str = "mme_ar|" + *element.E2TAddress + "|" + strings.TrimSuffix(meidar, " ")
+ ricData.MeidMap = append(ricData.MeidMap, str)
+
for key, _ := range ricData.E2Ts {
if key == *element.E2TAddress {
var estObj rtmgr.E2TInstance
estObj = ricData.E2Ts[key]
estObj.Ranlist = append(ricData.E2Ts[key].Ranlist, element.RanNamelist...)
- ricData.E2Ts[key]= estObj
+ ricData.E2Ts[key] = estObj
}
}
}
byteValue, err := json.Marshal(ricData)
- if err != nil {
- return errors.New("cannot convert data due to: " + err.Error())
- }
- err = ioutil.WriteFile(file, byteValue, 0644)
- if err != nil {
- return errors.New("cannot write file due to: " + err.Error())
- }
- return nil
+ if err != nil {
+ return errors.New("cannot convert data due to: " + err.Error())
+ }
+ err = ioutil.WriteFile(file, byteValue, 0644)
+ if err != nil {
+ return errors.New("cannot write file due to: " + err.Error())
+ }
+ return nil
}
func (f *File) WriteDisAssRANFromE2TInstance(file string, disassranmap models.RanE2tMap) error {
- xapp.Logger.Debug("Invoked sdl.WriteDisAssRANFromE2TInstance")
- xapp.Logger.Debug("file.WriteDisAssRANFromE2TInstance writes into file: " + file)
- xapp.Logger.Debug("file.WriteDisAssRANFromE2TInstance writes data: %v", disassranmap)
+ xapp.Logger.Debug("Invoked sdl.WriteDisAssRANFromE2TInstance: " + file + ",file.WriteDisAssRANFromE2TInstance writes data: %v", disassranmap)
- ricData, err := NewFile().ReadAll(file)
- if err != nil {
- xapp.Logger.Error("cannot get data from sdl interface due to: " + err.Error())
- return errors.New("cannot read full ric data to modify xApps data, due to: " + err.Error())
- }
+ ricData, err := NewFile().ReadAll(file)
+ if err != nil {
+ xapp.Logger.Error("Cannot get data from sdl interface due to: " + err.Error())
+ return errors.New("cannot read full ric data to modify xApps data due to: " + err.Error())
+ }
+
+ var str, meiddel, meiddisdel string
+ //ricData.MeidMap = []string{}
for _, element := range disassranmap {
- xapp.Logger.Info("data received")
+ xapp.Logger.Info("Data received")
+ for _, meid := range element.RanNamelist {
+ meiddisdel += meid + " "
+ }
+ if len(element.RanNamelist) > 0 {
+ str = "mme_del|" + strings.TrimSuffix(meiddisdel, " ")
+ ricData.MeidMap = append(ricData.MeidMap, str)
+ }
e2taddress_key := *element.E2TAddress
- //Check whether the provided E2T Address is available in SDL as a key.
+ //Check whether the provided E2T Address is available in SDL as a key.
//If exist, proceed further to check RAN list, Otherwise move to next E2T Instance
if _, exist := ricData.E2Ts[e2taddress_key]; exist {
var estObj rtmgr.E2TInstance
// If RAN list is empty, then routing manager assumes that all RANs attached associated to the particular E2T Instance to be removed.
if len(element.RanNamelist) == 0 {
xapp.Logger.Debug("RAN List is empty. So disassociating all RANs from the E2T Instance: %v ", *element.E2TAddress)
+ for _, meid := range estObj.Ranlist {
+ meiddel += meid + " "
+ }
+ str = "mme_del|" + strings.TrimSuffix(meiddel, " ")
+ ricData.MeidMap = append(ricData.MeidMap, str)
+
estObj.Ranlist = []string{}
} else {
xapp.Logger.Debug("Remove only selected rans from E2T Instance: %v and %v ", ricData.E2Ts[e2taddress_key].Ranlist, element.RanNamelist)
}
}
}
- ricData.E2Ts[e2taddress_key]= estObj
+ ricData.E2Ts[e2taddress_key] = estObj
}
}
xapp.Logger.Debug("Final data after disassociate: %v", ricData)
byteValue, err := json.Marshal(ricData)
- if err != nil {
- return errors.New("cannot convert data due to: " + err.Error())
- }
- err = ioutil.WriteFile(file, byteValue, 0644)
- if err != nil {
- return errors.New("cannot write file due to: " + err.Error())
- }
+ if err != nil {
+ return errors.New("cannot convert data due to: " + err.Error())
+ }
+ err = ioutil.WriteFile(file, byteValue, 0644)
+ if err != nil {
+ return errors.New("cannot write file due to: " + err.Error())
+ }
return nil
}
func (f *File) WriteDeleteE2TInstance(file string, E2TInst *models.E2tDeleteData) error {
- xapp.Logger.Debug("Invoked sdl.WriteDeleteE2TInstance")
- xapp.Logger.Debug("file.WriteDeleteE2TInstance writes into file: " + file)
- xapp.Logger.Debug("file.WriteDeleteE2TInstance writes data: %v", *E2TInst)
+ xapp.Logger.Debug("Invoked sdl.WriteDeleteE2TInstance: " + file + ",file.WriteDeleteE2TInstance writes data: %v", *E2TInst)
ricData, err := NewFile().ReadAll(file)
if err != nil {
- xapp.Logger.Error("cannot get data from sdl interface due to: " + err.Error())
- return errors.New("cannot read full ric data to modify xApps data, due to: " + err.Error())
+ xapp.Logger.Error("Cannot get data from sdl interface due to: " + err.Error())
+ return errors.New("cannot read full ric data to modify xApps data due to: " + err.Error())
}
- delete(ricData.E2Ts, *E2TInst.E2TAddress)
+ //ricData.MeidMap = []string{}
+ var delrow, meiddel string
+ if len(E2TInst.RanNamelistTobeDissociated) > 0 {
+ for _, meid := range E2TInst.RanNamelistTobeDissociated {
+ meiddel += meid + " "
+ }
+ delrow = "mme_del|" + strings.TrimSuffix(meiddel, " ")
+ ricData.MeidMap = append(ricData.MeidMap, delrow)
+ } else {
+ if len(ricData.E2Ts[*E2TInst.E2TAddress].Ranlist) > 0 {
+ for _, meid := range ricData.E2Ts[*E2TInst.E2TAddress].Ranlist {
+ meiddel += meid + " "
+ }
+ delrow = "mme_del|" + strings.TrimSuffix(meiddel, " ")
+ ricData.MeidMap = append(ricData.MeidMap, delrow)
+ }
+ }
+ delete(ricData.E2Ts, *E2TInst.E2TAddress)
for _, element := range E2TInst.RanAssocList {
- xapp.Logger.Info("data received")
+ var str, meidar string
+ xapp.Logger.Info("Data received")
+ for _, meid := range element.RanNamelist {
+ meidar = meid + " "
+ }
+ str = "mme_ar|" + *element.E2TAddress + "|" + strings.TrimSuffix(meidar, " ")
+ ricData.MeidMap = append(ricData.MeidMap, str)
key := *element.E2TAddress
if val, ok := ricData.E2Ts[key]; ok {
var estObj rtmgr.E2TInstance
estObj = val
estObj.Ranlist = append(ricData.E2Ts[key].Ranlist, element.RanNamelist...)
- ricData.E2Ts[key]= estObj
+ ricData.E2Ts[key] = estObj
} else {
xapp.Logger.Error("file.WriteDeleteE2TInstance E2T instance is not found for provided E2TAddress : %v", errors.New(key).Error())
}
byteValue, err := json.Marshal(ricData)
if err != nil {
- return errors.New("cannot convert data due to: " + err.Error())
+ return errors.New("cannot convert data due to: " + err.Error())
}
err = ioutil.WriteFile(file, byteValue, 0644)
if err != nil {
- return errors.New("cannot write file due to: " + err.Error())
+ return errors.New("cannot write file due to: " + err.Error())
}
return nil
}