@@ -341,10 +341,18 @@ class LLM(Parser):
341
341
"type": "string",
342
342
}
343
343
}
344
+ "backup_windows": {
345
+ type: "array",
346
+ "items": {
347
+ "type": "datetime",
348
+ }
349
+ }
344
350
}
345
351
More context:
346
352
* Circuit IDs are also known as service or order
347
353
* Status could be confirmed, ongoing, cancelled, completed or rescheduled
354
+ * If you see any other backup windows, create a new list entry for each pair of start/end seen there.
355
+ * If no backup windows are found. leave the backup_windows list empty.
348
356
"""
349
357
350
358
def parser_hook (self , raw : bytes , content_type : str ):
@@ -487,7 +495,10 @@ def parse_content(self, content):
487
495
488
496
impact = self ._get_impact (generated_json )
489
497
490
- data = {
498
+ # Main maintenance entry
499
+ data_list = []
500
+
501
+ main_data = {
491
502
"circuits" : self ._get_circuit_ids (generated_json , impact ),
492
503
"start" : int (self ._get_start (generated_json )),
493
504
"end" : int (self ._get_end (generated_json )),
@@ -496,16 +507,46 @@ def parse_content(self, content):
496
507
"account" : str (self ._get_account (generated_json )),
497
508
}
498
509
499
- data ["maintenance_id" ] = str (
510
+ # Generate maintenance ID for main window
511
+ main_data ["maintenance_id" ] = str (
500
512
self ._get_maintenance_id (
501
513
generated_json ,
502
- data ["start" ],
503
- data ["end" ],
504
- data ["circuits" ],
514
+ main_data ["start" ],
515
+ main_data ["end" ],
516
+ main_data ["circuits" ],
505
517
)
506
518
)
507
519
508
- return [data ]
520
+ data_list .append (main_data )
521
+
522
+ # Process backup windows
523
+ for window in generated_json .get ("backup_windows" , []):
524
+ if "start" in window and "end" in window :
525
+ backup_start = self ._convert_str_datetime_to_epoch (window ["start" ])
526
+ backup_end = self ._convert_str_datetime_to_epoch (window ["end" ])
527
+
528
+ backup_data = {
529
+ "circuits" : main_data ["circuits" ], # Same circuits
530
+ "start" : backup_start ,
531
+ "end" : backup_end ,
532
+ "summary" : main_data ["summary" ],
533
+ "status" : main_data ["status" ],
534
+ "account" : main_data ["account" ],
535
+ }
536
+
537
+ # Generate a new maintenance ID for the backup window
538
+ backup_data ["maintenance_id" ] = str (
539
+ self ._get_maintenance_id (
540
+ generated_json ,
541
+ backup_start ,
542
+ backup_end ,
543
+ backup_data ["circuits" ],
544
+ )
545
+ )
546
+
547
+ data_list .append (backup_data )
548
+
549
+ return data_list # Returning a list with main and backup windows
509
550
510
551
511
552
class Xlsx (Parser ):
0 commit comments