--- /dev/null
+module o-ran-sc-root-v1 {
+ yang-version 1.1;
+ namespace "urn:o-ran:sc:root:1.0";
+ prefix or;
+
+ import o-ran-sc-types-v1 {
+ prefix ot;
+ }
+ import ietf-yang-types {
+ prefix yang;
+ reference
+ "RFC 6991: Common YANG Data Types";
+ }
+
+ organization
+ "O-RAN Software Community";
+ contact
+ "www.o-ran-sc.org";
+ description
+ "This module defines the root controlled object classes for a
+ disaggregated RAN.
+
+ Copyright 2020 the O-RAN Alliance.
+
+ Licensed under the Apache License, Version 2.0 (the 'License');
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an 'AS IS' BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.";
+
+ revision 2020-02-20 {
+ description
+ "initial revision";
+ reference
+ "O-RAN-OAM-Interface-Specification (O1)";
+ }
+
+ // Groupings
+
+ grouping controlled-identifier-grp {
+ leaf authority-ref {
+ type ot:sized-printable-string;
+ description
+ "A name or indentifier referencing the authority to which is
+ responsable to create, modify or delete
+ the controlled identifier. ";
+ }
+ leaf identifer {
+ type string {
+ length "1..255";
+ }
+ description
+ "The external controlled identifier value for this controlled
+ object.";
+ }
+ description
+ "An object class specifiing an object identifier, which is caluculated
+ or generated by the consumer of the API..";
+ }
+
+ grouping state-grp {
+ leaf operational-state {
+ type identityref {
+ base ot:operational-state;
+ }
+ config false;
+ description
+ "The operational state is used to indicate whether or not the
+ resource is installed and working.";
+ }
+ leaf administrative-control {
+ type identityref {
+ base ot:administrative-control;
+ }
+ description
+ "The administrative-control state provides control of the
+ availability of specific resources without modification to the
+ provisioning of those resources.
+ The value is the current control target. The actual
+ administrative-state may or may not be at target.";
+ }
+ leaf administrative-state {
+ type identityref {
+ base ot:administrative-state;
+ }
+ config false;
+ description
+ "Shows whether or not the client has permission to use or has a
+ prohibition against using the resource.
+ The administrative state expresses usage permissions for
+ specific resources without modification to the provisioning
+ of those resources.";
+ }
+ leaf lifecycle-state {
+ type identityref {
+ base ot:lifecycle-state;
+ }
+ description
+ "Used to track the planned deployment, allocation to clients and
+ withdrawal of resources.";
+ }
+ description
+ "Provides general state attributes.";
+ }
+
+ grouping control-base-grp {
+ leaf identifier {
+ type yang:uuid;
+ mandatory true;
+ description
+ "The network wide unique identifier an object. The value will
+ never change and maybe used as reference even long time after
+ the object instance itself was deleted.
+ The value is calculated of generated by the provider of this
+ API.";
+ }
+ list controlled-identifier {
+ key "authority-ref";
+ uses controlled-identifier-grp;
+ description
+ "A list of external controlled identifiers, set by an external
+ authority. There must not be any function implemented on the
+ API provider itself next to updating the list on request and
+ storing it persistently. ";
+ }
+ leaf name {
+ type ot:sized-printable-string;
+ description
+ "A user defined human readable identifier. The value may chance
+ during the lifetime of the object and must not be used by any
+ software for references.";
+ }
+ leaf label {
+ type string {
+ length "1..64";
+ }
+ description
+ "A human readable value that is not expected to be unique and is
+ allowed to change. A label carries no semantics with respect to
+ the purpose of the object and has no effect on the object
+ behavior or state.";
+ }
+ uses state-grp;
+ description
+ "The control-base object class representation an abstract object class,
+ which all is used by all important control object classes.";
+ }
+
+ container controlled-element {
+ presence "Enables O-RAN";
+ uses control-base-grp;
+ list controlled-function {
+ key "identifier";
+ uses control-base-grp;
+ leaf function-type {
+ type identityref {
+ base ot:control-function-type;
+ }
+ description
+ "The reference to the O-RAN Alliance functions of the OAM
+ Architecture specification.";
+ }
+ description
+ "A list of abstract object classes which needs to be
+ augmented by the authority of providing the function.";
+ }
+ description
+ "The root container of an element (network-element,
+ manged-element, network-function, ...). it groups the
+ functions provided by the element. in a most disaggregated RAN
+ the each element provides only one function.";
+ }
+}