Skip to content

Commit 35dcb30

Browse files
committed
Add 'Cancelled' status for Lumen
1 parent cac60ac commit 35dcb30

File tree

4 files changed

+204
-1
lines changed

4 files changed

+204
-1
lines changed

circuit_maintenance_parser/parsers/lumen.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ def parse_tables(self, tables: ResultSet, data: Dict):
9393
data["status"] = Status("COMPLETED")
9494
elif status_string == "Postponed":
9595
data["status"] = Status("RE-SCHEDULED")
96-
elif status_string == "Not Completed":
96+
elif status_string in ["Not Completed", "Cancelled"]:
9797
data["status"] = Status("CANCELLED")
9898
elif status_string == "Alternate Night":
9999
data["status"] = Status("RE-SCHEDULED")

tests/unit/data/lumen/lumen7.html

Lines changed: 181 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,181 @@
1+
<html><head>
2+
<style type=3D"text/css"> BODY { font-family: Arial; font-size:10pt;} </st=
3+
yle>
4+
<style type=3D"text/css"> TD { font-family: Arial; font-size: 8pt;} </styl=
5+
e>
6+
<style type=3D"text/css"> .headerRow { text-align: left; font-size:8pt; fon=
7+
t-weight:bold; white-space:nowrap; background-color: #cccccc; } </style>
8+
<style type=3D"text/css"> .busOrg { text-align: left; font-size:10pt; font-=
9+
weight:bold; } </style>
10+
<style type=3D"text/css"> span.changeControl { font-size:11pt; font-weight:=
11+
bold; } </style>
12+
<style type=3D"text/css"> span.maintenanceAdvisement{ font-size:10.5pt; col=
13+
or:red; font-weight:bold; text-transform:uppercase; } </style>
14+
<style type=3D"text/css"> span.headerSummary{ font-size:10.5pt; text-decora=
15+
tion: underline; font-weight:bold; } </style>
16+
<style type=3D"text/css"> span.gcrHeading{ font-size:12pt; font-weight:bold=
17+
; } </style>
18+
<style type=3D"text/css"> span.bodyHeading{ font-size:12pt; font-weight:bol=
19+
d; } </style>
20+
<style type=3D"text/css"> span.windowHeader { font-weight:normal; font-size=
21+
:10pt; } </style>
22+
<style type=3D"text/css"> span.windowLabel { font-weight:bold; color:#00000=
23+
0 } </style>
24+
<style type=3D"text/css"> span.summaryRow { text-align: center; font-family=
25+
: Arial ;font-size:10pt; text-align: left; } </style>
26+
<style type=3D"text/css"> span.primaryDates { color:red } span.thankYou { f=
27+
ont-size:10.5pt; font-weight:bold; } </style>
28+
<style type=3D"text/css"> span.footerText { font-size:8.5pt; font-family:Ar=
29+
ial; } </style>
30+
<style type=3D"text/css"> span.redBoldUpper { color:red; font-weight:bold;=
31+
text-transform:uppercase; } </style>
32+
<style type=3D"text/css"> span.windowtimeframe { font-family: Arial; font-s=
33+
ize:10pt;} </style>
34+
<style type=3D"text/css"> div.impactMatrix { padding-left:10px } </style>
35+
<style type=3D"text/css"> .footerLabel { font-weight:bold; text-align: lef=
36+
t; white-space:nowrap; width:40%; vertical-align:text-top; } </style>
37+
<style type=3D"text/css"> table.footerContact { font-size:9pt; font-family:=
38+
Arial; } </style>
39+
<style type=3D"text/css"> tr.footerContact { text-align: left; white-space=
40+
:nowrap; } </style>
41+
<style type=3D"text/css"> tr.contentRow { text-align: left; font-size:9pt; =
42+
white-space:nowrap; } </style>
43+
<style type=3D"text/css"> td.contacts { padding:.75pt .75pt .75pt .75pt; fo=
44+
nt-family: Arial; font-size:8.5pt; } </style>
45+
<style type=3D"text/css"> td.questions { padding:.75pt .75pt .75pt .75pt; f=
46+
ont-family: Arial; font-size:9.5pt; } </style>
47+
</head>
48+
<body>
49+
<div style=3D"overflow: hidden; ">
50+
<br>
51+
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img alt=3D"Lumen" src=3D"data:image/png;base=
52+
64,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3D" style=3D"position: =
82+
relative; ">
83+
</div>
84+
<br>
85+
<span class=3D"bodyHeading">
86+
Scheduled Maintenance #: 23456789
87+
</span><span class=3D"bodyHeading"><br><br>
88+
Summary:
89+
</span><br><br>
90+
Dear customer, we hereby inform you about this corrective activity performe=
91+
d by our Third Party. We apologize for the inconvenience that this may caus=
92+
e.
93+
<br>
94+
<br>It is require replace a equipment, in order to guarantee the stability =
95+
and continuity of the services.
96+
<br>
97+
<br>We appreciate your understanding in allowing us to improve every day th=
98+
e provision of telecommunications services that we provide.
99+
<br>
100+
<br><br><span class=3D"bodyHeading">
101+
Updates:
102+
</span><br><br>
103+
2021-12-01 15:50:45 GMT - Please be advised that this maintenance has been =
104+
cancelled.<br/>
105+
<br>
106+
<span class=3D"bodyHeading">
107+
Customer Impact:
108+
</span><br><br>
109+
<p><span class=3D\"windowHeader\"><span class=3D\"windowLabel\">23456789-1<=
110+
/span> <br/><table border=3D1 cellspacing=3D0 cellpadding=3D5><tr><td class=
111+
=3D\"headerRow\">Start</td><td class=3D\"headerRow\">End</td></tr><tr><td>2=
112+
021-11-05 06:00 GMT (Greenwich Mean Time)</td><td>2021-11-05 12:00 GMT (Gre=
113+
enwich Mean Time)</td></tr><tr><td>2021-11-05 00:00 CST (Central Standard T=
114+
ime)</td><td>2021-11-05 06:00 CST (Central Standard Time)</td></tr></table>=
115+
<br/><br/><span class=3D\"windowLabel\">Maintenance Location(s): </span>Ciu=
116+
dad de M=C3=A9xico Mexico<br/></span></p><div class=3D\"impactMatrix\"><tab=
117+
le border=3D1 cellspacing=3D0 cellpadding=3D5><tr><td class=3D\"headerRow\"=
118+
>Customer Name</td><td class=3D\"headerRow\">Circuit ID</td><td class=3D\"h=
119+
eaderRow\">Alt Circuit ID</td><td class=3D\"headerRow\">Bandwidth</td><td c=
120+
lass=3D\"headerRow\">A Location</td><td class=3D\"headerRow\">Z Location</t=
121+
d><td class=3D\"headerRow\">Impact Type</td><td class=3D\"headerRow\">Maxim=
122+
um Duration</td><td class=3D\"headerRow\">Order Number</td><td class=3D\"he=
123+
aderRow\">Status</td></tr><tr class=3D\"contentRow\"><td>SOME CUSTOMER INC,=
124+
INC.</td><td>2006789012</td><td>N/A</td><td>10GIG</td><td>SOME CUSTOMER IN=
125+
C, INC MIAMI FL USA</td><td>SOME CUSTOMER INC, INC CIUDAD DE MEXICO MEXICO<=
126+
/td><td>Outage</td><td>2 hours </td><td>&nbsp;</td><td>Cancelled</td></tr><=
127+
/table></div>
128+
<br><br>
129+
<span class=3D"bodyHeading">
130+
Notes History:
131+
</span><br><br>
132+
2021-12-01 15:50:45 GMT - Please be advised that this maintenance has been =
133+
cancelled.<br/>2021-11-05 12:58:30 GMT - This maintenance has been <strong>=
134+
postponed</strong> due to vendor issue. Once a new date is determined, upda=
135+
ted notifications will be sent reflecting the date change.<br/>2021-10-28 2=
136+
2:42:06 GMT - This maintenance is scheduled.<br/>
137+
<br><br><a href=3D"https://my.level3.com/portalWeb/mylevel3?goto-page=3DX3D=
138+
tj">
139+
Click here</a> for immediate information on scheduled maintenances via the =
140+
Lumen Customer Portal.
141+
142+
<br><br><a href=3D"https://my.level3.com/portalWeb/mylevel3?goto-page=3DOEm=
143+
aq">
144+
Click here</a> to manage your notification subscriptions via the Lumen Cust=
145+
omer Potral.
146+
147+
<br><br><a href=3D"https://my.level3.com/portalWeb/mylevel3?goto-page=3DX3D=
148+
tj">
149+
Click here</a> to open a case for assistance on this scheduled maintenance =
150+
via the Lumen Customer Portal.
151+
<br><br>
152+
Network Change Management Team
153+
<br>
154+
Lumen
155+
</br>
156+
<a href=3D"http://www.level3.com/~/media/Assets/escalations/latam_customer_=
157+
numbers.ashx">
158+
Click here=20
159+
</a>
160+
for Latin America contact numbers
161+
<br>
162+
<a href=3D"mailto:[email protected]">
163+
164+
</a>
165+
<br><br>
166+
Lumen and its logos are registered trademarks of Lumen in the United States=
167+
and other countries.
168+
<br>
169+
Your privacy is important to us.
170+
<br>
171+
Please review the Lumen Online Privacy Policy by clicking on:
172+
<br>
173+
<a href=3D"http://www.level3.com/en/network-security/">
174+
http://www.level3.com/en/network-security/
175+
</a>
176+
<br><br>
177+
The information in this communication is confidential and may not be disclo=
178+
sed to=20
179+
third parties or shared further without the express permission of Lumen.
180+
181+
<p></p>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
[
2+
{
3+
"account": "SOME CUSTOMER INC, INC.",
4+
"circuits": [
5+
{
6+
"circuit_id": "2006789012",
7+
"impact": "OUTAGE"
8+
}
9+
],
10+
"end": 1636113600,
11+
"maintenance_id": "23456789",
12+
"stamp": 1638373845,
13+
"start": 1636092000,
14+
"status": "CANCELLED",
15+
"summary": "Dear customer, we hereby inform you about this corrective activity performed by our Third Party. We apologize for the inconvenience that this may cause."
16+
}
17+
]

tests/unit/test_parsers.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,11 @@
202202
Path(dir_path, "data", "lumen", "lumen6.html"),
203203
Path(dir_path, "data", "lumen", "lumen6_result.json"),
204204
),
205+
(
206+
HtmlParserLumen1,
207+
Path(dir_path, "data", "lumen", "lumen7.html"),
208+
Path(dir_path, "data", "lumen", "lumen7_result.json"),
209+
),
205210
# Megaport
206211
(
207212
HtmlParserMegaport1,

0 commit comments

Comments
 (0)