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,1578 @@
1
+ {
2
+ "gnpy-api:service": {
3
+ "path-request": [
4
+ {
5
+ "request-id": "0",
6
+ "source": "trx Alice",
7
+ "destination": "trx Bob",
8
+ "src-tp-id": "trx Alice",
9
+ "dst-tp-id": "trx Bob",
10
+ "bidirectional": false,
11
+ "path-constraints": {
12
+ "te-bandwidth": {
13
+ "technology": "flexi-grid",
14
+ "trx_type": "Voyager",
15
+ "trx_mode": "mode 1",
16
+ "effective-freq-slot": [
17
+ {
18
+ "N": 0,
19
+ "M": 12
20
+ }
21
+ ],
22
+ "spacing": 50000000000.0,
23
+ "path_bandwidth": 100000000000.0
24
+ }
25
+ }
26
+ },
27
+ {
28
+ "request-id": "1",
29
+ "source": "trx Alice",
30
+ "destination": "trx Bob",
31
+ "src-tp-id": "trx Alice",
32
+ "dst-tp-id": "trx Bob",
33
+ "bidirectional": false,
34
+ "path-constraints": {
35
+ "te-bandwidth": {
36
+ "technology": "flexi-grid",
37
+ "trx_type": "Voyager",
38
+ "trx_mode": "mode 1",
39
+ "spacing": 50000000000.0,
40
+ "path_bandwidth": 100000000000.0
41
+ }
42
+ }
43
+ },
44
+ {
45
+ "request-id": "2",
46
+ "source": "trx Alice",
47
+ "destination": "trx Bob",
48
+ "src-tp-id": "trx Alice",
49
+ "dst-tp-id": "trx Bob",
50
+ "bidirectional": false,
51
+ "path-constraints": {
52
+ "te-bandwidth": {
53
+ "technology": "flexi-grid",
54
+ "trx_type": "Voyager",
55
+ "trx_mode": "mode 2",
56
+ "spacing": 100000000000.0,
57
+ "path_bandwidth": 100000000000.0
58
+ }
59
+ }
60
+ },
61
+ {
62
+ "request-id": "3",
63
+ "source": "trx Alice",
64
+ "destination": "trx Bob",
65
+ "src-tp-id": "trx Alice",
66
+ "dst-tp-id": "trx Bob",
67
+ "bidirectional": true,
68
+ "path-constraints": {
69
+ "te-bandwidth": {
70
+ "technology": "flexi-grid",
71
+ "trx_type": "Voyager",
72
+ "spacing": 50000000000.0,
73
+ "path_bandwidth": 100000000000.0
74
+ }
75
+ },
76
+ "explicit-route-objects": {
77
+ "route-object-include-exclude": [
78
+ {
79
+ "explicit-route-usage": "route-include-ero",
80
+ "index": 0,
81
+ "num-unnum-hop": {
82
+ "node-id": "roadm Carol",
83
+ "link-tp-id": "link-tp-id is not used",
84
+ "hop-type": "LOOSE"
85
+ }
86
+ }
87
+ ]
88
+ }
89
+ },
90
+ {
91
+ "request-id": "4",
92
+ "source": "trx Alice",
93
+ "destination": "trx Bob",
94
+ "src-tp-id": "remove",
95
+ "dst-tp-id": "remove",
96
+ "bidirectional": true,
97
+ "path-constraints": {
98
+ "te-bandwidth": {
99
+ "technology": "flexi-grid",
100
+ "trx_type": "Voyager",
101
+ "effective-freq-slot": [
102
+ {
103
+ "N": -284,
104
+ "M": 12
105
+ }
106
+ ],
107
+ "spacing": 50000000000.0,
108
+ "path_bandwidth": 100000000000.0
109
+ }
110
+ }
111
+ },
112
+ {
113
+ "request-id": "5",
114
+ "source": "trx Bob1",
115
+ "destination": "trx Carol1",
116
+ "src-tp-id": "trx Bob1",
117
+ "dst-tp-id": "trx Carol1",
118
+ "bidirectional": true,
119
+ "path-constraints": {
120
+ "te-bandwidth": {
121
+ "technology": "flexi-grid",
122
+ "trx_type": "vendorA_trx-type1",
123
+ "spacing": 100000000000.0,
124
+ "path_bandwidth": 100000000000.0
125
+ }
126
+ }
127
+ },
128
+ {
129
+ "request-id": "6",
130
+ "source": "trx Bob1",
131
+ "destination": "trx Carol1",
132
+ "src-tp-id": "trx Bob1",
133
+ "dst-tp-id": "trx Carol1",
134
+ "bidirectional": true,
135
+ "path-constraints": {
136
+ "te-bandwidth": {
137
+ "technology": "flexi-grid",
138
+ "trx_type": "Voyager",
139
+ "trx_mode": "mode 1",
140
+ "spacing": 50000000000.0,
141
+ "path_bandwidth": 100000000000.0
142
+ }
143
+ }
144
+ },
145
+ {
146
+ "request-id": "7",
147
+ "source": "trx Bob1",
148
+ "destination": "trx Carol",
149
+ "src-tp-id": "trx Bob1",
150
+ "dst-tp-id": "trx Carol",
151
+ "bidirectional": true,
152
+ "path-constraints": {
153
+ "te-bandwidth": {
154
+ "technology": "flexi-grid",
155
+ "trx_type": "Voyager",
156
+ "trx_mode": "mode 1",
157
+ "spacing": 50000000000.0,
158
+ "path_bandwidth": 100000000000.0
159
+ }
160
+ }
161
+ }
162
+ ],
163
+ "synchronization": [
164
+ {
165
+ "synchronization-id": "1",
166
+ "svec": {
167
+ "relaxable": false,
168
+ "disjointness": "node link",
169
+ "request-id-number": [
170
+ "1",
171
+ "0"
172
+ ]
173
+ }
174
+ }
175
+ ]
176
+ },
177
+ "gnpy-api:topology": {
178
+ "elements": [
179
+ {
180
+ "uid": "trx Alice",
181
+ "type": "Transceiver",
182
+ "metadata": {
183
+ "location": {
184
+ "latitude": 0.0,
185
+ "longitude": 0.0,
186
+ "city": "Alice",
187
+ "region": ""
188
+ }
189
+ }
190
+ },
191
+ {
192
+ "uid": "trx Bob",
193
+ "type": "Transceiver",
194
+ "metadata": {
195
+ "location": {
196
+ "latitude": 0.0,
197
+ "longitude": 0.0,
198
+ "city": "Bob",
199
+ "region": ""
200
+ }
201
+ }
202
+ },
203
+ {
204
+ "uid": "trx Carol",
205
+ "type": "Transceiver",
206
+ "metadata": {
207
+ "location": {
208
+ "latitude": 0.0,
209
+ "longitude": 0.0,
210
+ "city": "Carol",
211
+ "region": ""
212
+ }
213
+ }
214
+ },
215
+ {
216
+ "uid": "trx Bob1",
217
+ "type": "Transceiver",
218
+ "metadata": {
219
+ "location": {
220
+ "latitude": 0.0,
221
+ "longitude": 0.0,
222
+ "city": "Bob",
223
+ "region": ""
224
+ }
225
+ }
226
+ },
227
+ {
228
+ "uid": "trx Carol1",
229
+ "type": "Transceiver",
230
+ "metadata": {
231
+ "location": {
232
+ "latitude": 0.0,
233
+ "longitude": 0.0,
234
+ "city": "Carol",
235
+ "region": ""
236
+ }
237
+ }
238
+ },
239
+ {
240
+ "uid": "roadm Alice",
241
+ "type": "Roadm",
242
+ "params": {
243
+ "target_pch_out_db": -20.0,
244
+ "restrictions": {
245
+ "preamp_variety_list": [],
246
+ "booster_variety_list": []
247
+ }
248
+ },
249
+ "metadata": {
250
+ "location": {
251
+ "latitude": 0.0,
252
+ "longitude": 0.0,
253
+ "city": "Alice",
254
+ "region": ""
255
+ }
256
+ }
257
+ },
258
+ {
259
+ "uid": "roadm Bob",
260
+ "type": "Roadm",
261
+ "params": {
262
+ "target_pch_out_db": -20.0,
263
+ "restrictions": {
264
+ "preamp_variety_list": [],
265
+ "booster_variety_list": []
266
+ }
267
+ },
268
+ "metadata": {
269
+ "location": {
270
+ "latitude": 0.0,
271
+ "longitude": 0.0,
272
+ "city": "Bob",
273
+ "region": ""
274
+ }
275
+ }
276
+ },
277
+ {
278
+ "uid": "roadm Carol",
279
+ "type": "Roadm",
280
+ "params": {
281
+ "target_pch_out_db": -20.0,
282
+ "restrictions": {
283
+ "preamp_variety_list": [],
284
+ "booster_variety_list": []
285
+ }
286
+ },
287
+ "metadata": {
288
+ "location": {
289
+ "latitude": 0.0,
290
+ "longitude": 0.0,
291
+ "city": "Carol",
292
+ "region": ""
293
+ }
294
+ }
295
+ },
296
+ {
297
+ "uid": "roadm Bob1",
298
+ "type": "Roadm",
299
+ "params": {
300
+ "target_pch_out_db": -20.0,
301
+ "restrictions": {
302
+ "preamp_variety_list": [],
303
+ "booster_variety_list": []
304
+ }
305
+ },
306
+ "metadata": {
307
+ "location": {
308
+ "latitude": 0.0,
309
+ "longitude": 0.0,
310
+ "city": "Bob",
311
+ "region": ""
312
+ }
313
+ }
314
+ },
315
+ {
316
+ "uid": "roadm Carol1",
317
+ "type": "Roadm",
318
+ "params": {
319
+ "target_pch_out_db": -20.0,
320
+ "restrictions": {
321
+ "preamp_variety_list": [],
322
+ "booster_variety_list": []
323
+ }
324
+ },
325
+ "metadata": {
326
+ "location": {
327
+ "latitude": 0.0,
328
+ "longitude": 0.0,
329
+ "city": "Carol",
330
+ "region": ""
331
+ }
332
+ }
333
+ },
334
+ {
335
+ "uid": "fiber (Alice → Bob)-",
336
+ "type": "Fiber",
337
+ "type_variety": "SSMF",
338
+ "params": {
339
+ "length": 75.0,
340
+ "loss_coef": 0.2,
341
+ "length_units": "km",
342
+ "att_in": 0.0,
343
+ "con_in": 0.0,
344
+ "con_out": 0.0
345
+ },
346
+ "metadata": {
347
+ "location": {
348
+ "latitude": 0.0,
349
+ "longitude": 0.0,
350
+ "city": "null",
351
+ "region": "null"
352
+ }
353
+ }
354
+ },
355
+ {
356
+ "uid": "fiber (Bob → Carol)-",
357
+ "type": "Fiber",
358
+ "type_variety": "SSMF",
359
+ "params": {
360
+ "length": 80.0,
361
+ "loss_coef": 0.2,
362
+ "length_units": "km",
363
+ "att_in": 0.0,
364
+ "con_in": 0.0,
365
+ "con_out": 0.0
366
+ },
367
+ "metadata": {
368
+ "location": {
369
+ "latitude": 0.0,
370
+ "longitude": 0.0,
371
+ "city": "null",
372
+ "region": "null"
373
+ }
374
+ }
375
+ },
376
+ {
377
+ "uid": "fiber (Bob1 → Carol1)-",
378
+ "type": "Fiber",
379
+ "type_variety": "SSMF",
380
+ "params": {
381
+ "length": 80.0,
382
+ "loss_coef": 0.5,
383
+ "length_units": "km",
384
+ "att_in": 0.0,
385
+ "con_in": 0.0,
386
+ "con_out": 0.0
387
+ },
388
+ "metadata": {
389
+ "location": {
390
+ "latitude": 0.0,
391
+ "longitude": 0.0,
392
+ "city": "null",
393
+ "region": "null"
394
+ }
395
+ }
396
+ },
397
+ {
398
+ "uid": "fiber (Carol → Dan)-",
399
+ "type": "Fiber",
400
+ "type_variety": "SSMF",
401
+ "params": {
402
+ "length": 83.0,
403
+ "loss_coef": 0.2,
404
+ "length_units": "km",
405
+ "att_in": 0.0,
406
+ "con_in": 0.0,
407
+ "con_out": 0.0
408
+ },
409
+ "metadata": {
410
+ "location": {
411
+ "latitude": 0.0,
412
+ "longitude": 0.0,
413
+ "city": "null",
414
+ "region": "null"
415
+ }
416
+ }
417
+ },
418
+ {
419
+ "uid": "fiber (Dan → Alice)-",
420
+ "type": "Fiber",
421
+ "type_variety": "SSMF",
422
+ "params": {
423
+ "length": 60.0,
424
+ "loss_coef": 0.2,
425
+ "length_units": "km",
426
+ "att_in": 0.0,
427
+ "con_in": 0.0,
428
+ "con_out": 0.0
429
+ },
430
+ "metadata": {
431
+ "location": {
432
+ "latitude": 0.0,
433
+ "longitude": 0.0,
434
+ "city": "null",
435
+ "region": "null"
436
+ }
437
+ }
438
+ },
439
+ {
440
+ "uid": "fiber (Bob → Alice)-",
441
+ "type": "Fiber",
442
+ "type_variety": "SSMF",
443
+ "params": {
444
+ "length": 75.0,
445
+ "loss_coef": 0.2,
446
+ "length_units": "km",
447
+ "att_in": 0.0,
448
+ "con_in": 0.0,
449
+ "con_out": 0.0
450
+ },
451
+ "metadata": {
452
+ "location": {
453
+ "latitude": 0.0,
454
+ "longitude": 0.0,
455
+ "city": "null",
456
+ "region": "null"
457
+ }
458
+ }
459
+ },
460
+ {
461
+ "uid": "fiber (Carol → Bob)-",
462
+ "type": "Fiber",
463
+ "type_variety": "SSMF",
464
+ "params": {
465
+ "length": 80.0,
466
+ "loss_coef": 0.2,
467
+ "length_units": "km",
468
+ "att_in": 0.0,
469
+ "con_in": 0.0,
470
+ "con_out": 0.0
471
+ },
472
+ "metadata": {
473
+ "location": {
474
+ "latitude": 0.0,
475
+ "longitude": 0.0,
476
+ "city": "null",
477
+ "region": "null"
478
+ }
479
+ }
480
+ },
481
+ {
482
+ "uid": "fiber (Carol1 → Bob1)-",
483
+ "type": "Fiber",
484
+ "type_variety": "SSMF",
485
+ "params": {
486
+ "length": 80.0,
487
+ "loss_coef": 0.5,
488
+ "length_units": "km",
489
+ "att_in": 0.0,
490
+ "con_in": 0.0,
491
+ "con_out": 0.0
492
+ },
493
+ "metadata": {
494
+ "location": {
495
+ "latitude": 0.0,
496
+ "longitude": 0.0,
497
+ "city": "null",
498
+ "region": "null"
499
+ }
500
+ }
501
+ },
502
+ {
503
+ "uid": "fiber (Dan → Carol)-",
504
+ "type": "Fiber",
505
+ "type_variety": "SSMF",
506
+ "params": {
507
+ "length": 83.0,
508
+ "loss_coef": 0.2,
509
+ "length_units": "km",
510
+ "att_in": 0.0,
511
+ "con_in": 0.0,
512
+ "con_out": 0.0
513
+ },
514
+ "metadata": {
515
+ "location": {
516
+ "latitude": 0.0,
517
+ "longitude": 0.0,
518
+ "city": "null",
519
+ "region": "null"
520
+ }
521
+ }
522
+ },
523
+ {
524
+ "uid": "fiber (Alice → Dan)-",
525
+ "type": "Fiber",
526
+ "type_variety": "SSMF",
527
+ "params": {
528
+ "length": 60.0,
529
+ "loss_coef": 0.2,
530
+ "length_units": "km",
531
+ "att_in": 0.0,
532
+ "con_in": 0.0,
533
+ "con_out": 0.0
534
+ },
535
+ "metadata": {
536
+ "location": {
537
+ "latitude": 0.0,
538
+ "longitude": 0.0,
539
+ "city": "null",
540
+ "region": "null"
541
+ }
542
+ }
543
+ },
544
+ {
545
+ "uid": "east edfa in Alice to Bob",
546
+ "type": "Edfa",
547
+ "type_variety": "std_medium_gain",
548
+ "operational": {
549
+ "gain_target": 18.5,
550
+ "delta_p": -1.5,
551
+ "tilt_target": 0.0,
552
+ "out_voa": 0.0
553
+ },
554
+ "metadata": {
555
+ "location": {
556
+ "latitude": 0.0,
557
+ "longitude": 0.0,
558
+ "city": "Alice",
559
+ "region": ""
560
+ }
561
+ }
562
+ },
563
+ {
564
+ "uid": "east edfa in Bob to Carol",
565
+ "type": "Edfa",
566
+ "type_variety": "std_medium_gain",
567
+ "operational": {
568
+ "gain_target": 19.0,
569
+ "delta_p": -1.0,
570
+ "tilt_target": 0.0,
571
+ "out_voa": 0.0
572
+ },
573
+ "metadata": {
574
+ "location": {
575
+ "latitude": 0.0,
576
+ "longitude": 0.0,
577
+ "city": "Bob",
578
+ "region": ""
579
+ }
580
+ }
581
+ },
582
+ {
583
+ "uid": "east edfa in Bob1 to Carol1",
584
+ "type": "Edfa",
585
+ "type_variety": "std_medium_gain",
586
+ "operational": {
587
+ "gain_target": 19.0,
588
+ "delta_p": -1.0,
589
+ "tilt_target": 0.0,
590
+ "out_voa": 0.0
591
+ },
592
+ "metadata": {
593
+ "location": {
594
+ "latitude": 0.0,
595
+ "longitude": 0.0,
596
+ "city": "Bob",
597
+ "region": ""
598
+ }
599
+ }
600
+ },
601
+ {
602
+ "uid": "east edfa in Carol to Dan",
603
+ "type": "Edfa",
604
+ "type_variety": "std_medium_gain",
605
+ "operational": {
606
+ "gain_target": 19.0,
607
+ "delta_p": -1.0,
608
+ "tilt_target": 0.0,
609
+ "out_voa": 0.0
610
+ },
611
+ "metadata": {
612
+ "location": {
613
+ "latitude": 0.0,
614
+ "longitude": 0.0,
615
+ "city": "Carol",
616
+ "region": ""
617
+ }
618
+ }
619
+ },
620
+ {
621
+ "uid": "east edfa in Dan to Alice",
622
+ "type": "Edfa",
623
+ "type_variety": "std_medium_gain",
624
+ "operational": {
625
+ "gain_target": 15.600000000000001,
626
+ "delta_p": -2.0,
627
+ "tilt_target": 0.0,
628
+ "out_voa": 0.0
629
+ },
630
+ "metadata": {
631
+ "location": {
632
+ "latitude": 0.0,
633
+ "longitude": 0.0,
634
+ "city": "Dan",
635
+ "region": ""
636
+ }
637
+ }
638
+ },
639
+ {
640
+ "uid": "east edfa in Bob to Alice",
641
+ "type": "Edfa",
642
+ "type_variety": "std_medium_gain",
643
+ "operational": {
644
+ "gain_target": 18.5,
645
+ "delta_p": -1.5,
646
+ "tilt_target": 0.0,
647
+ "out_voa": 0.0
648
+ },
649
+ "metadata": {
650
+ "location": {
651
+ "latitude": 0.0,
652
+ "longitude": 0.0,
653
+ "city": "Bob",
654
+ "region": ""
655
+ }
656
+ }
657
+ },
658
+ {
659
+ "uid": "east edfa in Alice to Dan",
660
+ "type": "Edfa",
661
+ "type_variety": "std_medium_gain",
662
+ "operational": {
663
+ "gain_target": 18.0,
664
+ "delta_p": -2.0,
665
+ "tilt_target": 0.0,
666
+ "out_voa": 0.0
667
+ },
668
+ "metadata": {
669
+ "location": {
670
+ "latitude": 0.0,
671
+ "longitude": 0.0,
672
+ "city": "Alice",
673
+ "region": ""
674
+ }
675
+ }
676
+ },
677
+ {
678
+ "uid": "east edfa in Carol to Bob",
679
+ "type": "Edfa",
680
+ "type_variety": "std_medium_gain",
681
+ "operational": {
682
+ "gain_target": 19.0,
683
+ "delta_p": -1.0,
684
+ "tilt_target": 0.0,
685
+ "out_voa": 0.0
686
+ },
687
+ "metadata": {
688
+ "location": {
689
+ "latitude": 0.0,
690
+ "longitude": 0.0,
691
+ "city": "Carol",
692
+ "region": ""
693
+ }
694
+ }
695
+ },
696
+ {
697
+ "uid": "east edfa in Carol1 to Bob1",
698
+ "type": "Edfa",
699
+ "type_variety": "std_medium_gain",
700
+ "operational": {
701
+ "gain_target": 19.0,
702
+ "delta_p": -1.0,
703
+ "tilt_target": 0.0,
704
+ "out_voa": 0.0
705
+ },
706
+ "metadata": {
707
+ "location": {
708
+ "latitude": 0.0,
709
+ "longitude": 0.0,
710
+ "city": "Carol",
711
+ "region": ""
712
+ }
713
+ }
714
+ },
715
+ {
716
+ "uid": "west edfa in Alice to Bob",
717
+ "type": "Edfa",
718
+ "type_variety": "std_medium_gain",
719
+ "operational": {
720
+ "gain_target": 16.5,
721
+ "delta_p": 0.0,
722
+ "tilt_target": 0.0,
723
+ "out_voa": 0.0
724
+ },
725
+ "metadata": {
726
+ "location": {
727
+ "latitude": 0.0,
728
+ "longitude": 0.0,
729
+ "city": "Alice",
730
+ "region": ""
731
+ }
732
+ }
733
+ },
734
+ {
735
+ "uid": "west edfa in Bob to Carol",
736
+ "type": "Edfa",
737
+ "type_variety": "std_medium_gain",
738
+ "operational": {
739
+ "gain_target": 17.0,
740
+ "delta_p": 0.0,
741
+ "tilt_target": 0.0,
742
+ "out_voa": 0.0
743
+ },
744
+ "metadata": {
745
+ "location": {
746
+ "latitude": 0.0,
747
+ "longitude": 0.0,
748
+ "city": "Bob",
749
+ "region": ""
750
+ }
751
+ }
752
+ },
753
+ {
754
+ "uid": "west edfa in Bob1 to Carol1",
755
+ "type": "Edfa",
756
+ "type_variety": "std_medium_gain",
757
+ "operational": {
758
+ "gain_target": 17.0,
759
+ "delta_p": 0.0,
760
+ "tilt_target": 0.0,
761
+ "out_voa": 0.0
762
+ },
763
+ "metadata": {
764
+ "location": {
765
+ "latitude": 0.0,
766
+ "longitude": 0.0,
767
+ "city": "Bob",
768
+ "region": ""
769
+ }
770
+ }
771
+ },
772
+ {
773
+ "uid": "west edfa in Carol to Dan",
774
+ "type": "Edfa",
775
+ "type_variety": "std_medium_gain",
776
+ "operational": {
777
+ "gain_target": 17.6,
778
+ "delta_p": 0.0,
779
+ "tilt_target": 0.0,
780
+ "out_voa": 0.0
781
+ },
782
+ "metadata": {
783
+ "location": {
784
+ "latitude": 0.0,
785
+ "longitude": 0.0,
786
+ "city": "Carol",
787
+ "region": ""
788
+ }
789
+ }
790
+ },
791
+ {
792
+ "uid": "west edfa in Dan to Alice",
793
+ "type": "Edfa",
794
+ "type_variety": "std_medium_gain",
795
+ "operational": {
796
+ "gain_target": 13.0,
797
+ "delta_p": -1.0,
798
+ "tilt_target": 0.0,
799
+ "out_voa": 0.0
800
+ },
801
+ "metadata": {
802
+ "location": {
803
+ "latitude": 0.0,
804
+ "longitude": 0.0,
805
+ "city": "Dan",
806
+ "region": ""
807
+ }
808
+ }
809
+ },
810
+ {
811
+ "uid": "west edfa in Bob to Alice",
812
+ "type": "Edfa",
813
+ "type_variety": "std_medium_gain",
814
+ "operational": {
815
+ "gain_target": 16.5,
816
+ "delta_p": 0.0,
817
+ "tilt_target": 0.0,
818
+ "out_voa": 0.0
819
+ },
820
+ "metadata": {
821
+ "location": {
822
+ "latitude": 0.0,
823
+ "longitude": 0.0,
824
+ "city": "Bob",
825
+ "region": ""
826
+ }
827
+ }
828
+ },
829
+ {
830
+ "uid": "west edfa in Alice to Dan",
831
+ "type": "Edfa",
832
+ "type_variety": "std_medium_gain",
833
+ "operational": {
834
+ "gain_target": 14.0,
835
+ "delta_p": 0.0,
836
+ "tilt_target": 0.0,
837
+ "out_voa": 0.0
838
+ },
839
+ "metadata": {
840
+ "location": {
841
+ "latitude": 0.0,
842
+ "longitude": 0.0,
843
+ "city": "Alice",
844
+ "region": ""
845
+ }
846
+ }
847
+ },
848
+ {
849
+ "uid": "west edfa in Carol to Bob",
850
+ "type": "Edfa",
851
+ "type_variety": "std_medium_gain",
852
+ "operational": {
853
+ "gain_target": 17.0,
854
+ "delta_p": 0.0,
855
+ "tilt_target": 0.0,
856
+ "out_voa": 0.0
857
+ },
858
+ "metadata": {
859
+ "location": {
860
+ "latitude": 0.0,
861
+ "longitude": 0.0,
862
+ "city": "Carol",
863
+ "region": ""
864
+ }
865
+ }
866
+ },
867
+ {
868
+ "uid": "west edfa in Carol1 to Bob1",
869
+ "type": "Edfa",
870
+ "type_variety": "std_medium_gain",
871
+ "operational": {
872
+ "gain_target": 17.0,
873
+ "delta_p": 0.0,
874
+ "tilt_target": 0.0,
875
+ "out_voa": 0.0
876
+ },
877
+ "metadata": {
878
+ "location": {
879
+ "latitude": 0.0,
880
+ "longitude": 0.0,
881
+ "city": "Carol",
882
+ "region": ""
883
+ }
884
+ }
885
+ }
886
+ ],
887
+ "connections": [
888
+ {
889
+ "from_node": "trx Alice",
890
+ "to_node": "roadm Alice"
891
+ },
892
+ {
893
+ "from_node": "trx Bob",
894
+ "to_node": "roadm Bob"
895
+ },
896
+ {
897
+ "from_node": "trx Bob1",
898
+ "to_node": "roadm Bob1"
899
+ },
900
+ {
901
+ "from_node": "trx Carol",
902
+ "to_node": "roadm Carol"
903
+ },
904
+ {
905
+ "from_node": "trx Carol1",
906
+ "to_node": "roadm Carol1"
907
+ },
908
+ {
909
+ "from_node": "roadm Alice",
910
+ "to_node": "east edfa in Alice to Bob"
911
+ },
912
+ {
913
+ "from_node": "roadm Alice",
914
+ "to_node": "east edfa in Alice to Dan"
915
+ },
916
+ {
917
+ "from_node": "roadm Alice",
918
+ "to_node": "trx Alice"
919
+ },
920
+ {
921
+ "from_node": "roadm Bob",
922
+ "to_node": "east edfa in Bob to Alice"
923
+ },
924
+ {
925
+ "from_node": "roadm Bob1",
926
+ "to_node": "east edfa in Bob1 to Carol1"
927
+ },
928
+ {
929
+ "from_node": "roadm Bob",
930
+ "to_node": "east edfa in Bob to Carol"
931
+ },
932
+ {
933
+ "from_node": "roadm Bob",
934
+ "to_node": "trx Bob"
935
+ },
936
+ {
937
+ "from_node": "roadm Bob1",
938
+ "to_node": "trx Bob1"
939
+ },
940
+ {
941
+ "from_node": "roadm Carol",
942
+ "to_node": "east edfa in Carol to Bob"
943
+ },
944
+ {
945
+ "from_node": "roadm Carol1",
946
+ "to_node": "east edfa in Carol1 to Bob1"
947
+ },
948
+ {
949
+ "from_node": "roadm Carol",
950
+ "to_node": "east edfa in Carol to Dan"
951
+ },
952
+ {
953
+ "from_node": "roadm Carol",
954
+ "to_node": "trx Carol"
955
+ },
956
+ {
957
+ "from_node": "roadm Carol1",
958
+ "to_node": "trx Carol1"
959
+ },
960
+ {
961
+ "from_node": "fiber (Alice → Bob)-",
962
+ "to_node": "west edfa in Bob to Alice"
963
+ },
964
+ {
965
+ "from_node": "fiber (Bob → Carol)-",
966
+ "to_node": "west edfa in Carol to Bob"
967
+ },
968
+ {
969
+ "from_node": "fiber (Bob1 → Carol1)-",
970
+ "to_node": "west edfa in Carol1 to Bob1"
971
+ },
972
+ {
973
+ "from_node": "fiber (Carol → Dan)-",
974
+ "to_node": "east edfa in Dan to Alice"
975
+ },
976
+ {
977
+ "from_node": "fiber (Dan → Alice)-",
978
+ "to_node": "west edfa in Alice to Dan"
979
+ },
980
+ {
981
+ "from_node": "fiber (Bob → Alice)-",
982
+ "to_node": "west edfa in Alice to Bob"
983
+ },
984
+ {
985
+ "from_node": "fiber (Carol → Bob)-",
986
+ "to_node": "west edfa in Bob to Carol"
987
+ },
988
+ {
989
+ "from_node": "fiber (Carol1 → Bob1)-",
990
+ "to_node": "west edfa in Bob1 to Carol1"
991
+ },
992
+ {
993
+ "from_node": "fiber (Dan → Carol)-",
994
+ "to_node": "west edfa in Carol to Dan"
995
+ },
996
+ {
997
+ "from_node": "fiber (Alice → Dan)-",
998
+ "to_node": "west edfa in Dan to Alice"
999
+ },
1000
+ {
1001
+ "from_node": "east edfa in Alice to Bob",
1002
+ "to_node": "fiber (Alice → Bob)-"
1003
+ },
1004
+ {
1005
+ "from_node": "east edfa in Bob to Carol",
1006
+ "to_node": "fiber (Bob → Carol)-"
1007
+ },
1008
+ {
1009
+ "from_node": "east edfa in Bob1 to Carol1",
1010
+ "to_node": "fiber (Bob1 → Carol1)-"
1011
+ },
1012
+ {
1013
+ "from_node": "east edfa in Carol to Dan",
1014
+ "to_node": "fiber (Carol → Dan)-"
1015
+ },
1016
+ {
1017
+ "from_node": "east edfa in Dan to Alice",
1018
+ "to_node": "fiber (Dan → Alice)-"
1019
+ },
1020
+ {
1021
+ "from_node": "east edfa in Bob to Alice",
1022
+ "to_node": "fiber (Bob → Alice)-"
1023
+ },
1024
+ {
1025
+ "from_node": "east edfa in Alice to Dan",
1026
+ "to_node": "fiber (Alice → Dan)-"
1027
+ },
1028
+ {
1029
+ "from_node": "east edfa in Carol to Bob",
1030
+ "to_node": "fiber (Carol → Bob)-"
1031
+ },
1032
+ {
1033
+ "from_node": "east edfa in Carol1 to Bob1",
1034
+ "to_node": "fiber (Carol1 → Bob1)-"
1035
+ },
1036
+ {
1037
+ "from_node": "west edfa in Alice to Bob",
1038
+ "to_node": "roadm Alice"
1039
+ },
1040
+ {
1041
+ "from_node": "west edfa in Bob to Carol",
1042
+ "to_node": "roadm Bob"
1043
+ },
1044
+ {
1045
+ "from_node": "west edfa in Bob1 to Carol1",
1046
+ "to_node": "roadm Bob1"
1047
+ },
1048
+ {
1049
+ "from_node": "west edfa in Bob1 to Carol1",
1050
+ "to_node": "roadm Bob1"
1051
+ },
1052
+ {
1053
+ "from_node": "west edfa in Carol to Dan",
1054
+ "to_node": "roadm Carol"
1055
+ },
1056
+ {
1057
+ "from_node": "west edfa in Dan to Alice",
1058
+ "to_node": "fiber (Dan → Carol)-"
1059
+ },
1060
+ {
1061
+ "from_node": "west edfa in Bob to Alice",
1062
+ "to_node": "roadm Bob"
1063
+ },
1064
+ {
1065
+ "from_node": "west edfa in Alice to Dan",
1066
+ "to_node": "roadm Alice"
1067
+ },
1068
+ {
1069
+ "from_node": "west edfa in Carol to Bob",
1070
+ "to_node": "roadm Carol"
1071
+ },
1072
+ {
1073
+ "from_node": "west edfa in Carol1 to Bob1",
1074
+ "to_node": "roadm Carol1"
1075
+ }
1076
+ ]
1077
+ },
1078
+ "gnpy-api:equipment": {
1079
+ "Edfa": [
1080
+ {
1081
+ "type_variety": "high_detail_model_example",
1082
+ "type_def": "advanced_model",
1083
+ "gain_flatmax": 25,
1084
+ "gain_min": 15,
1085
+ "p_max": 21,
1086
+ "advanced_config_from_json": "std_medium_gain_advanced_config.json",
1087
+ "out_voa_auto": false,
1088
+ "allowed_for_design": false
1089
+ },
1090
+ {
1091
+ "type_variety": "Juniper_BoosterHG",
1092
+ "type_def": "advanced_model",
1093
+ "gain_flatmax": 25,
1094
+ "gain_min": 10,
1095
+ "p_max": 21,
1096
+ "advanced_config_from_json": "Juniper-BoosterHG.json",
1097
+ "out_voa_auto": false,
1098
+ "allowed_for_design": false
1099
+ },
1100
+ {
1101
+ "type_variety": "operator_model_example",
1102
+ "type_def": "variable_gain",
1103
+ "gain_flatmax": 26,
1104
+ "gain_min": 15,
1105
+ "p_max": 23,
1106
+ "nf_min": 6,
1107
+ "nf_max": 10,
1108
+ "out_voa_auto": false,
1109
+ "allowed_for_design": false
1110
+ },
1111
+ {
1112
+ "type_variety": "low_noise",
1113
+ "type_def": "openroadm",
1114
+ "gain_flatmax": 27,
1115
+ "gain_min": 12,
1116
+ "p_max": 22,
1117
+ "nf_coef": [
1118
+ -8.104e-4,
1119
+ -6.221e-2,
1120
+ -5.889e-1,
1121
+ 37.62
1122
+ ],
1123
+ "allowed_for_design": false
1124
+ },
1125
+ {
1126
+ "type_variety": "standard",
1127
+ "type_def": "openroadm",
1128
+ "gain_flatmax": 27,
1129
+ "gain_min": 12,
1130
+ "p_max": 22,
1131
+ "nf_coef": [
1132
+ -5.952e-4,
1133
+ -6.250e-2,
1134
+ -1.071,
1135
+ 28.99
1136
+ ],
1137
+ "allowed_for_design": false
1138
+ },
1139
+ {
1140
+ "type_variety": "std_high_gain",
1141
+ "type_def": "variable_gain",
1142
+ "gain_flatmax": 35,
1143
+ "gain_min": 25,
1144
+ "p_max": 21,
1145
+ "nf_min": 5.5,
1146
+ "nf_max": 7,
1147
+ "out_voa_auto": false,
1148
+ "allowed_for_design": true
1149
+ },
1150
+ {
1151
+ "type_variety": "std_medium_gain",
1152
+ "type_def": "variable_gain",
1153
+ "gain_flatmax": 26,
1154
+ "gain_min": 15,
1155
+ "p_max": 23,
1156
+ "nf_min": 6,
1157
+ "nf_max": 10,
1158
+ "out_voa_auto": false,
1159
+ "allowed_for_design": true
1160
+ },
1161
+ {
1162
+ "type_variety": "std_low_gain",
1163
+ "type_def": "variable_gain",
1164
+ "gain_flatmax": 16,
1165
+ "gain_min": 8,
1166
+ "p_max": 23,
1167
+ "nf_min": 6.5,
1168
+ "nf_max": 11,
1169
+ "out_voa_auto": false,
1170
+ "allowed_for_design": true
1171
+ },
1172
+ {
1173
+ "type_variety": "high_power",
1174
+ "type_def": "variable_gain",
1175
+ "gain_flatmax": 16,
1176
+ "gain_min": 8,
1177
+ "p_max": 25,
1178
+ "nf_min": 9,
1179
+ "nf_max": 15,
1180
+ "out_voa_auto": false,
1181
+ "allowed_for_design": false
1182
+ },
1183
+ {
1184
+ "type_variety": "std_fixed_gain",
1185
+ "type_def": "fixed_gain",
1186
+ "gain_flatmax": 21,
1187
+ "gain_min": 20,
1188
+ "p_max": 21,
1189
+ "nf0": 5.5,
1190
+ "allowed_for_design": false
1191
+ },
1192
+ {
1193
+ "type_variety": "4pumps_raman",
1194
+ "type_def": "fixed_gain",
1195
+ "gain_flatmax": 12,
1196
+ "gain_min": 12,
1197
+ "p_max": 21,
1198
+ "nf0": -1,
1199
+ "allowed_for_design": false
1200
+ },
1201
+ {
1202
+ "type_variety": "hybrid_4pumps_lowgain",
1203
+ "type_def": "dual_stage",
1204
+ "raman": true,
1205
+ "gain_min": 25,
1206
+ "preamp_variety": "4pumps_raman",
1207
+ "booster_variety": "std_low_gain",
1208
+ "allowed_for_design": true
1209
+ },
1210
+ {
1211
+ "type_variety": "hybrid_4pumps_mediumgain",
1212
+ "type_def": "dual_stage",
1213
+ "raman": true,
1214
+ "gain_min": 25,
1215
+ "preamp_variety": "4pumps_raman",
1216
+ "booster_variety": "std_medium_gain",
1217
+ "allowed_for_design": true
1218
+ },
1219
+ {
1220
+ "type_variety": "medium+low_gain",
1221
+ "type_def": "dual_stage",
1222
+ "gain_min": 25,
1223
+ "preamp_variety": "std_medium_gain",
1224
+ "booster_variety": "std_low_gain",
1225
+ "allowed_for_design": true
1226
+ },
1227
+ {
1228
+ "type_variety": "medium+high_power",
1229
+ "type_def": "dual_stage",
1230
+ "gain_min": 25,
1231
+ "preamp_variety": "std_medium_gain",
1232
+ "booster_variety": "high_power",
1233
+ "allowed_for_design": false
1234
+ }
1235
+ ],
1236
+ "Fiber": [
1237
+ {
1238
+ "type_variety": "SSMF",
1239
+ "dispersion": 1.67e-05,
1240
+ "gamma": 0.00127,
1241
+ "pmd_coef": 1.265e-15
1242
+ },
1243
+ {
1244
+ "type_variety": "NZDF",
1245
+ "dispersion": 0.5e-05,
1246
+ "gamma": 0.00146,
1247
+ "pmd_coef": 1.265e-15
1248
+ },
1249
+ {
1250
+ "type_variety": "LOF",
1251
+ "dispersion": 2.2e-05,
1252
+ "gamma": 0.000843,
1253
+ "pmd_coef": 1.265e-15
1254
+ }
1255
+ ],
1256
+ "RamanFiber": [
1257
+ {
1258
+ "type_variety": "SSMF",
1259
+ "dispersion": 1.67e-05,
1260
+ "gamma": 0.00127,
1261
+ "pmd_coef": 1.265e-15,
1262
+ "raman_efficiency": {
1263
+ "cr": [
1264
+ 0,
1265
+ 9.4E-06,
1266
+ 2.92E-05,
1267
+ 4.88E-05,
1268
+ 6.82E-05,
1269
+ 8.31E-05,
1270
+ 9.4E-05,
1271
+ 0.0001014,
1272
+ 0.0001069,
1273
+ 0.0001119,
1274
+ 0.0001217,
1275
+ 0.0001268,
1276
+ 0.0001365,
1277
+ 0.000149,
1278
+ 0.000165,
1279
+ 0.000181,
1280
+ 0.0001977,
1281
+ 0.0002192,
1282
+ 0.0002469,
1283
+ 0.0002749,
1284
+ 0.0002999,
1285
+ 0.0003206,
1286
+ 0.0003405,
1287
+ 0.0003592,
1288
+ 0.000374,
1289
+ 0.0003826,
1290
+ 0.0003841,
1291
+ 0.0003826,
1292
+ 0.0003802,
1293
+ 0.0003756,
1294
+ 0.0003549,
1295
+ 0.0003795,
1296
+ 0.000344,
1297
+ 0.0002933,
1298
+ 0.0002024,
1299
+ 0.0001158,
1300
+ 8.46E-05,
1301
+ 7.14E-05,
1302
+ 6.86E-05,
1303
+ 8.5E-05,
1304
+ 8.93E-05,
1305
+ 9.01E-05,
1306
+ 8.15E-05,
1307
+ 6.67E-05,
1308
+ 4.37E-05,
1309
+ 3.28E-05,
1310
+ 2.96E-05,
1311
+ 2.65E-05,
1312
+ 2.57E-05,
1313
+ 2.81E-05,
1314
+ 3.08E-05,
1315
+ 3.67E-05,
1316
+ 5.85E-05,
1317
+ 6.63E-05,
1318
+ 6.36E-05,
1319
+ 5.5E-05,
1320
+ 4.06E-05,
1321
+ 2.77E-05,
1322
+ 2.42E-05,
1323
+ 1.87E-05,
1324
+ 1.6E-05,
1325
+ 1.4E-05,
1326
+ 1.13E-05,
1327
+ 1.05E-05,
1328
+ 9.8E-06,
1329
+ 9.8E-06,
1330
+ 1.13E-05,
1331
+ 1.64E-05,
1332
+ 1.95E-05,
1333
+ 2.38E-05,
1334
+ 2.26E-05,
1335
+ 2.03E-05,
1336
+ 1.48E-05,
1337
+ 1.09E-05,
1338
+ 9.8E-06,
1339
+ 1.05E-05,
1340
+ 1.17E-05,
1341
+ 1.25E-05,
1342
+ 1.21E-05,
1343
+ 1.09E-05,
1344
+ 9.8E-06,
1345
+ 8.2E-06,
1346
+ 6.6E-06,
1347
+ 4.7E-06,
1348
+ 2.7E-06,
1349
+ 1.9E-06,
1350
+ 1.2E-06,
1351
+ 4E-07,
1352
+ 2E-07,
1353
+ 1E-07
1354
+ ],
1355
+ "frequency_offset": [
1356
+ 0,
1357
+ 0.5e12,
1358
+ 1e12,
1359
+ 1.5e12,
1360
+ 2e12,
1361
+ 2.5e12,
1362
+ 3e12,
1363
+ 3.5e12,
1364
+ 4e12,
1365
+ 4.5e12,
1366
+ 5e12,
1367
+ 5.5e12,
1368
+ 6e12,
1369
+ 6.5e12,
1370
+ 7e12,
1371
+ 7.5e12,
1372
+ 8e12,
1373
+ 8.5e12,
1374
+ 9e12,
1375
+ 9.5e12,
1376
+ 10e12,
1377
+ 10.5e12,
1378
+ 11e12,
1379
+ 11.5e12,
1380
+ 12e12,
1381
+ 12.5e12,
1382
+ 12.75e12,
1383
+ 13e12,
1384
+ 13.25e12,
1385
+ 13.5e12,
1386
+ 14e12,
1387
+ 14.5e12,
1388
+ 14.75e12,
1389
+ 15e12,
1390
+ 15.5e12,
1391
+ 16e12,
1392
+ 16.5e12,
1393
+ 17e12,
1394
+ 17.5e12,
1395
+ 18e12,
1396
+ 18.25e12,
1397
+ 18.5e12,
1398
+ 18.75e12,
1399
+ 19e12,
1400
+ 19.5e12,
1401
+ 20e12,
1402
+ 20.5e12,
1403
+ 21e12,
1404
+ 21.5e12,
1405
+ 22e12,
1406
+ 22.5e12,
1407
+ 23e12,
1408
+ 23.5e12,
1409
+ 24e12,
1410
+ 24.5e12,
1411
+ 25e12,
1412
+ 25.5e12,
1413
+ 26e12,
1414
+ 26.5e12,
1415
+ 27e12,
1416
+ 27.5e12,
1417
+ 28e12,
1418
+ 28.5e12,
1419
+ 29e12,
1420
+ 29.5e12,
1421
+ 30e12,
1422
+ 30.5e12,
1423
+ 31e12,
1424
+ 31.5e12,
1425
+ 32e12,
1426
+ 32.5e12,
1427
+ 33e12,
1428
+ 33.5e12,
1429
+ 34e12,
1430
+ 34.5e12,
1431
+ 35e12,
1432
+ 35.5e12,
1433
+ 36e12,
1434
+ 36.5e12,
1435
+ 37e12,
1436
+ 37.5e12,
1437
+ 38e12,
1438
+ 38.5e12,
1439
+ 39e12,
1440
+ 39.5e12,
1441
+ 40e12,
1442
+ 40.5e12,
1443
+ 41e12,
1444
+ 41.5e12,
1445
+ 42e12
1446
+ ]
1447
+ }
1448
+ }
1449
+ ],
1450
+ "Span": [
1451
+ {
1452
+ "power_mode": true,
1453
+ "delta_power_range_db": [
1454
+ -2,
1455
+ 3,
1456
+ 0.5
1457
+ ],
1458
+ "max_fiber_lineic_loss_for_raman": 0.25,
1459
+ "target_extended_gain": 2.5,
1460
+ "max_length": 150,
1461
+ "length_units": "km",
1462
+ "max_loss": 28,
1463
+ "padding": 10,
1464
+ "EOL": 0,
1465
+ "con_in": 0,
1466
+ "con_out": 0
1467
+ }
1468
+ ],
1469
+ "Roadm": [
1470
+ {
1471
+ "target_pch_out_db": -20,
1472
+ "add_drop_osnr": 38,
1473
+ "pmd": 0,
1474
+ "restrictions": {
1475
+ "preamp_variety_list": [],
1476
+ "booster_variety_list": []
1477
+ }
1478
+ }
1479
+ ],
1480
+ "SI": [
1481
+ {
1482
+ "f_min": 191.3e12,
1483
+ "baud_rate": 32e9,
1484
+ "f_max": 195.1e12,
1485
+ "spacing": 50e9,
1486
+ "power_dbm": 0,
1487
+ "power_range_db": [
1488
+ 0,
1489
+ 0,
1490
+ 1
1491
+ ],
1492
+ "roll_off": 0.15,
1493
+ "tx_osnr": 40,
1494
+ "sys_margins": 2
1495
+ }
1496
+ ],
1497
+ "Transceiver": [
1498
+ {
1499
+ "type_variety": "vendorA_trx-type1",
1500
+ "frequency": {
1501
+ "min": 191.35e12,
1502
+ "max": 196.1e12
1503
+ },
1504
+ "mode": [
1505
+ {
1506
+ "format": "mode 1",
1507
+ "baud_rate": 32e9,
1508
+ "OSNR": 11,
1509
+ "bit_rate": 100e9,
1510
+ "roll_off": 0.15,
1511
+ "tx_osnr": 40,
1512
+ "min_spacing": 37.5e9,
1513
+ "cost": 1
1514
+ },
1515
+ {
1516
+ "format": "mode 2",
1517
+ "baud_rate": 66e9,
1518
+ "OSNR": 15,
1519
+ "bit_rate": 200e9,
1520
+ "roll_off": 0.15,
1521
+ "tx_osnr": 40,
1522
+ "min_spacing": 75e9,
1523
+ "cost": 1
1524
+ }
1525
+ ]
1526
+ },
1527
+ {
1528
+ "type_variety": "Voyager",
1529
+ "frequency": {
1530
+ "min": 191.35e12,
1531
+ "max": 196.1e12
1532
+ },
1533
+ "mode": [
1534
+ {
1535
+ "format": "mode 1",
1536
+ "baud_rate": 32e9,
1537
+ "OSNR": 12,
1538
+ "bit_rate": 100e9,
1539
+ "roll_off": 0.15,
1540
+ "tx_osnr": 40,
1541
+ "min_spacing": 37.5e9,
1542
+ "cost": 1
1543
+ },
1544
+ {
1545
+ "format": "mode 3",
1546
+ "baud_rate": 44e9,
1547
+ "OSNR": 18,
1548
+ "bit_rate": 300e9,
1549
+ "roll_off": 0.15,
1550
+ "tx_osnr": 40,
1551
+ "min_spacing": 62.5e9,
1552
+ "cost": 1
1553
+ },
1554
+ {
1555
+ "format": "mode 2",
1556
+ "baud_rate": 66e9,
1557
+ "OSNR": 21,
1558
+ "bit_rate": 400e9,
1559
+ "roll_off": 0.15,
1560
+ "tx_osnr": 40,
1561
+ "min_spacing": 75e9,
1562
+ "cost": 1
1563
+ },
1564
+ {
1565
+ "format": "mode 4",
1566
+ "baud_rate": 66e9,
1567
+ "OSNR": 16,
1568
+ "bit_rate": 200e9,
1569
+ "roll_off": 0.15,
1570
+ "tx_osnr": 40,
1571
+ "min_spacing": 75e9,
1572
+ "cost": 1
1573
+ }
1574
+ ]
1575
+ }
1576
+ ]
1577
+ }
1578
+ }