summaryrefslogtreecommitdiffstats
path: root/sdnr/wt/devicemanager-onap/adapter-manager/provider/src/main/yang/network-topology-simulator.yang
blob: ac2cf8dd38ca55aa4ca241912bee3f7fc0fc1bc3 (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
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
module network-topology-simulator {
  yang-version 1.1;
  namespace "urn:onf:params:xml:ns:yang:network-topology-simulator";
  prefix network-topology-simulator;

  import ietf-inet-types {
    prefix inet;
  }

  organization
    "Melacon";
  contact
    "Web: <https://github.com/Melacon>
     Editors:  Alex Stancu
               <mailto:stancu.liviualex@gmail.com>";
  description
    "This module contains a collection of YANG definitions for managing the Network Topology Simulator.";

  revision 2019-10-25 {
    description
      "Modify notifications. Add VES message configuration options.";
    reference
      "O-RAN SC SIM project";
  }
  revision 2019-06-07 {
    description
      "Modify controller details.";
    reference
      "O-RAN SC SIM project";
  }
  revision 2019-03-07 {
    description
      "Initial version";
    reference
      "O-RAN SC SIM project";
  }

  typedef operational-state-type {
    type enumeration {
      enum not-specified {
        description
          "none";
      }
      enum running {
        description
          "none";
      }
      enum created {
        description
          "none";
      }
      enum exited {
        description
          "none";
      }
    }
    description
      "The operation state of the simulated device.";
  }

  typedef authentication-method-type {
    type enumeration {
      enum no-auth {
        description
          "no security (http)";
      }
      enum cert-only {
        description
          "auth by certificate (https)";
      }
      enum basic-auth {
        description
          "auth by basic auth username and password (https)";
      }
      enum cert-basic-auth {
        description
          "auth by certificate and basic auth username / password (https)";
      }
    }
    description
      "The authentication method for VES messaging.";
  }

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

  grouping controller-details-type-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 of the SDN Controller.";
    }
    leaf controller-username {
      type string;
      description
        "The Username of the SDN Controller.";
    }
    leaf controller-password {
      type string;
      description
        "The Password of the SDN Controller.";
    }
    description
      "none";
  }

  grouping simulated-devices-type-g {
    leaf uuid {
      type string;
      description
        "The UUID of the simulated device.";
    }
    leaf device-ip {
      type string;
      description
        "The IP Address of the simulated device.";
    }
    leaf-list device-port {
      type uint32;
      description
        "A NETCONF endpoint (port) of the simulated device.";
    }
    leaf is-mounted {
      type boolean;
      description
        "Specifies if the simulated device is mounted in the SDN Controller.";
    }
    leaf operational-state {
      type operational-state-type;
      description
        "Specifies the operational state of the simulated device.";
    }
    description
      "none";
  }

  container simulator-config {
    description
      "Configuration container of the simulator.";
    leaf simulated-devices {
      type uint32;
      default "0";
      description
        "The number of devices to be simulated.";
    }
    leaf mounted-devices {
      type uint32;
      default "0";
      description
        "The number of devices to be mounted in ODL. The configured number should not exceed the number of mounted devices.";
    }
    container notification-config {
      leaf fault-notification-delay-period {
        type uint32;
        default "0";
        description
          "Interval in seconds between two consecutive notifications. If the attribute is set to 0, nofitications are not generated.";
      }
      leaf ves-heartbeat-period {
        type uint32;
        default "0";
        description
          "Interval in seconds between two VES heartbeat messages. If the attribute is set to 0, heartbeat messages are not generated.";
      }
      leaf is-netconf-available {
        type boolean;
        default "true";
        description
          "If set to 'true', NETCONF notifications will be generated.";
      }
      leaf is-ves-available {
        type boolean;
        default "true";
        description
          "If set to 'true', VES messages will be generated.";
      }
      description
        "none";
    }
    container controller-details {
      uses controller-details-type-g;
      description
        "The connectivity details of the SDN Controller where we want to mount our simulated devices.";
    }
    container ves-endpoint-details {
      must 'ves-registration = "false" or ../mounted-devices = 0' {
        error-message "VES registration cannot be active while devices are still mounted to ODL not via VES.";
      }
      leaf ves-endpoint-ip {
        type inet:ip-address;
        description
          "The IP Address of the VES Endpoint.";
      }
      leaf ves-endpoint-port {
        type inet:port-number;
        description
          "The Port of the VES Endpoint.";
      }
      leaf ves-endpoint-auth-method {
        type authentication-method-type;
        default "no-auth";
        description
          "The type of the authentication to be used with the VES Endpoint.";
      }
      leaf ves-endpoint-username {
        when "../ves-endpoint-auth-method = 'basic-auth' or ../ves-endpoint-auth-method = 'cert-basic-auth'";
        type string;
        description
          "The Username to be used to authenticate to the VES Endpoint.";
      }
      leaf ves-endpoint-password {
        when "../ves-endpoint-auth-method = 'basic-auth' or ../ves-endpoint-auth-method = 'cert-basic-auth'";
        type string;
        description
          "The Password to be used to authenticate to the VES Endpoint.";
      }
      leaf ves-endpoint-certificate {
        when "../ves-endpoint-auth-method = 'cert-only' or ../ves-endpoint-auth-method = 'cert-basic-auth'";
        type string;
        description
          "The Certificate to be used to authenticate to the VES Endpoint.";
      }
      leaf ves-registration {
        type boolean;
        default "false";
        description
          "If this is set to 'True', the simulated devices will automatically send a pnfRegistration VES message when they start. This cannot be set to 'True' if we already have 'mounted-devices' greater that 0, because we already mounted the devices directly to ODL.";
      }
      description
        "none";
    }
  }
  container simulator-status {
    config false;
    container simulation-usage-details {
      config false;
      leaf running-simulated-devices {
        type uint32;
        description
          "The current number of running simulated devices.";
      }
      leaf running-mounted-devices {
        type uint32;
        description
          "The current number of running simulated devices that are mounted in ODL.";
      }
      leaf base-netconf-port {
        type uint32;
        default "30000";
        description
          "The starting port number for the NETCONF connections exposed.";
      }
      leaf cpu-usage {
        type percent;
        description
          "Specifies the CPU load generated by this simulated device.";
      }
      leaf mem-usage {
        type uint32;
        description
          "Specifies the RAM in MB used by this simulated device.";
      }
      description
        "The details about the simulation, including resources consumed.";
    }
    list simulated-devices-list {
      key "uuid";
      config false;
      uses simulated-devices-type-g;
      description
        "The list of the devices that are currently simulated.";
    }
    description
      "State data container of the simulator.";
  }

  rpc restart-simulation {
    description
      "Operation to restart all the simulated devices with the new configuration of the simulator.";
  }

  rpc add-key-pair-to-odl {
    description
      "Operation to add a key pair signed by the NTS to OpenDaylight, such that it can connect to devices using TLS.";
  }
}