package org.ovirt.engine.core.vdsbroker.irsbroker;
import org.ovirt.engine.core.common.vdscommands.ImportCandidateVDSCommandParameters;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.compat.StringHelper;
public class ImportCandidateVDSCommand<P extends ImportCandidateVDSCommandParameters> extends IrsCreateCommand<P> {
public ImportCandidateVDSCommand(P parameters) {
super(parameters);
}
@Override
protected void ExecuteIrsBrokerCommand() {
// NOTE: since the IRS doesn't support in multi-drive VMs,
// we choose a drive randomly and import only it:
// LINQ 29456
// string randomDrive = ImportParameters.BaseImageIDs.Keys.ToList()[0];
String randomDrive = (getParameters().getBaseImageIDs().keySet().toArray(new String[0]))[0];
// LINQ 29456
uuidReturn = getIrsProxy().importCandidate(getParameters().getStorageDomainId().toString(),
getParameters().getCandidateID(), getParameters().getBaseID().toString(),
getParameters().getBaseImageIDs().get(randomDrive).toString(),
StringHelper.trimEnd(getParameters().getImportPath(), '/'),
ImportEnumsManager.CandidateSourceString(getParameters().getCandidateSource()),
(new Boolean(getParameters().getForce())).toString().toLowerCase());
ProceedProxyReturnValue();
setReturnValue(new Guid(uuidReturn.mUuid));
}
@Override
public void Rollback() {
for (Guid imageGUID : getParameters().getBaseImageIDs().values()) {
try {
// todo - omer sending false for postZero, check that is correct
// always (and not parameter from user)
getIrsProxy().deleteVolume(getParameters().getStorageDomainId().toString(),
getParameters().getStoragePoolId().toString(),
getParameters().getImageGroupId().toString(),
new String[] { imageGUID.toString() },
"false",
"false");
} catch (java.lang.Exception e) {
}
}
BaseRollback();
}
}