@@ -1486,3 +1486,58 @@ func (c *OVNNbClient) MigrateACLTier() error {
14861486
14871487 return nil
14881488}
1489+
1490+ func (c * OVNNbClient ) CleanNoParentKeyAcls () error {
1491+ ctx , cancel := context .WithTimeout (context .Background (), c .Timeout )
1492+ defer cancel ()
1493+
1494+ var aclList []ovnnb.ACL
1495+ if err := c .ovsDbClient .WhereCache (func (acl * ovnnb.ACL ) bool {
1496+ _ , ok := acl .ExternalIDs [aclParentKey ]
1497+ return ! ok
1498+ }).List (ctx , & aclList ); err != nil {
1499+ err = fmt .Errorf ("failed to list acls without parent: %w" , err )
1500+ klog .Error (err )
1501+ return err
1502+ }
1503+
1504+ ops := make ([]ovsdb.Operation , 0 , len (aclList ))
1505+ for _ , acl := range aclList {
1506+ var portGroups []ovnnb.PortGroup
1507+ if err := c .ovsDbClient .WhereCache (func (pg * ovnnb.PortGroup ) bool {
1508+ return slices .Contains (pg .ACLs , acl .UUID )
1509+ }).List (ctx , & portGroups ); err == nil {
1510+ for _ , pg := range portGroups {
1511+ op , err := c .portGroupUpdateACLOp (pg .Name , []string {acl .UUID }, ovsdb .MutateOperationDelete )
1512+ if err == nil {
1513+ ops = append (ops , op ... )
1514+ }
1515+ }
1516+ }
1517+ var logicalSwitches []ovnnb.LogicalSwitch
1518+ if err := c .ovsDbClient .WhereCache (func (ls * ovnnb.LogicalSwitch ) bool {
1519+ return slices .Contains (ls .ACLs , acl .UUID )
1520+ }).List (ctx , & logicalSwitches ); err == nil {
1521+ for _ , ls := range logicalSwitches {
1522+ op , err := c .logicalSwitchUpdateACLOp (ls .Name , []string {acl .UUID }, ovsdb .MutateOperationDelete )
1523+ if err == nil {
1524+ ops = append (ops , op ... )
1525+ }
1526+ }
1527+ }
1528+ delOp , err := c .Where (& acl ).Delete ()
1529+ if err == nil {
1530+ ops = append (ops , delOp ... )
1531+ }
1532+ }
1533+ if len (ops ) == 0 {
1534+ return nil
1535+ }
1536+
1537+ if err := c .Transact ("acl-clean-no-parent" , ops ); err != nil {
1538+ klog .Error (err )
1539+ return fmt .Errorf ("failed to clean acls without parent: %w" , err )
1540+ }
1541+
1542+ return nil
1543+ }
0 commit comments