package org.ovirt.engine.core.bll; import java.util.HashMap; import java.util.Map; import javax.inject.Inject; import org.ovirt.engine.core.bll.context.CommandContext; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.action.LockProperties; import org.ovirt.engine.core.common.action.LockProperties.Scope; import org.ovirt.engine.core.common.action.VdsActionParameters; import org.ovirt.engine.core.common.errors.EngineMessage; import org.ovirt.engine.core.common.locks.LockingGroup; import org.ovirt.engine.core.common.utils.Pair; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.utils.lock.EngineLock; import org.ovirt.engine.core.vdsbroker.ResourceManager; @NonTransactiveCommandAttribute public class RefreshHostCapabilitiesCommand<T extends VdsActionParameters> extends RefreshHostInfoCommandBase<T> { @Inject private ResourceManager resourceManager; @Inject private HostLocking hostLocking; public RefreshHostCapabilitiesCommand(T parameters, CommandContext commandContext) { super(parameters, commandContext); } @Override protected LockProperties applyLockProperties(LockProperties lockProperties) { return lockProperties.withScope(Scope.Execution); } @Override protected void executeCommand() { try (EngineLock monitoringLock = acquireMonitorLock("Refresh host capabilities")) { resourceManager.getVdsManager(getVdsId()).refreshHost(getVds()); setSucceeded(true); } } @Override protected Map<String, Pair<String, String>> getExclusiveLocks() { Guid hostId = getParameters().getVdsId(); Map<String, Pair<String, String>> exclusiveLocks = new HashMap<>(); exclusiveLocks.put(hostId.toString(), LockMessagesMatchUtil.makeLockingPair(LockingGroup.VDS, EngineMessage.ACTION_TYPE_FAILED_OBJECT_LOCKED)); exclusiveLocks.putAll(hostLocking.getSetupNetworksLock(hostId)); return exclusiveLocks; } @Override protected void setActionMessageParameters() { addValidationMessage(EngineMessage.VAR__ACTION__REFRESH); addValidationMessage(EngineMessage.VAR__TYPE__HOST_CAPABILITIES); } @Override public AuditLogType getAuditLogTypeValue() { return getSucceeded() ? AuditLogType.HOST_REFRESHED_CAPABILITIES : AuditLogType.HOST_REFRESH_CAPABILITIES_FAILED; } }