@@ -1587,7 +1587,7 @@ protected void runInContext() {
1587
1587
}
1588
1588
1589
1589
private SetMonitorServiceCommand createMonitorServiceCommand (DomainRouterVO router , List <MonitorServiceTO > services ,
1590
- boolean reconfigure , boolean deleteFromProcessedCache ) {
1590
+ boolean reconfigure , boolean deleteFromProcessedCache , Map < String , String > routerHealthCheckConfig ) {
1591
1591
final SetMonitorServiceCommand command = new SetMonitorServiceCommand (services );
1592
1592
command .setAccessDetail (NetworkElementCommand .ROUTER_IP , _routerControlHelper .getRouterControlIp (router .getId ()));
1593
1593
command .setAccessDetail (NetworkElementCommand .ROUTER_NAME , router .getInstanceName ());
@@ -1605,7 +1605,7 @@ private SetMonitorServiceCommand createMonitorServiceCommand(DomainRouterVO rout
1605
1605
}
1606
1606
1607
1607
command .setAccessDetail (SetMonitorServiceCommand .ROUTER_HEALTH_CHECKS_EXCLUDED , excludedTests );
1608
- command .setHealthChecksConfig (getRouterHealthChecksConfig ( router ) );
1608
+ command .setHealthChecksConfig (routerHealthCheckConfig );
1609
1609
command .setReconfigureAfterUpdate (reconfigure );
1610
1610
command .setDeleteFromProcessedCache (deleteFromProcessedCache ); // As part of updating
1611
1611
return command ;
@@ -1630,7 +1630,7 @@ private boolean updateRouterHealthChecksConfig(DomainRouterVO router) {
1630
1630
s_logger .info ("Updating data for router health checks for router " + router .getUuid ());
1631
1631
Answer origAnswer = null ;
1632
1632
try {
1633
- SetMonitorServiceCommand command = createMonitorServiceCommand (router , null , true , true );
1633
+ SetMonitorServiceCommand command = createMonitorServiceCommand (router , null , true , true , getRouterHealthChecksConfig ( router ) );
1634
1634
origAnswer = _agentMgr .easySend (router .getHostId (), command );
1635
1635
} catch (final Exception e ) {
1636
1636
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
1745
1745
}
1746
1746
}
1747
1747
1748
- private Map <String , String > getRouterHealthChecksConfig (final DomainRouterVO router ) {
1748
+ protected Map <String , String > getRouterHealthChecksConfig (final DomainRouterVO router ) {
1749
1749
Map <String , String > data = new HashMap <>();
1750
1750
List <DomainRouterJoinVO > routerJoinVOs = domainRouterJoinDao .searchByIds (router .getId ());
1751
1751
StringBuilder vmsData = new StringBuilder ();
@@ -1759,16 +1759,14 @@ private Map<String, String> getRouterHealthChecksConfig(final DomainRouterVO rou
1759
1759
}
1760
1760
SearchBuilder <UserVmJoinVO > sbvm = userVmJoinDao .createSearchBuilder ();
1761
1761
sbvm .and ("networkId" , sbvm .entity ().getNetworkId (), SearchCriteria .Op .EQ );
1762
+ sbvm .and ("state" , sbvm .entity ().getState (), SearchCriteria .Op .EQ );
1762
1763
SearchCriteria <UserVmJoinVO > scvm = sbvm .create ();
1763
1764
scvm .setParameters ("networkId" , routerJoinVO .getNetworkId ());
1765
+ scvm .setParameters ("state" , VirtualMachine .State .Running );
1764
1766
List <UserVmJoinVO > vms = userVmJoinDao .search (scvm , null );
1765
1767
boolean isDhcpSupported = _ntwkSrvcDao .areServicesSupportedInNetwork (routerJoinVO .getNetworkId (), Service .Dhcp );
1766
1768
boolean isDnsSupported = _ntwkSrvcDao .areServicesSupportedInNetwork (routerJoinVO .getNetworkId (), Service .Dns );
1767
1769
for (UserVmJoinVO vm : vms ) {
1768
- if (vm .getState () != VirtualMachine .State .Running ) {
1769
- continue ;
1770
- }
1771
-
1772
1770
vmsData .append ("vmName=" ).append (vm .getName ())
1773
1771
.append (",macAddress=" ).append (vm .getMacAddress ())
1774
1772
.append (",ip=" ).append (vm .getIpAddress ())
@@ -2310,6 +2308,7 @@ public boolean finalizeCommandsOnStart(final Commands cmds, final VirtualMachine
2310
2308
final Provider provider = getVrProvider (router );
2311
2309
2312
2310
final List <Long > routerGuestNtwkIds = _routerDao .getRouterNetworks (router .getId ());
2311
+ Map <String , String > routerHealthChecksConfig = getRouterHealthChecksConfig (router );
2313
2312
for (final Long guestNetworkId : routerGuestNtwkIds ) {
2314
2313
final AggregationControlCommand startCmd = new AggregationControlCommand (Action .Start , router .getInstanceName (), controlNic .getIPv4Address (), _routerControlHelper .getRouterIpInNetwork (
2315
2314
guestNetworkId , router .getId ()));
@@ -2318,7 +2317,7 @@ public boolean finalizeCommandsOnStart(final Commands cmds, final VirtualMachine
2318
2317
if (reprogramGuestNtwks ) {
2319
2318
finalizeIpAssocForNetwork (cmds , router , provider , guestNetworkId , null );
2320
2319
finalizeNetworkRulesForNetwork (cmds , router , provider , guestNetworkId );
2321
- finalizeMonitorService (cmds , profile , router , provider , guestNetworkId , true );
2320
+ finalizeMonitorService (cmds , profile , router , provider , guestNetworkId , true , routerHealthChecksConfig );
2322
2321
}
2323
2322
2324
2323
finalizeUserDataAndDhcpOnStart (cmds , router , provider , guestNetworkId );
@@ -2332,7 +2331,7 @@ public boolean finalizeCommandsOnStart(final Commands cmds, final VirtualMachine
2332
2331
}
2333
2332
2334
2333
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 ) {
2336
2335
final NetworkOffering offering = _networkOfferingDao .findById (_networkDao .findById (networkId ).getNetworkOfferingId ());
2337
2336
if (offering .isRedundantRouter ()) {
2338
2337
// service monitoring is currently not added in RVR
@@ -2382,7 +2381,7 @@ protected void finalizeMonitorService(final Commands cmds, final VirtualMachineP
2382
2381
}
2383
2382
2384
2383
// 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 );
2386
2385
command .setAccessDetail (NetworkElementCommand .ROUTER_GUEST_IP , _routerControlHelper .getRouterIpInNetwork (networkId , router .getId ()));
2387
2386
if (!isMonitoringServicesEnabled ) {
2388
2387
command .setAccessDetail (SetMonitorServiceCommand .ROUTER_MONITORING_ENABLED , isMonitoringServicesEnabled .toString ());
0 commit comments