@@ -157,12 +157,16 @@ def _set_acls_log(self, pgs, context, ovn_txn, actions_enabled, log_name):
157
157
acl_changes , acl_visits = 0 , 0
158
158
for pg in pgs :
159
159
meter_name = self .meter_name
160
- if ovn_const .OVN_DROP_PORT_GROUP_NAME not in pg ["name" ]:
161
- stateful = (sg_obj .SecurityGroup
162
- .get_sg_by_id (context , pg ["name" ]
163
- .replace ('pg_' , '' , 1 )
164
- .replace ('_' , '-' )).stateful )
165
- if not stateful :
160
+ if pg ["name" ] != ovn_const .OVN_DROP_PORT_GROUP_NAME :
161
+ sg = sg_obj .SecurityGroup .get_sg_by_id (
162
+ context ,
163
+ pg ["external_ids" ][ovn_const .OVN_SG_EXT_ID_KEY ])
164
+ if not sg :
165
+ LOG .warning ("Port Group %s is missing a corresponding "
166
+ "security group, skipping its network log "
167
+ "setting..." , pg ["name" ])
168
+ continue
169
+ if not sg .stateful :
166
170
meter_name = meter_name + ("_stateless" )
167
171
for acl_uuid in pg ["acls" ]:
168
172
acl_visits += 1
@@ -197,7 +201,8 @@ def _update_log_objs(self, context, ovn_txn, log_objs):
197
201
198
202
def _pgs_all (self ):
199
203
return self .ovn_nb .db_list (
200
- "Port_Group" , columns = ["name" , "acls" ]).execute (check_error = True )
204
+ "Port_Group" ,
205
+ columns = ["name" , "external_ids" , "acls" ]).execute (check_error = True )
201
206
202
207
def _pgs_from_log_obj (self , context , log_obj ):
203
208
"""Map Neutron log_obj into affected port groups in OVN.
@@ -216,10 +221,12 @@ def _pgs_from_log_obj(self, context, log_obj):
216
221
# No sg, no port, DROP: return DROP pg
217
222
if log_obj .event == log_const .DROP_EVENT :
218
223
return [{"name" : pg_drop .name ,
224
+ "external_ids" : pg_drop .external_ids ,
219
225
"acls" : [r .uuid for r in pg_drop .acls ]}]
220
226
# No sg, no port, ACCEPT: return all except DROP pg
221
227
pgs = self ._pgs_all ()
222
228
pgs .remove ({"name" : pg_drop .name ,
229
+ "external_ids" : pg_drop .external_ids ,
223
230
"acls" : [r .uuid for r in pg_drop .acls ]})
224
231
return pgs
225
232
except idlutils .RowNotFound :
@@ -232,6 +239,7 @@ def _pgs_from_log_obj(self, context, log_obj):
232
239
pg = self .ovn_nb .lookup ("Port_Group" ,
233
240
ovn_const .OVN_DROP_PORT_GROUP_NAME )
234
241
pgs .append ({"name" : pg .name ,
242
+ "external_ids" : pg .external_ids ,
235
243
"acls" : [r .uuid for r in pg .acls ]})
236
244
except idlutils .RowNotFound :
237
245
pass
@@ -244,6 +252,7 @@ def _pgs_from_log_obj(self, context, log_obj):
244
252
utils .ovn_port_group_name (
245
253
log_obj .resource_id ))
246
254
pgs .append ({"name" : pg .name ,
255
+ "external_ids" : pg .external_ids ,
247
256
"acls" : [r .uuid for r in pg .acls ]})
248
257
except idlutils .RowNotFound :
249
258
pass
@@ -257,6 +266,7 @@ def _pgs_from_log_obj(self, context, log_obj):
257
266
pg = self .ovn_nb .lookup ("Port_Group" ,
258
267
utils .ovn_port_group_name (sg_id ))
259
268
pgs .append ({"name" : pg .name ,
269
+ "external_ids" : pg .external_ids ,
260
270
"acls" : [r .uuid for r in pg .acls ]})
261
271
except idlutils .RowNotFound :
262
272
pass
0 commit comments