Add NETCONF CallHome via TLS feature.
[sim/o1-interface.git] / ntsimulator / deploy / base / yang / nts-network-function.yang
index 65fee7b..dbde984 100644 (file)
@@ -3,42 +3,87 @@ module nts-network-function {
   namespace "urn:o-ran-sc:params:xml:ns:yang:nts:network:function";
   prefix ntsnf;
 
+  import ietf-inet-types {
+    prefix inet;
+  }
   import nts-common {
     prefix ntsc;
   }
+  import ietf-yang-types {
+    prefix yang;
+  }
 
   organization
     "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 - Network Functions";
 
+  revision 2021-06-18 {
+    description
+      "Added test-list for NETCONF hardware delay emulation.";
+    reference
+      "O-RAN-SC SIM project";
+  }
+  revision 2021-06-14 {
+    description
+      "Added total loss network emulation RPC and NETCONF write-delay emulation.";
+    reference
+      "O-RAN-SC SIM project";
+  }
+  revision 2021-06-08 {
+    description
+      "Added more info and NETCONF latency emulation.";
+    reference
+      "O-RAN-SC SIM project";
+  }
+  revision 2021-05-17 {
+    description
+      "Added support for network emulation.";
+    reference
+      "O-RAN-SC SIM project";
+  }
+  revision 2021-03-26 {
+    description
+      "Added info container, and expanted feature control mechanism and status.";
+    reference
+      "O-RAN-SC SIM project";
+  }
+  revision 2021-03-17 {
+    description
+      "Renamed datastore-random-populate RPC to datastore-populate";
+    reference
+      "O-RAN-SC SIM project";
+  }
+  revision 2020-12-11 {
+    description
+      "Added function-type to simulated function.";
+    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-28 {
     description
       "Add RPC for clearing the fault counters.";
     reference
       "O-RAN-SC SIM project";
   }
-
   revision 2020-10-13 {
     description
       "Add RPC for datastore populating and feature control.";
     reference
       "O-RAN-SC SIM project";
   }
-
   revision 2020-09-07 {
     description
       "Initial revision for the Network Topology Simulator - Next Generation";
@@ -46,33 +91,9 @@ module nts-network-function {
       "O-RAN-SC SIM project";
   }
 
-  container simulation {
-      container network-function {
-            uses ntsc:mount-point-details-g;
-            uses ntsc:faults-g;
-            uses ntsc:netconf-config-g;
-            uses ntsc:ves-config-g;
-          description
-            "Container which encompasses the details of the network function.";
-      }
-      container sdn-controller {
-          uses ntsc:controller-g;
-          description
-            "Groups details about the SDN Controller.";
-      }
-      container ves-endpoint {
-          uses ntsc:ves-endpoint-g;
-          description
-            "Groups details about the VES Collector endpoint.";
-      }
-      description
-        "Root level container which controls the Network Function.";
-  }
-
-  rpc datastore-random-populate {
+  rpc datastore-populate {
     description
-      "Operation to populate the datastore with random data for all the containing YANG models.";
-    
+      "Operation to populate the datastore with data for all the containing YANG models, based on settings in config.json";
     output {
       uses ntsc:rpc-status-g;
     }
@@ -82,11 +103,15 @@ module nts-network-function {
     description
       "Operation to control the features in a Network Function.";
     input {
-      leaf features {
-          type ntsc:feature-type;
-          mandatory true;
-          description
-            "A bit-wise list with features to be activated.";
+      leaf start-features {
+        type ntsc:feature-type;
+        description
+          "A bit-wise list with features to be activated.";
+      }
+      leaf stop-features {
+        type ntsc:feature-type;
+        description
+          "A bit-wise list with features to be deactivated.";
       }
     }
     output {
@@ -99,25 +124,25 @@ module nts-network-function {
       "Operation to control the features in a Network Function.";
     input {
       leaf notification-format {
-          type enumeration {
-            enum xml {
+        type enumeration {
+          enum xml {
             description
               "The notification string is formatted as XML.";
-            }
-            enum json {
+          }
+          enum json {
             description
               "The notification string is formatted as JSON.";
-            }
           }
-          mandatory true;
-          description
-            "The format of the notification string.";
+        }
+        mandatory true;
+        description
+          "The format of the notification string.";
       }
       leaf notification-object {
-          type string;
-          mandatory true;
-          description
-            "A JSON string containing the notification object to be sent by the device.";
+        type string;
+        mandatory true;
+        description
+          "A JSON string containing the notification object to be sent by the device.";
       }
     }
     output {
@@ -130,10 +155,10 @@ module nts-network-function {
       "Operation to generate a VES  notification from a Network Function.";
     input {
       leaf file-location {
-          type string;
-          mandatory true;
-          description
-            "A string containing the location of the file on the server.";
+        type string;
+        mandatory true;
+        description
+          "A string containing the location of the file on the server.";
       }
     }
     output {
@@ -144,10 +169,287 @@ module nts-network-function {
   rpc clear-fault-counters {
     description
       "Operation to clear the fault counters.";
+    output {
+      uses ntsc:rpc-status-g;
+    }
+  }
 
+  rpc emulate-total-loss {
+    description
+      "Operation to emulate 100% loss in network packets. Operation will resume after specified timeout.";
+    input {
+      leaf timeout {
+        type uint32;
+        units "miliseconds (ms)";
+        description
+          "Period after which loss will stop being 100%.";
+      }
+    }
     output {
       uses ntsc:rpc-status-g;
     }
   }
 
-} //end module
\ No newline at end of file
+  container info {
+    config false;
+    description
+      "Information about NTS application and modules.";
+    leaf build-time {
+      type yang:date-and-time;
+      description
+        "Build time of NTS application.";
+    }
+    leaf version {
+      type string;
+      description
+        "NTS version of current network-function.";
+    }
+    leaf started-features {
+      type ntsc:feature-type;
+      description
+        "A bit-wise list with currently started features.";
+    }
+    leaf ssh-connections {
+      type uint8;
+      config false;
+      description
+        "The number of SSH Endpoints the network function instance exposes.";
+    }
+    leaf tls-connections {
+      type uint8;
+      config false;
+      description
+        "The number of TLS Endpoints the network function instance exposes.";
+    }
+    leaf hostname {
+      type string;
+      description
+        "Current network function hostname.";
+    }
+    list docker-ports {
+      key "port";
+      description
+        "The ports which are exposed inside the docker container implementing this network function instance.";
+      leaf port {
+        type inet:port-number;
+        description
+          "Port number.";
+      }
+      leaf protocol {
+        type identityref {
+          base ntsc:NTS_PROTOCOL_TYPE_BASE;
+        }
+        description
+          "Protocol attached to current port.";
+      }
+    }
+  }
+  container simulation {
+    description
+      "Root level container which controls the Network Function.";
+    container network-function {
+      description
+        "Container which encompasses the details of the network function.";
+      leaf function-type {
+        type string;
+        description
+          "Type of network function that is simulated.";
+      }
+      uses ntsc:mount-point-details-g;
+      uses ntsc:faults-g;
+      uses ntsc:netconf-config-g;
+      uses ntsc:ves-config-g;
+    }
+    container network-emulation {
+      description
+        "Container which encompasses the details of the network emulation.";
+      leaf limit {
+        type uint16 {
+          range "16 .. max";
+        }
+        units "packets";
+        default "1000";
+        description
+          "Maximum number of packets the qdisc may hold queued at a time.";
+      }
+      container delay {
+        description
+          "Adds the chosen delay to the packets outgoing to chosen network interface.";
+        leaf time {
+          type uint16;
+          units "miliseconds (ms)";
+          description
+            "Delay time between packets.";
+        }
+        leaf jitter {
+          type uint16;
+          units "miliseconds (ms)";
+          description
+            "Delay jitter.";
+        }
+        leaf correlation {
+          type uint8 {
+            range "0 .. 100";
+          }
+          units "percentage";
+          description
+            "Delay correlation.";
+        }
+        leaf distribution {
+          type enumeration {
+            enum uniform {
+              description
+                "Uniform delay distribution.";
+            }
+            enum normal {
+              description
+                "Normal delay distribution.";
+            }
+            enum pareto {
+              description
+                "Pareto delay distribution.";
+            }
+            enum paretonormal {
+              description
+                "Paretonormal delay distribution.";
+            }
+          }
+          description
+            "Delay distribution.";
+        }
+      }
+      leaf loss {
+        type uint8 {
+          range "0 .. 100";
+        }
+        units "percentage";
+        description
+          "Adds an independent loss probability to the packets outgoing from the chosen network interface.";
+      }
+      container corruption {
+        description
+          "Allows the emulation of random noise introducing an error in a random position for a chosen percent of packets.";
+        leaf percentage {
+          type uint8 {
+            range "0 .. 100";
+          }
+          units "percentage";
+          description
+            "Corruption percentage.";
+        }
+        leaf correlation {
+          type uint8 {
+            range "0 .. 100";
+          }
+          units "percentage";
+          description
+            "Corruption correlation.";
+        }
+      }
+      container duplication {
+        description
+          "Using this option the chosen percent of packets is duplicated before queuing them.";
+        leaf percentage {
+          type uint8 {
+            range "0 .. 100";
+          }
+          units "percentage";
+          description
+            "Duplication percentage.";
+        }
+        leaf correlation {
+          type uint8 {
+            range "0 .. 100";
+          }
+          units "percentage";
+          description
+            "Duplication correlation.";
+        }
+      }
+      container reordering {
+        description
+          "Used together with delay; a percentage of packets are sent immediately (with defined correlation) while the others are delayed (by specified delay).";
+        leaf percentage {
+          type uint8 {
+            range "0 .. 100";
+          }
+          units "percentage";
+          description
+            "Reordering percentage.";
+        }
+        leaf correlation {
+          type uint8 {
+            range "0 .. 100";
+          }
+          units "percentage";
+          description
+            "Reordering correlation.";
+        }
+      }
+      leaf rate {
+        type uint16;
+        units "kbits";
+        description
+          "Delay packets based on packet size.";
+      }
+    }
+    container hardware-emulation {
+      description
+        "Container which encompasses the details of hardware emulation.";
+      container netconf-delay {
+        description
+          "Emulates delay on an operational leaf.";
+        leaf delay {
+          type uint32;
+          units "miliseconds (ms)";
+          default "0";
+          description
+            "Delay time to be set for get operation on test leaf.";
+        }
+        leaf get-test {
+          type uint32;
+          units "miliseconds (ms)";
+          config false;
+          description
+            "Read to test. Value represents emulated delay.";
+        }
+        leaf edit-test {
+          type uint32;
+          units "miliseconds (ms)";
+          description
+            "Writing non-null value will emulate a write-delay.";
+        }
+        list get-test-list {
+          config false;
+          description
+            "Read to test. Returned values are saved from edit-test-list.";
+          leaf value {
+            type string;
+            description
+              "Values from edit-test-list.";
+          }
+        }
+        list edit-test-list {
+          key "value";
+          description
+            "Write to test.";
+          leaf value {
+            type string;
+            description
+              "Unique values for testing.";
+          }
+        }
+      }
+    }
+    container sdn-controller {
+      description
+        "Groups details about the SDN Controller.";
+      uses ntsc:controller-g;
+    }
+    container ves-endpoint {
+      description
+        "Groups details about the VES Collector endpoint.";
+      uses ntsc:ves-endpoint-g;
+    }
+  }
+}