Update adapter-manager devicemanager 24/123024/2
authorRavi Pendurty <ravi.pendurty@highstreet-technologies.com>
Mon, 2 Aug 2021 03:43:49 +0000 (09:13 +0530)
committerKAPIL SINGAL <ks220y@att.com>
Mon, 2 Aug 2021 13:50:04 +0000 (13:50 +0000)
Support for modified yangs part of the Next Gen Simulator

Issue-ID: CCSDK-3404
Signed-off-by: Ravi Pendurty <ravi.pendurty@highstreet-technologies.com>
Change-Id: I158c2c0c351d0fd18df5c86d50c13466e73ad91e
Signed-off-by: Ravi Pendurty <ravi.pendurty@highstreet-technologies.com>
sdnr/wt/devicemanager-onap/adapter-manager/installer/pom.xml
sdnr/wt/devicemanager-onap/adapter-manager/provider/pom.xml
sdnr/wt/devicemanager-onap/adapter-manager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/adaptermanager/impl/AdapterManagerNetworkElementFactory.java
sdnr/wt/devicemanager-onap/adapter-manager/provider/src/main/yang/nts-common.yang
sdnr/wt/devicemanager-onap/adapter-manager/provider/src/main/yang/nts-manager.yang

index 47ac7fc..2a94be1 100755 (executable)
@@ -47,7 +47,7 @@
 
     <dependencies>
         <dependency>
-            <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
+            <groupId>${project.groupId}</groupId>
             <artifactId>${application.name}-feature</artifactId>
             <version>${project.version}</version>
             <type>xml</type>
@@ -60,7 +60,7 @@
             </exclusions>
         </dependency>
         <dependency>
-            <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
+            <groupId>${project.groupId}</groupId>
             <artifactId>${application.name}-provider</artifactId>
             <version>${project.version}</version>
         </dependency>
index c600d3f..2d340fd 100644 (file)
@@ -68,7 +68,7 @@
             <version>${project.version}</version>
         </dependency>
         <dependency>
-            <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
+            <groupId>${project.groupId}</groupId>
             <artifactId>sdnr-wt-devicemanager-core-model</artifactId>
             <version>${project.version}</version>
             <scope>provided</scope>
index 0ed856f..c9930ea 100644 (file)
@@ -24,7 +24,7 @@ import org.onap.ccsdk.features.sdnr.wt.devicemanager.ne.service.NetworkElement;
 import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.DeviceManagerServiceProvider;
 import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfAccessor;
 import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.network.topology.simulator.rev191025.SimulatorStatus;
