package org.ovirt.engine.core.vdsbroker;
import org.ovirt.engine.core.common.businessentities.VDS;
import org.ovirt.engine.core.common.vdscommands.VdsIdVDSCommandParametersBase;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.dal.dbbroker.DbFacade;
public abstract class VdsIdVDSCommandBase<P extends VdsIdVDSCommandParametersBase> extends VDSCommandBase<P> {
protected VdsManager _vdsManager;
public VdsIdVDSCommandBase(P parameters, boolean newHost) {
super(parameters);
if (!newHost) {
_vdsManager = ResourceManager.getInstance().getVdsManager(parameters.getVdsId());
}
}
public VdsIdVDSCommandBase(P parameters) {
this(parameters, false);
}
protected Guid getVdsId() {
return getParameters().getVdsId();
}
private VDS _vds;
protected VDS getVds() {
if (_vds == null) {
_vds = DbFacade.getInstance().getVdsDao().get(getVdsId());
}
return _vds;
}
@Override
protected String getAdditionalInformation() {
if (getVds() != null) {
return String.format("HostName = %1$s", getVds().getName());
} else {
return super.getAdditionalInformation();
}
}
@Override
protected void executeVDSCommand() {
if (_vdsManager != null) {
synchronized (_vdsManager) {
executeVdsIdCommand();
}
} else {
executeVdsIdCommand();
}
}
protected abstract void executeVdsIdCommand();
}