package org.ovirt.engine.core.vdsbroker.vdsbroker;
import org.ovirt.engine.core.compat.*;
import org.ovirt.engine.core.common.businessentities.*;
import org.ovirt.engine.core.vdsbroker.irsbroker.*;
import org.ovirt.engine.core.vdsbroker.xmlrpc.XmlRpcStruct;
import org.ovirt.engine.core.common.utils.EnumUtils;
import org.ovirt.engine.core.common.vdscommands.*;
public class GetVGListVDSCommand<P extends VdsIdVDSCommandParametersBase> extends VdsBrokerCommand<P> {
protected VGListReturnForXmlRpc _result;
public GetVGListVDSCommand(P parameters) {
super(parameters);
}
@Override
protected void ExecuteVdsBrokerCommand() {
_result = getBroker().getVGList();
ProceedProxyReturnValue();
setReturnValue(ParseVGList(_result.vgList));
}
@Override
protected StatusForXmlRpc getReturnStatus() {
return _result.mStatus;
}
protected java.util.ArrayList<storage_domains> ParseVGList(XmlRpcStruct[] vgList) {
java.util.ArrayList<storage_domains> result = new java.util.ArrayList<storage_domains>(vgList.length);
for (XmlRpcStruct vg : vgList) {
try {
storage_domains sDomain = new storage_domains();
if (vg.contains("name")) {
try {
sDomain.setid(new Guid(vg.getItem("name").toString()));
} catch (java.lang.Exception e) {
sDomain.setstorage_name(vg.getItem("name").toString());
}
}
sDomain.setstorage(vg.getItem("vgUUID").toString());
Long size = IrsBrokerCommand.AssignLongValue(vg, "vgfree");
if (size != null) {
sDomain.setavailable_disk_size((int) (size / IrsBrokerCommand.BYTES_TO_GB));
}
size = IrsBrokerCommand.AssignLongValue(vg, "vgsize");
if (size != null && sDomain.getavailable_disk_size() != null) {
sDomain.setused_disk_size((int) (size / IrsBrokerCommand.BYTES_TO_GB)
- sDomain.getavailable_disk_size());
}
if (vg.containsKey("vgtype")) {
sDomain.setstorage_type(EnumUtils.valueOf(StorageType.class, vg.getItem("vgtype").toString(), true));
} else {
sDomain.setstorage_type(StorageType.ALL);
}
result.add(sDomain);
} catch (RuntimeException ex) {
log.errorFormat("irsBroker::ParseVGList::Failed building Storage domain, xmlRpcStruct = {0}",
vg.toString());
IRSErrorException outEx = new IRSErrorException(ex);
log.error(outEx);
throw outEx;
}
}
return result;
}
@Override
protected Object getReturnValueFromBroker() {
return _result;
}
private static LogCompat log = LogFactoryCompat.getLog(GetVGListVDSCommand.class);
}