Add to_directory method to relevant object classes
[oam.git] / code / network-topology-parser / tapi-context.go
1 /************************************************************************
2 * Copyright 2022 highstreet technologies GmbH
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *     http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 ************************************************************************/
16
17 package main
18
19 // TapiContext is a view of the TAPI Context, augmented with TAPI Topology
20 // https://mholt.github.io/json-to-go/ used to transform the JSON into Go struct
21 type TapiContext struct {
22         TapiCommonContext struct {
23                 UUID string `json:"uuid"`
24                 Name []struct {
25                         ValueName string `json:"value-name"`
26                         Value     string `json:"value"`
27                 } `json:"name"`
28                 TapiTopologyTopologyContext struct {
29                         Topology []struct {
30                                 UUID string `json:"uuid"`
31                                 Name []struct {
32                                         ValueName string `json:"value-name"`
33                                         Value     string `json:"value"`
34                                 } `json:"name"`
35                                 LayerProtocolName []string `json:"layer-protocol-name"`
36                                 Node              []struct {
37                                         UUID string `json:"uuid"`
38                                         Name []struct {
39                                                 ValueName string `json:"value-name"`
40                                                 Value     string `json:"value"`
41                                         } `json:"name"`
42                                         OwnedNodeEdgePoint []struct {
43                                                 UUID string `json:"uuid"`
44                                                 Name []struct {
45                                                         ValueName string `json:"value-name"`
46                                                         Value     string `json:"value"`
47                                                 } `json:"name"`
48                                                 AdministrativeState                string   `json:"administrative-state"`
49                                                 OperationalState                   string   `json:"operational-state"`
50                                                 LifecycleState                     string   `json:"lifecycle-state"`
51                                                 LinkPortRole                       string   `json:"link-port-role"`
52                                                 LayerProtocolName                  string   `json:"layer-protocol-name"`
53                                                 SupportedCepLayerProtocolQualifier []string `json:"supported-cep-layer-protocol-qualifier"`
54                                                 LinkPortDirection                  string   `json:"link-port-direction"`
55                                                 TerminationState                   string   `json:"termination-state"`
56                                                 TerminationDirection               string   `json:"termination-direction"`
57                                         } `json:"owned-node-edge-point"`
58                                         AdministrativeState string   `json:"administrative-state"`
59                                         OperationalState    string   `json:"operational-state"`
60                                         LifecycleState      string   `json:"lifecycle-state"`
61                                         LayerProtocolName   []string `json:"layer-protocol-name"`
62                                         CostCharacteristic  []struct {
63                                                 CostName      string `json:"cost-name"`
64                                                 CostAlgorithm string `json:"cost-algorithm"`
65                                                 CostValue     string `json:"cost-value"`
66                                         } `json:"cost-characteristic"`
67                                         LatencyCharacteristic []struct {
68                                                 TrafficPropertyName         string `json:"traffic-property-name"`
69                                                 QueingLatencyCharacteristic string `json:"queing-latency-characteristic"`
70                                                 FixedLatencyCharacteristic  string `json:"fixed-latency-characteristic"`
71                                                 JitterCharacteristic        string `json:"jitter-characteristic"`
72                                                 WanderCharacteristic        string `json:"wander-characteristic"`
73                                         } `json:"latency-characteristic"`
74                                         ORanScTopologyFunction    string `json:"o-ran-sc-topology:function"`
75                                         ORanScTopologyGeolocation struct {
76                                                 Longitude string `json:"longitude"`
77                                                 Latitude  string `json:"latitude"`
78                                                 Altitude  string `json:"altitude"`
79                                         } `json:"o-ran-sc-topology:geolocation"`
80                                 } `json:"node"`
81                                 Link []struct {
82                                         UUID string `json:"uuid"`
83                                         Name []struct {
84                                                 ValueName string `json:"value-name"`
85                                                 Value     string `json:"value"`
86                                         } `json:"name"`
87                                         TransitionedLayerProtocolName []string `json:"transitioned-layer-protocol-name"`
88                                         AdministrativeState           string   `json:"administrative-state"`
89                                         OperationalState              string   `json:"operational-state"`
90                                         Direction                     string   `json:"direction"`
91                                         LifecycleState                string   `json:"lifecycle-state"`
92                                         NodeEdgePoint                 []struct {
93                                                 TopologyUUID      string `json:"topology-uuid"`
94                                                 NodeUUID          string `json:"node-uuid"`
95                                                 NodeEdgePointUUID string `json:"node-edge-point-uuid"`
96                                         } `json:"node-edge-point"`
97                                         LatencyCharacteristic []struct {
98                                                 TrafficPropertyName         string `json:"traffic-property-name"`
99                                                 QueingLatencyCharacteristic string `json:"queing-latency-characteristic"`
100                                                 FixedLatencyCharacteristic  string `json:"fixed-latency-characteristic"`
101                                                 JitterCharacteristic        string `json:"jitter-characteristic"`
102                                                 WanderCharacteristic        string `json:"wander-characteristic"`
103                                         } `json:"latency-characteristic"`
104                                         LayerProtocolName  []string `json:"layer-protocol-name"`
105                                         RiskCharacteristic []struct {
106                                                 RiskCharacteristicName string   `json:"risk-characteristic-name"`
107                                                 RiskIdentifierList     []string `json:"risk-identifier-list"`
108                                         } `json:"risk-characteristic"`
109                                         ValidationMechanism []struct {
110                                                 ValidationMechanism             string `json:"validation-mechanism"`
111                                                 ValidationRobustness            string `json:"validation-robustness"`
112                                                 LayerProtocolAdjacencyValidated string `json:"layer-protocol-adjacency-validated"`
113                                         } `json:"validation-mechanism"`
114                                         CostCharacteristic []struct {
115                                                 CostName      string `json:"cost-name"`
116                                                 CostAlgorithm string `json:"cost-algorithm"`
117                                                 CostValue     string `json:"cost-value"`
118                                         } `json:"cost-characteristic"`
119                                 } `json:"link"`
120                         } `json:"topology"`
121                 } `json:"tapi-topology:topology-context"`
122         } `json:"tapi-common:context"`
123 }