X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?p=sim%2Fo1-interface.git;a=blobdiff_plain;f=ntsimulator%2Fdeploy%2Fnts-manager%2Fyang%2Fnts-manager.yang;h=5f7bc14cd60a455cd6bc48f74fee247335b488aa;hp=311a730d78716eb313f34fd98c9703667967ba2a;hb=3bbf9d8a3c81afebcffb2b926cef219336dd53d6;hpb=312a154cc4d60a09596fba8fd1259345e048cdc2 diff --git a/ntsimulator/deploy/nts-manager/yang/nts-manager.yang b/ntsimulator/deploy/nts-manager/yang/nts-manager.yang index 311a730..5f7bc14 100644 --- a/ntsimulator/deploy/nts-manager/yang/nts-manager.yang +++ b/ntsimulator/deploy/nts-manager/yang/nts-manager.yang @@ -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: - 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"; @@ -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; + } +}