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.
Files changed (40) hide show
  1. gnpy_api-0.0.0.dist-info/METADATA +78 -0
  2. gnpy_api-0.0.0.dist-info/RECORD +40 -0
  3. gnpy_api-0.0.0.dist-info/WHEEL +5 -0
  4. gnpy_api-0.0.0.dist-info/licenses/AUTHORS +1 -0
  5. gnpy_api-0.0.0.dist-info/licenses/LICENSE +28 -0
  6. gnpy_api-0.0.0.dist-info/pbr.json +1 -0
  7. gnpy_api-0.0.0.dist-info/top_level.txt +1 -0
  8. gnpyapi/__init__.py +0 -0
  9. gnpyapi/core/__init__.py +12 -0
  10. gnpyapi/core/exception/__init__.py +1 -0
  11. gnpyapi/core/exception/config_error.py +14 -0
  12. gnpyapi/core/exception/equipment_error.py +14 -0
  13. gnpyapi/core/exception/exception_handler.py +34 -0
  14. gnpyapi/core/exception/path_computation_error.py +14 -0
  15. gnpyapi/core/exception/topology_error.py +13 -0
  16. gnpyapi/core/model/__init__.py +1 -0
  17. gnpyapi/core/model/error.py +17 -0
  18. gnpyapi/core/model/result.py +8 -0
  19. gnpyapi/core/route/__init__.py +1 -0
  20. gnpyapi/core/route/path_request_route.py +28 -0
  21. gnpyapi/core/route/status_route.py +8 -0
  22. gnpyapi/core/service/__init__.py +1 -0
  23. gnpyapi/core/service/config_service.py +4 -0
  24. gnpyapi/core/service/equipment_service.py +5 -0
  25. gnpyapi/core/service/path_request_service.py +36 -0
  26. gnpyapi/core/service/topology_service.py +5 -0
  27. gnpyapi/exampledata/planning_demand_example.json +1578 -0
  28. gnpyapi/tools/__init__.py +0 -0
  29. gnpyapi/yang/gnpy-api@2021-01-06.yang +81 -0
  30. gnpyapi/yang/gnpy-eqpt-config@2020-10-22.yang +442 -0
  31. gnpyapi/yang/gnpy-eqpt-config@2025-01-20.yang +770 -0
  32. gnpyapi/yang/gnpy-network-topology@2020-10-22.yang +300 -0
  33. gnpyapi/yang/gnpy-network-topology@2025-01-20.yang +594 -0
  34. gnpyapi/yang/gnpy-path-computation-simplified@2020-10-22.yang +559 -0
  35. gnpyapi/yang/gnpy-path-computation@2025-01-21.yang +632 -0
  36. gnpyapi/yang/ietf-layer0-types@2024-03-04.yang +2247 -0
  37. gnpyapi/yang/ietf-optical-impairment-topology@2024-05-21.yang +1776 -0
  38. gnpyapi/yang/ietf-routing-types@2017-12-04.yang +771 -0
  39. gnpyapi/yang/ietf-te-topology@2020-08-06.yang +1952 -0
  40. gnpyapi/yang/ietf-te-types@2022-10-21.yang +3458 -0
