9595import com .cloud .utils .crypt .DBEncryptionUtil ;
9696import com .cloud .utils .db .QueryBuilder ;
9797import com .cloud .utils .db .SearchCriteria .Op ;
98- import com .cloud .utils .exception .CloudRuntimeException ;
9998import com .cloud .utils .net .NetUtils ;
10099import com .cloud .vm .DomainRouterVO ;
101100import com .cloud .vm .NicProfile ;
@@ -283,10 +282,7 @@ public boolean applyFWRules(final Network network, final List<? extends Firewall
283282 final NetworkTopology networkTopology = networkTopologyContext .retrieveNetworkTopology (dcVO );
284283
285284 for (final DomainRouterVO domainRouterVO : routers ) {
286- result = networkTopology .applyFirewallRules (network , rules , domainRouterVO );
287- if (!result ) {
288- throw new CloudRuntimeException ("Failed to apply firewall rules in network " + network .getId ());
289- }
285+ result = result && networkTopology .applyFirewallRules (network , rules , domainRouterVO );
290286 }
291287 }
292288 return result ;
@@ -406,7 +402,7 @@ public boolean validateLBRule(final Network network, final LoadBalancingRule rul
406402
407403 @ Override
408404 public boolean applyLBRules (final Network network , final List <LoadBalancingRule > rules ) throws ResourceUnavailableException {
409- boolean result = false ;
405+ boolean result = true ;
410406 if (canHandle (network , Service .Lb )) {
411407 if (!canHandleLbRules (rules )) {
412408 return false ;
@@ -422,10 +418,7 @@ public boolean applyLBRules(final Network network, final List<LoadBalancingRule>
422418 final NetworkTopology networkTopology = networkTopologyContext .retrieveNetworkTopology (dcVO );
423419
424420 for (final DomainRouterVO domainRouterVO : routers ) {
425- result = networkTopology .applyLoadBalancingRules (network , rules , domainRouterVO );
426- if (!result ) {
427- throw new CloudRuntimeException ("Failed to apply load balancing rules in network " + network .getId ());
428- }
421+ result = result && networkTopology .applyLoadBalancingRules (network , rules , domainRouterVO );
429422 }
430423 }
431424 return result ;
@@ -497,14 +490,14 @@ public boolean stopVpn(final RemoteAccessVpn vpn) throws ResourceUnavailableExce
497490
498491 @ Override
499492 public boolean applyIps (final Network network , final List <? extends PublicIpAddress > ipAddress , final Set <Service > services ) throws ResourceUnavailableException {
500- boolean result = false ;
501493 boolean canHandle = true ;
502494 for (final Service service : services ) {
503495 if (!canHandle (network , service )) {
504496 canHandle = false ;
505497 break ;
506498 }
507499 }
500+ boolean result = true ;
508501 if (canHandle ) {
509502 final List <DomainRouterVO > routers = _routerDao .listByNetworkAndRole (network .getId (), Role .VIRTUAL_ROUTER );
510503 if (routers == null || routers .isEmpty ()) {
@@ -516,7 +509,7 @@ public boolean applyIps(final Network network, final List<? extends PublicIpAddr
516509 final NetworkTopology networkTopology = networkTopologyContext .retrieveNetworkTopology (dcVO );
517510
518511 for (final DomainRouterVO domainRouterVO : routers ) {
519- result = networkTopology .associatePublicIP (network , ipAddress , domainRouterVO );
512+ result = result && networkTopology .associatePublicIP (network , ipAddress , domainRouterVO );
520513 }
521514 }
522515 return result ;
@@ -668,14 +661,14 @@ public boolean applyStaticNats(final Network network, final List<? extends Stati
668661 final List <DomainRouterVO > routers = _routerDao .listByNetworkAndRole (network .getId (), Role .VIRTUAL_ROUTER );
669662 if (routers == null || routers .isEmpty ()) {
670663 s_logger .debug ("Virtual router elemnt doesn't need to apply static nat on the backend; virtual " + "router doesn't exist in the network " + network .getId ());
671- return result ;
664+ return true ;
672665 }
673666
674667 final DataCenterVO dcVO = _dcDao .findById (network .getDataCenterId ());
675668 final NetworkTopology networkTopology = networkTopologyContext .retrieveNetworkTopology (dcVO );
676669
677670 for (final DomainRouterVO domainRouterVO : routers ) {
678- result = networkTopology .applyStaticNats (network , rules , domainRouterVO );
671+ result = result && networkTopology .applyStaticNats (network , rules , domainRouterVO );
679672 }
680673 }
681674 return result ;
@@ -687,20 +680,21 @@ public boolean shutdown(final Network network, final ReservationContext context,
687680 if (routers == null || routers .isEmpty ()) {
688681 return true ;
689682 }
690- boolean result = true ;
683+ boolean stopResult = true ;
684+ boolean destroyResult = true ;
691685 for (final DomainRouterVO router : routers ) {
692- result = result && _routerMgr .stop (router , false , context .getCaller (), context .getAccount ()) != null ;
686+ stopResult = stopResult && _routerMgr .stop (router , false , context .getCaller (), context .getAccount ()) != null ;
687+ if (!stopResult ) {
688+ s_logger .warn ("Failed to stop virtual router element " + router + ", but would try to process clean up anyway." );
689+ }
693690 if (cleanup ) {
694- if (!result ) {
695- s_logger .warn ("Failed to stop virtual router element " + router + ", but would try to process clean up anyway." );
696- }
697- result = _routerMgr .destroyRouter (router .getId (), context .getAccount (), context .getCaller ().getId ()) != null ;
698- if (!result ) {
691+ destroyResult = destroyResult && _routerMgr .destroyRouter (router .getId (), context .getAccount (), context .getCaller ().getId ()) != null ;
692+ if (!destroyResult ) {
699693 s_logger .warn ("Failed to clean up virtual router element " + router );
700694 }
701695 }
702696 }
703- return result ;
697+ return stopResult & destroyResult ;
704698 }
705699
706700 @ Override
@@ -760,48 +754,46 @@ public boolean savePassword(final Network network, final NicProfile nic, final V
760754
761755 @ Override
762756 public boolean saveSSHKey (final Network network , final NicProfile nic , final VirtualMachineProfile vm , final String sshPublicKey ) throws ResourceUnavailableException {
763- boolean result = false ;
764757 if (!canHandle (network , null )) {
765- return result ;
758+ return false ;
766759 }
767760 final List <DomainRouterVO > routers = _routerDao .listByNetworkAndRole (network .getId (), Role .VIRTUAL_ROUTER );
768761 if (routers == null || routers .isEmpty ()) {
769762 s_logger .debug ("Can't find virtual router element in network " + network .getId ());
770- result = true ;
771- return result ;
763+ return true ;
772764 }
773765
774766 final VirtualMachineProfile uservm = vm ;
775767
776768 final DataCenterVO dcVO = _dcDao .findById (network .getDataCenterId ());
777769 final NetworkTopology networkTopology = networkTopologyContext .retrieveNetworkTopology (dcVO );
778770
771+ boolean result = true ;
779772 for (final DomainRouterVO domainRouterVO : routers ) {
780- result = networkTopology .saveSSHPublicKeyToRouter (network , nic , uservm , domainRouterVO , sshPublicKey );
773+ result = result && networkTopology .saveSSHPublicKeyToRouter (network , nic , uservm , domainRouterVO , sshPublicKey );
781774 }
782775 return result ;
783776 }
784777
785778 @ Override
786779 public boolean saveUserData (final Network network , final NicProfile nic , final VirtualMachineProfile vm ) throws ResourceUnavailableException {
787- boolean result = false ;
788780 if (!canHandle (network , null )) {
789- return result ;
781+ return false ;
790782 }
791783 final List <DomainRouterVO > routers = _routerDao .listByNetworkAndRole (network .getId (), Role .VIRTUAL_ROUTER );
792784 if (routers == null || routers .isEmpty ()) {
793785 s_logger .debug ("Can't find virtual router element in network " + network .getId ());
794- result = true ;
795- return result ;
786+ return true ;
796787 }
797788
798789 final VirtualMachineProfile uservm = vm ;
799790
800791 final DataCenterVO dcVO = _dcDao .findById (network .getDataCenterId ());
801792 final NetworkTopology networkTopology = networkTopologyContext .retrieveNetworkTopology (dcVO );
802793
794+ boolean result = true ;
803795 for (final DomainRouterVO domainRouterVO : routers ) {
804- result = networkTopology .saveUserDataToRouter (network , nic , uservm , domainRouterVO );
796+ result = result && networkTopology .saveUserDataToRouter (network , nic , uservm , domainRouterVO );
805797 }
806798 return result ;
807799 }
@@ -860,23 +852,19 @@ public VirtualRouterProvider addElement(final Long nspId, final Type providerTyp
860852
861853 @ Override
862854 public boolean applyPFRules (final Network network , final List <PortForwardingRule > rules ) throws ResourceUnavailableException {
863- boolean result = false ;
855+ boolean result = true ;
864856 if (canHandle (network , Service .PortForwarding )) {
865857 final List <DomainRouterVO > routers = _routerDao .listByNetworkAndRole (network .getId (), Role .VIRTUAL_ROUTER );
866858 if (routers == null || routers .isEmpty ()) {
867859 s_logger .debug ("Virtual router elemnt doesn't need to apply firewall rules on the backend; virtual " + "router doesn't exist in the network " + network .getId ());
868- result = true ;
869- return result ;
860+ return true ;
870861 }
871862
872863 final DataCenterVO dcVO = _dcDao .findById (network .getDataCenterId ());
873864 final NetworkTopology networkTopology = networkTopologyContext .retrieveNetworkTopology (dcVO );
874865
875866 for (final DomainRouterVO domainRouterVO : routers ) {
876- result = networkTopology .applyFirewallRules (network , rules , domainRouterVO );
877- if (!result ) {
878- throw new CloudRuntimeException ("Failed to apply firewall rules in network " + network .getId ());
879- }
867+ result = result && networkTopology .applyFirewallRules (network , rules , domainRouterVO );
880868 }
881869 }
882870 return result ;
@@ -978,10 +966,10 @@ public boolean removeDhcpSupportForSubnet(final Network network) throws Resource
978966 @ Override
979967 public boolean addDhcpEntry (final Network network , final NicProfile nic , final VirtualMachineProfile vm , final DeployDestination dest , final ReservationContext context )
980968 throws ConcurrentOperationException , InsufficientCapacityException , ResourceUnavailableException {
981- boolean result = false ;
969+ boolean result = true ;
982970 if (canHandle (network , Service .Dhcp )) {
983971 if (vm .getType () != VirtualMachine .Type .User ) {
984- return result ;
972+ return false ;
985973 }
986974
987975 final VirtualMachineProfile uservm = vm ;
@@ -995,7 +983,7 @@ public boolean addDhcpEntry(final Network network, final NicProfile nic, final V
995983 final NetworkTopology networkTopology = networkTopologyContext .retrieveNetworkTopology (dcVO );
996984
997985 for (final DomainRouterVO domainRouterVO : routers ) {
998- result = networkTopology .applyDhcpEntry (network , nic , uservm , dest , domainRouterVO );
986+ result = result && networkTopology .applyDhcpEntry (network , nic , uservm , dest , domainRouterVO );
999987 }
1000988 }
1001989 return result ;
@@ -1004,16 +992,15 @@ public boolean addDhcpEntry(final Network network, final NicProfile nic, final V
1004992 @ Override
1005993 public boolean addPasswordAndUserdata (final Network network , final NicProfile nic , final VirtualMachineProfile vm , final DeployDestination dest ,
1006994 final ReservationContext context ) throws ConcurrentOperationException , InsufficientCapacityException , ResourceUnavailableException {
1007- boolean result = false ;
995+ boolean result = true ;
1008996 if (canHandle (network , Service .UserData )) {
1009997 if (vm .getType () != VirtualMachine .Type .User ) {
1010- return result ;
998+ return false ;
1011999 }
10121000
10131001 if (network .getIp6Gateway () != null ) {
10141002 s_logger .info ("Skip password and userdata service setup for IPv6 VM" );
1015- result = true ;
1016- return result ;
1003+ return true ;
10171004 }
10181005
10191006 final VirtualMachineProfile uservm = vm ;
@@ -1028,7 +1015,7 @@ public boolean addPasswordAndUserdata(final Network network, final NicProfile ni
10281015 final NetworkTopology networkTopology = networkTopologyContext .retrieveNetworkTopology (dcVO );
10291016
10301017 for (final DomainRouterVO domainRouterVO : routers ) {
1031- result = networkTopology .applyUserData (network , nic , uservm , dest , domainRouterVO );
1018+ result = result && networkTopology .applyUserData (network , nic , uservm , dest , domainRouterVO );
10321019 }
10331020 }
10341021 return result ;
0 commit comments