package com.onaro.sanscreen.client.view.topology.queries; import com.netapp.sanscreen.serverquery.topology.interfaces.remote.TopologyQueryRemote; import com.onaro.sanscreen.client.graph.sessions.GraphSession; import com.onaro.sanscreen.client.graph.virtualization.interfaces.data.VirtualizationModel; import com.onaro.sanscreen.client.model.beans.HostBean; import com.onaro.sanscreen.client.netgraph2.model.NetGraphModel; import com.onaro.sanscreen.client.view.selection.SelectedObject; import com.onaro.sanscreen.client.view.topology.TopologyUtils; import com.onaro.sanscreen.client.view.topology.queries.util.TopologyBeanFactory; import com.onaro.sanscreen.server.interfaces.ServerInterfacesUtils; import com.onaro.sanscreen.server.interfaces.data.Context; import com.onaro.sanscreen.types.ObjectType; import com.onaro.sanscreen.util.Constant; import java.util.*; /** * Contains topology virtualization logic concerning the remote session calls needed to be executed * based on the object type selected in the main-view. * * @author cohenj * @since 10/13/2009 - Everest */ public class VolumeVirtualizationQuery extends AbstractTopologyQuery { public static final Set SUPPORTED_TYPES = new HashSet(Arrays.asList( ObjectType.PATH, ObjectType.VIOLATION, ObjectType.VOLUME, ObjectType.INTERNAL_VOLUME, ObjectType.VOLUME, ObjectType.STORAGE_POOL, ObjectType.HOST, ObjectType.STORAGE, ObjectType.DISK, ObjectType.HV_VIRTUAL_MACHINE, ObjectType.HV_VIRTUAL_MACHINE_TO_DISK, ObjectType.HV_DATA_STORE)); @Override public NetGraphModel executeQuery(List selectedObjects, Context context, TopologyBeanFactory topologyBeanFactory) throws Exception { GraphSession graphSession = TopologyUtils.getSession(GraphSession.class); TopologyQueryRemote topologyQueryRemote = ServerInterfacesUtils.getTopologyQueryRemote(); for (SelectedObject selectedObject : selectedObjects) { Long objId = selectedObject.getObjIdLong(); VirtualizationModel virtualizationModel; if (selectedObject.getContext() != null) context = selectedObject.getContext(); String type = selectedObject.getType(); if (ObjectType.PATH.getName().equals(type)) { virtualizationModel = topologyQueryRemote.getVirtualizationModelByPathId(context, objId); } else if (ObjectType.VIOLATION.getName().equals(type)) { virtualizationModel = topologyQueryRemote.getVirtualizationModelByViolationId(context, objId); } else if (ObjectType.VOLUME.getName().equals(type)) { virtualizationModel = graphSession.getVirtualizationModelByVolumeIds(Collections.singleton(objId)); } else if (ObjectType.INTERNAL_VOLUME.getName().equals(type)) { virtualizationModel = topologyQueryRemote.getVirtualizationModelByInternalVolumeId(context, objId); } else if (ObjectType.STORAGE_POOL.getName().equals(type)) { virtualizationModel = topologyQueryRemote.getVirtualizationModelByStoragePoolId(context, objId); } else if (ObjectType.HOST.getName().equals(type)) { virtualizationModel = topologyQueryRemote.getVirtualizationModelByHostId(context, objId); } else if (ObjectType.STORAGE.getName().equals(type)) { virtualizationModel = topologyQueryRemote.getVirtualizationModelByStorageId(context, objId); } else if (ObjectType.DISK.getName().equals(type)) { virtualizationModel = topologyQueryRemote.getVirtualizationModelByDiskId(context, objId); } else if (ObjectType.HV_VIRTUAL_MACHINE.getName().equals(type)) { virtualizationModel = topologyQueryRemote.getVirtualizationModelByVirtualMachineId(context, objId); } else if (ObjectType.HV_VIRTUAL_MACHINE_TO_DISK.getName().equals(type)) { virtualizationModel = topologyQueryRemote.getVirtualizationModelByVirtualMachineDiskId(context, objId); } else if (ObjectType.HV_DATA_STORE.getName().equals(type)) { virtualizationModel = topologyQueryRemote.getVirtualizationModelByDataStoreId(context, objId); } else { continue; } topologyBeanFactory.createBeans(virtualizationModel); List hostBeans = topologyBeanFactory.getBeanManager().findBeans(HostBean.class); Set newHostIds = new HashSet(); for (HostBean bean : hostBeans) { Long hostId = (Long) bean.getId(); newHostIds.add(hostId); } TopologyUtils.addVirtualMachinesByVolumesInBeanManager(Constant.LONG_NULL_ID, newHostIds, context, topologyBeanFactory, true, true); } NetGraphModel netGraphModel = new NetGraphModel(topologyBeanFactory.getBeanManager()); netGraphModel.setMode(NetGraphModel.Mode.LOGICAL); return netGraphModel; } }