mirror of
https://github.com/apache/cloudstack.git
synced 2025-11-04 20:29:27 +01:00
bug 12322: SWIFT, update template_zone_ref after update template to swift
status 12322: resolved fixed
This commit is contained in:
parent
45b5a0c2c1
commit
2d2505d449
@ -102,7 +102,6 @@ import com.cloud.exception.PermissionDeniedException;
|
||||
import com.cloud.exception.ResourceUnavailableException;
|
||||
import com.cloud.host.HostVO;
|
||||
import com.cloud.host.dao.HostDao;
|
||||
import com.cloud.host.dao.HostDetailsDao;
|
||||
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
||||
import com.cloud.network.Network;
|
||||
import com.cloud.network.Network.Capability;
|
||||
@ -136,6 +135,7 @@ import com.cloud.storage.SwiftVO;
|
||||
import com.cloud.storage.dao.DiskOfferingDao;
|
||||
import com.cloud.storage.dao.SwiftDao;
|
||||
import com.cloud.storage.secondary.SecondaryStorageVmManager;
|
||||
import com.cloud.storage.swift.SwiftManager;
|
||||
import com.cloud.test.IPRangeConfig;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.user.AccountManager;
|
||||
@ -233,6 +233,8 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
|
||||
NetworkOfferingServiceMapDao _ntwkOffServiceMapDao;
|
||||
@Inject
|
||||
PhysicalNetworkDao _physicalNetworkDao;
|
||||
@Inject
|
||||
SwiftManager _swiftMgr;
|
||||
|
||||
// FIXME - why don't we have interface for DataCenterLinkLocalIpAddressDao?
|
||||
protected static final DataCenterLinkLocalIpAddressDaoImpl _LinkLocalIpAllocDao = ComponentLocator.inject(DataCenterLinkLocalIpAddressDaoImpl.class);
|
||||
@ -1467,6 +1469,8 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
|
||||
|
||||
// Create deafult networks
|
||||
createDefaultNetworks(zone.getId(), isSecurityGroupEnabled, physicalNetworkId);
|
||||
|
||||
_swiftMgr.propagateSwiftTmplteOnZone(zone.getId());
|
||||
txn.commit();
|
||||
return zone;
|
||||
} catch (Exception ex) {
|
||||
|
||||
@ -28,10 +28,8 @@ import com.cloud.agent.api.Command;
|
||||
import com.cloud.agent.api.StartupCommand;
|
||||
import com.cloud.agent.api.StartupSecondaryStorageCommand;
|
||||
import com.cloud.agent.api.StartupStorageCommand;
|
||||
import com.cloud.cluster.ManagementServerNode;
|
||||
import com.cloud.host.HostVO;
|
||||
import com.cloud.host.Status;
|
||||
import com.cloud.host.Status.Event;
|
||||
import com.cloud.storage.Storage;
|
||||
|
||||
public class SecondaryStorageListener implements Listener {
|
||||
|
||||
@ -46,4 +46,8 @@ public interface SwiftManager extends Manager {
|
||||
void deleteIso(DeleteIsoCmd cmd);
|
||||
|
||||
void deleteTemplate(DeleteTemplateCmd cmd);
|
||||
|
||||
void propagateTemplateOnAllZones(Long tmpltId);
|
||||
|
||||
void propagateSwiftTmplteOnZone(Long zoneId);
|
||||
}
|
||||
@ -24,6 +24,9 @@
|
||||
|
||||
package com.cloud.storage.swift;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.ejb.Local;
|
||||
@ -40,11 +43,15 @@ import com.cloud.api.commands.DeleteIsoCmd;
|
||||
import com.cloud.api.commands.DeleteTemplateCmd;
|
||||
import com.cloud.configuration.Config;
|
||||
import com.cloud.configuration.dao.ConfigurationDao;
|
||||
import com.cloud.dc.DataCenterVO;
|
||||
import com.cloud.dc.dao.DataCenterDao;
|
||||
import com.cloud.exception.DiscoveryException;
|
||||
import com.cloud.storage.SwiftVO;
|
||||
import com.cloud.storage.VMTemplateSwiftVO;
|
||||
import com.cloud.storage.VMTemplateZoneVO;
|
||||
import com.cloud.storage.dao.SwiftDao;
|
||||
import com.cloud.storage.dao.VMTemplateSwiftDao;
|
||||
import com.cloud.storage.dao.VMTemplateZoneDao;
|
||||
import com.cloud.utils.component.Inject;
|
||||
import com.cloud.utils.db.SearchCriteria.Op;
|
||||
import com.cloud.utils.db.SearchCriteria2;
|
||||
@ -68,6 +75,10 @@ public class SwiftManagerImpl implements SwiftManager {
|
||||
private ConfigurationDao _configDao;
|
||||
@Inject
|
||||
private AgentManager _agentMgr;
|
||||
@Inject
|
||||
DataCenterDao _dcDao;
|
||||
@Inject
|
||||
VMTemplateZoneDao _vmTmpltZoneDao;
|
||||
|
||||
@Override
|
||||
public SwiftTO getSwiftTO(Long swiftId) {
|
||||
@ -172,6 +183,55 @@ public class SwiftManagerImpl implements SwiftManager {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void propagateTemplateOnAllZones(Long tmpltId) {
|
||||
String msg;
|
||||
SwiftTO swift = getSwiftTO();
|
||||
if (swift == null) {
|
||||
msg = "There is no Swift in this setup";
|
||||
s_logger.trace(msg);
|
||||
return;
|
||||
}
|
||||
VMTemplateSwiftVO tmpltSwiftRef = _vmTmpltSwiftlDao.findOneByTemplateId(tmpltId);
|
||||
if (tmpltSwiftRef != null) {
|
||||
List<DataCenterVO> dcs = _dcDao.listAll();
|
||||
for (DataCenterVO dc : dcs) {
|
||||
VMTemplateZoneVO tmpltZoneVO = new VMTemplateZoneVO(dc.getId(), tmpltId, new Date());
|
||||
try {
|
||||
_vmTmpltZoneDao.persist(tmpltZoneVO);
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void propagateSwiftTmplteOnZone(Long zoneId) {
|
||||
String msg;
|
||||
SwiftTO swift = getSwiftTO();
|
||||
if (swift == null) {
|
||||
msg = "There is no Swift in this setup";
|
||||
s_logger.trace(msg);
|
||||
return;
|
||||
}
|
||||
List<Long> tmpltIds = new ArrayList<Long>();
|
||||
List<VMTemplateSwiftVO> tmpltSwiftRefs = _vmTmpltSwiftlDao.listAll();
|
||||
if (tmpltSwiftRefs == null) {
|
||||
return;
|
||||
}
|
||||
for (VMTemplateSwiftVO tmpltSwiftRef : tmpltSwiftRefs) {
|
||||
Long tmpltId = tmpltSwiftRef.getTemplateId();
|
||||
if (!tmpltIds.contains(tmpltId)) {
|
||||
tmpltIds.add(tmpltId);
|
||||
VMTemplateZoneVO tmpltZoneVO = new VMTemplateZoneVO(zoneId, tmpltId, new Date());
|
||||
try {
|
||||
_vmTmpltZoneDao.persist(tmpltZoneVO);
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean stop() {
|
||||
|
||||
@ -549,6 +549,7 @@ public class TemplateManagerImpl implements TemplateManager, Manager, TemplateSe
|
||||
}
|
||||
VMTemplateSwiftVO tmpltSwift = new VMTemplateSwiftVO(swift.getId(), templateHostRef.getTemplateId(), new Date(), templateHostRef.getSize(), templateHostRef.getPhysicalSize());
|
||||
_tmpltSwiftDao.persist(tmpltSwift);
|
||||
_swiftMgr.propagateTemplateOnAllZones(templateHostRef.getTemplateId());
|
||||
} catch (Exception e) {
|
||||
String errMsg = "Failed to upload template " + templateId + " to Swift from secondary storage due to " + e.toString();
|
||||
s_logger.warn(errMsg);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user