From: subhash kumar singh Date: Wed, 4 May 2022 08:56:37 +0000 (+0000) Subject: Add method to extract update list X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F40%2F8140%2F2;p=ric-plt%2Fe2mgr.git Add method to extract update list Added method to extract configuration update item. Note: Xn and X2 interface is not supported. Signed-off-by: subhash kumar singh Change-Id: Ieaf5f7e78f4e3fe1289631d9567ec9e485d41ccd --- diff --git a/E2Manager/models/e2_node_configuration_update.go b/E2Manager/models/e2_node_configuration_update.go index b79cda7..87c55d6 100644 --- a/E2Manager/models/e2_node_configuration_update.go +++ b/E2Manager/models/e2_node_configuration_update.go @@ -300,3 +300,113 @@ func (m *E2nodeConfigurationUpdateMessage) ExtractConfigAdditionList() []entitie } return result } + +func (m *E2nodeConfigurationUpdateMessage) ExtractConfigUpdateList() []entities.E2NodeComponentConfig { + var result []entities.E2NodeComponentConfig + e2nodeConfigUpdateIEs := m.E2APPDU.InitiatingMessage.Value.E2nodeConfigurationUpdate.ProtocolIEs.E2nodeConfigurationUpdateIEs + + var updateList *E2nodeComponentConfigUpdateList + for _, v := range e2nodeConfigUpdateIEs { + if v.ID == "33" { + updateList = &(v.Value.E2nodeComponentConfigUpdateList) + break + } + } + + // need not to check for empty addtionList + // as list defined as SIZE(1..maxofE2nodeComponents) + if updateList != nil { + for _, val := range updateList.ProtocolIESingleContainer { + componentItem := val.Value.E2nodeComponentConfigUpdateItem + if componentItem.E2nodeComponentInterfaceType.Ng != nil { // NG Interface + result = append(result, entities.E2NodeComponentConfig{ + E2NodeComponentInterfaceType: entities.E2NodeComponentInterfaceType_ng, + E2NodeComponentRequestPart: []byte(componentItem.E2nodeComponentConfiguration.E2nodeComponentRequestPart), + E2NodeComponentResponsePart: []byte(componentItem.E2nodeComponentConfiguration.E2nodeComponentResponsePart), + E2NodeComponentID: &entities.E2NodeComponentConfig_E2NodeComponentInterfaceTypeNG{ + E2NodeComponentInterfaceTypeNG: &entities.E2NodeComponentInterfaceNG{ + AmfName: componentItem.E2nodeComponentID.E2nodeComponentInterfaceTypeNG.AmfName, + }, + }, + }) + continue + } + + if componentItem.E2nodeComponentInterfaceType.Xn != nil { // xn inetrface + // TODO - Not Supported Yet + continue + } + + if componentItem.E2nodeComponentInterfaceType.E1 != nil { // e1 interface + gnbCuCpId, err := strconv.ParseInt(componentItem.E2nodeComponentID.E2nodeComponentInterfaceTypeE1.GNBCUCPID, 10, 64) + if err == nil { + result = append(result, entities.E2NodeComponentConfig{ + E2NodeComponentInterfaceType: entities.E2NodeComponentInterfaceType_e1, + E2NodeComponentRequestPart: []byte(componentItem.E2nodeComponentConfiguration.E2nodeComponentRequestPart), + E2NodeComponentResponsePart: []byte(componentItem.E2nodeComponentConfiguration.E2nodeComponentResponsePart), + E2NodeComponentID: &entities.E2NodeComponentConfig_E2NodeComponentInterfaceTypeE1{ + E2NodeComponentInterfaceTypeE1: &entities.E2NodeComponentInterfaceE1{ + GNBCuCpId: gnbCuCpId, + }, + }, + }) + } + continue + } + + if componentItem.E2nodeComponentInterfaceType.F1 != nil { // f1 interface + gnbDuId, err := strconv.ParseInt(componentItem.E2nodeComponentID.E2nodeComponentInterfaceTypeF1.GNBDUID, 10, 64) + if err == nil { + result = append(result, entities.E2NodeComponentConfig{ + E2NodeComponentInterfaceType: entities.E2NodeComponentInterfaceType_f1, + E2NodeComponentRequestPart: []byte(componentItem.E2nodeComponentConfiguration.E2nodeComponentRequestPart), + E2NodeComponentResponsePart: []byte(componentItem.E2nodeComponentConfiguration.E2nodeComponentResponsePart), + E2NodeComponentID: &entities.E2NodeComponentConfig_E2NodeComponentInterfaceTypeF1{ + E2NodeComponentInterfaceTypeF1: &entities.E2NodeComponentInterfaceF1{ + GNBDuId: gnbDuId, + }, + }, + }) + } + continue + } + + if componentItem.E2nodeComponentInterfaceType.W1 != nil { // w1 interface + ngenbDuId, err := strconv.ParseInt(componentItem.E2nodeComponentID.E2nodeComponentInterfaceTypeW1.NgENBDUID, 10, 64) + if err == nil { + result = append(result, entities.E2NodeComponentConfig{ + E2NodeComponentInterfaceType: entities.E2NodeComponentInterfaceType_w1, + E2NodeComponentRequestPart: []byte(componentItem.E2nodeComponentConfiguration.E2nodeComponentRequestPart), + E2NodeComponentResponsePart: []byte(componentItem.E2nodeComponentConfiguration.E2nodeComponentResponsePart), + E2NodeComponentID: &entities.E2NodeComponentConfig_E2NodeComponentInterfaceTypeW1{ + E2NodeComponentInterfaceTypeW1: &entities.E2NodeComponentInterfaceW1{ + NgenbDuId: ngenbDuId, + }, + }, + }) + } + continue + } + + if componentItem.E2nodeComponentInterfaceType.S1 != nil { // s1 interface + result = append(result, entities.E2NodeComponentConfig{ + E2NodeComponentInterfaceType: entities.E2NodeComponentInterfaceType_s1, + E2NodeComponentRequestPart: []byte(componentItem.E2nodeComponentConfiguration.E2nodeComponentRequestPart), + E2NodeComponentResponsePart: []byte(componentItem.E2nodeComponentConfiguration.E2nodeComponentResponsePart), + E2NodeComponentID: &entities.E2NodeComponentConfig_E2NodeComponentInterfaceTypeS1{ + E2NodeComponentInterfaceTypeS1: &entities.E2NodeComponentInterfaceS1{ + MmeName: componentItem.E2nodeComponentID.E2nodeComponentInterfaceTypeS1.MmeName, + }, + }, + }) + continue + } + + if componentItem.E2nodeComponentInterfaceType.X2 != nil { // x2 interface + // TODO - Not Supported Yet + continue + } + } + } + return result +} diff --git a/E2Manager/models/e2_node_configuration_update_test.go b/E2Manager/models/e2_node_configuration_update_test.go index 3e59a49..f1bed7d 100644 --- a/E2Manager/models/e2_node_configuration_update_test.go +++ b/E2Manager/models/e2_node_configuration_update_test.go @@ -86,3 +86,15 @@ func TestExtractAdditionConfigList(t *testing.T) { assert.Equal(t, 1, len(additionList2), "Addtion List is not matching") } + +func TestExtractUpdateConfigList(t *testing.T) { + configurationUpdate1 := getTestE2NodeConfigurationUpdateMessage(t, e2NodeConfigurationUpdateXmlPath) + updateList1 := configurationUpdate1.ExtractConfigUpdateList() + + assert.Equal(t, 5, len(updateList1), "Update List is not matching") + + configurationUpdate2 := getTestE2NodeConfigurationUpdateMessage(t, e2NodeConfigurationUpdateOnlyAdditionXmlPath) + updateList2 := configurationUpdate2.ExtractConfigUpdateList() + + assert.Equal(t, 0, len(updateList2), "Update List is not matching") +} diff --git a/E2Manager/tests/resources/configurationUpdate/e2NodeConfigurationUpdate.xml b/E2Manager/tests/resources/configurationUpdate/e2NodeConfigurationUpdate.xml index 451064d..86bd1c2 100644 --- a/E2Manager/tests/resources/configurationUpdate/e2NodeConfigurationUpdate.xml +++ b/E2Manager/tests/resources/configurationUpdate/e2NodeConfigurationUpdate.xml @@ -203,7 +203,7 @@ - e1interf + 1234 @@ -221,7 +221,7 @@ - f1interf + 2345 @@ -239,7 +239,7 @@ - w1interf + 3456