/** Returns possible choices for drop down lists. */ @Override protected Object[] getParamPossibleChoices(final String param) { if (DiskData.SOURCE_FILE.equals(param)) { final Set<String> sourceFileDirs = new TreeSet<String>(); sourceFileDirs.add(LIBVIRT_IMAGE_LOCATION); for (final Host h : getVMSVirtualDomainInfo().getDefinedOnHosts()) { final VMSXML vmsxml = getBrowser().getVMSXML(h); if (vmsxml != null) { sourceFileDirs.addAll(vmsxml.getsourceFileDirs()); } } return sourceFileDirs.toArray(new String[sourceFileDirs.size()]); } else if (DiskData.SOURCE_DEVICE.equals(param)) { for (final Host h : getVMSVirtualDomainInfo().getDefinedOnHosts()) { final VMSXML vmsxml = getBrowser().getVMSXML(h); final List<String> bds = new ArrayList<String>(); bds.add(null); if (vmsxml != null) { for (final BlockDevInfo bdi : h.getBrowser().getBlockDevInfos()) { if (bdi.getBlockDevice().isDrbd()) { bds.add(bdi.getDrbdVolumeInfo().getDeviceByRes()); } else { bds.add(bdi.getName()); } } return bds.toArray(new String[bds.size()]); } } } return POSSIBLE_VALUES.get(param); }