mirror of
https://github.com/apache/cloudstack.git
synced 2025-11-03 04:12:31 +01:00
SWIFT: fixed error handling
This commit is contained in:
parent
a7b9f00a71
commit
2413eae6a5
@ -235,12 +235,23 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
|
||||
command.add("cd " + lDir + ";/usr/bin/python /usr/local/cloud/systemvm/scripts/storage/secondary/swift -A "
|
||||
+ swift.getUrl() + " -U " + swift.getAccount() + ":" + swift.getUserName() + " -K " + swift.getKey()
|
||||
+ " upload " + container + " " + lFilename);
|
||||
String result = command.execute();
|
||||
OutputInterpreter.AllLinesParser parser = new OutputInterpreter.AllLinesParser();
|
||||
String result = command.execute(parser);
|
||||
if (result != null) {
|
||||
String errMsg = "swiftUpload failed , err=" + result;
|
||||
s_logger.warn(errMsg);
|
||||
return errMsg;
|
||||
}
|
||||
if (parser.getLines() != null) {
|
||||
String[] lines = parser.getLines().split("\\n");
|
||||
for (String line : lines) {
|
||||
if (line.contains("Errno")) {
|
||||
String errMsg = "swiftUpload failed , err=" + lines.toString();
|
||||
s_logger.warn(errMsg);
|
||||
return errMsg;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -259,7 +270,7 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
|
||||
String errMsg = "swiftList failed , err=" + result;
|
||||
s_logger.warn(errMsg);
|
||||
} else {
|
||||
String errMsg = "swiftList, no lines returns";
|
||||
String errMsg = "swiftList failed, no lines returns";
|
||||
s_logger.warn(errMsg);
|
||||
}
|
||||
}
|
||||
@ -272,12 +283,23 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
|
||||
command.add("/usr/bin/python /usr/local/cloud/systemvm/scripts/storage/secondary/swift -A "
|
||||
+ swift.getUrl() + " -U " + swift.getAccount() + ":" + swift.getUserName() + " -K " + swift.getKey()
|
||||
+ " delete " + container + " " + rFilename);
|
||||
String result = command.execute();
|
||||
OutputInterpreter.AllLinesParser parser = new OutputInterpreter.AllLinesParser();
|
||||
String result = command.execute(parser);
|
||||
if (result != null) {
|
||||
String errMsg = "swiftDelete failed , err=" + result;
|
||||
s_logger.warn(errMsg);
|
||||
return errMsg;
|
||||
}
|
||||
if (parser.getLines() != null) {
|
||||
String[] lines = parser.getLines().split("\\n");
|
||||
for (String line : lines) {
|
||||
if (line.contains("Errno")) {
|
||||
String errMsg = "swiftDelete failed , err=" + lines.toString();
|
||||
s_logger.warn(errMsg);
|
||||
return errMsg;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@ -62,7 +62,6 @@ import com.cloud.storage.SwiftVO;
|
||||
import com.cloud.storage.VMTemplateHostVO;
|
||||
import com.cloud.storage.VMTemplateStorageResourceAssoc;
|
||||
import com.cloud.storage.VMTemplateStorageResourceAssoc.Status;
|
||||
import com.cloud.storage.VMTemplateSwiftVO;
|
||||
import com.cloud.storage.VMTemplateVO;
|
||||
import com.cloud.storage.VMTemplateZoneVO;
|
||||
import com.cloud.storage.dao.StoragePoolHostDao;
|
||||
@ -141,6 +140,7 @@ public class DownloadMonitorImpl implements DownloadMonitor {
|
||||
private HostDao _hostDao;
|
||||
@Inject
|
||||
private ResourceManager _resourceMgr;
|
||||
@Inject
|
||||
private SwiftDao _swiftDao;
|
||||
|
||||
private String _name;
|
||||
@ -501,18 +501,12 @@ public class DownloadMonitorImpl implements DownloadMonitor {
|
||||
|
||||
@Override
|
||||
public void handleTemplateSync(Long dcId) {
|
||||
if ( dcId != null ) {
|
||||
List<HostVO> ssHosts = _ssvmMgr.listSecondaryStorageHostsInOneZone(dcId);
|
||||
for ( HostVO ssHost : ssHosts ) {
|
||||
if (dcId != null) {
|
||||
List<HostVO> ssHosts = _ssvmMgr.listSecondaryStorageHostsInOneZone(dcId);
|
||||
for (HostVO ssHost : ssHosts) {
|
||||
handleTemplateSync(ssHost);
|
||||
}
|
||||
}
|
||||
if (_swiftMgr.isSwiftEnabled()) {
|
||||
List<SwiftVO> swifts = _swiftDao.listAll();
|
||||
for (SwiftVO swift : swifts) {
|
||||
handleTemplateSync(swift);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Map<String, TemplateInfo> listTemplate(HostVO ssHost) {
|
||||
@ -547,37 +541,6 @@ public class DownloadMonitorImpl implements DownloadMonitor {
|
||||
return null;
|
||||
}
|
||||
|
||||
public void handleTemplateSync(SwiftVO swift) {
|
||||
if (swift == null) {
|
||||
s_logger.warn("Huh? swift is null");
|
||||
return;
|
||||
}
|
||||
Map<String, TemplateInfo> templateInfos = listTemplate(swift);
|
||||
if (templateInfos == null) {
|
||||
return;
|
||||
}
|
||||
List<VMTemplateVO> allTemplates = _templateDao.listAll();
|
||||
for (VMTemplateVO tmplt : allTemplates) {
|
||||
String uniqueName = tmplt.getUniqueName();
|
||||
VMTemplateSwiftVO tmpltSwift = _vmTemplateSwiftlDao.findBySwiftTemplate(swift.getId(), tmplt.getId());
|
||||
if (templateInfos.containsKey(uniqueName)) {
|
||||
TemplateInfo tmpltInfo = templateInfos.remove(uniqueName);
|
||||
if (tmpltSwift != null) {
|
||||
s_logger.info("Template Sync found " + uniqueName + " already in the template swift table");
|
||||
continue;
|
||||
} else {
|
||||
tmpltSwift = new VMTemplateSwiftVO(swift.getId(), tmplt.getId(), new Date(), tmpltInfo.getSize(), tmpltInfo.getPhysicalSize());
|
||||
_vmTemplateSwiftlDao.persist(tmpltSwift);
|
||||
s_logger.info("Template Sync added " + uniqueName + " to the template swift table");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (TemplateInfo tmpltInfo : templateInfos.values()) {
|
||||
s_logger.warn("Template Sync found template " + tmpltInfo.getInstallPath() + " in Swift description, but not in template table, please");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleTemplateSync(HostVO ssHost) {
|
||||
if (ssHost == null) {
|
||||
@ -590,6 +553,7 @@ public class DownloadMonitorImpl implements DownloadMonitor {
|
||||
s_logger.warn("Huh? Agent id " + sserverId + " is not secondary storage host");
|
||||
return;
|
||||
}
|
||||
|
||||
Map<String, TemplateInfo> templateInfos = listTemplate(ssHost);
|
||||
if (templateInfos == null) {
|
||||
return;
|
||||
@ -715,6 +679,11 @@ public class DownloadMonitorImpl implements DownloadMonitor {
|
||||
}
|
||||
}
|
||||
if (availHypers.contains(tmplt.getHypervisorType())) {
|
||||
if (_swiftMgr.isSwiftEnabled()) {
|
||||
if (_swiftMgr.isTemplateInstalled(tmplt.getId())) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
s_logger.debug("Template " + tmplt.getName() + " needs to be downloaded to " + ssHost.getName());
|
||||
downloadTemplateToStorage(tmplt, ssHost);
|
||||
}
|
||||
|
||||
@ -40,4 +40,6 @@ public interface SwiftManager extends Manager {
|
||||
List<? extends Swift> addSwift(AddSwiftCmd cmd) throws DiscoveryException;
|
||||
|
||||
boolean isSwiftEnabled();
|
||||
|
||||
public boolean isTemplateInstalled(Long templateId);
|
||||
}
|
||||
@ -40,9 +40,13 @@ import com.cloud.configuration.dao.ConfigurationDao;
|
||||
import com.cloud.exception.DiscoveryException;
|
||||
import com.cloud.storage.Swift;
|
||||
import com.cloud.storage.SwiftVO;
|
||||
import com.cloud.storage.VMTemplateSwiftVO;
|
||||
import com.cloud.storage.dao.SwiftDao;
|
||||
import com.cloud.storage.dao.VMTemplateSwiftDao;
|
||||
import com.cloud.utils.component.Inject;
|
||||
import com.cloud.utils.db.SearchCriteria.Op;
|
||||
import com.cloud.utils.db.SearchCriteria2;
|
||||
import com.cloud.utils.db.SearchCriteriaService;
|
||||
|
||||
|
||||
|
||||
@ -79,6 +83,14 @@ public class SwiftManagerImpl implements SwiftManager {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isTemplateInstalled(Long templateId) {
|
||||
|
||||
SearchCriteriaService<VMTemplateSwiftVO, VMTemplateSwiftVO> sc = SearchCriteria2.create(VMTemplateSwiftVO.class);
|
||||
sc.addAnd(sc.getEntity().getTemplateId(), Op.EQ, templateId);
|
||||
return !sc.list().isEmpty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Swift> addSwift(AddSwiftCmd cmd) throws DiscoveryException {
|
||||
if (!isSwiftEnabled()) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user