X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=pkg%2Frtmgr%2Frtmgr.go;h=06d0f15ca626d4e62b09ca3566c6e771c087a356;hb=6ddad90f29b560905e76dbf70d3d9d2a98aeba77;hp=5b27d76a6c43ffdbb19be9666fd8be6a69d23da4;hpb=92162653c9741f2417d1a36ec1c211d6863d0a68;p=ric-plt%2Frtmgr.git diff --git a/pkg/rtmgr/rtmgr.go b/pkg/rtmgr/rtmgr.go index 5b27d76..06d0f15 100644 --- a/pkg/rtmgr/rtmgr.go +++ b/pkg/rtmgr/rtmgr.go @@ -14,30 +14,34 @@ 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. + + This source code is part of the near-RT RIC (RAN Intelligent Controller) + platform project (RICP). + ================================================================================== */ /* Mnemonic: rtmgr/rtmgr.go - Abstract: Containes RTMGR (Routing Manager) module's generic variables and functions + Abstract: Contains RTMGR (Routing Manager) module's generic variables and functions Date: 26 March 2019 */ package rtmgr import ( - "github.com/jcelliott/lumber" + "encoding/json" "errors" - "strings" - "os" + "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/xapp" + "github.com/ghodss/yaml" "io/ioutil" - "encoding/json" + "os" ) var ( //TODO: temporary solution - // CamelCase Message Types are for being able to test with old fashioned admin controll xApps - // TODO: Add a seperate message definition file (Not using the one from RMR to not create dependency on that library). - MESSAGETYPES = map[string]string{ + // CamelCase Message Types are for being able to test with old fashioned admin control xApps + // TODO: Add a separate message definition file (Not using the one from RMR to not create dependency on that library). + MessageTypes = map[string]string{ "HandoverPreparation": "0", "HandoverCancel": "1", "LoadIndication": "2", @@ -46,6 +50,14 @@ var ( "UEContextRelease": "5", "X2Setup": "6", "Reset": "7", + "E2_TERM_INIT": "1100", + "E2_TERM_KEEP_ALIVE_REQ": "1101", + "E2_TERM_KEEP_ALIVE_RESP": "1102", + "RAN_CONNECTED": "1200", + "RAN_RESTARTED": "1210", + "RAN_RECONFIGURED": "1220", + "RIC_SCTP_CLEAR_ALL": "1090", + "RIC_SCTP_CONNECTION_FAILURE": "1080", "RIC_X2_SETUP": "10000", "RIC_X2_RESPONSE": "10001", "RIC_X2_RESOURCE_STATUS_REQUEST": "10002", @@ -55,100 +67,90 @@ var ( "RIC_E2_TERMINATION_HC_RESPONSE": "10006", "RIC_E2_MANAGER_HC_REQUEST": "10007", "RIC_E2_MANAGER_HC_RESPONSE": "10008", - "RIC_CONTROL_XAPP_CONFIG_REQUEST": "100000", - "RIC_CONTROL_XAPP_CONFIG_RESPONSE": "100001", - + "RIC_ENB_LOAD_INFORMATION": "10020", + "RIC_ERROR_INDICATION": "10030", "RIC_X2_SETUP_REQ": "10060", "RIC_X2_SETUP_RESP": "10061", "RIC_X2_SETUP_FAILURE": "10062", - "RIC_X2_RESET": "10070", + "RIC_X2_RESET_REQ": "10070", "RIC_X2_RESET_RESP": "10071", - + "RIC_ENB_CONF_UPDATE": "10080", + "RIC_ENB_CONF_UPDATE_ACK": "10081", + "RIC_ENB_CONF_UPDATE_FAILURE": "10082", + "RIC_RES_STATUS_REQ": "10090", + "RIC_RES_STATUS_RESP": "10091", + "RIC_RES_STATUS_FAILURE": "10092", + "RIC_RESOURCE_STATUS_UPDATE": "10100", + "RIC_ENDC_X2_SETUP_REQ": "10360", + "RIC_ENDC_X2_SETUP_RESP": "10361", + "RIC_ENDC_X2_SETUP_FAILURE": "10362", + "RIC_ENDC_CONF_UPDATE": "10370", + "RIC_ENDC_CONF_UPDATE_ACK": "10371", + "RIC_ENDC_CONF_UPDATE_FAILURE": "10372", + "RIC_GNB_STATUS_INDICATION": "10450", "RIC_SUB_REQ": "12010", "RIC_SUB_RESP": "12011", "RIC_SUB_FAILURE": "12012", "RIC_SUB_DEL_REQ": "12020", "RIC_SUB_DEL_RESP": "12021", "RIC_SUB_DEL_FAILURE": "12022", - "RIC_CONTROL_REQ": "12040", "RIC_CONTROL_ACK": "12041", "RIC_CONTROL_FAILURE": "12042", - "RIC_INDICATION": "12050", - "RIC_ENDC_X2_SETUP_REQ": "10360", - "RIC_ENDC_X2_SETUP_RESP": "10361", - "RIC_ENDC_X2_SETUP_FAILURE": "10362", - "RIC_ENDC_CONF_UPDATE": "10370", - "RIC_ENDC_CONF_UPDATE_ACK": "10371", - "RIC_ENDC_CONF_UPDATE_FAILURE": "10372", - "RIC_RES_STATUS_REQ": "10090", - "RIC_RES_STATUS_RESP": "10091", - "RIC_RES_STATUS_FAILURE": "10092", - "RIC_ENB_CONF_UPDATE": "10080", - "RIC_ENB_CONF_UPDATE_ACK": "10081", - "RIC_ENB_CONF_UPDATE_FAILURE": "10082", - "RIC_ENB_LOAD_INFORMATION": "10020", - "RIC_GNB_STATUS_INDICATION": "10450", - "RIC_RESOURCE_STATUS_UPDATE": "10100", - "RIC_ERROR_INDICATION": "10030", + "RIC_INDICATION": "12050", "DC_ADM_INT_CONTROL": "20000", "DC_ADM_INT_CONTROL_ACK": "20001", + "A1_POLICY_REQ": "20010", + "A1_POLICY_RESPONSE": "20011", + "A1_POLICY_QUERY": "20012", + "RIC_CONTROL_XAPP_CONFIG_REQUEST": "100000", + "RIC_CONTROL_XAPP_CONFIG_RESPONSE": "100001", } - // Messagetype mappings for the platform components. + // Messagetype mappings for the platform components. // This implements static default routes needed by the RIC. Needs to be changed in case new components/message types needes to be added/updated. // Representation : {"componentName1": {"tx": , "rx": }} PLATFORMMESSAGETYPES = map[string]map[string][]string{ - "E2TERM": {"tx": []string{"RIC_X2_SETUP_REQ", "RIC_X2_SETUP_RESP", "RIC_X2_SETUP_FAILURE", "RIC_X2_RESET", "RIC_X2_RESET_RESP", "RIC_ENDC_X2_SETUP_REQ", "RIC_ENDC_X2_SETUP_RESP", "RIC_ENDC_X2_SETUP_FAILURE", "RIC_SUB_RESP", "RIC_SUB_FAILURE", "RIC_SUB_DEL_RESP", "RIC_SUB_DEL_FAILURE"}, "rx": []string{"RIC_X2_SETUP_REQ", "RIC_X2_SETUP_RESP", "RIC_X2_SETUP_FAILURE", "RIC_X2_RESET", "RIC_X2_RESET_RESP", "RIC_ENDC_X2_SETUP_REQ", "RIC_ENDC_X2_SETUP_RESP", "RIC_ENDC_X2_SETUP_FAILURE", "RIC_SUB_REQ", "RIC_SUB_DEL_REQ", "RIC_CONTROL_REQ"}}, - "E2MAN": {"tx": []string{"RIC_X2_SETUP_REQ", "RIC_X2_SETUP_RESP", "RIC_X2_SETUP_FAILURE", "RIC_X2_RESET", "RIC_X2_RESET_RESP", "RIC_ENDC_X2_SETUP_REQ", "RIC_ENDC_X2_SETUP_RESP", "RIC_ENDC_X2_SETUP_FAILURE"}, "rx": []string{"RIC_X2_SETUP_REQ", "RIC_X2_SETUP_RESP", "RIC_X2_SETUP_FAILURE", "RIC_X2_RESET", "RIC_X2_RESET_RESP", "RIC_ENDC_X2_SETUP_REQ", "RIC_ENDC_X2_SETUP_RESP", "RIC_ENDC_X2_SETUP_FAILURE"}}, - "SUBMAN": {"tx": []string{"RIC_SUB_REQ", "RIC_SUB_DEL_REQ"}, "rx": []string{"RIC_SUB_RESP", "RIC_SUB_FAILURE", "RIC_SUB_DEL_RESP", "RIC_SUB_DEL_FAILURE"}}, - "UEMAN": {"tx": []string{"RIC_CONTROL_REQ"}, "rx": []string{}}, + "E2TERM": {"tx": []string{"RIC_X2_SETUP_REQ", "RIC_X2_SETUP_RESP", "RIC_X2_SETUP_FAILURE", "RIC_X2_RESET", "RIC_X2_RESET_RESP", "RIC_ENDC_X2_SETUP_REQ", "RIC_ENDC_X2_SETUP_RESP", "RIC_ENDC_X2_SETUP_FAILURE", "RIC_SUB_RESP", "RIC_SUB_FAILURE", "RIC_SUB_DEL_RESP", "RIC_SUB_DEL_FAILURE"}, "rx": []string{"RIC_X2_SETUP_REQ", "RIC_X2_SETUP_RESP", "RIC_X2_SETUP_FAILURE", "RIC_X2_RESET", "RIC_X2_RESET_RESP", "RIC_ENDC_X2_SETUP_REQ", "RIC_ENDC_X2_SETUP_RESP", "RIC_ENDC_X2_SETUP_FAILURE", "RIC_SUB_REQ", "RIC_SUB_DEL_REQ", "RIC_CONTROL_REQ"}}, + "E2MAN": {"tx": []string{"RIC_X2_SETUP_REQ", "RIC_X2_SETUP_RESP", "RIC_X2_SETUP_FAILURE", "RIC_X2_RESET", "RIC_X2_RESET_RESP", "RIC_ENDC_X2_SETUP_REQ", "RIC_ENDC_X2_SETUP_RESP", "RIC_ENDC_X2_SETUP_FAILURE"}, "rx": []string{"RIC_X2_SETUP_REQ", "RIC_X2_SETUP_RESP", "RIC_X2_SETUP_FAILURE", "RIC_X2_RESET", "RIC_X2_RESET_RESP", "RIC_ENDC_X2_SETUP_REQ", "RIC_ENDC_X2_SETUP_RESP", "RIC_ENDC_X2_SETUP_FAILURE"}}, + "SUBMAN": {"tx": []string{"RIC_SUB_REQ", "RIC_SUB_DEL_REQ"}, "rx": []string{"RIC_SUB_RESP", "RIC_SUB_FAILURE", "RIC_SUB_DEL_RESP", "RIC_SUB_DEL_FAILURE"}}, + "UEMAN": {"tx": []string{"RIC_CONTROL_REQ"}, "rx": []string{}}, + "RSM": {"tx": []string{"RIC_RES_STATUS_REQ"}, "rx": []string{"RAN_CONNECTED", "RAN_RESTARTED", "RAN_RECONFIGURED"}}, + "A1MEDIATOR": {"tx": []string{}, "rx": []string{"A1_POLICY_QUERY", "A1_POLICY_RESPONSE"}}, } - Logger = lumber.NewConsoleLogger(lumber.INFO) - Eps Endpoints - Subs SubscriptionList + Eps Endpoints + Subs SubscriptionList + PrsCfg *PlatformRoutes ) -func SetLogLevel(loglevel string) error{ - switch strings.ToUpper(loglevel) { - case "INFO": - Logger.Level(lumber.INFO) - return nil - case "WARN": - Logger.Level(lumber.WARN) - return nil - case "ERROR": - Logger.Level(lumber.ERROR) - return nil - case "DEBUG": - Logger.Info("debugmode") - Logger.Level(lumber.DEBUG) - return nil - default: - Logger.Error("Invalid log mode, setting info") - Logger.Level(lumber.INFO) - return errors.New("Invalid log level, setting info") - } -} - func GetPlatformComponents(configfile string) (*PlatformComponents, error) { - Logger.Debug("Invoked rtmgr.GetPlatformComponents("+ configfile +")") - var rcfg RtmgrConfig - jsonFile, err := os.Open(configfile) + xapp.Logger.Debug("Invoked rtmgr.GetPlatformComponents(" + configfile + ")") + var rcfg ConfigRtmgr + var rtroutes RtmgrRoutes + yamlFile, err := os.Open(configfile) if err != nil { return nil, errors.New("cannot open the file due to: " + err.Error()) } - defer jsonFile.Close() - byteValue, err := ioutil.ReadAll(jsonFile) + defer yamlFile.Close() + byteValue, err := ioutil.ReadAll(yamlFile) + if err != nil { + return nil, errors.New("cannot read the file due to: " + err.Error()) + } + jsonByteValue, err := yaml.YAMLToJSON(byteValue) if err != nil { return nil, errors.New("cannot read the file due to: " + err.Error()) } - err = json.Unmarshal(byteValue, &rcfg) + err = json.Unmarshal(jsonByteValue,&rtroutes) + if err != nil { + return nil, errors.New("cannot parse data due to: " + err.Error()) + } + PrsCfg = &(rtroutes.Prs) + + err = json.Unmarshal(jsonByteValue, &rcfg) if err != nil { return nil, errors.New("cannot parse data due to: " + err.Error()) } - Logger.Debug("Platform components read from the configfile: %v", rcfg.Pcs) + xapp.Logger.Debug("Platform components read from the configfile: %v", rcfg.Pcs) return &(rcfg.Pcs), nil } -