112112import javax .naming .ConfigurationException ;
113113import java .util .ArrayList ;
114114import java .util .Arrays ;
115+ import java .util .Comparator ;
115116import java .util .HashMap ;
116117import java .util .List ;
117118import java .util .Locale ;
@@ -706,8 +707,9 @@ public boolean applyNetworkACLs(Network network, List<? extends NetworkACLItem>
706707 if (!canHandle (network , Network .Service .NetworkACL )) {
707708 return false ;
708709 }
709- List < NsxNetworkRule > nsxAddNetworkRules = new ArrayList <>();
710+
710711 List <NsxNetworkRule > nsxDelNetworkRules = new ArrayList <>();
712+ boolean success = true ;
711713 for (NetworkACLItem rule : rules ) {
712714 String privatePort = getPrivatePortRangeForACLRule (rule );
713715 NsxNetworkRule networkRule = new NsxNetworkRule .Builder ()
@@ -723,22 +725,26 @@ public boolean applyNetworkACLs(Network network, List<? extends NetworkACLItem>
723725 .setService (Network .Service .NetworkACL )
724726 .build ();
725727 if (Arrays .asList (NetworkACLItem .State .Active , NetworkACLItem .State .Add ).contains (rule .getState ())) {
726- nsxAddNetworkRules . add ( networkRule );
728+ success = success && nsxService . addFirewallRules ( network , List . of ( networkRule ) );
727729 } else if (NetworkACLItem .State .Revoke == rule .getState ()) {
728730 nsxDelNetworkRules .add (networkRule );
729731 }
730732 }
731- boolean success = true ;
733+
732734 if (!nsxDelNetworkRules .isEmpty ()) {
733735 success = nsxService .deleteFirewallRules (network , nsxDelNetworkRules );
734736 if (!success ) {
735737 LOGGER .warn ("Not all firewall rules were successfully deleted" );
736738 }
737739 }
738- return success && nsxService . addFirewallRules ( network , nsxAddNetworkRules ) ;
740+ return success ;
739741 }
740742
741- @ Override
743+ private void reorderRules (List <? extends NetworkACLItem > rules ) {
744+ rules .sort ((Comparator ) (r1 , r2 ) -> ((NetworkACLItem ) r2 ).getNumber () - ((NetworkACLItem ) r1 ).getNumber ());
745+
746+ }
747+ @ Override
742748 public boolean applyFWRules (Network network , List <? extends FirewallRule > rules ) throws ResourceUnavailableException {
743749
744750 if (!canHandle (network , Network .Service .Firewall )) {
0 commit comments