RIC-997: ErrorIndication handling in e2mgr
[ric-plt/e2mgr.git] / E2Manager / models / e2_error_indication_message.go
1 package models
2
3 import (
4         "encoding/xml"
5         "gerrit.o-ran-sc.org/r/ric-plt/nodeb-rnib.git/entities"
6         "sync"
7
8 )
9
10
11 type ProcedureType int
12
13 const (
14         E2SetupProcedureNotInitiated ProcedureType = iota
15         E2SetupProcedureOngoing
16         E2SetupProcedureCompleted
17         E2SetupProcedureFailure
18         RicServiceUpdateCompleted
19         RicServiceUpdateFailure
20 )
21
22 var(
23         ProcedureMap = make(map[string]ProcedureType)
24         procedureMapMutex sync.RWMutex  
25
26
27 func UpdateProcedureType(ranName string, newProcedureType ProcedureType) {
28         procedureMapMutex.Lock()
29         defer procedureMapMutex.Unlock()
30         ProcedureMap[ranName] = newProcedureType
31 }
32
33 var ExistingRanFunctiuonsMap = make(map[string][]*entities.RanFunction)
34
35 type ErrorIndicationMessage struct {
36         XMLName xml.Name                `xml:"ErrorIndicationMessage"`
37         Text    string                  `xml:",chardata"`
38         E2APPDU ErrorIndicationE2APPDU `xml:"E2AP-PDU"`
39 }
40 type ErrorIndicationE2APPDU struct {
41         XMLName           xml.Name                          `xml:"E2AP-PDU"`
42         Text              string                            `xml:",chardata"`
43         InitiatingMessage ErrorIndicationInitiatingMessage `xml:"initiatingMessage"`
44 }
45 type ErrorIndicationInitiatingMessage struct {
46         Text          string `xml:",chardata"`
47         ProcedureCode string `xml:"procedureCode"`
48         Criticality   struct {
49                 Text   string `xml:",chardata"`
50                 Reject string `xml:"reject"`
51         } `xml:"criticality"`
52         Value struct {
53                 Text             string `xml:",chardata"`
54                 ErrorIndication struct {
55                         Text        string `xml:",chardata"`
56                         ProtocolIEs struct {
57                                 Text                string                `xml:",chardata"`
58                                 ErrorIndicationIEs []ErrorIndicationIEs `xml:"ErrorIndication-IEs"`
59                         } `xml:"protocolIEs"`
60                 } `xml:"ErrorIndication"`
61         } `xml:"value"`
62 }
63 type ErrorIndicationIEs struct {
64         Text        string `xml:",chardata"`
65         ID          int    `xml:"id"`
66         Criticality struct {
67                 Text   string `xml:",chardata"`
68                 Reject string `xml:"reject"`
69         } `xml:"criticality"`
70         Value struct {
71                 Text             string `xml:",chardata"`
72                 TransactionID    string `xml:"TransactionID"`
73                 RICrequestID  struct {
74                         Text           string `xml:",chardata"`
75                         RicRequestorID int32 `xml:"ricRequestorID"`
76                         RicInstanceID  int32 `xml:"ricInstanceID"`
77                 } `xml:"RICrequestID"`
78                 RANfunctionID     int32 `xml:"RANfunctionID"`
79                 CriticalityDiagnostics struct {
80                         Text        string `xml:",chardata"`
81                         ProcedureCode string `xml:"procedureCode"`
82                         TriggeringMessage TriggeringMessage `xml:"triggeringMessage"`
83                 } `xml:"CriticalityDiagnostics"`
84         }`xml:"value"`
85 }
86
87 type TriggeringMessage struct {
88         Text string    `xml:",chardata"`
89         InitiatingMessage  *struct{} `xml:"initiatingMessage"`
90         SuccessfulOutcome *struct{} `xml:"successful-outcome"`
91         UnsuccessfulOutcome  *struct{} `xml:"unsuccessful-outcome"`
92 }
93