gnpy-api 0.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- gnpy_api-0.0.0.dist-info/METADATA +78 -0
- gnpy_api-0.0.0.dist-info/RECORD +40 -0
- gnpy_api-0.0.0.dist-info/WHEEL +5 -0
- gnpy_api-0.0.0.dist-info/licenses/AUTHORS +1 -0
- gnpy_api-0.0.0.dist-info/licenses/LICENSE +28 -0
- gnpy_api-0.0.0.dist-info/pbr.json +1 -0
- gnpy_api-0.0.0.dist-info/top_level.txt +1 -0
- gnpyapi/__init__.py +0 -0
- gnpyapi/core/__init__.py +12 -0
- gnpyapi/core/exception/__init__.py +1 -0
- gnpyapi/core/exception/config_error.py +14 -0
- gnpyapi/core/exception/equipment_error.py +14 -0
- gnpyapi/core/exception/exception_handler.py +34 -0
- gnpyapi/core/exception/path_computation_error.py +14 -0
- gnpyapi/core/exception/topology_error.py +13 -0
- gnpyapi/core/model/__init__.py +1 -0
- gnpyapi/core/model/error.py +17 -0
- gnpyapi/core/model/result.py +8 -0
- gnpyapi/core/route/__init__.py +1 -0
- gnpyapi/core/route/path_request_route.py +28 -0
- gnpyapi/core/route/status_route.py +8 -0
- gnpyapi/core/service/__init__.py +1 -0
- gnpyapi/core/service/config_service.py +4 -0
- gnpyapi/core/service/equipment_service.py +5 -0
- gnpyapi/core/service/path_request_service.py +36 -0
- gnpyapi/core/service/topology_service.py +5 -0
- gnpyapi/exampledata/planning_demand_example.json +1578 -0
- gnpyapi/tools/__init__.py +0 -0
- gnpyapi/yang/gnpy-api@2021-01-06.yang +81 -0
- gnpyapi/yang/gnpy-eqpt-config@2020-10-22.yang +442 -0
- gnpyapi/yang/gnpy-eqpt-config@2025-01-20.yang +770 -0
- gnpyapi/yang/gnpy-network-topology@2020-10-22.yang +300 -0
- gnpyapi/yang/gnpy-network-topology@2025-01-20.yang +594 -0
- gnpyapi/yang/gnpy-path-computation-simplified@2020-10-22.yang +559 -0
- gnpyapi/yang/gnpy-path-computation@2025-01-21.yang +632 -0
- gnpyapi/yang/ietf-layer0-types@2024-03-04.yang +2247 -0
- gnpyapi/yang/ietf-optical-impairment-topology@2024-05-21.yang +1776 -0
- gnpyapi/yang/ietf-routing-types@2017-12-04.yang +771 -0
- gnpyapi/yang/ietf-te-topology@2020-08-06.yang +1952 -0
- gnpyapi/yang/ietf-te-types@2022-10-21.yang +3458 -0
|
File without changes
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
module gnpy-api {
|
|
2
|
+
yang-version 1.1;
|
|
3
|
+
namespace "gnpy:gnpy-api";
|
|
4
|
+
prefix gnpyapi;
|
|
5
|
+
|
|
6
|
+
import gnpy-network-topology {
|
|
7
|
+
prefix gnpynt;
|
|
8
|
+
revision-date "2025-01-20";
|
|
9
|
+
}
|
|
10
|
+
import gnpy-path-computation {
|
|
11
|
+
prefix gnpypc;
|
|
12
|
+
revision-date "2025-01-21";
|
|
13
|
+
}
|
|
14
|
+
import gnpy-eqpt-config {
|
|
15
|
+
prefix gnpyeqpt;
|
|
16
|
+
revision-date "2025-01-20";
|
|
17
|
+
}
|
|
18
|
+
import ietf-yang-types {
|
|
19
|
+
prefix ietftypes;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
organization
|
|
23
|
+
"Telecom Infra Project OOPT PSE Working Group";
|
|
24
|
+
contact
|
|
25
|
+
"WG Web: <https://github.com/Telecominfraproject/oopt-gnpy>
|
|
26
|
+
contact: <mailto:ahmed.triki@orange.com>
|
|
27
|
+
contact: <mailto:esther.lerouzic@orange.com>
|
|
28
|
+
";
|
|
29
|
+
description
|
|
30
|
+
"YANG model for gnpy api input for path computation - TransportPCE preversion";
|
|
31
|
+
|
|
32
|
+
revision 2021-01-06 {
|
|
33
|
+
description
|
|
34
|
+
"draft for experimental/2020-candi.
|
|
35
|
+
Add the possibility to use a topology_id or an equipment_id
|
|
36
|
+
";
|
|
37
|
+
reference
|
|
38
|
+
"YANG model for api input for path computation with gnpy";
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
container service {
|
|
42
|
+
description
|
|
43
|
+
"Describe the service file to connect to gnpy";
|
|
44
|
+
uses gnpypc:service;
|
|
45
|
+
}
|
|
46
|
+
container response {
|
|
47
|
+
uses gnpypc:response;
|
|
48
|
+
description
|
|
49
|
+
"Describe the response object to gnpy";
|
|
50
|
+
}
|
|
51
|
+
choice topo {
|
|
52
|
+
case explicit {
|
|
53
|
+
container topology {
|
|
54
|
+
description
|
|
55
|
+
"Describe the topology file to connect to gnpy";
|
|
56
|
+
uses gnpynt:topo;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
case id {
|
|
60
|
+
leaf topology_id {
|
|
61
|
+
type ietftypes:uuid;
|
|
62
|
+
mandatory true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
choice eqpt {
|
|
67
|
+
case explicit {
|
|
68
|
+
container equipment {
|
|
69
|
+
description
|
|
70
|
+
"Describe the equipment library to connect to gnpy";
|
|
71
|
+
uses gnpyeqpt:eqpt;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
case id {
|
|
75
|
+
leaf equipment_id {
|
|
76
|
+
type ietftypes:uuid;
|
|
77
|
+
mandatory true;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -0,0 +1,442 @@
|
|
|
1
|
+
module gnpy-eqpt-config {
|
|
2
|
+
yang-version 1;
|
|
3
|
+
namespace "gnpy:gnpy-eqpt-config";
|
|
4
|
+
|
|
5
|
+
prefix "gnpyeqpt";
|
|
6
|
+
|
|
7
|
+
organization
|
|
8
|
+
"Telecom Infra Project OOPT PSE
|
|
9
|
+
Working Group";
|
|
10
|
+
|
|
11
|
+
contact
|
|
12
|
+
"WG Web: <https://github.com/Telecominfraproject/oopt-gnpy>
|
|
13
|
+
contact: <mailto:ahmed.triki@orange.com>
|
|
14
|
+
contact: <mailto:esther.lerouzic@orange.com>
|
|
15
|
+
";
|
|
16
|
+
|
|
17
|
+
description "Base YANG model for gnpy equipment library input for path computation - 2020 - candi preversion";
|
|
18
|
+
|
|
19
|
+
revision "2020-10-22" {
|
|
20
|
+
description "draft for experimental/2020-candi";
|
|
21
|
+
reference "Base YANG model for equipment library input for path computation with gnpy";
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/*
|
|
25
|
+
* Identities
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
identity edfa-type-def {
|
|
29
|
+
description "base identity for variable gain and fixed gain";
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
identity variable-gain{
|
|
33
|
+
base edfa-type-def ;
|
|
34
|
+
description "'variable_gain' is a simplified model simulating a 2-coil
|
|
35
|
+
EDFA with internal, input and output VOAs. The NF vs gain response is calculated
|
|
36
|
+
accordingly based on the input parameters: nf_min, nf_max, and gain_flatmax. It
|
|
37
|
+
is not a simple interpolation but a 2-stage NF calculation.";
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
identity fixed-gain{
|
|
41
|
+
base edfa-type-def ;
|
|
42
|
+
description "'fixed_gain' is a fixed gain model. NF == Cte == nf0 if gain_min < gain < gain_flatmax";
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
identity fiber-variety {
|
|
46
|
+
description "base identity for fiber variety";
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
identity transceiver-variety {
|
|
50
|
+
description "base identity for transceiver variety";
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
*/
|
|
54
|
+
grouping variable-gain {
|
|
55
|
+
leaf nf_min {
|
|
56
|
+
type decimal64 {
|
|
57
|
+
fraction-digits 2;
|
|
58
|
+
}
|
|
59
|
+
units dB;
|
|
60
|
+
}
|
|
61
|
+
leaf nf_max {
|
|
62
|
+
type decimal64 {
|
|
63
|
+
fraction-digits 2;
|
|
64
|
+
}
|
|
65
|
+
units dB;
|
|
66
|
+
}
|
|
67
|
+
leaf out_voa_auto{
|
|
68
|
+
type boolean ;
|
|
69
|
+
description "auto_design feature to optimize the amplifier output VOA. If true, output VOA is present
|
|
70
|
+
and will be used to push amplifier gain to its maximum, within EOL power margins.";
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
grouping fixed-gain{
|
|
75
|
+
leaf nf0 {
|
|
76
|
+
type decimal64 {
|
|
77
|
+
fraction-digits 2;
|
|
78
|
+
}
|
|
79
|
+
units dB;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
grouping no-type-def{
|
|
84
|
+
leaf advanced_config_from_json {
|
|
85
|
+
type string ;
|
|
86
|
+
description " filename with json edfa";
|
|
87
|
+
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
grouping openroadm{
|
|
93
|
+
leaf-list nf_coef {
|
|
94
|
+
type decimal64 {
|
|
95
|
+
fraction-digits 5;
|
|
96
|
+
}
|
|
97
|
+
//default [8.1e-4,6.142e-2,1.558,19.97] ;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
grouping dual-stage {
|
|
102
|
+
leaf raman {
|
|
103
|
+
type boolean;
|
|
104
|
+
}
|
|
105
|
+
leaf preamp_variety {
|
|
106
|
+
type leafref {
|
|
107
|
+
path "../../Edfa/type_variety";
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
leaf booster_variety {
|
|
111
|
+
type leafref {
|
|
112
|
+
path "../../Edfa/type_variety";
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
grouping edfa-common {
|
|
118
|
+
leaf allowed_for_design{
|
|
119
|
+
type boolean ;
|
|
120
|
+
description "If false, the amplifier will not be picked by auto-design but it can still be used as a
|
|
121
|
+
manual input (from JSON or Excel template topology files.)";
|
|
122
|
+
}
|
|
123
|
+
leaf gain_flatmax {
|
|
124
|
+
type decimal64 {
|
|
125
|
+
fraction-digits 2;
|
|
126
|
+
}
|
|
127
|
+
units dB;
|
|
128
|
+
}
|
|
129
|
+
leaf gain_min {
|
|
130
|
+
type decimal64 {
|
|
131
|
+
fraction-digits 2;
|
|
132
|
+
}
|
|
133
|
+
units dB;
|
|
134
|
+
}
|
|
135
|
+
leaf p_max {
|
|
136
|
+
type decimal64 {
|
|
137
|
+
fraction-digits 2;
|
|
138
|
+
}
|
|
139
|
+
units dBm;
|
|
140
|
+
}
|
|
141
|
+
leaf type_def {
|
|
142
|
+
type identityref{
|
|
143
|
+
base edfa-type-def ;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
choice type_of_model {
|
|
147
|
+
case variable-gain {
|
|
148
|
+
when "type_def = 'variable-gain'";
|
|
149
|
+
uses variable-gain ;
|
|
150
|
+
}
|
|
151
|
+
case fixed-gain{
|
|
152
|
+
when "type_def = 'fixed-gain'";
|
|
153
|
+
uses fixed-gain;
|
|
154
|
+
}
|
|
155
|
+
case no-type-def{
|
|
156
|
+
when "type_def = 'no-type-def'";
|
|
157
|
+
uses no-type-def;
|
|
158
|
+
}
|
|
159
|
+
case openroadm{
|
|
160
|
+
when "type_def = 'openroadm'";
|
|
161
|
+
uses openroadm;
|
|
162
|
+
}
|
|
163
|
+
case dual_stage {
|
|
164
|
+
when "type_def = 'dual_stage'";
|
|
165
|
+
uses dual-stage ;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
grouping common-fiber {
|
|
171
|
+
description "common parameters for fiber and raman fiber";
|
|
172
|
+
leaf type_variety {
|
|
173
|
+
type string ;
|
|
174
|
+
}
|
|
175
|
+
description "a unique name to ID the fiber in the JSON or Excel template topology input file";
|
|
176
|
+
leaf dispersion{
|
|
177
|
+
type decimal64 {
|
|
178
|
+
fraction-digits 8;
|
|
179
|
+
}
|
|
180
|
+
units s.m-1.m-1;
|
|
181
|
+
}
|
|
182
|
+
leaf gamma{
|
|
183
|
+
type decimal64 {
|
|
184
|
+
fraction-digits 8;
|
|
185
|
+
}
|
|
186
|
+
units w-1.m-1 ;
|
|
187
|
+
description "2pi.n2/(lambda*Aeff) (w-2.m-1)";
|
|
188
|
+
}
|
|
189
|
+
leaf pmd_coef{
|
|
190
|
+
type decimal64 {
|
|
191
|
+
fraction-digits 16;
|
|
192
|
+
}
|
|
193
|
+
units s.sqrt(m)-1;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
grouping eqpt{
|
|
198
|
+
list Edfa {
|
|
199
|
+
key type_variety;
|
|
200
|
+
leaf type_variety {
|
|
201
|
+
type string;
|
|
202
|
+
description "a unique name to ID the amplifier in the JSON/Excel template topology input file";
|
|
203
|
+
}
|
|
204
|
+
uses edfa-common;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
list Fiber {
|
|
208
|
+
key type_variety;
|
|
209
|
+
uses common-fiber;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
list RamanFiber {
|
|
213
|
+
uses common-fiber;
|
|
214
|
+
container raman_efficiency {
|
|
215
|
+
leaf-list cr {
|
|
216
|
+
type decimal64 {
|
|
217
|
+
fraction-digits 8;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
leaf-list frequency_offset {
|
|
221
|
+
type decimal64 {
|
|
222
|
+
fraction-digits 8;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
list Span {
|
|
229
|
+
leaf power_mode {
|
|
230
|
+
type boolean ;
|
|
231
|
+
}
|
|
232
|
+
leaf-list delta_power_range_db {
|
|
233
|
+
type decimal64 {
|
|
234
|
+
fraction-digits 2;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
leaf max_length {
|
|
238
|
+
type decimal64 {
|
|
239
|
+
fraction-digits 2;
|
|
240
|
+
}
|
|
241
|
+
units km;
|
|
242
|
+
default 150.0 ;
|
|
243
|
+
}
|
|
244
|
+
leaf max_loss {
|
|
245
|
+
type decimal64 {
|
|
246
|
+
fraction-digits 2;
|
|
247
|
+
}
|
|
248
|
+
units dB;
|
|
249
|
+
}
|
|
250
|
+
leaf max_fiber_lineic_loss_for_raman {
|
|
251
|
+
type decimal64 {
|
|
252
|
+
fraction-digits 2;
|
|
253
|
+
}
|
|
254
|
+
units dB.km-1;
|
|
255
|
+
}
|
|
256
|
+
leaf target_extended_gain {
|
|
257
|
+
type decimal64 {
|
|
258
|
+
fraction-digits 2;
|
|
259
|
+
}
|
|
260
|
+
units dB;
|
|
261
|
+
}
|
|
262
|
+
leaf length_units{
|
|
263
|
+
type string ;
|
|
264
|
+
default "km";
|
|
265
|
+
}
|
|
266
|
+
leaf padding{
|
|
267
|
+
type decimal64 {
|
|
268
|
+
fraction-digits 2;
|
|
269
|
+
}
|
|
270
|
+
default 10.0 ;
|
|
271
|
+
}
|
|
272
|
+
leaf EOL{
|
|
273
|
+
type decimal64 {
|
|
274
|
+
fraction-digits 2;
|
|
275
|
+
}
|
|
276
|
+
default 0.0 ;
|
|
277
|
+
}
|
|
278
|
+
leaf con_in{
|
|
279
|
+
type decimal64 {
|
|
280
|
+
fraction-digits 2;
|
|
281
|
+
}
|
|
282
|
+
default 0.0 ;
|
|
283
|
+
}
|
|
284
|
+
leaf con_out{
|
|
285
|
+
type decimal64 {
|
|
286
|
+
fraction-digits 2;
|
|
287
|
+
}
|
|
288
|
+
default 0.0 ;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
list Roadm {
|
|
293
|
+
leaf target_pch_out_db {
|
|
294
|
+
type decimal64 {
|
|
295
|
+
fraction-digits 2;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
leaf add_drop_osnr {
|
|
299
|
+
type decimal64 {
|
|
300
|
+
fraction-digits 2;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
leaf pmd {
|
|
304
|
+
type decimal64 {
|
|
305
|
+
fraction-digits 2;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
container restrictions {
|
|
309
|
+
leaf-list preamp_variety_list {
|
|
310
|
+
type string;
|
|
311
|
+
}
|
|
312
|
+
leaf-list booster_variety_list {
|
|
313
|
+
type string;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
list SI {
|
|
319
|
+
leaf f_min {
|
|
320
|
+
type decimal64 {
|
|
321
|
+
fraction-digits 2;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
leaf f_max {
|
|
325
|
+
type decimal64 {
|
|
326
|
+
fraction-digits 2;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
leaf baud_rate {
|
|
330
|
+
type decimal64 {
|
|
331
|
+
fraction-digits 2;
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
leaf spacing {
|
|
335
|
+
type decimal64 {
|
|
336
|
+
fraction-digits 2;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
leaf power_dbm {
|
|
340
|
+
type decimal64 {
|
|
341
|
+
fraction-digits 2;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
leaf-list power_range_db {
|
|
345
|
+
type decimal64 {
|
|
346
|
+
fraction-digits 2;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
leaf roll_off {
|
|
350
|
+
type decimal64 {
|
|
351
|
+
fraction-digits 2;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
leaf tx_osnr {
|
|
355
|
+
type decimal64 {
|
|
356
|
+
fraction-digits 2;
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
leaf sys_margins {
|
|
360
|
+
type decimal64 {
|
|
361
|
+
fraction-digits 2;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
list Transceiver {
|
|
367
|
+
leaf type_variety {
|
|
368
|
+
type string ;
|
|
369
|
+
description "a unique name to ID the transceiver in the JSON or Excel template topology input file";
|
|
370
|
+
}
|
|
371
|
+
container frequency {
|
|
372
|
+
leaf min {
|
|
373
|
+
type decimal64 {
|
|
374
|
+
fraction-digits 2;
|
|
375
|
+
}
|
|
376
|
+
units Hz ;
|
|
377
|
+
}
|
|
378
|
+
leaf max {
|
|
379
|
+
type decimal64 {
|
|
380
|
+
fraction-digits 2;
|
|
381
|
+
}
|
|
382
|
+
units Hz ;
|
|
383
|
+
}
|
|
384
|
+
description "Min/max frequency of transponder eg 191.35e12 and 196.1e12";
|
|
385
|
+
}
|
|
386
|
+
list mode {
|
|
387
|
+
leaf format {
|
|
388
|
+
type string ;
|
|
389
|
+
description "unique name of the mode";
|
|
390
|
+
}
|
|
391
|
+
leaf baud_rate {
|
|
392
|
+
type decimal64 {
|
|
393
|
+
fraction-digits 2;
|
|
394
|
+
}
|
|
395
|
+
units baud ;
|
|
396
|
+
description "baud_rate";
|
|
397
|
+
}
|
|
398
|
+
leaf OSNR {
|
|
399
|
+
type decimal64 {
|
|
400
|
+
fraction-digits 2;
|
|
401
|
+
}
|
|
402
|
+
units dB ;
|
|
403
|
+
description "min required OSNR in 0.1nm (dB)";
|
|
404
|
+
}
|
|
405
|
+
leaf tx_osnr {
|
|
406
|
+
type decimal64 {
|
|
407
|
+
fraction-digits 2;
|
|
408
|
+
}
|
|
409
|
+
units dB ;
|
|
410
|
+
description "min required OSNR in 0.1nm (dB)";
|
|
411
|
+
}
|
|
412
|
+
leaf min_spacing {
|
|
413
|
+
type decimal64 {
|
|
414
|
+
fraction-digits 2;
|
|
415
|
+
}
|
|
416
|
+
units GHz ;
|
|
417
|
+
description "...";
|
|
418
|
+
}
|
|
419
|
+
leaf bit_rate {
|
|
420
|
+
type decimal64 {
|
|
421
|
+
fraction-digits 2;
|
|
422
|
+
}
|
|
423
|
+
units bit/s ;
|
|
424
|
+
description "bit rate";
|
|
425
|
+
}
|
|
426
|
+
leaf roll_off {
|
|
427
|
+
type decimal64 {
|
|
428
|
+
fraction-digits 2;
|
|
429
|
+
}
|
|
430
|
+
description "...";
|
|
431
|
+
}
|
|
432
|
+
leaf cost {
|
|
433
|
+
type decimal64 {
|
|
434
|
+
fraction-digits 2;
|
|
435
|
+
}
|
|
436
|
+
description "arbitrary unit";
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
|