Add supoprt for D release use-case.
[sim/o1-interface.git] / ntsimulator / deploy / nts-manager / yang / nts-manager.yang
index 311a730..5f7bc14 100644 (file)
@@ -6,7 +6,6 @@ module nts-manager {
   import ietf-inet-types {
     prefix inet;
   }
-
   import nts-common {
     prefix ntsc;
   }
@@ -15,20 +14,37 @@ module nts-manager {
     "O-RAN-SC";
   contact
     " Web: <https://wiki.o-ran-sc.org/display/SIM/SIM>
-        Editors:  
+        Editors:
         Alex Stancu <mailto:alexandru.stancu@highstreet-technologies.com>
         Adrian Lita <mailto:adrian.lita@highstreet-technologies.com>
         Martin Skorupski <mailto:martin.skorupski@highstreet-technologies.com>";
   description
     "This module contains YANG definitions for the Network Topology Simulator - Manager.";
 
+  revision 2021-03-26 {
+    description
+      "Added NTS_PROTOCOL_TYPE_BASE identities and changed instance/networking container; also added multi-base port support.";
+    reference
+      "O-RAN-SC SIM project";
+  }
+  revision 2021-02-15 {
+    description
+      "Added notifications for sending feedback.";
+    reference
+      "O-RAN-SC SIM project";
+  }
+  revision 2021-01-20 {
+    description
+      "Added available-network-functions.";
+    reference
+      "O-RAN-SC SIM project";
+  }
   revision 2020-11-30 {
     description
       "Cleared revision for nts-common import.";
     reference
       "O-RAN-SC SIM project";
   }
-
   revision 2020-10-06 {
     description
       "Initial revision for the Network Topology Simulator - Next Generation";
@@ -36,6 +52,47 @@ module nts-manager {
       "O-RAN-SC SIM project";
   }
 
+  identity NTS_PROTOCOL_TYPE_BASE {
+    description
+      "Base identity for protocol.";
+  }
+
+  identity NTS_PROTOCOL_TYPE_NETCONF_SSH {
+    base NTS_PROTOCOL_TYPE_BASE;
+    description
+      "Identity for NETCONF SSH protocol.";
+  }
+
+  identity NTS_PROTOCOL_TYPE_NETCONF_TLS {
+    base NTS_PROTOCOL_TYPE_BASE;
+    description
+      "Identity for NETCONF TLS protocol.";
+  }
+
+  identity NTS_PROTOCOL_TYPE_FTP {
+    base NTS_PROTOCOL_TYPE_BASE;
+    description
+      "Identity for FTP protocol.";
+  }
+
+  identity NTS_PROTOCOL_TYPE_SFTP {
+    base NTS_PROTOCOL_TYPE_BASE;
+    description
+      "Identity for SFTP protocol.";
+  }
+
+  identity NTS_PROTOCOL_TYPE_HTTP {
+    base NTS_PROTOCOL_TYPE_BASE;
+    description
+      "Identity for HTTP protocol.";
+  }
+
+  identity NTS_PROTOCOL_TYPE_HTTPS {
+    base NTS_PROTOCOL_TYPE_BASE;
+    description
+      "Identity for HTTPS protocol.";
+  }
+
   typedef percent {
     type decimal64 {
       fraction-digits 2;
@@ -46,163 +103,301 @@ module nts-manager {
   }
 
   grouping instance-g {
-      leaf name {
-        type string;
+    description
+      "An instance of a network function which is running. The equivalent on the host machine is a docker container.";
+    leaf name {
+      type string;
+      description
+        "The name of the running instance. It is the same as the docker container name which exposes this network function.";
+    }
+    leaf is-mounted {
+      type boolean;
+      description
+        "Whether the instance is mounted or not to a controller.";
+    }
+    container networking {
+      description
+        "Groups the details about networking information.";
+      leaf docker-ip {
+        type inet:ip-address;
         description
-          "The name of the running instance. It is the same as the docker container name which exposes this network function.";
+          "The IP address of the docker container implementing the network function instance.";
       }
-      container networking {
-          leaf docker-ip {
-              type inet:ip-address;
-              description
-                "The IP address of the docker container implementing the network function instance.";
-          }
-          leaf-list docker-port {
-              type inet:port-number;
-              description
-                "The ports which are exposed inside the docker container implementing the network function instance.";
-          }
-          leaf host-ip {
-              type inet:ip-address;
-              description
-                "The Host machine IP address pointing to the docker container implementing the network function instance.";
-          }
-          leaf-list host-port {
-              type inet:port-number;
-              description
-                "The Host machine ports mapped to the docker container implementing the network function instance.";
-          }
+      list docker-ports {
+        key "port";
+        description
+          "The ports which are exposed inside the docker container implementing the network function instance.";
+        leaf port {
+          type inet:port-number;
           description
-            "Groups the details about networking information.";
-      }
-      description
-        "An instance of a network function which is running. The equivalent on the host machine is a docker container.";
-  }
-  grouping network-function-g {
-      leaf function-type {
+            "Port number.";
+        }
+        leaf protocol {
           type identityref {
-              base ntsc:NTS_FUNCTION_TYPE_BASE;
+            base NTS_PROTOCOL_TYPE_BASE;
           }
-          description "Type of network function to be simulated.";
-      }
-      leaf started-instances {
-          type uint16;
-          mandatory true;
           description
-            "How many instances of this type are started.";
+            "Protocol attached to current port.";
+        }
       }
-      leaf mounted-instances {
-          type uint16;
-          must '. <= ../started-instances' {
-              error-message
-                "The number of mounted instances cannot be greater that the number of started instances.";
-          }
-          mandatory true;
-          description
-            "How many instances of this type are mounted in the SDN Controller.";
+      leaf host-ip {
+        type inet:ip-address;
+        description
+          "The Host machine IP address pointing to the docker container implementing the network function instance.";
       }
-
-      uses ntsc:mount-point-details-g;
-
-      leaf docker-instance-name {
-          type string;
-          mandatory true;
+      list host-ports {
+        key "port";
+        description
+          "The Host machine ports mapped to the docker container implementing the network function instance.";
+        leaf port {
+          type inet:port-number;
           description
-            "The prefix of each docker container being started.";
-      }
-
-      leaf docker-version-tag {
-          type string;
-          mandatory true;
+            "Port number.";
+        }
+        leaf protocol {
+          type identityref {
+            base NTS_PROTOCOL_TYPE_BASE;
+          }
           description
-            "The version tag of the docker image to be started.";
+            "Protocol attached to current port.";
+        }
       }
+    }
+  }
 
-      leaf docker-repository {
-          type string;
-          mandatory true;
-          description
-            "The prefix containing the docker repository information, if needed.";
-      }
-      uses ntsc:faults-g;
-      uses ntsc:netconf-config-g;
-      uses ntsc:ves-config-g;
-      container instances {
-          config false;
-          list instance {
-            key "name";
-            uses ntsc:mount-point-details-g;
-            uses instance-g;            
-            description
-              "Describes a running instance.";
-          }
-          description 
-            "Groups details about instances which are running.";
+  grouping network-function-g {
+    description
+      "Contains all the details of a simulated device.";
+    leaf function-type {
+      type identityref {
+        base ntsc:NTS_FUNCTION_TYPE_BASE;
       }
       description
-        "Contains all the details of a simulated device.";
+        "Type of network function to be simulated.";
+    }
+    leaf started-instances {
+      type uint16;
+      mandatory true;
+      description
+        "How many instances of this type are started.";
+    }
+    leaf mounted-instances {
+      type uint16;
+      must '. <= ../started-instances' {
+        error-message "The number of mounted instances cannot be greater that the number of started instances.";
+      }
+      mandatory true;
+      description
+        "How many instances of this type are mounted in the SDN Controller.";
+    }
+    uses ntsc:mount-point-details-g;
+    leaf docker-instance-name {
+      type string;
+      mandatory true;
+      description
+        "The prefix of each docker container being started.";
+    }
+    leaf docker-version-tag {
+      type string;
+      mandatory true;
+      description
+        "The version tag of the docker image to be started.";
+    }
+    leaf docker-repository {
+      type string;
+      mandatory true;
+      description
+        "The prefix containing the docker repository information, if needed.";
+    }
+    uses ntsc:faults-g;
+    uses ntsc:netconf-config-g;
+    uses ntsc:ves-config-g;
+    container instances {
+      config false;
+      description
+        "Groups details about instances which are running.";
+      list instance {
+        key "name";
+        description
+          "Describes a running instance.";
+        uses ntsc:mount-point-details-g;
+        uses instance-g;
+      }
+    }
   }
+
   grouping simulation-information-g {
-      leaf base-port {
-          type inet:port-number;
-          config false;
-          description
-            "The base Host machine port from where the simulation can allocate ports incrementally.";
-      }
-      leaf ssh-connections {
-          type uint8;
-          config false;
-          description
-            "The number of SSH Endpoints each network function instance exposes.";
+    description
+      "Groups information about the simulation status.";
+    container ports {
+      config false;
+      description
+        "Contains information on ports used.";
+      leaf netconf-ssh-port {
+        type inet:port-number;
+        description
+          "The base Host machine port from where the simulation can allocate ports incrementally for NETCONF SSH protocol.";
       }
-      leaf tls-connections {
-          type uint8;
-          config false;
-          description
-            "The number of TLS Endpoints each network function instance exposes.";
+      leaf netconf-tls-port {
+        type inet:port-number;
+        description
+          "The base Host machine port from where the simulation can allocate ports incrementally for NETCONF TLS protocol.";
       }
-      leaf cpu-usage {
-        type percent;
-        config false;
+      leaf transport-ftp-port {
+        type inet:port-number;
         description
-          "Specifies the CPU load generated by the simulation.";
+          "The base Host machine port from where the simulation can allocate ports incrementally for FTP protocol.";
       }
-      leaf mem-usage {
-        type uint32;
-        config false;
+      leaf transport-sftp-port {
+        type inet:port-number;
         description
-          "Specifies the RAM in MB used by the simulation.";
+          "The base Host machine port from where the simulation can allocate ports incrementally for SFTP protocol.";
       }
+    }
+    leaf ssh-connections {
+      type uint8;
+      config false;
+      description
+        "The number of SSH Endpoints each network function instance exposes.";
+    }
+    leaf tls-connections {
+      type uint8;
+      config false;
+      description
+        "The number of TLS Endpoints each network function instance exposes.";
+    }
+    leaf cpu-usage {
+      type percent;
+      config false;
+      description
+        "Specifies the CPU load generated by the simulation.";
+    }
+    leaf mem-usage {
+      type uint32;
+      config false;
+      description
+        "Specifies the RAM in MB used by the simulation.";
+    }
+    leaf last-operation-status {
+      type string;
+      config false;
       description
-        "Groups information about the simulation status.";
+        "Specifies the status of the most recent operation performed by the Manager.";
+    }
   }
 
-  container simulation {
-      container network-functions {
-          list network-function {
-            key "function-type";
-            unique "docker-instance-name";
-            uses network-function-g;
-            description
-              "List containing different simulated network function types and their details.";
-          }
-          description
-            "Container which encompasses all simulated network functions.";
-      }
-      container sdn-controller {
-          uses ntsc:controller-g;
-          description
-            "Groups details about the SDN Controller.";
+  grouping network-function-image-g {
+    description
+      "Groups details about a NF docker image.";
+    leaf function-type {
+      type identityref {
+        base ntsc:NTS_FUNCTION_TYPE_BASE;
       }
-      container ves-endpoint {
-          uses ntsc:ves-endpoint-g;
-          description
-            "Groups details about the VES Collector endpoint.";
+      config false;
+      description
+        "Type of network function to be simulated.";
+    }
+    leaf docker-image-name {
+      type string;
+      config false;
+      mandatory true;
+      description
+        "The prefix of each docker container being started.";
+    }
+    leaf docker-version-tag {
+      type string;
+      config false;
+      mandatory true;
+      description
+        "The version tag of the docker image to be started.";
+    }
+    leaf docker-repository {
+      type string;
+      config false;
+      mandatory true;
+      description
+        "The prefix containing the docker repository information, if needed.";
+    }
+  }
+
+  notification instance-changed {
+    description
+      "Sent by the Manager every time something occurs in any of the simulated NF instances.";
+    leaf change-status {
+      type string;
+      mandatory true;
+      description
+        "The status of the change which was executed to the NF instance.";
+    }
+    leaf function-type {
+      type identityref {
+        base ntsc:NTS_FUNCTION_TYPE_BASE;
       }
-      uses simulation-information-g;
+      mandatory true;
       description
-        "Root level container which controls the NTS.";
+        "Type of the NF instance.";
+    }
+    uses instance-g {
+      refine "name" {
+        mandatory true;
+      }
+    }
   }
 
+  notification operation-status-changed {
+    description
+      "Sent by the Manager every time a user operation is finished.";
+    leaf operation-status {
+      type string;
+      mandatory true;
+      description
+        "The status of the operation which was executed by the Manager.";
+    }
+    leaf error-message {
+      type string;
+      description
+        "Detailed error message from the Manager.";
+    }
+  }
 
-} //end module
\ No newline at end of file
+  container simulation {
+    presence "Enables simulation configuration.";
+    description
+      "Root level container which controls the NTS.";
+    container available-images {
+      config false;
+      description
+        "Container which encompasses all NF docker images available on the host machine.";
+      list network-function-image {
+        description
+          "List containing available network function docker images and their respective details.";
+        uses network-function-image-g;
+      }
+    }
+    container network-functions {
+      presence "Enables NF configuration.";
+      description
+        "Container which encompasses all simulated network functions.";
+      list network-function {
+        key "function-type";
+        unique "docker-instance-name";
+        description
+          "List containing different simulated network function types and their details.";
+        uses network-function-g;
+      }
+    }
+    container sdn-controller {
+      presence "Enables SDN Controller detail configuration.";
+      description
+        "Groups details about the SDN Controller.";
+      uses ntsc:controller-g;
+    }
+    container ves-endpoint {
+      presence "Enables VES endpoint detail configuration.";
+      description
+        "Groups details about the VES Collector endpoint.";
+      uses ntsc:ves-endpoint-g;
+    }
+    uses simulation-information-g;
+  }
+}