public ListVolumeAnswer(String secUrl, Map<Long, TemplateProp> templateInfos) { super(null, true, "success"); this.setSecUrl(secUrl); this.templateInfos = templateInfos; }
private Answer execute(ListVolumeCommand cmd) { if (!_inSystemVM) { return new ListVolumeAnswer(cmd.getSecUrl(), null); } DataStoreTO store = cmd.getDataStore(); if (store instanceof NfsTO) { String root = getRootDir(cmd.getSecUrl(), _nfsVersion); Map<Long, TemplateProp> templateInfos = _dlMgr.gatherVolumeInfo(root); return new ListVolumeAnswer(cmd.getSecUrl(), templateInfos); } else if (store instanceof S3TO) { S3TO s3 = (S3TO)store; Map<Long, TemplateProp> templateInfos = s3ListVolume(s3); return new ListVolumeAnswer(s3.getBucketName(), templateInfos); } else { return new Answer(cmd, false, "Unsupported image data store: " + store); } }
private Map<Long, TemplateProp> listVolume(DataStore store) { ListVolumeCommand cmd = new ListVolumeCommand(store.getTO(), store.getUri()); EndPoint ep = _epSelector.select(store); Answer answer = null; if (ep == null) { String errMsg = "No remote endpoint to send command, check if host or ssvm is down?"; s_logger.error(errMsg); answer = new Answer(cmd, false, errMsg); } else { answer = ep.sendMessage(cmd); } if (answer != null && answer.getResult()) { ListVolumeAnswer tanswer = (ListVolumeAnswer)answer; return tanswer.getTemplateInfo(); } else { if (s_logger.isDebugEnabled()) { s_logger.debug("Can not list volumes for image store " + store.getId()); } } return null; }