Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions agent/src/main/java/com/cloud/agent/Agent.java
Original file line number Diff line number Diff line change
Expand Up @@ -928,7 +928,7 @@
return new SetupCertificateAnswer(true);
}

private void processManagementServerList(final List<String> msList, final List<String> avoidMsList, final String lbAlgorithm, final Long lbCheckInterval) {
private void processManagementServerList(final List<String> msList, final List<String> avoidMsList, final String lbAlgorithm, final Long lbCheckInterval, final boolean triggerHostLB) {

Check warning on line 931 in agent/src/main/java/com/cloud/agent/Agent.java

View check run for this annotation

Codecov / codecov/patch

agent/src/main/java/com/cloud/agent/Agent.java#L931

Added line #L931 was not covered by tests
if (CollectionUtils.isNotEmpty(msList) && StringUtils.isNotEmpty(lbAlgorithm)) {
try {
final String newMSHosts = String.format("%s%s%s", com.cloud.utils.StringUtils.toCSVList(msList), IAgentShell.hostLbAlgorithmSeparator, lbAlgorithm);
Expand All @@ -941,6 +941,12 @@
}
}
shell.setAvoidHosts(avoidMsList);
if (triggerHostLB) {
logger.info("Triggering preferred host task");
hostLbCheckExecutor = Executors.newSingleThreadScheduledExecutor((new NamedThreadFactory("HostLB-Executor")));
ScheduledExecutorService hostLbExecutor = Executors.newScheduledThreadPool(1);
hostLbExecutor.schedule(new PreferredHostCheckerTask(), 0, TimeUnit.MILLISECONDS);

Check warning on line 948 in agent/src/main/java/com/cloud/agent/Agent.java

View check run for this annotation

Codecov / codecov/patch

agent/src/main/java/com/cloud/agent/Agent.java#L945-L948

Added lines #L945 - L948 were not covered by tests
}
if ("shuffle".equals(lbAlgorithm)) {
scheduleHostLBCheckerTask(0);
} else {
Expand All @@ -949,14 +955,14 @@
}

private Answer setupManagementServerList(final SetupMSListCommand cmd) {
processManagementServerList(cmd.getMsList(), cmd.getAvoidMsList(), cmd.getLbAlgorithm(), cmd.getLbCheckInterval());
processManagementServerList(cmd.getMsList(), cmd.getAvoidMsList(), cmd.getLbAlgorithm(), cmd.getLbCheckInterval(), cmd.getTriggerHostLb());

Check warning on line 958 in agent/src/main/java/com/cloud/agent/Agent.java

View check run for this annotation

Codecov / codecov/patch

agent/src/main/java/com/cloud/agent/Agent.java#L958

Added line #L958 was not covered by tests
return new SetupMSListAnswer(true);
}

private Answer migrateAgentToOtherMS(final MigrateAgentConnectionCommand cmd) {
try {
if (CollectionUtils.isNotEmpty(cmd.getMsList())) {
processManagementServerList(cmd.getMsList(), cmd.getAvoidMsList(), cmd.getLbAlgorithm(), cmd.getLbCheckInterval());
processManagementServerList(cmd.getMsList(), cmd.getAvoidMsList(), cmd.getLbAlgorithm(), cmd.getLbCheckInterval(), false);

Check warning on line 965 in agent/src/main/java/com/cloud/agent/Agent.java

View check run for this annotation

Codecov / codecov/patch

agent/src/main/java/com/cloud/agent/Agent.java#L965

Added line #L965 was not covered by tests
}
Executors.newSingleThreadScheduledExecutor(new NamedThreadFactory("MigrateAgentConnection-Job")).schedule(() -> {
migrateAgentConnection(cmd.getAvoidMsList());
Expand Down Expand Up @@ -1046,7 +1052,7 @@
}

verifyAgentArch(ready.getArch());
processManagementServerList(ready.getMsHostList(), ready.getAvoidMsHostList(), ready.getLbAlgorithm(), ready.getLbCheckInterval());
processManagementServerList(ready.getMsHostList(), ready.getAvoidMsHostList(), ready.getLbAlgorithm(), ready.getLbCheckInterval(), false);

Check warning on line 1055 in agent/src/main/java/com/cloud/agent/Agent.java

View check run for this annotation

Codecov / codecov/patch

agent/src/main/java/com/cloud/agent/Agent.java#L1055

Added line #L1055 was not covered by tests

logger.info("Ready command is processed for agent [id: {}, uuid: {}, name: {}]", getId(), getUuid(), getName());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public class OperationTimedoutException extends CloudException {
boolean _isActive;

public OperationTimedoutException(Command[] cmds, long agentId, long seqId, int time, boolean isActive) {
super("Commands " + seqId + " to Host " + agentId + " timed out after " + time);
super("Commands " + seqId + " to Host " + agentId + " timed out after " + time + " secs");
_agentId = agentId;
_seqId = seqId;
_time = time;
Expand Down
7 changes: 5 additions & 2 deletions api/src/main/java/com/cloud/resource/ResourceState.java
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,10 @@ public static Event toEvent(String e) {
}
}

public static List<ResourceState> s_maintenanceStates = List.of(ResourceState.Maintenance,
ResourceState.ErrorInMaintenance, ResourceState.PrepareForMaintenance,
ResourceState.ErrorInPrepareForMaintenance);

public ResourceState getNextState(Event a) {
return s_fsm.getNextState(this, a);
}
Expand All @@ -98,8 +102,7 @@ public static String[] toString(ResourceState... states) {
}

public static boolean isMaintenanceState(ResourceState state) {
return Arrays.asList(ResourceState.Maintenance, ResourceState.ErrorInMaintenance,
ResourceState.PrepareForMaintenance, ResourceState.ErrorInPrepareForMaintenance).contains(state);
return s_maintenanceStates.contains(state);
}

public static boolean canAttemptMaintenance(ResourceState state) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -432,6 +432,7 @@ public class ApiConstants {
public static final String PUBLIC_END_PORT = "publicendport";
public static final String PUBLIC_ZONE = "publiczone";
public static final String PURGE_RESOURCES = "purgeresources";
public static final String REBALANCE = "rebalance";
public static final String RECEIVED_BYTES = "receivedbytes";
public static final String RECONNECT = "reconnect";
public static final String RECOVER = "recover";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ public class PatchSystemVMCmd extends BaseAsyncCmd {
@Parameter(name = ApiConstants.FORCED, type = CommandType.BOOLEAN,
description = "If true, initiates copy of scripts and restart of the agent, even if the scripts version matches." +
"To be used with ID parameter only")
private Boolean force;
private Boolean forced;

/////////////////////////////////////////////////////
/////////////////// Accessors ///////////////////////
Expand All @@ -58,7 +58,7 @@ public Long getId() {
}

public boolean isForced() {
return force != null && force;
return forced != null && forced;
}

/////////////////////////////////////////////////////
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,15 @@
private List<String> avoidMsList;
private String lbAlgorithm;
private Long lbCheckInterval;
private Boolean triggerHostLb;

public SetupMSListCommand(final List<String> msList, final List<String> avoidMsList, final String lbAlgorithm, final Long lbCheckInterval) {
public SetupMSListCommand(final List<String> msList, final List<String> avoidMsList, final String lbAlgorithm, final Long lbCheckInterval, final Boolean triggerHostLb) {
super();
this.msList = msList;
this.avoidMsList = avoidMsList;
this.lbAlgorithm = lbAlgorithm;
this.lbCheckInterval = lbCheckInterval;
this.triggerHostLb = triggerHostLb;

Check warning on line 40 in core/src/main/java/org/apache/cloudstack/agent/lb/SetupMSListCommand.java

View check run for this annotation

Codecov / codecov/patch

core/src/main/java/org/apache/cloudstack/agent/lb/SetupMSListCommand.java#L40

Added line #L40 was not covered by tests
}

public List<String> getMsList() {
Expand All @@ -54,9 +56,12 @@
return lbCheckInterval;
}

public boolean getTriggerHostLb() {
return triggerHostLb;
}

Check warning on line 61 in core/src/main/java/org/apache/cloudstack/agent/lb/SetupMSListCommand.java

View check run for this annotation

Codecov / codecov/patch

core/src/main/java/org/apache/cloudstack/agent/lb/SetupMSListCommand.java#L59-L61

Added lines #L59 - L61 were not covered by tests

@Override
public boolean executeInSequence() {
return false;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -171,5 +171,5 @@ enum TapAgentsAction {

void propagateChangeToAgents(Map<String, String> params);

boolean transferDirectAgentsFromMS(String fromMsUuid, long fromMsId, long timeoutDurationInMs);
boolean transferDirectAgentsFromMS(String fromMsUuid, long fromMsId, long timeoutDurationInMs, boolean excludeHostsInMaintenance);
}
Original file line number Diff line number Diff line change
Expand Up @@ -2193,7 +2193,7 @@
}

@Override
public boolean transferDirectAgentsFromMS(String fromMsUuid, long fromMsId, long timeoutDurationInMs) {
public boolean transferDirectAgentsFromMS(String fromMsUuid, long fromMsId, long timeoutDurationInMs, boolean excludeHostsInMaintenance) {

Check warning on line 2196 in engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/orchestration/src/main/java/com/cloud/agent/manager/AgentManagerImpl.java#L2196

Added line #L2196 was not covered by tests
return true;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLEngine;

import com.cloud.resource.ResourceState;
import org.apache.cloudstack.ca.CAManager;
import org.apache.cloudstack.framework.config.ConfigDepot;
import org.apache.cloudstack.framework.config.ConfigKey;
Expand Down Expand Up @@ -431,10 +432,10 @@
ch = connectToPeer(peer, ch);
if (ch == null) {
try {
logD(bytes, "Unable to route to peer: " + Request.parse(bytes));
logD(bytes, "Unable to establish connection to route to peer: " + Request.parse(bytes));

Check warning on line 435 in engine/orchestration/src/main/java/com/cloud/agent/manager/ClusteredAgentManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/orchestration/src/main/java/com/cloud/agent/manager/ClusteredAgentManagerImpl.java#L435

Added line #L435 was not covered by tests
} catch (ClassNotFoundException | UnsupportedVersionException e) {
// Request.parse thrown exception when we try to log it, log as much as we can
logD(bytes, "Unable to route to peer, and Request.parse further caught exception" + e.getMessage());
logD(bytes, "Unable to establish connection to route to peer, and Request.parse further caught exception" + e.getMessage());

Check warning on line 438 in engine/orchestration/src/main/java/com/cloud/agent/manager/ClusteredAgentManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/orchestration/src/main/java/com/cloud/agent/manager/ClusteredAgentManagerImpl.java#L438

Added line #L438 was not covered by tests
}
return false;
}
Expand Down Expand Up @@ -643,7 +644,6 @@
final Link link = task.getLink();

if (Request.fromServer(data)) {

final AgentAttache agent = findAttache(hostId);

if (Request.isControl(data)) {
Expand Down Expand Up @@ -691,7 +691,6 @@
cancel(Long.toString(Request.getManagementServerId(data)), hostId, Request.getSequence(data), e.getMessage());
}
} else {

final long mgmtId = Request.getManagementServerId(data);
if (mgmtId != -1 && mgmtId != _nodeId) {
routeToPeer(Long.toString(mgmtId), data);
Expand Down Expand Up @@ -1352,7 +1351,7 @@
if (cmd instanceof PrepareForMaintenanceManagementServerHostCommand) {
logger.debug("Received PrepareForMaintenanceManagementServerHostCommand - preparing for maintenance");
try {
managementServerMaintenanceManager.prepareForMaintenance(((PrepareForMaintenanceManagementServerHostCommand) cmd).getLbAlgorithm());
managementServerMaintenanceManager.prepareForMaintenance(((PrepareForMaintenanceManagementServerHostCommand) cmd).getLbAlgorithm(), ((PrepareForMaintenanceManagementServerHostCommand) cmd).isForced());

Check warning on line 1354 in engine/orchestration/src/main/java/com/cloud/agent/manager/ClusteredAgentManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/orchestration/src/main/java/com/cloud/agent/manager/ClusteredAgentManagerImpl.java#L1354

Added line #L1354 was not covered by tests
return "Successfully prepared for maintenance";
} catch(CloudRuntimeException e) {
return e.getMessage();
Expand Down Expand Up @@ -1399,14 +1398,14 @@
}

@Override
public boolean transferDirectAgentsFromMS(String fromMsUuid, long fromMsId, long timeoutDurationInMs) {
public boolean transferDirectAgentsFromMS(String fromMsUuid, long fromMsId, long timeoutDurationInMs, boolean excludeHostsInMaintenance) {

Check warning on line 1401 in engine/orchestration/src/main/java/com/cloud/agent/manager/ClusteredAgentManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/orchestration/src/main/java/com/cloud/agent/manager/ClusteredAgentManagerImpl.java#L1401

Added line #L1401 was not covered by tests
if (timeoutDurationInMs <= 0) {
logger.debug("Not transferring direct agents from management server node {} (id: {}) to other nodes, invalid timeout duration", fromMsId, fromMsUuid);
return false;
}

long transferStartTimeInMs = System.currentTimeMillis();
if (CollectionUtils.isEmpty(getDirectAgentHosts(fromMsId))) {
if (CollectionUtils.isEmpty(getDirectAgentHosts(fromMsId, excludeHostsInMaintenance))) {
logger.info("No direct agent hosts available on management server node {} (id: {}), to transfer", fromMsId, fromMsUuid);
return true;
}
Expand All @@ -1421,7 +1420,7 @@
int agentTransferFailedCount = 0;
List<DataCenterVO> dataCenterList = dcDao.listAll();
for (DataCenterVO dc : dataCenterList) {
List<HostVO> directAgentHostsInDc = getDirectAgentHostsInDc(fromMsId, dc.getId());
List<HostVO> directAgentHostsInDc = getDirectAgentHostsInDc(fromMsId, dc.getId(), excludeHostsInMaintenance);

Check warning on line 1423 in engine/orchestration/src/main/java/com/cloud/agent/manager/ClusteredAgentManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/orchestration/src/main/java/com/cloud/agent/manager/ClusteredAgentManagerImpl.java#L1423

Added line #L1423 was not covered by tests
if (CollectionUtils.isEmpty(directAgentHostsInDc)) {
continue;
}
Expand Down Expand Up @@ -1455,9 +1454,10 @@
return (agentTransferFailedCount == 0);
}

private List<HostVO> getDirectAgentHosts(long msId) {
private List<HostVO> getDirectAgentHosts(long msId, boolean excludeHostsInMaintenance) {

Check warning on line 1457 in engine/orchestration/src/main/java/com/cloud/agent/manager/ClusteredAgentManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/orchestration/src/main/java/com/cloud/agent/manager/ClusteredAgentManagerImpl.java#L1457

Added line #L1457 was not covered by tests
List<HostVO> directAgentHosts = new ArrayList<>();
List<HostVO> hosts = _hostDao.listHostsByMs(msId);
List<ResourceState> statesToExclude = excludeHostsInMaintenance ? ResourceState.s_maintenanceStates : List.of();
List<HostVO> hosts = _hostDao.listHostsByMsResourceState(msId, statesToExclude);

Check warning on line 1460 in engine/orchestration/src/main/java/com/cloud/agent/manager/ClusteredAgentManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/orchestration/src/main/java/com/cloud/agent/manager/ClusteredAgentManagerImpl.java#L1460

Added line #L1460 was not covered by tests
for (HostVO host : hosts) {
AgentAttache agent = findAttache(host.getId());
if (agent instanceof DirectAgentAttache) {
Expand All @@ -1468,9 +1468,11 @@
return directAgentHosts;
}

private List<HostVO> getDirectAgentHostsInDc(long msId, long dcId) {
private List<HostVO> getDirectAgentHostsInDc(long msId, long dcId, boolean excludeHostsInMaintenance) {

Check warning on line 1471 in engine/orchestration/src/main/java/com/cloud/agent/manager/ClusteredAgentManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/orchestration/src/main/java/com/cloud/agent/manager/ClusteredAgentManagerImpl.java#L1471

Added line #L1471 was not covered by tests
List<HostVO> directAgentHosts = new ArrayList<>();
List<HostVO> hosts = _hostDao.listHostsByMsAndDc(msId, dcId);
// To exclude maintenance states use values from ResourceState as source of truth
List<ResourceState> statesToExclude = excludeHostsInMaintenance ? ResourceState.s_maintenanceStates : List.of();
List<HostVO> hosts = _hostDao.listHostsByMsDcResourceState(msId, dcId, statesToExclude);

Check warning on line 1475 in engine/orchestration/src/main/java/com/cloud/agent/manager/ClusteredAgentManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/orchestration/src/main/java/com/cloud/agent/manager/ClusteredAgentManagerImpl.java#L1475

Added line #L1475 was not covered by tests
for (HostVO host : hosts) {
AgentAttache agent = findAttache(host.getId());
if (agent instanceof DirectAgentAttache) {
Expand Down Expand Up @@ -1506,6 +1508,10 @@
public void onManagementServerCancelPreparingForMaintenance() {
logger.debug("Management server cancel preparing for maintenance");
super.onManagementServerPreparingForMaintenance();

// needed for the case when Management Server in Preparing For Maintenance but didn't go to Maintenance state
// (where this variable will be reset)
_agentLbHappened = false;

Check warning on line 1514 in engine/orchestration/src/main/java/com/cloud/agent/manager/ClusteredAgentManagerImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/orchestration/src/main/java/com/cloud/agent/manager/ClusteredAgentManagerImpl.java#L1514

Added line #L1514 was not covered by tests
}

@Override
Expand Down
18 changes: 14 additions & 4 deletions engine/schema/src/main/java/com/cloud/host/dao/HostDao.java
Original file line number Diff line number Diff line change
Expand Up @@ -177,14 +177,24 @@ public interface HostDao extends GenericDao<HostVO, Long>, StateDao<Status, Stat

List<HostVO> listHostsByMsAndDc(long msId, long dcId);

List<HostVO> listHostsByMsDcResourceState(long msId, long dcId, List<ResourceState> excludedResourceStates);

List<HostVO> listHostsByMs(long msId);

List<HostVO> listHostsByMsResourceState(long msId, List<ResourceState> excludedResourceStates);

/**
* Retrieves the number of hosts/agents this {@see ManagementServer} has responsibility over.
* @param msId the id of the {@see ManagementServer}
* @return the number of hosts/agents this {@see ManagementServer} has responsibility over
* Count Hosts by given Management Server, Host and Hypervisor Types,
* and exclude Hosts with given Resource States.
*
* @param msId Management Server Id
* @param excludedResourceStates Resource States to be excluded
* @param hostTypes Host Types
* @param hypervisorTypes Hypervisor Types
* @return Hosts count
*/
int countByMs(long msId);
int countHostsByMsResourceStateTypeAndHypervisorType(long msId, List<ResourceState> excludedResourceStates,
List<Type> hostTypes, List<HypervisorType> hypervisorTypes);

/**
* Retrieves the host ids/agents this {@see ManagementServer} has responsibility over.
Expand Down
42 changes: 38 additions & 4 deletions engine/schema/src/main/java/com/cloud/host/dao/HostDaoImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@
import com.cloud.utils.db.GenericSearchBuilder;
import com.cloud.utils.db.JoinBuilder;
import com.cloud.utils.db.JoinBuilder.JoinType;
import com.cloud.utils.db.QueryBuilder;
import com.cloud.utils.db.SearchBuilder;
import com.cloud.utils.db.SearchCriteria;
import com.cloud.utils.db.SearchCriteria.Func;
Expand Down Expand Up @@ -1600,6 +1601,17 @@
return listBy(sc);
}

@Override
public List<HostVO> listHostsByMsDcResourceState(long msId, long dcId, List<ResourceState> excludedResourceStates) {
QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);
sc.and(sc.entity().getManagementServerId(), Op.EQ, msId);
sc.and(sc.entity().getDataCenterId(), Op.EQ, dcId);

Check warning on line 1608 in engine/schema/src/main/java/com/cloud/host/dao/HostDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/com/cloud/host/dao/HostDaoImpl.java#L1605-L1608

Added lines #L1605 - L1608 were not covered by tests
if (CollectionUtils.isNotEmpty(excludedResourceStates)) {
sc.and(sc.entity().getResourceState(), Op.NIN, excludedResourceStates.toArray());

Check warning on line 1610 in engine/schema/src/main/java/com/cloud/host/dao/HostDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/com/cloud/host/dao/HostDaoImpl.java#L1610

Added line #L1610 was not covered by tests
}
return listBy(sc.create());
}

Check warning on line 1613 in engine/schema/src/main/java/com/cloud/host/dao/HostDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/com/cloud/host/dao/HostDaoImpl.java#L1612-L1613

Added lines #L1612 - L1613 were not covered by tests

@Override
public List<HostVO> listHostsByMs(long msId) {
SearchCriteria<HostVO> sc = ResponsibleMsSearch.create();
Expand All @@ -1608,10 +1620,32 @@
}

@Override
public int countByMs(long msId) {
SearchCriteria<HostVO> sc = ResponsibleMsSearch.create();
sc.setParameters("managementServerId", msId);
return getCount(sc);
public List<HostVO> listHostsByMsResourceState(long msId, List<ResourceState> excludedResourceStates) {
QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);
sc.and(sc.entity().getManagementServerId(), Op.EQ, msId);

Check warning on line 1625 in engine/schema/src/main/java/com/cloud/host/dao/HostDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/com/cloud/host/dao/HostDaoImpl.java#L1623-L1625

Added lines #L1623 - L1625 were not covered by tests
if (CollectionUtils.isNotEmpty(excludedResourceStates)) {
sc.and(sc.entity().getResourceState(), Op.NIN, excludedResourceStates.toArray());

Check warning on line 1627 in engine/schema/src/main/java/com/cloud/host/dao/HostDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/com/cloud/host/dao/HostDaoImpl.java#L1627

Added line #L1627 was not covered by tests
}
return listBy(sc.create());
}

Check warning on line 1630 in engine/schema/src/main/java/com/cloud/host/dao/HostDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/com/cloud/host/dao/HostDaoImpl.java#L1629-L1630

Added lines #L1629 - L1630 were not covered by tests

@Override
public int countHostsByMsResourceStateTypeAndHypervisorType(long msId,
List<ResourceState> excludedResourceStates,
List<Type> hostTypes,
List<HypervisorType> hypervisorTypes) {
QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);
sc.and(sc.entity().getManagementServerId(), Op.EQ, msId);

Check warning on line 1638 in engine/schema/src/main/java/com/cloud/host/dao/HostDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/com/cloud/host/dao/HostDaoImpl.java#L1636-L1638

Added lines #L1636 - L1638 were not covered by tests
if (CollectionUtils.isNotEmpty(excludedResourceStates)) {
sc.and(sc.entity().getResourceState(), Op.NIN, excludedResourceStates.toArray());

Check warning on line 1640 in engine/schema/src/main/java/com/cloud/host/dao/HostDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/com/cloud/host/dao/HostDaoImpl.java#L1640

Added line #L1640 was not covered by tests
}
if (CollectionUtils.isNotEmpty(hostTypes)) {
sc.and(sc.entity().getType(), Op.IN, hostTypes.toArray());

Check warning on line 1643 in engine/schema/src/main/java/com/cloud/host/dao/HostDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/com/cloud/host/dao/HostDaoImpl.java#L1643

Added line #L1643 was not covered by tests
}
if (CollectionUtils.isNotEmpty(hypervisorTypes)) {
sc.and(sc.entity().getHypervisorType(), Op.IN, hypervisorTypes.toArray());

Check warning on line 1646 in engine/schema/src/main/java/com/cloud/host/dao/HostDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/com/cloud/host/dao/HostDaoImpl.java#L1646

Added line #L1646 was not covered by tests
}
return getCount(sc.create());

Check warning on line 1648 in engine/schema/src/main/java/com/cloud/host/dao/HostDaoImpl.java

View check run for this annotation

Codecov / codecov/patch

engine/schema/src/main/java/com/cloud/host/dao/HostDaoImpl.java#L1648

Added line #L1648 was not covered by tests
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,11 @@ public interface IndirectAgentLB {
*/
Long getLBPreferredHostCheckInterval(Long clusterId);

void propagateMSListToAgents();
void propagateMSListToAgents(boolean triggerHostLB);

boolean haveAgentBasedHosts(long msId);
void propagateMSListToAgentsInCluster(Long clusterId);

boolean migrateAgents(String fromMsUuid, long fromMsId, String lbAlgorithm, long timeoutDurationInMs);
boolean haveAgentBasedHosts(long msId, boolean excludeHostsInMaintenance);

boolean migrateAgents(String fromMsUuid, long fromMsId, String lbAlgorithm, long timeoutDurationInMs, boolean excludeHostsInMaintenance);
}
Loading
Loading