package org.ovirt.engine.core.vdsbroker.irsbroker; import org.ovirt.engine.core.compat.*; import org.ovirt.engine.core.common.businessentities.*; import org.ovirt.engine.core.utils.log.Logged; import org.ovirt.engine.core.utils.log.Logged.LogLevel; import org.ovirt.engine.core.vdsbroker.vdsbroker.*; import org.ovirt.engine.core.vdsbroker.xmlrpc.XmlRpcStruct; import org.ovirt.engine.core.common.vdscommands.*; @Logged(executionLevel = LogLevel.DEBUG) public class GetStoragePoolInfoVDSCommand<P extends GetStoragePoolInfoVDSCommandParameters> extends IrsBrokerCommand<P> { private StoragePoolInfoReturnForXmlRpc _result; public GetStoragePoolInfoVDSCommand(P parameters) { super(parameters); } @Override protected void ExecuteIrsBrokerCommand() { _result = getIrsProxy().getStoragePoolInfo(getParameters().getStoragePoolId().toString()); ProceedProxyReturnValue(); storage_pool sp = ParseStoragePoolInfoResult(_result.mStoragePoolInfo); Guid masterId = Guid.Empty; if (_result.mStoragePoolInfo.containsKey("master_uuid")) { masterId = new Guid(_result.mStoragePoolInfo.getItem("master_uuid").toString()); } sp.setId(getParameters().getStoragePoolId()); java.util.ArrayList<storage_domains> domList = ParseStorageDomainList(_result.mDomainsList, masterId); KeyValuePairCompat<storage_pool, java.util.List<storage_domains>> list = new KeyValuePairCompat<storage_pool, java.util.List<storage_domains>>( sp, domList); setReturnValue(list); } private java.util.ArrayList<storage_domains> ParseStorageDomainList(XmlRpcStruct xmlRpcStruct, Guid masterId) { java.util.ArrayList<storage_domains> domainsList = new java.util.ArrayList<storage_domains>( xmlRpcStruct.getCount()); for (String domain : xmlRpcStruct.getKeys()) { XmlRpcStruct domainAsStruct = new XmlRpcStruct((java.util.Map) xmlRpcStruct.getItem(domain)); storage_domains sd = GetStorageDomainStatsVDSCommand.BuildStorageDynamicFromXmlRpcStruct(domainAsStruct); sd.setstorage_pool_id(getParameters().getStoragePoolId()); sd.setid(new Guid(domain)); if (!masterId.equals(Guid.Empty) && masterId.equals(sd.getid())) { sd.setstorage_domain_type(StorageDomainType.Master); } else if (!masterId.equals(Guid.Empty)) { sd.setstorage_domain_type(StorageDomainType.Data); } else { sd.setstorage_domain_type(StorageDomainType.Unknown); } domainsList.add(sd); } return domainsList; } private storage_pool ParseStoragePoolInfoResult(XmlRpcStruct xmlRpcStruct) { try { return VdsBrokerObjectsBuilder.buildStoragePool(xmlRpcStruct); } catch (RuntimeException ex) { log.errorFormat( "irsBroker::BuildStorageDynamicFromXmlRpcStruct::Failed building Storage dynamic, xmlRpcStruct = {0}", xmlRpcStruct.toString()); IRSErrorException outEx = new IRSErrorException(ex); log.error(outEx); throw outEx; } } @Override protected StatusForXmlRpc getReturnStatus() { return _result.mStatus; } private static LogCompat log = LogFactoryCompat.getLog(GetStoragePoolInfoVDSCommand.class); }