@@ -38,12 +38,36 @@ def description(q=None):
38
38
description = description ,
39
39
)
40
40
41
+ def get_dropdown_data ():
42
+ global asn_anomalies , pivotFrames , changeDf
43
+ # sites
44
+ unique_sites = pd .unique (asn_anomalies [['src_netsite' , 'dest_netsite' ]].values .ravel ()).tolist ()
45
+ unique_sites .extend (pivotFrames ['path changed' ].tag .unique ().tolist ())
46
+
47
+ sitesDropdownData = [{"label" : str (a ), "value" : a } for a in sorted (list (set (unique_sites )))]
48
+
49
+ # ASNs
50
+ unique_asns = pd .unique (asn_anomalies ['asn_list' ].explode ()).tolist ()
51
+ sortedDf = changeDf [changeDf ['jumpedFrom' ] > 0 ].sort_values ('count' )
52
+ asnsDropdownData = list (set (sortedDf ['diff' ].unique ().tolist () +
53
+ sortedDf ['jumpedFrom' ].unique ().tolist ()))
54
+ asnsDropdownData = list (set (asnsDropdownData + unique_asns ))
55
+ asnsDropdownData = [{"label" : str (a ), "value" : a } for a in sorted (asnsDropdownData )]
56
+
57
+ print (f"Unique sites: { len (sitesDropdownData )} , Unique ASNs: { len (asnsDropdownData )} " )
58
+
59
+ return sitesDropdownData , asnsDropdownData
60
+
41
61
42
62
def layout (** other_unknown_query_strings ):
43
63
global frames , pivotFrames , alarmsInst , selected_keys , changeDf
44
64
period_to_display = hp .defaultTimeRange (days = 2 , datesOnly = True )
45
- sitesDropdownData , asnsDropdownData , sankey_fig , dataTables = load_initial_data (selected_keys , changeDf )
65
+
66
+ sankey_fig , dataTables = load_initial_data (selected_keys , changeDf )
46
67
heatmap_fig = create_anomalies_heatmap ()
68
+
69
+ sitesDropdownData , asnsDropdownData = get_dropdown_data ()
70
+
47
71
return dbc .Row ([
48
72
dbc .Row ([
49
73
dbc .Col ([
@@ -137,9 +161,6 @@ def colorMap(eventTypes):
137
161
138
162
139
163
def load_initial_data (selected_keys , changeDf ):
140
- sitesDropdownData = []
141
- asnsDropdownData = []
142
- anomalous_asns = []
143
164
dataTables = []
144
165
145
166
for event in sorted (selected_keys ):
@@ -153,26 +174,14 @@ def load_initial_data(selected_keys, changeDf):
153
174
154
175
for event in sorted (selected_keys ):
155
176
df = pivotFrames [event ]
156
-
157
- if 'asn_list' in df .columns :
158
- anomalous_asns = list (df ['asn_list' ].explode ().unique ())
159
177
160
178
if len (df ) > 0 :
161
179
dataTables .append (generate_tables (frames [event ], df , event , alarmsInst ))
162
180
163
- sortedDf = changeDf [changeDf ['jumpedFrom' ] > 0 ].sort_values ('count' )
164
- asnsDropdownData = list (set (sortedDf ['diff' ].unique ().tolist () +
165
- sortedDf ['jumpedFrom' ].unique ().tolist ()))
166
- asnsDropdownData = list (set (asnsDropdownData + anomalous_asns )) if 'anomalous_asns' in locals () else asnsDropdownData
167
- asnsDropdownData = sorted (asnsDropdownData )
168
-
169
- for s in sorted (pivotFrames ['path changed' ].tag .unique ().tolist ()):
170
- sitesDropdownData .append ({"label" : s .upper (), "value" : s .upper ()})
171
-
172
181
changeDf .loc [changeDf ['jumpedFrom' ] == 0 ] = 'No data'
173
182
fig = buildSankey ([], [], changeDf )
174
183
175
- return [sitesDropdownData , asnsDropdownData , fig , dataTables ]
184
+ return [fig , dataTables ]
176
185
177
186
178
187
@dash .callback (
0 commit comments