aboutsummaryrefslogtreecommitdiffstats
path: root/sdnr/wt/devicemanager-o-ran-sc/o-ran/ru-fh/provider/src/test/resources/o-ran-hardware@2019-07-03.yang
blob: ec6b359c10a3c9b922bff32ffb0c37566ad4a415 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
module o-ran-hardware {
  yang-version 1.1;
  namespace "urn:o-ran:hardware:1.0";
  prefix "o-ran-hw";

  import ietf-hardware {
    prefix hw;
  }
  import iana-hardware {
    prefix ianahw;
  }

  organization "O-RAN Alliance";

  contact
    "www.o-ran.org";

  description
    "This module defines the YANG definitions for managng the O-RAN hardware.

     Copyright 2019 the O-RAN Alliance.

     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'
     AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
     IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
     ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
     LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     POSSIBILITY OF SUCH DAMAGE.

     Redistribution and use in source and binary forms, with or without
     modification, are permitted provided that the following conditions are met:

     * Redistributions of source code must retain the above copyright notice,
     this list of conditions and the above disclaimer.
     * Redistributions in binary form must reproduce the above copyright notice,
     this list of conditions and the above disclaimer in the documentation
     and/or other materials provided with the distribution.
     * Neither the Members of the O-RAN Alliance nor the names of its
     contributors may be used to endorse or promote products derived from
     this software without specific prior written permission.";

   revision "2019-07-03" {
    description
      "version 1.1.0

      1) added new identities to accommodate cross working group use of
      o-ran-hardware and assoicated set of augmentations that are backwards
      compatible to version 1.0.0";