-import org.opendaylight.yang.gen.v1.urn.o.ran.sc.params.xml.ns.yang.nts.manager.rev201006.simulation.NetworkFunctions;
+import org.opendaylight.yang.gen.v1.urn.o.ran.sc.params.xml.ns.yang.nts.manager.rev210326.simulation.NetworkFunctions;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
index ea7e60b..86d7b3e 100644 (file)
@@ -11,34 +11,43 @@ module nts-common {
     "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 common yang definitions YANG definitions for the Network Topology Simulator.";
 
+  revision 2021-03-26 {
+    description
+      "Added controller-protocol.";
+    reference
+      "O-RAN-SC SIM project";
+  }
+  revision 2021-02-15 {
+    description
+      "Added presence to configuration containers.";
+    reference
+      "O-RAN-SC SIM project";
+  }
   revision 2020-11-20 {
     description
       "Add feature-type for the Web cut through feature.";
     reference
       "O-RAN-SC SIM project";
   }
-
   revision 2020-10-22 {
     description
       "Add feature-type for the NETCONF Call Home feature.";
     reference
       "O-RAN-SC SIM project";
   }
-
   revision 2020-10-13 {
     description
       "Add feature-type typedef containing the features that can be activated in the Network Function.";
     reference
       "O-RAN-SC SIM project";
   }
-
   revision 2020-09-07 {
     description
       "Initial revision for the Network Topology Simulator - Next Generation common types.";
@@ -47,8 +56,13 @@ module nts-common {
   }
 
   feature faults-status {
-      description
-        "This means that the server supports reporting back the number of faults that were generated";
+    description
+      "This means that the server supports reporting back the number of faults that were generated";
+  }
+
+  identity NTS_FUNCTION_TYPE_BASE {
+    description
+      "The reference of each identity represents the name of the associated docker image.";
   }
 
   typedef authentication-method-type {
@@ -76,279 +90,291 @@ module nts-common {
 
   typedef feature-type {
     type bits {
-        bit ves-file-ready {
-            position 0;
-            description
-            "Controls the ves-file-ready feature.";
-        }
-        bit ves-heartbeat {
-            position 1;
-            description
-            "Controls the ves-heartbeat feature.";
-        }
-        bit ves-pnf-registration {
-            position 2;
-            description
-            "Controls the ves-pnf-registration feature.";
-        }
-        bit manual-notification-generation {
-            position 3;
-            description
-            "Controls the manual notification generation feature.";
-        }
-        bit netconf-call-home {
-            position 4;
-            description
-            "Controls the NETCONF Call Home feature.";
-        }
-        bit web-cut-through {
-            position 5;
-            description
-            "Controls the Web Cut Through feature.";
-        }
+      bit ves-file-ready {
+        position 0;
+        description
+          "Controls the ves-file-ready feature.";
+      }
+      bit ves-heartbeat {
+        position 1;
+        description
+          "Controls the ves-heartbeat feature.";
+      }
+      bit ves-pnf-registration {
+        position 2;
+        description
+          "Controls the ves-pnf-registration feature.";
+      }
+      bit manual-notification-generation {
+        position 3;
+        description
+          "Controls the manual notification generation feature.";
+      }
+      bit netconf-call-home {
+        position 4;
+        description
+          "Controls the NETCONF Call Home feature.";
+      }
+      bit web-cut-through {
+        position 5;
+        description
+          "Controls the Web Cut Through feature.";
+      }
     }
     description
-    "Describes the features that can be enabled/disabled in the Network Function.";
-  }
-
-  identity NTS_FUNCTION_TYPE_BASE {
-    description
-      "The reference of each identity represents the name of the associated docker image.";
+      "Describes the features that can be enabled/disabled in the Network Function.";
   }
 
   grouping mount-point-details-g {
-      leaf mount-point-addressing-method {
-        type enumeration {
-            enum host-mapping {
-                description
-                "Uses IP and port mapped to the host machine to address the nework function.";
-            }
-            enum docker-mapping {
-                description
-                "Uses Docker IP and port to address the nework function.";
-            }
+    description
+      "Groups details about mount point";
+    leaf mount-point-addressing-method {
+      type enumeration {
+        enum host-mapping {
+          description
+            "Uses IP and port mapped to the host machine to address the nework function.";
         }
-        default docker-mapping;
-        description
-          "Specifies how to address the simulated network function: via the host machine or via docker.";
-    }
+        enum docker-mapping {
+          description
+            "Uses Docker IP and port to address the nework function.";
+        }
+      }
+      default "docker-mapping";
       description
-        "Groups details about mount point";
+        "Specifies how to address the simulated network function: via the host machine or via docker.";
+    }
   }
 
   grouping fault-delay-period-g {
-      list fault-delay-list {
-          key index;
-          ordered-by user;
-          leaf index {
-              type uint16;
-              description
-                "The index of the list.";
-          }
-          leaf delay-period {
-              type uint16;
-              units s;
-              description
-                "The amount of seconds before the next event.";
-          }
-          description
-            "The list defining the pattern for generating events.";
-      }
+    description
+      "For reusing the same fault-delay-period.";
+    list fault-delay-list {
+      key "index";
+      ordered-by user;
       description
-        "For reusing the same fault-delay-period.";
+        "The list defining the pattern for generating events.";
+      leaf index {
+        type uint16;
+        description
+          "The index of the list.";
+      }
+      leaf delay-period {
+        type uint16;
+        units "s";
+        description
+          "The amount of seconds before the next event.";
+      }
+    }
   }
 
   grouping fault-count-g {
-      container fault-count {
-          if-feature faults-status;
-          config false;
-          leaf normal {
-              type uint32;
-              description
-                "Number of normal (non-alarmed) events.";
-          }
-          leaf warning {
-              type uint32;
-              description
-                "Number of warning events.";
-          }
-          leaf minor {
-              type uint32;
-              description
-                "Number of minor events.";
-          }
-          leaf major {
-              type uint32;
-              description
-                "Number of major events.";
-          }
-          leaf critical {
-              type uint32;
-              description
-                "Number of critical events.";
-          }
-          description
-            "Container which groups the number of fault events, by severity.";
-      }
+    description
+      "Grouping for counting the fault events, grouped by severity.";
+    container fault-count {
+      if-feature "faults-status";
+      config false;
       description
-        "Grouping for counting the fault events, grouped by severity.";
+        "Container which groups the number of fault events, by severity.";
+      leaf normal {
+        type uint32;
+        description
+          "Number of normal (non-alarmed) events.";
+      }
+      leaf warning {
+        type uint32;
+        description
+          "Number of warning events.";
+      }
+      leaf minor {
+        type uint32;
+        description
+          "Number of minor events.";
+      }
+      leaf major {
+        type uint32;
+        description
+          "Number of major events.";
+      }
+      leaf critical {
+        type uint32;
+        description
+          "Number of critical events.";
+      }
+    }
   }
 
   grouping faults-g {
+    description
+      "Grouping for fault generation";
     container fault-generation {
-      uses fault-delay-period-g;
-      uses fault-count-g;
+      presence "Enables fault generation configuration.";
       description
         "Groups the fault generation configuration and status.";
+      uses fault-delay-period-g;
+      uses fault-count-g;
     }
-    description
-      "Grouping for fault generation";
   }
 
   grouping faults-enabled-g {
-    leaf faults-enabled {
-        type boolean;
-        description
-          "For enabling the fault generation.";
-    }  
     description
       "Groups the enabling of faults.";
+    leaf faults-enabled {
+      type boolean;
+      description
+        "For enabling the fault generation.";
+    }
   }
 
   grouping netconf-config-g {
+    description
+      "Groups the configuration and status of NETCONF Fault notifications.";
     container netconf {
-        uses faults-enabled-g;
-        leaf call-home {
-            type boolean;
-            description
-            "For enabling the NETCONF Call Home feature. If set to 'true', each simulated device, when booting up, will try to Call Home to the SDN Controller.";
-        }
-        description
+      presence "Enables NETCONF configuration.";
+      description
         "Container for describing the NETCONF details.";
+      uses faults-enabled-g;
+      leaf call-home {
+        type boolean;
+        description
+          "For enabling the NETCONF Call Home feature. If set to 'true', each simulated device, when booting up, will try to Call Home to the SDN Controller.";
+      }
     }
-    description
-      "Groups the configuration and status of NETCONF Fault notifications.";
   }
 
   grouping ves-config-g {
-      container ves {
-          uses faults-enabled-g;
-          leaf pnf-registration {
-              type boolean;
-              description
-                "For enabling the PNF Registration messages. If set to 'true', each simulated device, when booting up, will send a PNF Registration message to the VES Collector.";
-          }
-          leaf heartbeat-period {
-              type uint16;
-              description
-                "The number of seconds between VES heartbeat messages.";
-          }                    
-          description
-            "Container for describing the VES details.";
-      }
     description
       "Groups the configuration and status of VES Fault notifications.";
+    container ves {
+      presence "Enables VES configuration.";
+      description
+        "Container for describing the VES details.";
+      uses faults-enabled-g;
+      leaf pnf-registration {
+        type boolean;
+        description
+          "For enabling the PNF Registration messages. If set to 'true', each simulated device, when booting up, will send a PNF Registration message to the VES Collector.";
+      }
+      leaf heartbeat-period {
+        type uint16;
+        description
+          "The number of seconds between VES heartbeat messages.";
+      }
+    }
   }
 
   grouping controller-g {
-      leaf controller-ip {
-          type inet:ip-address;
-          description
-            "The IP address of the SDN Controller.";
-      }
-      leaf controller-port {
-          type inet:port-number;
-          description
-            "The port exposed by the SDN Controller.";
-      }
-      leaf controller-netconf-call-home-port {
-          type inet:port-number;
-          description
-            "The port exposed by the SDN Controller for NETCONF Call Home.";
-      }
-      leaf controller-username {
-          type string;
+    description
+      "Groups information about the SDN Controller.";
+    leaf controller-protocol {
+      type enumeration {
+        enum http {
           description
-            "The username for accessing the SDN Controller.";
-      }
-      leaf controller-password {
-          type string;
+            "HTTP protocol will be used to connect to the VES Collector.";
+        }
+        enum https {
           description
-            "The password for accessing the SDN Controller.";
+            "HTTPS protocol will be used to connect to the VES Collector.";
+        }
       }
+      default "https";
+      description
+        "The protocol used for communication with the SDN Controller.";
+    }
+    leaf controller-ip {
+      type inet:ip-address;
+      description
+        "The IP address of the SDN Controller.";
+    }
+    leaf controller-port {
+      type inet:port-number;
+      description
+        "The port exposed by the SDN Controller.";
+    }
+    leaf controller-netconf-call-home-port {
+      type inet:port-number;
       description
-        "Groups information about the SDN Controller.";
+        "The port exposed by the SDN Controller for NETCONF Call Home.";
+    }
+    leaf controller-username {
+      type string;
+      description
+        "The username for accessing the SDN Controller.";
+    }
+    leaf controller-password {
+      type string;
+      description
+        "The password for accessing the SDN Controller.";
+    }
   }
 
   grouping ves-endpoint-g {
-      leaf ves-endpoint-protocol {
-          type enumeration {
-              enum http {
-                  description
-                    "HTTP protocol will be used to connect to the VES Collector.";
-              }
-              enum https {
-                  description
-                    "HTTPS protocol will be used to connect to the VES Collector.";
-              }
-          }
-          default https;
-          description
-            "The protocol (HTTP / HTTPS) to be used to address the VES Collector.";
-      }
-      leaf ves-endpoint-ip {
-          type inet:ip-address;
-          description
-            "The IP address of the VES Collector.";
-      }
-      leaf ves-endpoint-port {
-          type inet:port-number;
-          description
-            "The port exposed by the VES Collector.";
-      }
-      leaf ves-endpoint-auth-method {
-        type authentication-method-type;
-        default "no-auth";
-        description
-          "The type of the authentication to be used with the VES Collector.";
-      }
-      leaf ves-endpoint-username {
-          type string;
+    description
+      "Groups information about the VES Collector.";
+    leaf ves-endpoint-protocol {
+      type enumeration {
+        enum http {
           description
-            "The username for accessing the VES Collector.";
-      }
-      leaf ves-endpoint-password {
-          type string;
+            "HTTP protocol will be used to connect to the VES Collector.";
+        }
+        enum https {
           description
-            "The password for accessing the VES Collector.";
-      }
-      leaf ves-endpoint-certificate {
-        type string;
-        description
-          "The Certificate to be used to authenticate to the VES Collector.";
+            "HTTPS protocol will be used to connect to the VES Collector.";
+        }
       }
+      default "https";
+      description
+        "The protocol (HTTP / HTTPS) to be used to address the VES Collector.";
+    }
+    leaf ves-endpoint-ip {
+      type inet:ip-address;
+      description
+        "The IP address of the VES Collector.";
+    }
+    leaf ves-endpoint-port {
+      type inet:port-number;
+      description
+        "The port exposed by the VES Collector.";
+    }
+    leaf ves-endpoint-auth-method {
+      type authentication-method-type;
+      default "no-auth";
+      description
+        "The type of the authentication to be used with the VES Collector.";
+    }
+    leaf ves-endpoint-username {
+      type string;
+      description
+        "The username for accessing the VES Collector.";
+    }
+    leaf ves-endpoint-password {
+      type string;
+      description
+        "The password for accessing the VES Collector.";
+    }
+    leaf ves-endpoint-certificate {
+      type string;
       description
-        "Groups information about the VES Collector.";
+        "The Certificate to be used to authenticate to the VES Collector.";
+    }
   }
 
   grouping rpc-status-g {
-      leaf status {
-          type enumeration {
-            enum SUCCESS {
-            description
-                "The RPC was successfully invoked.";
-            }
-            enum ERROR {
-            description
-                "An error was encountered when invoking the RPC.";
-            }
-          }
-        mandatory true;
-        description
-          "The status of the RPC.";
+    description
+      "RPC output grouping.";
+    leaf status {
+      type enumeration {
+        enum SUCCESS {
+          description
+            "The RPC was successfully invoked.";
+        }
+        enum ERROR {
+          description
+            "An error was encountered when invoking the RPC.";
+        }
       }
+      mandatory true;
       description
-        "RPC output grouping.";
+        "The status of the RPC.";
+    }
   }
-
-} //end module
\ No newline at end of file
+}
index 08214d5..5f7bc14 100644 (file)
@@ -6,23 +6,45 @@ module nts-manager {
   import ietf-inet-types {
     prefix inet;
   }
-
   import nts-common {
     prefix ntsc;
-    revision-date 2020-11-20;
   }
 
   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 - 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";
@@ -30,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;
@@ -40,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
+        "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
-        "Contains all the details of a simulated device.";
+        "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
-        "Groups information about the simulation status.";
+        "Specifies the RAM in MB used by the simulation.";
+    }
+    leaf last-operation-status {
+      type string;
+      config false;
+      description
+        "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;
+  }
+}