@@ -1587,7 +1587,7 @@ protected void runInContext() {
15871587 }
15881588
15891589 private SetMonitorServiceCommand createMonitorServiceCommand (DomainRouterVO router , List <MonitorServiceTO > services ,
1590- boolean reconfigure , boolean deleteFromProcessedCache ) {
1590+ boolean reconfigure , boolean deleteFromProcessedCache , Map < String , String > routerHealthCheckConfig ) {
15911591 final SetMonitorServiceCommand command = new SetMonitorServiceCommand (services );
15921592 command .setAccessDetail (NetworkElementCommand .ROUTER_IP , _routerControlHelper .getRouterControlIp (router .getId ()));
15931593 command .setAccessDetail (NetworkElementCommand .ROUTER_NAME , router .getInstanceName ());
@@ -1605,7 +1605,7 @@ private SetMonitorServiceCommand createMonitorServiceCommand(DomainRouterVO rout
16051605 }
16061606
16071607 command .setAccessDetail (SetMonitorServiceCommand .ROUTER_HEALTH_CHECKS_EXCLUDED , excludedTests );
1608- command .setHealthChecksConfig (getRouterHealthChecksConfig ( router ) );
1608+ command .setHealthChecksConfig (routerHealthCheckConfig );
16091609 command .setReconfigureAfterUpdate (reconfigure );
16101610 command .setDeleteFromProcessedCache (deleteFromProcessedCache ); // As part of updating
16111611 return command ;
@@ -1630,7 +1630,7 @@ private boolean updateRouterHealthChecksConfig(DomainRouterVO router) {
16301630 s_logger .info ("Updating data for router health checks for router " + router .getUuid ());
16311631 Answer origAnswer = null ;
16321632 try {
1633- SetMonitorServiceCommand command = createMonitorServiceCommand (router , null , true , true );
1633+ SetMonitorServiceCommand command = createMonitorServiceCommand (router , null , true , true , getRouterHealthChecksConfig ( router ) );
16341634 origAnswer = _agentMgr .easySend (router .getHostId (), command );
16351635 } catch (final Exception e ) {
16361636 s_logger .error ("Error while sending update data for health check to router: " + router .getInstanceName (), e );
@@ -1745,7 +1745,7 @@ private void updateWithLbRules(final DomainRouterJoinVO routerJoinVO, final Stri
17451745 }
17461746 }
17471747
1748- private Map <String , String > getRouterHealthChecksConfig (final DomainRouterVO router ) {
1748+ protected Map <String , String > getRouterHealthChecksConfig (final DomainRouterVO router ) {
17491749 Map <String , String > data = new HashMap <>();
17501750 List <DomainRouterJoinVO > routerJoinVOs = domainRouterJoinDao .searchByIds (router .getId ());
17511751 StringBuilder vmsData = new StringBuilder ();
@@ -1759,16 +1759,14 @@ private Map<String, String> getRouterHealthChecksConfig(final DomainRouterVO rou
17591759 }
17601760 SearchBuilder <UserVmJoinVO > sbvm = userVmJoinDao .createSearchBuilder ();
17611761 sbvm .and ("networkId" , sbvm .entity ().getNetworkId (), SearchCriteria .Op .EQ );
1762+ sbvm .and ("state" , sbvm .entity ().getState (), SearchCriteria .Op .EQ );
17621763 SearchCriteria <UserVmJoinVO > scvm = sbvm .create ();
17631764 scvm .setParameters ("networkId" , routerJoinVO .getNetworkId ());
1765+ scvm .setParameters ("state" , VirtualMachine .State .Running );
17641766 List <UserVmJoinVO > vms = userVmJoinDao .search (scvm , null );
17651767 boolean isDhcpSupported = _ntwkSrvcDao .areServicesSupportedInNetwork (routerJoinVO .getNetworkId (), Service .Dhcp );
17661768 boolean isDnsSupported = _ntwkSrvcDao .areServicesSupportedInNetwork (routerJoinVO .getNetworkId (), Service .Dns );
17671769 for (UserVmJoinVO vm : vms ) {
1768- if (vm .getState () != VirtualMachine .State .Running ) {
1769- continue ;
1770- }
1771-
17721770 vmsData .append ("vmName=" ).append (vm .getName ())
17731771 .append (",macAddress=" ).append (vm .getMacAddress ())
17741772 .append (",ip=" ).append (vm .getIpAddress ())
@@ -2310,6 +2308,7 @@ public boolean finalizeCommandsOnStart(final Commands cmds, final VirtualMachine
23102308 final Provider provider = getVrProvider (router );
23112309
23122310 final List <Long > routerGuestNtwkIds = _routerDao .getRouterNetworks (router .getId ());
2311+ Map <String , String > routerHealthChecksConfig = getRouterHealthChecksConfig (router );
23132312 for (final Long guestNetworkId : routerGuestNtwkIds ) {
23142313 final AggregationControlCommand startCmd = new AggregationControlCommand (Action .Start , router .getInstanceName (), controlNic .getIPv4Address (), _routerControlHelper .getRouterIpInNetwork (
23152314 guestNetworkId , router .getId ()));
@@ -2318,7 +2317,7 @@ public boolean finalizeCommandsOnStart(final Commands cmds, final VirtualMachine
23182317 if (reprogramGuestNtwks ) {
23192318 finalizeIpAssocForNetwork (cmds , router , provider , guestNetworkId , null );
23202319 finalizeNetworkRulesForNetwork (cmds , router , provider , guestNetworkId );
2321- finalizeMonitorService (cmds , profile , router , provider , guestNetworkId , true );
2320+ finalizeMonitorService (cmds , profile , router , provider , guestNetworkId , true , routerHealthChecksConfig );
23222321 }
23232322
23242323 finalizeUserDataAndDhcpOnStart (cmds , router , provider , guestNetworkId );
@@ -2332,7 +2331,7 @@ public boolean finalizeCommandsOnStart(final Commands cmds, final VirtualMachine
23322331 }
23332332
23342333 protected void finalizeMonitorService (final Commands cmds , final VirtualMachineProfile profile , final DomainRouterVO router , final Provider provider ,
2335- final long networkId , boolean onStart ) {
2334+ final long networkId , boolean onStart , Map < String , String > routerHealthCheckConfig ) {
23362335 final NetworkOffering offering = _networkOfferingDao .findById (_networkDao .findById (networkId ).getNetworkOfferingId ());
23372336 if (offering .isRedundantRouter ()) {
23382337 // service monitoring is currently not added in RVR
@@ -2382,7 +2381,7 @@ protected void finalizeMonitorService(final Commands cmds, final VirtualMachineP
23822381 }
23832382
23842383 // As part of aggregate command we don't need to reconfigure if onStart and persist in processed cache. Subsequent updates are not needed.
2385- SetMonitorServiceCommand command = createMonitorServiceCommand (router , servicesTO , !onStart , false );
2384+ SetMonitorServiceCommand command = createMonitorServiceCommand (router , servicesTO , !onStart , false , routerHealthCheckConfig );
23862385 command .setAccessDetail (NetworkElementCommand .ROUTER_GUEST_IP , _routerControlHelper .getRouterIpInNetwork (networkId , router .getId ()));
23872386 if (!isMonitoringServicesEnabled ) {
23882387 command .setAccessDetail (SetMonitorServiceCommand .ROUTER_MONITORING_ENABLED , isMonitoringServicesEnabled .toString ());
0 commit comments