Add method to extract update list 40/8140/2
authorsubhash kumar singh <subh.singh@samsung.com>
Wed, 4 May 2022 08:56:37 +0000 (08:56 +0000)
committersubhash kumar singh <subh.singh@samsung.com>
Tue, 10 May 2022 16:01:27 +0000 (16:01 +0000)
Added method to extract configuration update item.
Note: Xn and X2 interface is not supported.

Signed-off-by: subhash kumar singh <subh.singh@samsung.com>
Change-Id: Ieaf5f7e78f4e3fe1289631d9567ec9e485d41ccd

E2Manager/models/e2_node_configuration_update.go
E2Manager/models/e2_node_configuration_update_test.go
E2Manager/tests/resources/configurationUpdate/e2NodeConfigurationUpdate.xml

index b79cda7..87c55d6 100644 (file)
@@ -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
+}
index 3e59a49..f1bed7d 100644 (file)
@@ -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")
+}
index 451064d..86bd1c2 100644 (file)
                                             <e2nodeComponentInterfaceType><e1/></e2nodeComponentInterfaceType>
                                             <e2nodeComponentID>
                                                 <e2nodeComponentInterfaceTypeE1>
-                                                    <gNB-CU-CP-ID>e1interf</gNB-CU-CP-ID>
+                                                    <gNB-CU-CP-ID>1234</gNB-CU-CP-ID>
                                                 </e2nodeComponentInterfaceTypeE1>
                                             </e2nodeComponentID>
                                             <e2nodeComponentConfiguration>
                                             <e2nodeComponentInterfaceType><f1/></e2nodeComponentInterfaceType>
                                             <e2nodeComponentID>
                                                 <e2nodeComponentInterfaceTypeF1>
-                                                    <gNB-DU-ID>f1interf</gNB-DU-ID>
+                                                    <gNB-DU-ID>2345</gNB-DU-ID>
                                                 </e2nodeComponentInterfaceTypeF1>
                                             </e2nodeComponentID>
                                             <e2nodeComponentConfiguration>
                                             <e2nodeComponentInterfaceType><w1/></e2nodeComponentInterfaceType>
                                             <e2nodeComponentID>
                                                 <e2nodeComponentInterfaceTypeW1>
-                                                    <ng-eNB-DU-ID>w1interf</ng-eNB-DU-ID>
+                                                    <ng-eNB-DU-ID>3456</ng-eNB-DU-ID>
                                                 </e2nodeComponentInterfaceTypeW1>
                                             </e2nodeComponentID>
                                             <e2nodeComponentConfiguration>