From 34fe841355474f9c47317465fce2e6b3d4d426ae Mon Sep 17 00:00:00 2001 From: Ravi Pendurty Date: Mon, 2 Aug 2021 09:13:49 +0530 Subject: Update adapter-manager devicemanager Support for modified yangs part of the Next Gen Simulator Issue-ID: CCSDK-3404 Signed-off-by: Ravi Pendurty Change-Id: I158c2c0c351d0fd18df5c86d50c13466e73ad91e Signed-off-by: Ravi Pendurty --- .../adapter-manager/installer/pom.xml | 4 +- .../adapter-manager/provider/pom.xml | 2 +- .../impl/AdapterManagerNetworkElementFactory.java | 2 +- .../provider/src/main/yang/nts-common.yang | 474 +++++++++++---------- .../provider/src/main/yang/nts-manager.yang | 465 ++++++++++++++------ 5 files changed, 587 insertions(+), 360 deletions(-) diff --git a/sdnr/wt/devicemanager-onap/adapter-manager/installer/pom.xml b/sdnr/wt/devicemanager-onap/adapter-manager/installer/pom.xml index 47ac7fc0c..2a94be13b 100755 --- a/sdnr/wt/devicemanager-onap/adapter-manager/installer/pom.xml +++ b/sdnr/wt/devicemanager-onap/adapter-manager/installer/pom.xml @@ -47,7 +47,7 @@ - org.onap.ccsdk.features.sdnr.wt + ${project.groupId} ${application.name}-feature ${project.version} xml @@ -60,7 +60,7 @@ - org.onap.ccsdk.features.sdnr.wt + ${project.groupId} ${application.name}-provider ${project.version} diff --git a/sdnr/wt/devicemanager-onap/adapter-manager/provider/pom.xml b/sdnr/wt/devicemanager-onap/adapter-manager/provider/pom.xml index c600d3f53..2d340fdee 100644 --- a/sdnr/wt/devicemanager-onap/adapter-manager/provider/pom.xml +++ b/sdnr/wt/devicemanager-onap/adapter-manager/provider/pom.xml @@ -68,7 +68,7 @@ ${project.version} - org.onap.ccsdk.features.sdnr.wt + ${project.groupId} sdnr-wt-devicemanager-core-model ${project.version} provided diff --git a/sdnr/wt/devicemanager-onap/adapter-manager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/adaptermanager/impl/AdapterManagerNetworkElementFactory.java b/sdnr/wt/devicemanager-onap/adapter-manager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/adaptermanager/impl/AdapterManagerNetworkElementFactory.java index 0ed856fb1..c9930eaf5 100644 --- a/sdnr/wt/devicemanager-onap/adapter-manager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/adaptermanager/impl/AdapterManagerNetworkElementFactory.java +++ b/sdnr/wt/devicemanager-onap/adapter-manager/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/devicemanager/adaptermanager/impl/AdapterManagerNetworkElementFactory.java @@ -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; diff --git a/sdnr/wt/devicemanager-onap/adapter-manager/provider/src/main/yang/nts-common.yang b/sdnr/wt/devicemanager-onap/adapter-manager/provider/src/main/yang/nts-common.yang index ea7e60b91..86d7b3e8a 100644 --- a/sdnr/wt/devicemanager-onap/adapter-manager/provider/src/main/yang/nts-common.yang +++ b/sdnr/wt/devicemanager-onap/adapter-manager/provider/src/main/yang/nts-common.yang @@ -11,34 +11,43 @@ module nts-common { "O-RAN-SC"; contact " Web: - Editors: + Editors: Alex Stancu Adrian Lita Martin Skorupski "; 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 +} diff --git a/sdnr/wt/devicemanager-onap/adapter-manager/provider/src/main/yang/nts-manager.yang b/sdnr/wt/devicemanager-onap/adapter-manager/provider/src/main/yang/nts-manager.yang index 08214d52c..5f7bc14cd 100644 --- a/sdnr/wt/devicemanager-onap/adapter-manager/provider/src/main/yang/nts-manager.yang +++ b/sdnr/wt/devicemanager-onap/adapter-manager/provider/src/main/yang/nts-manager.yang @@ -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: - Editors: + Editors: Alex Stancu Adrian Lita Martin Skorupski "; 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; + } +} -- cgit 1.2.3-korg