@@ -0,0 +1,559 @@
1
+ module gnpy-path-computation-simplified {
2
+ yang-version 1.1;
3
+ namespace "gnpy:path";
4
+
5
+ prefix "gnpypc";
6
+
7
+ organization
8
+ "Telecom Infra Project OOPT PSE Working Group";
9
+
10
+ contact
11
+ "WG Web: <https://github.com/Telecominfraproject/oopt-gnpy>
12
+ contact: <mailto:ahmed.triki@orange.com>
13
+ contact: <mailto:esther.lerouzic@orange.com>
14
+ ";
15
+
16
+ description "YANG model for gnpy path computation simplified for - 2020 - candi preversion";
17
+
18
+ revision "2020-10-22" {
19
+ description
20
+ "draft for experimental/2020-candi";
21
+ reference
22
+ "YANG model for path computation with gnpy inputs";
23
+ }
24
+
25
+ grouping effective-freq-slot{
26
+ /* content copied from ietf-flexi-grid-media-channel, because only M and N are needed
27
+ from the initial grouping.
28
+ */
29
+ description "The effective frequency slot is an attribute
30
+ of a media channel and, being a frequency slot, it is
31
+ described by its nominal central frequency and slot
32
+ width";
33
+ reference "rfc7698";
34
+ leaf N {
35
+ type int32;
36
+ description
37
+ "Is used to determine the Nominal Central
38
+ Frequency. The set of nominal central frequencies
39
+ can be built using the following expression:
40
+ f = 193.1 THz + n x 0.00625 THz,
41
+ where 193.1 THz is ITU-T ''anchor frequency'' for
42
+ transmission over the C band, n is a positive or
43
+ negative integer including 0.";
44
+ reference "rfc7698";
45
+ }
46
+ leaf M {
47
+ type uint32;
48
+ description
49
+ "Is used to determine the slot width. A slot width
50
+ is constrained to be M x SWG (that is, M x 12.5 GHz),
51
+ where M is an integer greater than or equal to 1.";
52
+ reference "rfc7698";
53
+ }
54
+ }
55
+
56
+ grouping gnpy-specific-parameters{
57
+ description
58
+ "This grouping defines the gnpy specific parameters for requests.";
59
+ leaf technology {
60
+ type string;
61
+ default "flexi-grid";
62
+ description
63
+ "Data plane technology type.";
64
+ }
65
+ leaf trx_type {
66
+ type string ;
67
+ mandatory true;
68
+ description "name of the transponder type (to be read from equipment library";
69
+
70
+ }
71
+ leaf trx_mode {
72
+ type string;
73
+ description "name of the transponder mode (to be read from equipment library";
74
+
75
+ }
76
+ list effective-freq-slot {
77
+ key "N";
78
+ uses effective-freq-slot ;
79
+ }
80
+ leaf spacing {
81
+ mandatory true;
82
+ type decimal64 {
83
+ fraction-digits 1;
84
+ }
85
+ units Hz;
86
+ description
87
+ "It is the spacing between channels assuming full load with
88
+ same channels as the requested one. multiple of 12.5 GHz";
89
+
90
+ }
91
+ leaf max-nb-of-channel{
92
+ type int32;
93
+ description "Nb of channel to take into account for the full load case.
94
+ ";
95
+
96
+ }
97
+ leaf output-power{
98
+ type decimal64 {
99
+ fraction-digits 5;
100
+ }
101
+ units W;
102
+ description "optical power setting to be used for the propagation";
103
+
104
+ }
105
+ leaf path_bandwidth{
106
+ type decimal64 {
107
+ fraction-digits 5;
108
+ }
109
+ mandatory true;
110
+ units bit/s;
111
+ description "Capacity required";
112
+ }
113
+ }
114
+
115
+ identity SNR-bandwidth {
116
+ base path-metric-type;
117
+ description
118
+ "A metric that records SNR in signal bandwidth";
119
+ }
120
+
121
+ identity OSNR-bandwidth {
122
+ base path-metric-type;
123
+ description
124
+ "A metric that records OSNR in signal bandwidth";
125
+ }
126
+
127
+ identity SNR-0.1nm {
128
+ base path-metric-type;
129
+ description
130
+ "A metric that records SNR in 0.1nm";
131
+ }
132
+
133
+ identity OSNR-0.1nm {
134
+ base path-metric-type;
135
+ description
136
+ "A metric that records OSNR in 0.1nm";
137
+ }
138
+
139
+ identity reference_power {
140
+ base path-metric-type;
141
+ description
142
+ "to be revised";
143
+ }
144
+
145
+ identity path_bandwidth {
146
+ base path-metric-type;
147
+ description
148
+ "to be revised";
149
+ }
150
+
151
+ grouping transponder{
152
+ leaf transponder-type {
153
+ type string ;
154
+ description
155
+ "transponder type.";
156
+ }
157
+ leaf transponder-mode {
158
+ type string ;
159
+ description
160
+ "transponder mode.";
161
+ }
162
+ }
163
+
164
+ grouping hop-attribute{
165
+ description
166
+ "This grouping defines the hop attribute parameters for request or response";
167
+ choice hop-type{
168
+ case tsp {
169
+ container transponder{
170
+ uses transponder ;
171
+ }
172
+ }
173
+ case regen {
174
+ container regenerator{
175
+ leaf regenerator-id{
176
+ type string ;
177
+ }
178
+ uses transponder ;
179
+ }
180
+ }
181
+ case pow {
182
+ container optical-power{
183
+ leaf optical-power{
184
+ type decimal64 {
185
+ fraction-digits 5;
186
+ }
187
+ units W;
188
+ description "not used yet. hop output (input??) power";
189
+ }
190
+ }
191
+ }
192
+ }
193
+
194
+ }
195
+
196
+ identity path-metric-type {
197
+ description
198
+ "Base identity for path metric type";
199
+ }
200
+
201
+ identity route-usage-type {
202
+ description
203
+ "Base identity for route usage";
204
+ }
205
+
206
+ identity route-include-ero {
207
+ base route-usage-type;
208
+ description
209
+ "Include ERO from route";
210
+ }
211
+
212
+ identity route-exclude-ero {
213
+ base route-usage-type;
214
+ description
215
+ "Exclude ERO from route";
216
+ }
217
+
218
+ identity route-exclude-srlg {
219
+ base route-usage-type;
220
+ description
221
+ "Exclude SRLG from route";
222
+ }
223
+
224
+ typedef te-hop-type {
225
+ type enumeration {
226
+ enum LOOSE {
227
+ description
228
+ "loose hop in an explicit path";
229
+ }
230
+ enum STRICT {
231
+ description
232
+ "strict hop in an explicit path";
233
+ }
234
+ }
235
+ description
236
+ "enumerated type for specifying loose or strict
237
+ paths";
238
+ reference "RFC3209: section-4.3.2";
239
+ }
240
+
241
+ typedef te-path-disjointness {
242
+ type bits {
243
+ bit node {
244
+ position 0;
245
+ description "Node disjoint.";
246
+ }
247
+ bit link {
248
+ position 1;
249
+ description "Link disjoint.";
250
+ }
251
+ bit srlg {
252
+ position 2;
253
+ description "SRLG (Shared Risk Link Group) disjoint.";
254
+ }
255
+ }
256
+ description
257
+ "Type of the resource disjointness for a TE tunnel path.";
258
+ reference
259
+ "RFC4872: RSVP-TE Extensions in Support of End-to-End
260
+ Generalized Multi-Protocol Label Switching (GMPLS)
261
+ Recovery";
262
+ } // te-path-disjointness
263
+
264
+ typedef accumulated-metric-type {
265
+ type union {
266
+ type uint64;
267
+ type decimal64 {
268
+ fraction-digits 2;
269
+ }
270
+ }
271
+ description
272
+ "type useable for accumulative-value";
273
+ }
274
+
275
+ grouping path-route-objects {
276
+ description
277
+ "List of EROs to be included or excluded when performing
278
+ the path computation.";
279
+ container explicit-route-objects {
280
+ description
281
+ "Container for the route object list";
282
+ list route-object-include-exclude {
283
+ description
284
+ "List of explicit route objects to include or
285
+ exclude in path computation";
286
+ leaf explicit-route-usage {
287
+ type identityref {
288
+ base route-usage-type;
289
+ }
290
+ description "Explicit-route usage.";
291
+ }
292
+ key "index";
293
+ uses explicit-route-hop ;
294
+ }
295
+ }
296
+ }
297
+
298
+ grouping generic-path-disjointness {
299
+ description "Path disjointness grouping";
300
+ leaf disjointness {
301
+ type te-path-disjointness;
302
+ description
303
+ "The type of resource disjointness.
304
+ Under primary path, disjointness level applies to
305
+ all secondary LSPs. Under secondary, disjointness
306
+ level overrides the one under primary";
307
+ }
308
+ }
309
+
310
+ grouping common-path-constraints-attributes {
311
+ description
312
+ "Common path constraints configuration grouping";
313
+ uses common-constraints_config;
314
+ }
315
+
316
+ grouping generic-path-constraints {
317
+ description
318
+ "Global named path constraints configuration
319
+ grouping";
320
+ container path-constraints {
321
+ description "TE named path constraints container";
322
+ uses common-path-constraints-attributes;
323
+ }
324
+ }
325
+
326
+
327
+ grouping explicit-route-hop {
328
+ description
329
+ "The explicit route subobject grouping";
330
+ leaf index {
331
+ type uint32;
332
+ description "ERO subobject index";
333
+ }
334
+ choice type {
335
+ description
336
+ "The explicit route subobject type";
337
+ case num-unnum-hop {
338
+ container num-unnum-hop {
339
+ leaf node-id {
340
+ //type te-node-id;
341
+ type string;
342
+ description
343
+ "The identifier of a node in the TE topology.";
344
+ }
345
+ leaf link-tp-id {
346
+ //type te-tp-id;
347
+ type string;
348
+ description
349
+ "TE link termination point identifier. The combination
350
+ of TE link ID and the TE node ID is used to identify an
351
+ unnumbered TE link.";
352
+ }
353
+ leaf hop-type {
354
+ type te-hop-type;
355
+ description "strict or loose hop";
356
+ }
357
+ description
358
+ "Numbered and Unnumbered link/node explicit route
359
+ subobject";
360
+ }
361
+ }
362
+ case label {
363
+ container label-hop {
364
+ description "Label hop type";
365
+ uses effective-freq-slot;
366
+ }
367
+ description
368
+ "The Label ERO subobject";
369
+ }
370
+ case hop-attribute{
371
+ uses gnpypc:hop-attribute ;
372
+ }
373
+ }
374
+ }
375
+
376
+ grouping common-constraints_config {
377
+ description
378
+ "Common constraints grouping that can be set on
379
+ a constraint set or directly on the tunnel";
380
+
381
+ container te-bandwidth {
382
+ uses gnpy-specific-parameters ;
383
+ description
384
+ "A requested bandwidth to use for path computation";
385
+ }
386
+ }
387
+
388
+ grouping end-points {
389
+ description
390
+ "Common grouping to define the TE tunnel end-points";
391
+
392
+ leaf source {
393
+ type string;
394
+ description "TE tunnel source address.";
395
+ }
396
+ leaf destination {
397
+ type string;
398
+ description "P2P tunnel destination address";
399
+ }
400
+ leaf src-tp-id {
401
+ type string;
402
+ description "TE tunnel source termination point identifier.";
403
+ }
404
+ leaf dst-tp-id {
405
+ type string;
406
+ description "TE tunnel destination termination point
407
+ identifier.";
408
+ }
409
+ }
410
+
411
+ grouping synchronization-info {
412
+ description "Information for sync";
413
+ list synchronization {
414
+ key "synchronization-id";
415
+ description "sync list";
416
+ leaf synchronization-id {
417
+ type string;
418
+ description "index";
419
+ }
420
+ container svec {
421
+ description
422
+ "Synchronization VECtor";
423
+ leaf relaxable {
424
+ type boolean;
425
+ default true;
426
+ description
427
+ "If this leaf is true, path computation process is free
428
+ to ignore svec content.
429
+ otherwise it must take into account this svec.";
430
+ }
431
+ uses generic-path-disjointness;
432
+ leaf-list request-id-number {
433
+ type string;
434
+ description "This list reports the set of M path computation requests that must be synchronized.";
435
+ }
436
+ }
437
+ }
438
+ }
439
+
440
+ grouping path-metric {
441
+ description "TE path metric type";
442
+ leaf metric-type {
443
+ type identityref {
444
+ base path-metric-type;
445
+ }
446
+ description "TE path metric type";
447
+ }
448
+ leaf accumulative-value {
449
+ type decimal64 {
450
+ fraction-digits 2;
451
+ }
452
+ description "TE path metric accumulative value";
453
+ }
454
+ }
455
+ grouping generic-path-properties {
456
+ description "TE generic path properties grouping";
457
+ container path-properties {
458
+ config false;
459
+ description "The TE path properties";
460
+ list path-metric {
461
+ key metric-type;
462
+ uses path-metric;
463
+ }
464
+ list z-a-path-metric {
465
+ key metric-type;
466
+ uses path-metric;
467
+ }
468
+ list path-route-objects {
469
+ description
470
+ "Container for the list of route objects either returned by
471
+ the computation engine or actually used by an LSP";
472
+ container path-route-object {
473
+ description
474
+ "List of route objects either returned by the computation
475
+ engine or actually used by an LSP";
476
+ uses explicit-route-hop;
477
+ }
478
+ }
479
+ }
480
+ }
481
+
482
+ grouping path-info {
483
+ uses generic-path-properties;
484
+ description "Path computation output information";
485
+ }
486
+
487
+ // adding some blocking reasons and info on path in case of blocking
488
+
489
+ grouping no-path-info {
490
+ description "no-path-info";
491
+ container no-path {
492
+ presence "Response without path information, due to failure
493
+ performing the path computation";
494
+ leaf no-path {
495
+ type string;
496
+ mandatory true ;
497
+ description
498
+ "returned blocking reasons:
499
+ NO_PATH
500
+ NO_COMPUTED_SNR
501
+ NO_FEASIBLE_BAUDRATE_WITH_SPACING
502
+ NO_PATH_WITH_CONSTRAINT
503
+ NO_FEASIBLE_MODE
504
+ MODE_NOT_FEASIBLE
505
+ NO_SPECTRUM
506
+ ";
507
+ }
508
+ uses generic-path-properties ;
509
+ description "if path computation cannot identify a path,
510
+ rpc returns no path.";
511
+ }
512
+ }
513
+
514
+ grouping service {
515
+ list path-request {
516
+ key "request-id";
517
+ description "request-list";
518
+ leaf request-id {
519
+ type string;
520
+ mandatory true;
521
+ description "Each path computation request is uniquely identified by the request-id-number.";
522
+ }
523
+ leaf bidirectional {
524
+ type boolean;
525
+ mandatory true;
526
+ description "Specify the bidirectionality of the path";
527
+ }
528
+
529
+ uses end-points;
530
+ uses path-route-objects;
531
+ uses generic-path-constraints;
532
+ }
533
+ uses synchronization-info;
534
+ }
535
+
536
+ grouping result {
537
+ list response {
538
+ key response-id;
539
+ config false;
540
+ description "response";
541
+ leaf response-id {
542
+ type string;
543
+ description
544
+ "The list key that has to reuse request-id-number.";
545
+ }
546
+ choice response-type {
547
+ config false;
548
+ description "response-type";
549
+ case no-path-case {
550
+ uses no-path-info;
551
+ }
552
+ case path-case {
553
+ uses path-info;
554
+ description "Path computation service.";
555
+ }
556
+ }
557
+ }
558
+ }
559
+ }