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