package org.ovirt.engine.core.vdsbroker.irsbroker; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.StorageDomainType; import org.ovirt.engine.core.common.businessentities.StoragePool; import org.ovirt.engine.core.common.vdscommands.GetStoragePoolInfoVDSCommandParameters; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.KeyValuePairCompat; import org.ovirt.engine.core.utils.log.Logged; import org.ovirt.engine.core.utils.log.Logged.LogLevel; import org.ovirt.engine.core.vdsbroker.vdsbroker.GetStorageDomainStatsVDSCommand; import org.ovirt.engine.core.vdsbroker.vdsbroker.Status; import org.ovirt.engine.core.vdsbroker.vdsbroker.VdsBrokerObjectsBuilder; @Logged(executionLevel = LogLevel.DEBUG) public class GetStoragePoolInfoVDSCommand<P extends GetStoragePoolInfoVDSCommandParameters> extends IrsBrokerCommand<P> { private StoragePoolInfo result; public GetStoragePoolInfoVDSCommand(P parameters) { super(parameters); } @Override protected void executeIrsBrokerCommand() { result = getIrsProxy().getStoragePoolInfo(getParameters().getStoragePoolId().toString()); proceedProxyReturnValue(); StoragePool sp = VdsBrokerObjectsBuilder.buildStoragePool(result.storagePoolInfo); Guid masterId = Guid.Empty; if (result.storagePoolInfo.containsKey("master_uuid")) { masterId = new Guid(result.storagePoolInfo.get("master_uuid").toString()); } sp.setId(getParameters().getStoragePoolId()); ArrayList<StorageDomain> domList = parseStorageDomainList(result.domainsList, masterId); KeyValuePairCompat<StoragePool, List<StorageDomain>> list = new KeyValuePairCompat<>(sp, domList); setReturnValue(list); } @SuppressWarnings("unchecked") private ArrayList<StorageDomain> parseStorageDomainList(Map<String, Object> struct, Guid masterId) { ArrayList<StorageDomain> domainsList = new ArrayList<>(struct.size()); for (Entry<String, Object> entry : struct.entrySet()) { Map<String, Object> domainAsStruct = (Map<String, Object>) entry.getValue(); StorageDomain sd = GetStorageDomainStatsVDSCommand.buildStorageDynamicStruct(domainAsStruct); sd.setStoragePoolId(getParameters().getStoragePoolId()); sd.setId(new Guid(entry.getKey())); if (!masterId.equals(Guid.Empty) && masterId.equals(sd.getId())) { sd.setStorageDomainType(StorageDomainType.Master); } else if (!masterId.equals(Guid.Empty)) { sd.setStorageDomainType(StorageDomainType.Data); } else { sd.setStorageDomainType(StorageDomainType.Unknown); } domainsList.add(sd); } return domainsList; } @Override protected Status getReturnStatus() { return result.getStatus(); } }