summaryrefslogtreecommitdiffstats
path: root/sdnr/wt/devicemanager-adapter-manager/provider/src/main/yang/nts-manager.yang
blob: 08214d52c022b4511e1522423d8ba09dbe284f1f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
module nts-manager {
  yang-version 1.1;
  namespace "urn:o-ran-sc:params:xml:ns:yang:nts:manager";
  prefix nts-mng;

  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:  
        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 2020-10-06 {
    description
      "Initial revision for the Network Topology Simulator - Next Generation";
    reference
      "O-RAN-SC SIM project";
  }

  typedef percent {
    type decimal64 {
      fraction-digits 2;
      range "0 .. 100";
    }
    description
      "Percentage";
  }

  grouping instance-g {
      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.";
      }
      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.";
          }
          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 {
          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
            "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;
          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.";
      }
      description
        "Contains all the details of a simulated device.";
  }
  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.";
      }
      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.";
      }
      description
        "Groups information about the simulation status.";
  }

  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.";
      }
      container ves-endpoint {
          uses ntsc:ves-endpoint-g;
          description
            "Groups details about the VES Collector endpoint.";
      }
      uses simulation-information-g;
      description
        "Root level container which controls the NTS.";
  }


} //end module