    reference "ORAN-WG4.M.0-v01.00";
   }

  revision "2019-02-04" {
   description
     "version 1.0.0

     1) imported model from xRAN
     2) changed namespace and reference from xran to o-ran";

   reference "ORAN-WG4.M.0-v01.00";
  }

  feature ENERGYSAVING {
    description
      "Indicates that the Radio Unit supports energy saving state.";
  }

  // identity statements
  identity O-RAN-RADIO {
    base ianahw:module;
    description
      "Module used as it represents a self-contained sub-system
      used in /hw:/hardware/hw:component/hw:class to represent
      an O-RAN RU";
  }

  identity O-RAN-HW-COMPONENT {
    base ianahw:module;
    description
      "Module used as it represents a self-contained sub-system
      used in /hw:/hardware/hw:component/hw:class to represent
      any O-RAN hardware component";
  }

  identity O-DU-COMPONENT {
    base O-RAN-HW-COMPONENT;
    description
      "Used in /hw:/hardware/hw:component/hw:class to represent
      any O-RAN defined O-DU hardware component";
  }

  identity O-RU-COMPONENT {
    base O-RAN-HW-COMPONENT;
    description
      "Used in /hw:/hardware/hw:component/hw:class to represent
      any O-RAN defined O-RU hardware component, including a stand-alone
      O-RU or an O-RU component integrated into a multi-module system.";
  }

  // typedef statements
  typedef energysaving-state {
    type enumeration {
      enum UNKNOWN {
        description "The Radio Unit is unable to report energy saving state.";
      }
      enum SLEEPING {
        description
          "The Radio Unit is in a sleep state. The NETCONF management plane
           connection is functioning. Other functions and hardware which are
           not needed for management plane may be in energy saving mode.";
      }
      enum AWAKE {
        description
          "The Radio Unit is not in an energy saving state.";
      }
    }
    description
      "new typedef since ietf-hardware only covers pwer-state
      for redundancy purposes and not power saving operations.";
  }

  typedef availability-type {
    type enumeration {
      enum UNKNOWN {
        description "The Radio Unit is unable to report its availability state.";
      }
      enum NORMAL {
        description
          "The equipment is functioning correctly.";
      }
      enum DEGRADED {
        description
          "The equipment may be reporting a major alarm or may be reporting a critical
           alarm that is only impacting one or more subcomponent, but where the
           equipment's implementation permit it to continue operation (server traffic)
           in a degraded state.

           Used for example, when the equipment has M identical sub-components and
           when a critical alarm is imapcting only N subcomponents, where N<M.";
      }
      enum FAULTY {
        description
          "The (sub-)components impacted by the critical alarm(s) impact the
          ability of the equipment to continue operation (serve traffic).";
      }
    }
    description
      "Equipment's availability-state is derived by matching active faults
       and their impact to module's operation and enables an equipment to indicate
       that even though it may have one or more critical alarms, it can continue
       to serve traffic.";
  }

  // common WG4 and croos-WG augmentations using O-RAN-RADIO identity

  augment "/hw:hardware/hw:component" {
    when "(derived-from-or-self(hw:class, 'o-ran-hw:O-RAN-RADIO')) or
    (derived-from-or-self(hw:class, 'o-ran-hw:O-RAN-HW-COMPONENT'))";
    description "New O-RAN parameters for o-ran hardware";

    container label-content {
      config false;
      description
        "Which set of attributes are printed on the Radio Unit's label";
      leaf model-name {
        type boolean;
        description
          "indicates whether model-name is included on the equipment's label";
      }
      leaf serial-number {
        type boolean;
        description
          "indicates whether serial number is included on the equipment's label";
      }
    }
    leaf product-code {
      type string;
      config false;
      mandatory true;
      description
        "O-RAN term that is distinct from model-name in ietf-hardware.";
    }
    leaf energy-saving-enabled {
      if-feature "ENERGYSAVING";
      type boolean;
      config true;
      default false;
      description
        "This parameter can enable O-RAN unit to be switched to energy
         saving mode.
         TRUE indicates to switch the energy saving mode.
         FALSE indicates to cancel the energy saving mode.
         At the energy saving mode, all power of whole O-RAN unit becomes
         lowest level whereas M-plane is still available";
    }
  }

  augment "/hw:hardware/hw:component" {
    when "(derived-from-or-self(hw:class, 'o-ran-hw:O-RAN-RADIO')) or
    (derived-from-or-self(hw:class, 'ianahw:port')) or
    (derived-from-or-self(hw:class, 'o-ran-hw:O-RAN-HW-COMPONENT'))";
    description "New O-RAN parameters for o-ran naming";
    leaf o-ran-name {
      type leafref {
        path "/hw:hardware/hw:component/hw:name";
      }
      must "re-match(current(),'[a-zA-Z0-9][a-zA-Z0-9\\.\\-_]{0,253}[a-zA-Z0-9]')" {
        error-message "Name must match pattern and length.";
      }
      mandatory true;
      description
        "O-RAN name needed to bind and match with the name of hw element,
        to be compliant with O-RAN naming convention.";
    }
  }

  augment "/hw:hardware/hw:component/hw:state"  {
    when "(derived-from-or-self(../hw:class, 'o-ran-hw:O-RAN-RADIO')) or
    (derived-from-or-self(../hw:class, 'o-ran-hw:O-RAN-HW-COMPONENT'))";
    description
      "new O-RAN defined state";
    leaf power-state {
      if-feature "ENERGYSAVING";
      type energysaving-state;
      config false;
      description
        "The current power saving state for this component.
        Note - hw:/hardware/compnent/state/standby-state defined in RFC 4268 is
        used for redundancy purposes and not power saving operations.";
    }
    leaf availability-state {
      type availability-type;
      config false;
      description
        "Equipment's availability-state is derived by matching active faults
         and their impact to module's operation and enables an equipment to indicate
         that even though it may have one or more critical alarms, it can continue
         to serve traffic.";
    }
  }


// augmentations to Notifications

  augment "/hw:hardware-state-oper-enabled"  {
    description "new availability state";
    leaf availability-state {
      type leafref {
        path "/hw:hardware/hw:component/hw:state/o-ran-hw:availability-state";
      }
      description
        "The availability-state of the O-RU.";
    }
  }

  augment "/hw:hardware-state-oper-disabled"  {
    description "new availability state";
    leaf availability-state {
      type leafref {
        path "/hw:hardware/hw:component/hw:state/o-ran-hw:availability-state";
      }
      description
        "The availability-state of the O-RU.";
    }
  }
}