Refactor folder structure.
[sim/o1-interface.git] / ntsimulator / yang / o-ran-sc / o-ran-ru / o-ran-sc-root-v1.yang
diff --git a/ntsimulator/yang/o-ran-sc/o-ran-ru/o-ran-sc-root-v1.yang b/ntsimulator/yang/o-ran-sc/o-ran-ru/o-ran-sc-root-v1.yang
new file mode 100644 (file)
index 0000000..1acd553
--- /dev/null
@@ -0,0 +1,179 @@
+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.";
+  }
+}