mirror of https://github.com/apache/cloudstack.git
Remove more VMTemplateHostDao references.
This commit is contained in:
parent
7ec0882dca
commit
7543f314a7
|
|
@ -52,9 +52,7 @@ import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
|||
import com.cloud.storage.VMTemplateVO;
|
||||
import com.cloud.storage.VMTemplateZoneVO;
|
||||
import com.cloud.storage.dao.VMTemplateDao;
|
||||
import com.cloud.storage.dao.VMTemplateHostDao;
|
||||
import com.cloud.storage.dao.VMTemplateZoneDao;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
@Local(value = Discoverer.class)
|
||||
public class SimulatorDiscoverer extends DiscovererBase implements Discoverer, Listener, ResourceStateAdapter {
|
||||
|
|
@ -63,7 +61,6 @@ public class SimulatorDiscoverer extends DiscovererBase implements Discoverer, L
|
|||
|
||||
@Inject HostDao _hostDao;
|
||||
@Inject VMTemplateDao _vmTemplateDao;
|
||||
@Inject VMTemplateHostDao _vmTemplateHostDao;
|
||||
@Inject VMTemplateZoneDao _vmTemplateZoneDao;
|
||||
@Inject ClusterDao _clusterDao;
|
||||
@Inject AgentManager _agentMgr = null;
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
// Unless required by applicable law or agreed to in writing,
|
||||
// software distributed under the License is distributed on an
|
||||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
// KIND, either express or implied. See the License for the
|
||||
// KIND, either express or implied. See the License for the
|
||||
// specific language governing permissions and limitations
|
||||
// under the License.
|
||||
package com.cloud.hypervisor.xen.discoverer;
|
||||
|
|
@ -83,7 +83,6 @@ import com.cloud.storage.VMTemplateVO;
|
|||
import com.cloud.storage.Storage.ImageFormat;
|
||||
import com.cloud.storage.Storage.TemplateType;
|
||||
import com.cloud.storage.dao.VMTemplateDao;
|
||||
import com.cloud.storage.dao.VMTemplateHostDao;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.utils.NumbersUtil;
|
||||
import com.cloud.utils.db.SearchCriteria.Op;
|
||||
|
|
@ -115,14 +114,13 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
|
|||
@Inject protected AlertManager _alertMgr;
|
||||
@Inject protected AgentManager _agentMgr;
|
||||
@Inject VMTemplateDao _tmpltDao;
|
||||
@Inject VMTemplateHostDao _vmTemplateHostDao;
|
||||
@Inject ResourceManager _resourceMgr;
|
||||
@Inject HostPodDao _podDao;
|
||||
@Inject DataCenterDao _dcDao;
|
||||
|
||||
|
||||
protected XcpServerDiscoverer() {
|
||||
}
|
||||
|
||||
|
||||
void setClusterGuid(ClusterVO cluster, String guid) {
|
||||
cluster.setGuid(guid);
|
||||
try {
|
||||
|
|
@ -156,43 +154,43 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
|
|||
String msg = "must specify cluster Id when add host";
|
||||
s_logger.debug(msg);
|
||||
throw new RuntimeException(msg);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (podId == null) {
|
||||
String msg = "must specify pod Id when add host";
|
||||
s_logger.debug(msg);
|
||||
throw new RuntimeException(msg);
|
||||
}
|
||||
|
||||
|
||||
ClusterVO cluster = _clusterDao.findById(clusterId);
|
||||
if(cluster == null || cluster.getHypervisorType() != HypervisorType.XenServer) {
|
||||
if(s_logger.isInfoEnabled())
|
||||
s_logger.info("invalid cluster id or cluster is not for XenServer hypervisors");
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
List<HostVO> eHosts = _resourceMgr.listAllHostsInCluster(clusterId);
|
||||
if( eHosts.size() > 0 ) {
|
||||
HostVO eHost = eHosts.get(0);
|
||||
_hostDao.loadDetails(eHost);
|
||||
}
|
||||
}
|
||||
String hostname = url.getHost();
|
||||
InetAddress ia = InetAddress.getByName(hostname);
|
||||
String hostIp = ia.getHostAddress();
|
||||
String hostIp = ia.getHostAddress();
|
||||
Queue<String> pass=new LinkedList<String>();
|
||||
pass.add(password);
|
||||
String masterIp = _connPool.getMasterIp(hostIp, username, pass);
|
||||
String masterIp = _connPool.getMasterIp(hostIp, username, pass);
|
||||
conn = _connPool.masterConnect(masterIp, username, pass);
|
||||
if (conn == null) {
|
||||
String msg = "Unable to get a connection to " + url;
|
||||
s_logger.debug(msg);
|
||||
throw new DiscoveryException(msg);
|
||||
}
|
||||
|
||||
|
||||
Set<Pool> pools = Pool.getAll(conn);
|
||||
Pool pool = pools.iterator().next();
|
||||
Pool.Record pr = pool.getRecord(conn);
|
||||
Pool.Record pr = pool.getRecord(conn);
|
||||
String poolUuid = pr.uuid;
|
||||
Map<Host, Host.Record> hosts = Host.getAllRecords(conn);
|
||||
|
||||
|
|
@ -229,22 +227,22 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
|
|||
conn.dispose();
|
||||
conn = null;
|
||||
}
|
||||
|
||||
|
||||
poolUuid = clu.getGuid();
|
||||
_clusterDao.update(clusterId, clu);
|
||||
|
||||
|
||||
|
||||
|
||||
if (_checkHvm) {
|
||||
for (Map.Entry<Host, Host.Record> entry : hosts.entrySet()) {
|
||||
Host.Record record = entry.getValue();
|
||||
|
||||
|
||||
boolean support_hvm = false;
|
||||
for ( String capability : record.capabilities ) {
|
||||
if(capability.contains("hvm")) {
|
||||
support_hvm = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if( !support_hvm ) {
|
||||
String msg = "Unable to add host " + record.address + " because it doesn't support hvm";
|
||||
_alertMgr.sendAlert(AlertManager.ALERT_TYPE_HOST, dcId, podId, msg, msg);
|
||||
|
|
@ -257,7 +255,7 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
|
|||
for (Map.Entry<Host, Host.Record> entry : hosts.entrySet()) {
|
||||
Host.Record record = entry.getValue();
|
||||
String hostAddr = record.address;
|
||||
|
||||
|
||||
String prodVersion = record.softwareVersion.get("product_version");
|
||||
if (prodVersion == null) {
|
||||
prodVersion = record.softwareVersion.get("platform_version");
|
||||
|
|
@ -267,18 +265,18 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
|
|||
if (hostOS == null) {
|
||||
hostOS = record.softwareVersion.get("platform_name");
|
||||
}
|
||||
|
||||
|
||||
String hostOSVer = prodVersion;
|
||||
String hostKernelVer = record.softwareVersion.get("linux");
|
||||
|
||||
if (_resourceMgr.findHostByGuid(record.uuid) != null) {
|
||||
s_logger.debug("Skipping " + record.address + " because " + record.uuid + " is already in the database.");
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
CitrixResourceBase resource = createServerResource(dcId, podId, record);
|
||||
s_logger.info("Found host " + record.hostname + " ip=" + record.address + " product version=" + prodVersion);
|
||||
|
||||
|
||||
Map<String, String> details = new HashMap<String, String>();
|
||||
Map<String, Object> params = new HashMap<String, Object>();
|
||||
details.put("url", hostAddr);
|
||||
|
|
@ -292,26 +290,26 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
|
|||
params.put("cluster", clusterId.toString());
|
||||
params.put("pool", poolUuid);
|
||||
params.put("ipaddress", record.address);
|
||||
|
||||
|
||||
details.put(HostInfo.HOST_OS, hostOS);
|
||||
details.put(HostInfo.HOST_OS_VERSION, hostOSVer);
|
||||
details.put(HostInfo.HOST_OS_KERNEL_VERSION, hostKernelVer);
|
||||
details.put(HostInfo.HYPERVISOR_VERSION, xenVersion);
|
||||
|
||||
|
||||
String privateNetworkLabel = _networkMgr.getDefaultManagementTrafficLabel(dcId, HypervisorType.XenServer);
|
||||
String storageNetworkLabel = _networkMgr.getDefaultStorageTrafficLabel(dcId, HypervisorType.XenServer);
|
||||
|
||||
|
||||
if (!params.containsKey("private.network.device") && privateNetworkLabel != null) {
|
||||
params.put("private.network.device", privateNetworkLabel);
|
||||
details.put("private.network.device", privateNetworkLabel);
|
||||
}
|
||||
|
||||
|
||||
if (!params.containsKey("storage.network.device1") && storageNetworkLabel != null) {
|
||||
params.put("storage.network.device1", storageNetworkLabel);
|
||||
details.put("storage.network.device1", storageNetworkLabel);
|
||||
}
|
||||
|
||||
|
||||
|
||||
params.put("wait", Integer.toString(_wait));
|
||||
details.put("wait", Integer.toString(_wait));
|
||||
params.put("migratewait", _configDao.getValue(Config.MigrateWait.toString()));
|
||||
|
|
@ -327,8 +325,8 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
|
|||
}
|
||||
resource.start();
|
||||
resources.put(resource, details);
|
||||
}
|
||||
} catch (SessionAuthenticationFailed e) {
|
||||
}
|
||||
} catch (SessionAuthenticationFailed e) {
|
||||
throw new DiscoveredWithErrorException("Authentication error");
|
||||
} catch (XenAPIException e) {
|
||||
s_logger.warn("XenAPI exception", e);
|
||||
|
|
@ -345,27 +343,27 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
|
|||
}
|
||||
return resources;
|
||||
}
|
||||
|
||||
|
||||
String getPoolUuid(Connection conn) throws XenAPIException, XmlRpcException {
|
||||
Map<Pool, Pool.Record> pools = Pool.getAllRecords(conn);
|
||||
assert pools.size() == 1 : "Pools size is " + pools.size();
|
||||
return pools.values().iterator().next().uuid;
|
||||
}
|
||||
|
||||
|
||||
protected void addSamePool(Connection conn, Map<CitrixResourceBase, Map<String, String>> resources) throws XenAPIException, XmlRpcException {
|
||||
Map<Pool, Pool.Record> hps = Pool.getAllRecords(conn);
|
||||
assert (hps.size() == 1) : "How can it be more than one but it's actually " + hps.size();
|
||||
|
||||
|
||||
// This is the pool.
|
||||
String poolUuid = hps.values().iterator().next().uuid;
|
||||
|
||||
|
||||
for (Map<String, String> details : resources.values()) {
|
||||
details.put("pool", poolUuid);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected boolean addHostsToPool(Connection conn, String hostIp, Long clusterId) throws XenAPIException, XmlRpcException, DiscoveryException {
|
||||
|
||||
|
||||
List<HostVO> hosts;
|
||||
hosts = _resourceMgr.listAllHostsInCluster(clusterId);
|
||||
|
||||
|
|
@ -400,19 +398,19 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
|
|||
hostConn = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (masterIp == null) {
|
||||
s_logger.warn("Unable to reach the pool master of the existing cluster");
|
||||
throw new CloudRuntimeException("Unable to reach the pool master of the existing cluster");
|
||||
}
|
||||
|
||||
|
||||
if( !_connPool.joinPool(conn, hostIp, masterIp, username, pass) ){
|
||||
s_logger.warn("Unable to join the pool");
|
||||
throw new DiscoveryException("Unable to join the pool");
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
protected CitrixResourceBase createServerResource(long dcId, Long podId, Host.Record record) {
|
||||
String prodBrand = record.softwareVersion.get("product_brand");
|
||||
if (prodBrand == null) {
|
||||
|
|
@ -430,7 +428,7 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
|
|||
if(prodBrand.equals("XCP") && (prodVersion.equals("1.0.0") || prodVersion.equals("1.1.0") || prodVersion.equals("5.6.100") || prodVersion.startsWith("1.4") || prodVersion.startsWith("1.6")))
|
||||
return new XcpServerResource();
|
||||
|
||||
if(prodBrand.equals("XenServer") && prodVersion.equals("5.6.0"))
|
||||
if(prodBrand.equals("XenServer") && prodVersion.equals("5.6.0"))
|
||||
return new XenServer56Resource();
|
||||
|
||||
if (prodBrand.equals("XenServer") && prodVersion.equals("6.0.0"))
|
||||
|
|
@ -438,7 +436,7 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
|
|||
|
||||
if (prodBrand.equals("XenServer") && prodVersion.equals("6.0.2"))
|
||||
return new XenServer602Resource();
|
||||
|
||||
|
||||
if (prodBrand.equals("XenServer") && prodVersion.equals("6.1.0"))
|
||||
return new XenServer610Resource();
|
||||
|
||||
|
|
@ -450,67 +448,67 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
|
|||
return new XenServer56FP1Resource();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (prodBrand.equals("XCP_Kronos")) {
|
||||
return new XcpOssResource();
|
||||
}
|
||||
|
||||
|
||||
String msg = "Only support XCP 1.0.0, 1.1.0, 1.4.x, 1.5 beta, 1.6.x; XenServer 5.6, XenServer 5.6 FP1, XenServer 5.6 SP2, Xenserver 6.0, 6.0.2, 6.1.0 but this one is " + prodBrand + " " + prodVersion;
|
||||
_alertMgr.sendAlert(AlertManager.ALERT_TYPE_HOST, dcId, podId, msg, msg);
|
||||
s_logger.debug(msg);
|
||||
throw new RuntimeException(msg);
|
||||
|
||||
}
|
||||
|
||||
protected void serverConfig() {
|
||||
|
||||
protected void serverConfig() {
|
||||
String value = _params.get(Config.XenSetupMultipath.key());
|
||||
_setupMultipath = Boolean.parseBoolean(value);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
|
||||
super.configure(name, params);
|
||||
serverConfig();
|
||||
|
||||
|
||||
_publicNic = _params.get(Config.XenPublicNetwork.key());
|
||||
_privateNic = _params.get(Config.XenPrivateNetwork.key());
|
||||
|
||||
|
||||
_storageNic1 = _params.get(Config.XenStorageNetwork1.key());
|
||||
_storageNic2 = _params.get(Config.XenStorageNetwork2.key());
|
||||
|
||||
|
||||
_guestNic = _params.get(Config.XenGuestNetwork.key());
|
||||
|
||||
|
||||
String value = _params.get(Config.XapiWait.toString());
|
||||
_wait = NumbersUtil.parseInt(value, Integer.parseInt(Config.XapiWait.getDefaultValue()));
|
||||
|
||||
|
||||
_instance = _params.get(Config.InstanceName.key());
|
||||
|
||||
|
||||
value = _params.get(Config.XenSetupMultipath.key());
|
||||
Boolean.parseBoolean(value);
|
||||
|
||||
value = _params.get("xen.check.hvm");
|
||||
_checkHvm = false;
|
||||
_connPool = XenServerConnectionPool.getInstance();
|
||||
|
||||
|
||||
_agentMgr.registerForHostEvents(this, true, false, true);
|
||||
|
||||
|
||||
createXsToolsISO();
|
||||
_resourceMgr.registerResourceStateAdapter(this.getClass().getSimpleName(), this);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean matchHypervisor(String hypervisor) {
|
||||
if(hypervisor == null)
|
||||
return true;
|
||||
return Hypervisor.HypervisorType.XenServer.toString().equalsIgnoreCase(hypervisor);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Hypervisor.HypervisorType getHypervisorType() {
|
||||
return Hypervisor.HypervisorType.XenServer;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void postDiscovery(List<HostVO> hosts, long msId) throws DiscoveryException{
|
||||
//do nothing
|
||||
|
|
@ -535,7 +533,7 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
|
|||
public boolean processCommands(long agentId, long seq, Command[] commands) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
private void createXsToolsISO() {
|
||||
String isoName = "xs-tools.iso";
|
||||
VMTemplateVO tmplt = _tmpltDao.findByTemplateName(isoName);
|
||||
|
|
@ -558,17 +556,17 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
|
|||
public void processConnect(com.cloud.host.Host agent, StartupCommand cmd, boolean forRebalance) throws ConnectionException {
|
||||
if (!(cmd instanceof StartupRoutingCommand )) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
long agentId = agent.getId();
|
||||
|
||||
|
||||
StartupRoutingCommand startup = (StartupRoutingCommand)cmd;
|
||||
if (startup.getHypervisorType() != HypervisorType.XenServer) {
|
||||
s_logger.debug("Not XenServer so moving on.");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
HostVO host = _hostDao.findById(agentId);
|
||||
|
||||
|
||||
ClusterVO cluster = _clusterDao.findById(host.getClusterId());
|
||||
if ( cluster.getGuid() == null) {
|
||||
cluster.setGuid(startup.getPool());
|
||||
|
|
@ -582,7 +580,7 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
|
|||
Map<String, String> details = startup.getHostDetails();
|
||||
String prodBrand = details.get("product_brand").trim();
|
||||
String prodVersion = details.get("product_version").trim();
|
||||
|
||||
|
||||
if(prodBrand.equals("XCP") && (prodVersion.equals("1.0.0") || prodVersion.equals("1.1.0") || prodVersion.equals("5.6.100") || prodVersion.startsWith("1.4") || prodVersion.startsWith("1.6"))) {
|
||||
resource = XcpServerResource.class.getName();
|
||||
} else if(prodBrand.equals("XenServer") && prodVersion.equals("5.6.0")) {
|
||||
|
|
@ -603,7 +601,7 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
|
|||
} else if (prodBrand.equals("XCP_Kronos")) {
|
||||
resource = XcpOssResource.class.getName();
|
||||
}
|
||||
|
||||
|
||||
if( resource == null ){
|
||||
String msg = "Only support XCP 1.0.0, 1.1.0, 1.4.x, 1.5 beta, 1.6.x; XenServer 5.6, 5.6 FP1, 5.6 SP2 and Xenserver 6.0 , 6.0.2, 6.1.0 but this one is " + prodBrand + " " + prodVersion;
|
||||
s_logger.debug(msg);
|
||||
|
|
@ -617,13 +615,13 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
|
|||
_hostDao.update(agentId, host);
|
||||
throw new HypervisorVersionChangedException(msg);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
if (s_logger.isDebugEnabled()) {
|
||||
s_logger.debug("Setting up host " + agentId);
|
||||
}
|
||||
HostEnvironment env = new HostEnvironment();
|
||||
|
||||
|
||||
SetupCommand setup = new SetupCommand(env);
|
||||
if (_setupMultipath) {
|
||||
setup.setMultipathOn();
|
||||
|
|
@ -631,7 +629,7 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
|
|||
if (!host.isSetup()) {
|
||||
setup.setNeedSetup(true);
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
SetupAnswer answer = (SetupAnswer)_agentMgr.send(agentId, setup);
|
||||
if (answer != null && answer.getResult()) {
|
||||
|
|
@ -699,7 +697,7 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
|
|||
if (host.getType() != com.cloud.host.Host.Type.Routing || host.getHypervisorType() != HypervisorType.XenServer) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
_resourceMgr.deleteRoutingHost(host, isForced, isForceDeleteStorage);
|
||||
if (host.getClusterId() != null) {
|
||||
List<HostVO> hosts = _resourceMgr.listAllUpAndEnabledHosts(com.cloud.host.Host.Type.Routing, host.getClusterId(), host.getPodId(), host.getDataCenterId());
|
||||
|
|
@ -708,7 +706,7 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
|
|||
if (thost.getId() == host.getId()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
long thostId = thost.getId();
|
||||
PoolEjectCommand eject = new PoolEjectCommand(host.getGuid());
|
||||
Answer answer = _agentMgr.easySend(thostId, eject);
|
||||
|
|
@ -728,10 +726,10 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
|
|||
_alertMgr.sendAlert(AlertManager.ALERT_TYPE_HOST, host.getDataCenterId(), host.getPodId(), "Unable to eject host " + host.getGuid(), msg);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return new DeleteHostAnswer(true);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean stop() {
|
||||
_resourceMgr.unregisterResourceStateAdapter(this.getClass().getSimpleName());
|
||||
|
|
|
|||
|
|
@ -33,7 +33,6 @@ import org.apache.cloudstack.engine.subsystem.api.storage.DataStore;
|
|||
import org.apache.cloudstack.engine.subsystem.api.storage.DataTO;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.EndPoint;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.EndPointSelector;
|
||||
import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo;
|
||||
import org.apache.cloudstack.framework.async.AsyncCallbackDispatcher;
|
||||
import org.apache.cloudstack.framework.async.AsyncCompletionCallback;
|
||||
import org.apache.cloudstack.framework.async.AsyncRpcConext;
|
||||
|
|
@ -42,7 +41,6 @@ import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO;
|
|||
import org.apache.cloudstack.storage.image.ImageStoreDriver;
|
||||
import org.apache.cloudstack.storage.image.store.ImageStoreImpl;
|
||||
import org.apache.cloudstack.storage.image.store.TemplateObject;
|
||||
import org.apache.cloudstack.storage.to.ImageStoreTO;
|
||||
import org.apache.cloudstack.storage.volume.VolumeObject;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
|
|
@ -56,7 +54,6 @@ import com.cloud.agent.api.to.DataStoreTO;
|
|||
import com.cloud.agent.api.to.NfsTO;
|
||||
import com.cloud.agent.api.to.S3TO;
|
||||
import com.cloud.agent.api.to.SwiftTO;
|
||||
import com.cloud.configuration.Resource.ResourceType;
|
||||
import com.cloud.event.EventTypes;
|
||||
import com.cloud.event.UsageEventUtils;
|
||||
import com.cloud.host.HostVO;
|
||||
|
|
@ -64,9 +61,7 @@ import com.cloud.host.dao.HostDao;
|
|||
import com.cloud.storage.DataStoreRole;
|
||||
import com.cloud.storage.RegisterVolumePayload;
|
||||
import com.cloud.storage.Storage.ImageFormat;
|
||||
import com.cloud.storage.VMTemplateStorageResourceAssoc.Status;
|
||||
import com.cloud.storage.SnapshotVO;
|
||||
import com.cloud.storage.VMTemplateHostVO;
|
||||
import com.cloud.storage.VMTemplateStorageResourceAssoc;
|
||||
import com.cloud.storage.VMTemplateVO;
|
||||
import com.cloud.storage.VMTemplateZoneVO;
|
||||
|
|
@ -74,7 +69,6 @@ import com.cloud.storage.VolumeHostVO;
|
|||
import com.cloud.storage.VolumeVO;
|
||||
import com.cloud.storage.dao.SnapshotDao;
|
||||
import com.cloud.storage.dao.VMTemplateDao;
|
||||
import com.cloud.storage.dao.VMTemplateHostDao;
|
||||
import com.cloud.storage.dao.VMTemplateZoneDao;
|
||||
import com.cloud.storage.dao.VolumeDao;
|
||||
import com.cloud.storage.dao.VolumeHostDao;
|
||||
|
|
@ -97,8 +91,6 @@ public class CloudStackImageStoreDriverImpl implements ImageStoreDriver {
|
|||
@Inject
|
||||
VMTemplateDao templateDao;
|
||||
@Inject DownloadMonitor _downloadMonitor;
|
||||
@Inject
|
||||
VMTemplateHostDao _vmTemplateHostDao;
|
||||
@Inject VolumeDao volumeDao;
|
||||
@Inject VolumeHostDao volumeHostDao;
|
||||
@Inject HostDao hostDao;
|
||||
|
|
@ -176,7 +168,7 @@ public class CloudStackImageStoreDriverImpl implements ImageStoreDriver {
|
|||
AsyncCallbackDispatcher.create(this);
|
||||
caller.setContext(context);
|
||||
caller.setCallback(caller.getTarget().createAsyncCallback(null, null));
|
||||
|
||||
|
||||
|
||||
if (data.getType() == DataObjectType.TEMPLATE) {
|
||||
TemplateObject tData = (TemplateObject)data;
|
||||
|
|
|
|||
|
|
@ -67,7 +67,6 @@ import com.cloud.storage.VolumeHostVO;
|
|||
import com.cloud.storage.VolumeVO;
|
||||
import com.cloud.storage.dao.SnapshotDao;
|
||||
import com.cloud.storage.dao.VMTemplateDao;
|
||||
import com.cloud.storage.dao.VMTemplateHostDao;
|
||||
import com.cloud.storage.dao.VMTemplateZoneDao;
|
||||
import com.cloud.storage.dao.VolumeDao;
|
||||
import com.cloud.storage.dao.VolumeHostDao;
|
||||
|
|
@ -91,8 +90,6 @@ public class S3ImageStoreDriverImpl implements ImageStoreDriver {
|
|||
VMTemplateDao templateDao;
|
||||
@Inject DownloadMonitor _downloadMonitor;
|
||||
@Inject
|
||||
VMTemplateHostDao _vmTemplateHostDao;
|
||||
@Inject
|
||||
ImageStoreDetailsDao _imageStoreDetailsDao;
|
||||
@Inject VolumeDao volumeDao;
|
||||
@Inject VolumeHostDao volumeHostDao;
|
||||
|
|
|
|||
|
|
@ -67,7 +67,6 @@ import com.cloud.storage.VolumeHostVO;
|
|||
import com.cloud.storage.VolumeVO;
|
||||
import com.cloud.storage.dao.SnapshotDao;
|
||||
import com.cloud.storage.dao.VMTemplateDao;
|
||||
import com.cloud.storage.dao.VMTemplateHostDao;
|
||||
import com.cloud.storage.dao.VMTemplateZoneDao;
|
||||
import com.cloud.storage.dao.VolumeDao;
|
||||
import com.cloud.storage.dao.VolumeHostDao;
|
||||
|
|
@ -91,8 +90,6 @@ public class SwiftImageStoreDriverImpl implements ImageStoreDriver {
|
|||
VMTemplateDao templateDao;
|
||||
@Inject DownloadMonitor _downloadMonitor;
|
||||
@Inject
|
||||
VMTemplateHostDao _vmTemplateHostDao;
|
||||
@Inject
|
||||
ImageStoreDetailsDao _imageStoreDetailsDao;
|
||||
@Inject VolumeDao volumeDao;
|
||||
@Inject VolumeHostDao volumeHostDao;
|
||||
|
|
|
|||
|
|
@ -70,8 +70,6 @@ public class UserConcentratedAllocator extends AdapterBase implements PodAllocat
|
|||
@Inject
|
||||
HostPodDao _podDao;
|
||||
@Inject
|
||||
VMTemplateHostDao _templateHostDao;
|
||||
@Inject
|
||||
VMTemplatePoolDao _templatePoolDao;
|
||||
@Inject
|
||||
ServiceOfferingDao _offeringDao;
|
||||
|
|
@ -87,7 +85,8 @@ public class UserConcentratedAllocator extends AdapterBase implements PodAllocat
|
|||
private int _secondsToSkipDestroyedVMs = 0;
|
||||
|
||||
@Override
|
||||
public Pair<HostPodVO, Long> allocateTo(VirtualMachineTemplate template, ServiceOfferingVO offering, DataCenterVO zone, long accountId, Set<Long> avoids) {
|
||||
public Pair<HostPodVO, Long> allocateTo(VirtualMachineTemplate template, ServiceOfferingVO offering, DataCenterVO zone, long accountId,
|
||||
Set<Long> avoids) {
|
||||
long zoneId = zone.getId();
|
||||
List<HostPodVO> podsInZone = _podDao.listByDataCenterId(zoneId);
|
||||
|
||||
|
|
@ -107,23 +106,28 @@ public class UserConcentratedAllocator extends AdapterBase implements PodAllocat
|
|||
}
|
||||
|
||||
if (offering != null) {
|
||||
// test for enough memory in the pod (make sure to check for enough memory for the service offering, plus
|
||||
// test for enough memory in the pod (make sure to check for
|
||||
// enough memory for the service offering, plus
|
||||
// some extra padding for xen overhead
|
||||
long[] hostCandiates = new long[1];
|
||||
boolean enoughCapacity = dataCenterAndPodHasEnoughCapacity(zoneId, podId, (offering.getRamSize()) * 1024L * 1024L, CapacityVO.CAPACITY_TYPE_MEMORY, hostCandiates);
|
||||
boolean enoughCapacity = dataCenterAndPodHasEnoughCapacity(zoneId, podId, (offering.getRamSize()) * 1024L * 1024L,
|
||||
CapacityVO.CAPACITY_TYPE_MEMORY, hostCandiates);
|
||||
|
||||
if (!enoughCapacity) {
|
||||
if (s_logger.isDebugEnabled()) {
|
||||
s_logger.debug("Not enough RAM available in zone/pod to allocate storage for user VM (zone: " + zoneId + ", pod: " + podId + ")");
|
||||
s_logger.debug("Not enough RAM available in zone/pod to allocate storage for user VM (zone: " + zoneId + ", pod: "
|
||||
+ podId + ")");
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
// test for enough CPU in the pod
|
||||
enoughCapacity = dataCenterAndPodHasEnoughCapacity(zoneId, podId, (offering.getCpu() * offering.getSpeed()), CapacityVO.CAPACITY_TYPE_CPU, hostCandiates);
|
||||
enoughCapacity = dataCenterAndPodHasEnoughCapacity(zoneId, podId, (offering.getCpu() * offering.getSpeed()),
|
||||
CapacityVO.CAPACITY_TYPE_CPU, hostCandiates);
|
||||
if (!enoughCapacity) {
|
||||
if (s_logger.isDebugEnabled()) {
|
||||
s_logger.debug("Not enough cpu available in zone/pod to allocate storage for user VM (zone: " + zoneId + ", pod: " + podId + ")");
|
||||
s_logger.debug("Not enough cpu available in zone/pod to allocate storage for user VM (zone: " + zoneId + ", pod: "
|
||||
+ podId + ")");
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
|
@ -207,7 +211,8 @@ public class UserConcentratedAllocator extends AdapterBase implements PodAllocat
|
|||
}
|
||||
|
||||
if (vm.getState() == State.Stopped || vm.getState() == State.Destroyed) {
|
||||
// for Stopped/Destroyed VMs, we will skip counting it if it hasn't been used for a while
|
||||
// for Stopped/Destroyed VMs, we will skip counting it if it hasn't
|
||||
// been used for a while
|
||||
int secondsToSkipVMs = _secondsToSkipStoppedVMs;
|
||||
|
||||
if (vm.getState() == State.Destroyed) {
|
||||
|
|
@ -217,8 +222,9 @@ public class UserConcentratedAllocator extends AdapterBase implements PodAllocat
|
|||
long millisecondsSinceLastUpdate = DateUtil.currentGMTTime().getTime() - vm.getUpdateTime().getTime();
|
||||
if (millisecondsSinceLastUpdate > secondsToSkipVMs * 1000L) {
|
||||
if (s_logger.isDebugEnabled()) {
|
||||
s_logger.debug("Skip counting " + vm.getState().toString() + " vm " + vm.getInstanceName() + " in capacity allocation as it has been " + vm.getState().toString().toLowerCase()
|
||||
+ " for " + millisecondsSinceLastUpdate / 60000 + " minutes");
|
||||
s_logger.debug("Skip counting " + vm.getState().toString() + " vm " + vm.getInstanceName()
|
||||
+ " in capacity allocation as it has been " + vm.getState().toString().toLowerCase() + " for "
|
||||
+ millisecondsSinceLastUpdate / 60000 + " minutes");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
@ -228,11 +234,12 @@ public class UserConcentratedAllocator extends AdapterBase implements PodAllocat
|
|||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @param hostId
|
||||
* Host id to calculate against
|
||||
* @param capacityType
|
||||
* CapacityVO.CAPACITY_TYPE_MEMORY or CapacityVO.CAPACITY_TYPE_CPU
|
||||
* CapacityVO.CAPACITY_TYPE_MEMORY or
|
||||
* CapacityVO.CAPACITY_TYPE_CPU
|
||||
* @return
|
||||
*/
|
||||
private long calcHostAllocatedCpuMemoryCapacity(long hostId, short capacityType) {
|
||||
|
|
@ -253,21 +260,23 @@ public class UserConcentratedAllocator extends AdapterBase implements PodAllocat
|
|||
if (userVm == null) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
so = _offeringDao.findById(vm.getServiceOfferingId());
|
||||
|
||||
if (capacityType == CapacityVO.CAPACITY_TYPE_MEMORY) {
|
||||
usedCapacity += so.getRamSize() * 1024L * 1024L;
|
||||
|
||||
if (s_logger.isDebugEnabled()) {
|
||||
s_logger.debug("Counting memory capacity used by vm: " + vm.getId() + ", size: " + so.getRamSize() + "MB, host: " + hostId + ", currently counted: " + usedCapacity + " Bytes");
|
||||
s_logger.debug("Counting memory capacity used by vm: " + vm.getId() + ", size: " + so.getRamSize() + "MB, host: " + hostId
|
||||
+ ", currently counted: " + usedCapacity + " Bytes");
|
||||
}
|
||||
} else if (capacityType == CapacityVO.CAPACITY_TYPE_CPU) {
|
||||
usedCapacity += so.getCpu() * so.getSpeed();
|
||||
|
||||
if (s_logger.isDebugEnabled()) {
|
||||
s_logger.debug("Counting cpu capacity used by vm: " + vm.getId() + ", cpu: " + so.getCpu() + ", speed: " + so.getSpeed() + ", currently counted: " + usedCapacity + " Bytes");
|
||||
s_logger.debug("Counting cpu capacity used by vm: " + vm.getId() + ", cpu: " + so.getCpu() + ", speed: " + so.getSpeed()
|
||||
+ ", currently counted: " + usedCapacity + " Bytes");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -281,7 +290,7 @@ public class UserConcentratedAllocator extends AdapterBase implements PodAllocat
|
|||
* List<VMTemplateHostVO> thvoList = _templateHostDao.listByTemplateStatus(templateId, dcId, podId, Status.DOWNLOADED);
|
||||
* List<VMTemplateStoragePoolVO> tpvoList = _templatePoolDao.listByTemplateStatus(templateId, dcId, podId,
|
||||
* Status.DOWNLOADED);
|
||||
*
|
||||
*
|
||||
* if (thvoList != null && thvoList.size() > 0) { if (s_logger.isDebugEnabled()) { s_logger.debug("Found " +
|
||||
* thvoList.size() + " storage hosts in pod " + podId + " with template " + templateId); } return true; } else if
|
||||
* (tpvoList != null && tpvoList.size() > 0) { if (s_logger.isDebugEnabled()) { s_logger.debug("Found " +
|
||||
|
|
@ -304,7 +313,8 @@ public class UserConcentratedAllocator extends AdapterBase implements PodAllocat
|
|||
public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
|
||||
Map<String, String> configs = _configDao.getConfiguration("management-server", params);
|
||||
String stoppedValue = configs.get("vm.resource.release.interval");
|
||||
// String destroyedValue = configs.get("capacity.skipcounting.destroyed.hours");
|
||||
// String destroyedValue =
|
||||
// configs.get("capacity.skipcounting.destroyed.hours");
|
||||
String destroyedValue = null;
|
||||
_secondsToSkipStoppedVMs = NumbersUtil.parseInt(stoppedValue, 86400);
|
||||
_secondsToSkipDestroyedVMs = NumbersUtil.parseInt(destroyedValue, 0);
|
||||
|
|
@ -312,19 +322,19 @@ public class UserConcentratedAllocator extends AdapterBase implements PodAllocat
|
|||
/*
|
||||
* ComponentLocator locator = ComponentLocator.getCurrentLocator(); _vmDao = locator.getDao(UserVmDao.class); if (_vmDao
|
||||
* == null) { throw new ConfigurationException("Unable to find UserVMDao."); }
|
||||
*
|
||||
*
|
||||
* _volumeDao = locator.getDao(VolumeDao.class); if (_volumeDao == null) { throw new
|
||||
* ConfigurationException("Unable to find VolumeDao."); }
|
||||
*
|
||||
*
|
||||
* _templateHostDao = locator.getDao(VMTemplateHostDao.class); if (_templateHostDao == null) { throw new
|
||||
* ConfigurationException("Unable to get template host dao."); }
|
||||
*
|
||||
*
|
||||
* _templatePoolDao = locator.getDao(VMTemplatePoolDao.class); if (_templatePoolDao == null) { throw new
|
||||
* ConfigurationException("Unable to get template pool dao."); }
|
||||
*
|
||||
*
|
||||
* _podDao = locator.getDao(HostPodDao.class); if (_podDao == null) { throw new
|
||||
* ConfigurationException("Unable to find HostPodDao."); }
|
||||
*
|
||||
*
|
||||
* _capacityDao = locator.getDao(CapacityDao.class); if (_capacityDao == null) { throw new
|
||||
* ConfigurationException("Unable to retrieve " + CapacityDao.class); }
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -320,7 +320,6 @@ public class ApiDBUtils {
|
|||
static PrimaryDataStoreDao _storagePoolDao;
|
||||
static VMTemplateDao _templateDao;
|
||||
static VMTemplateDetailsDao _templateDetailsDao;
|
||||
static VMTemplateHostDao _templateHostDao;
|
||||
static VMTemplateSwiftDao _templateSwiftDao;
|
||||
static VMTemplateS3Dao _templateS3Dao;
|
||||
static UploadDao _uploadDao;
|
||||
|
|
@ -426,7 +425,6 @@ public class ApiDBUtils {
|
|||
@Inject private PrimaryDataStoreDao storagePoolDao;
|
||||
@Inject private VMTemplateDao templateDao;
|
||||
@Inject private VMTemplateDetailsDao templateDetailsDao;
|
||||
@Inject private VMTemplateHostDao templateHostDao;
|
||||
@Inject private VMTemplateSwiftDao templateSwiftDao;
|
||||
@Inject private VMTemplateS3Dao templateS3Dao;
|
||||
@Inject private UploadDao uploadDao;
|
||||
|
|
@ -530,7 +528,6 @@ public class ApiDBUtils {
|
|||
_storagePoolDao = storagePoolDao;
|
||||
_templateDao = templateDao;
|
||||
_templateDetailsDao = templateDetailsDao;
|
||||
_templateHostDao = templateHostDao;
|
||||
_templateSwiftDao = templateSwiftDao;
|
||||
_templateS3Dao = templateS3Dao;
|
||||
_uploadDao = uploadDao;
|
||||
|
|
@ -933,18 +930,6 @@ public class ApiDBUtils {
|
|||
return _storageMgr.getHypervisorTypeFromFormat(format);
|
||||
}
|
||||
|
||||
public static List<VMTemplateHostVO> listTemplateHostBy(long templateId, Long zoneId, boolean readyOnly) {
|
||||
if (zoneId != null) {
|
||||
VMTemplateVO vmTemplate = findTemplateById(templateId);
|
||||
if (vmTemplate.getHypervisorType() == HypervisorType.BareMetal) {
|
||||
return _templateHostDao.listByTemplateId(templateId);
|
||||
} else {
|
||||
return _templateHostDao.listByZoneTemplate(zoneId, templateId, readyOnly);
|
||||
}
|
||||
} else {
|
||||
return _templateHostDao.listByOnlyTemplateId(templateId);
|
||||
}
|
||||
}
|
||||
|
||||
public static List<UserStatisticsVO> listUserStatsBy(Long accountId) {
|
||||
return _userStatsDao.listBy(accountId);
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
// to you under the Apache License, Version 2.0 (the
|
||||
// "License"); you may not use this file except in compliance
|
||||
// with the License. You may obtain a copy of the License at
|
||||
//
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing,
|
||||
|
|
@ -33,6 +33,8 @@ import javax.naming.ConfigurationException;
|
|||
import org.apache.cloudstack.api.ServerApiException;
|
||||
import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
|
||||
import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
|
||||
import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreDao;
|
||||
import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.agent.AgentManager;
|
||||
|
|
@ -112,12 +114,10 @@ import com.cloud.service.dao.ServiceOfferingDao;
|
|||
import com.cloud.servlet.ConsoleProxyServlet;
|
||||
import com.cloud.storage.StorageManager;
|
||||
import com.cloud.storage.StoragePoolStatus;
|
||||
import com.cloud.storage.VMTemplateHostVO;
|
||||
import com.cloud.storage.VMTemplateVO;
|
||||
import com.cloud.storage.VMTemplateStorageResourceAssoc.Status;
|
||||
import com.cloud.storage.dao.DiskOfferingDao;
|
||||
import com.cloud.storage.dao.VMTemplateDao;
|
||||
import com.cloud.storage.dao.VMTemplateHostDao;
|
||||
import com.cloud.template.TemplateManager;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.user.AccountManager;
|
||||
|
|
@ -127,7 +127,6 @@ import com.cloud.utils.DateUtil;
|
|||
import com.cloud.utils.NumbersUtil;
|
||||
import com.cloud.utils.Pair;
|
||||
import com.cloud.utils.Ternary;
|
||||
import com.cloud.utils.component.Manager;
|
||||
import com.cloud.utils.component.ManagerBase;
|
||||
import com.cloud.utils.db.DB;
|
||||
import com.cloud.utils.db.GlobalLock;
|
||||
|
|
@ -203,7 +202,7 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy
|
|||
@Inject
|
||||
private VMInstanceDao _instanceDao;
|
||||
@Inject
|
||||
private VMTemplateHostDao _vmTemplateHostDao;
|
||||
private TemplateDataStoreDao _vmTemplateStoreDao;
|
||||
@Inject
|
||||
private AgentManager _agentMgr;
|
||||
@Inject
|
||||
|
|
@ -287,7 +286,7 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy
|
|||
* "PWpfKR3ISI5yXB0vRNAL6Vet5zbTcUZhKDVtNSbis3UEsGYH8NorEC2z2cpjGQJANhJi9Ow6c5Mh\n"
|
||||
* + "/DURBUn+1l5pyCKrZnDbvaALSLATLvjmFTuGjoHszy2OeKnOZmEqExWnKKE/VYuPyhy6V7i3TwJA\n" +
|
||||
* "f8skDgtPK0OsBCa6IljPaHoWBjPc4kFkSTSS1d56hUcWSikTmiuKdLyBb85AADSZYsvHWrte4opN\n" + "dhNukMJuRA==\n";
|
||||
*
|
||||
*
|
||||
* private final String certContent = "-----BEGIN CERTIFICATE-----\n" +
|
||||
* "MIIE3jCCA8agAwIBAgIFAqv56tIwDQYJKoZIhvcNAQEFBQAwgcoxCzAJBgNVBAYT\n"
|
||||
* + "AlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYD\n" +
|
||||
|
|
@ -668,7 +667,7 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy
|
|||
if(proxy.getActiveSession() >= _capacityPerProxy){
|
||||
it.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
if (s_logger.isTraceEnabled()) {
|
||||
s_logger.trace("Running proxy pool size : " + runningList.size());
|
||||
for (ConsoleProxyVO proxy : runningList) {
|
||||
|
|
@ -961,7 +960,7 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy
|
|||
authenticationAnswer.setReauthenticating(true);
|
||||
|
||||
s_logger.info("Re-authentication request, ask host " + vm.getHostId() + " for new console info");
|
||||
GetVncPortAnswer answer = (GetVncPortAnswer) _agentMgr.easySend(vm.getHostId(), new
|
||||
GetVncPortAnswer answer = (GetVncPortAnswer) _agentMgr.easySend(vm.getHostId(), new
|
||||
GetVncPortCommand(vm.getId(), vm.getInstanceName()));
|
||||
|
||||
if (answer != null && answer.getResult()) {
|
||||
|
|
@ -1175,15 +1174,10 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy
|
|||
ZoneHostInfo zoneHostInfo = zoneHostInfoMap.get(dataCenterId);
|
||||
if (zoneHostInfo != null && isZoneHostReady(zoneHostInfo)) {
|
||||
VMTemplateVO template = _templateDao.findSystemVMTemplate(dataCenterId);
|
||||
HostVO secondaryStorageHost = this.templateMgr.getSecondaryStorageHost(dataCenterId);
|
||||
boolean templateReady = false;
|
||||
TemplateDataStoreVO templateHostRef = this._vmTemplateStoreDao.findByTemplateZoneDownloadStatus(template.getId(), dataCenterId,
|
||||
Status.DOWNLOADED);
|
||||
|
||||
if (template != null && secondaryStorageHost != null) {
|
||||
VMTemplateHostVO templateHostRef = _vmTemplateHostDao.findByHostTemplate(secondaryStorageHost.getId(), template.getId());
|
||||
templateReady = (templateHostRef != null) && (templateHostRef.getDownloadState() == Status.DOWNLOADED);
|
||||
}
|
||||
|
||||
if (templateReady) {
|
||||
if (templateHostRef != null) {
|
||||
List<Pair<Long, Integer>> l = _consoleProxyDao.getDatacenterStoragePoolHostInfo(dataCenterId, _use_lvm);
|
||||
if (l != null && l.size() > 0 && l.get(0).second().intValue() > 0) {
|
||||
return true;
|
||||
|
|
@ -1196,11 +1190,9 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy
|
|||
if (s_logger.isDebugEnabled()) {
|
||||
if (template == null) {
|
||||
s_logger.debug("Zone host is ready, but console proxy template is null");
|
||||
} else if (secondaryStorageHost != null) {
|
||||
s_logger.debug("Zone host is ready, but console proxy template: " + template.getId() + " is not ready on secondary storage: " + secondaryStorageHost.getId());
|
||||
} else {
|
||||
s_logger.debug("Zone host is ready, but console proxy template: " + template.getId() + " is not ready on secondary storage.");
|
||||
}
|
||||
} else {
|
||||
s_logger.debug("Zone host is ready, but console proxy template: " + template.getId() + " is not ready on secondary storage.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1397,7 +1389,7 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy
|
|||
//expunge the vm
|
||||
boolean result = _itMgr.expunge(proxy, _accountMgr.getSystemUser(), _accountMgr.getSystemAccount());
|
||||
if (result) {
|
||||
HostVO host = _hostDao.findByTypeNameAndZoneId(proxy.getDataCenterId(), proxy.getHostName(),
|
||||
HostVO host = _hostDao.findByTypeNameAndZoneId(proxy.getDataCenterId(), proxy.getHostName(),
|
||||
Host.Type.ConsoleProxy);
|
||||
if (host != null) {
|
||||
s_logger.debug("Removing host entry for proxy id=" + vmId);
|
||||
|
|
|
|||
|
|
@ -30,6 +30,8 @@ import javax.inject.Inject;
|
|||
import javax.naming.ConfigurationException;
|
||||
|
||||
import org.apache.cloudstack.acl.SecurityChecker.AccessType;
|
||||
import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreDao;
|
||||
import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
|
|
@ -140,9 +142,9 @@ public class ResourceLimitManagerImpl extends ManagerBase implements ResourceLim
|
|||
@Inject
|
||||
private ServiceOfferingDao _serviceOfferingDao;
|
||||
@Inject
|
||||
private VMTemplateHostDao _vmTemplateHostDao;
|
||||
private TemplateDataStoreDao _vmTemplateStoreDao;
|
||||
|
||||
protected GenericSearchBuilder<VMTemplateHostVO, SumCount> templateSizeSearch;
|
||||
protected GenericSearchBuilder<TemplateDataStoreVO, SumCount> templateSizeSearch;
|
||||
|
||||
protected SearchBuilder<ResourceCountVO> ResourceCountSearch;
|
||||
ScheduledExecutorService _rcExecutor;
|
||||
|
|
@ -172,7 +174,7 @@ public class ResourceLimitManagerImpl extends ManagerBase implements ResourceLim
|
|||
ResourceCountSearch.and("domainId", ResourceCountSearch.entity().getDomainId(), SearchCriteria.Op.EQ);
|
||||
ResourceCountSearch.done();
|
||||
|
||||
templateSizeSearch = _vmTemplateHostDao.createSearchBuilder(SumCount.class);
|
||||
templateSizeSearch = _vmTemplateStoreDao.createSearchBuilder(SumCount.class);
|
||||
templateSizeSearch.select("sum", Func.SUM, templateSizeSearch.entity().getSize());
|
||||
templateSizeSearch.and("downloadState", templateSizeSearch.entity().getDownloadState(), Op.EQ);
|
||||
templateSizeSearch.and("destroyed", templateSizeSearch.entity().getDestroyed(), Op.EQ);
|
||||
|
|
@ -198,7 +200,7 @@ public class ResourceLimitManagerImpl extends ManagerBase implements ResourceLim
|
|||
projectResourceLimitMap.put(Resource.ResourceType.memory, Long.parseLong(_configDao.getValue(Config.DefaultMaxProjectMemory.key())));
|
||||
projectResourceLimitMap.put(Resource.ResourceType.primary_storage, Long.parseLong(_configDao.getValue(Config.DefaultMaxProjectPrimaryStorage.key())));
|
||||
projectResourceLimitMap.put(Resource.ResourceType.secondary_storage, Long.parseLong(_configDao.getValue(Config.DefaultMaxProjectSecondaryStorage.key())));
|
||||
|
||||
|
||||
accountResourceLimitMap.put(Resource.ResourceType.public_ip, Long.parseLong(_configDao.getValue(Config.DefaultMaxAccountPublicIPs.key())));
|
||||
accountResourceLimitMap.put(Resource.ResourceType.snapshot, Long.parseLong(_configDao.getValue(Config.DefaultMaxAccountSnapshots.key())));
|
||||
accountResourceLimitMap.put(Resource.ResourceType.template, Long.parseLong(_configDao.getValue(Config.DefaultMaxAccountTemplates.key())));
|
||||
|
|
@ -898,7 +900,7 @@ public class ResourceLimitManagerImpl extends ManagerBase implements ResourceLim
|
|||
sc.setParameters("downloadState", Status.DOWNLOADED);
|
||||
sc.setParameters("destroyed", false);
|
||||
sc.setJoinParameters("templates", "accountId", accountId);
|
||||
List<SumCount> templates = _vmTemplateHostDao.customSearch(sc, null);
|
||||
List<SumCount> templates = _vmTemplateStoreDao.customSearch(sc, null);
|
||||
if (templates != null) {
|
||||
totalTemplatesSize = templates.get(0).sum;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,7 +47,6 @@ import com.cloud.agent.api.Answer;
|
|||
import com.cloud.agent.api.Command;
|
||||
import com.cloud.agent.api.storage.CreateEntityDownloadURLCommand;
|
||||
import com.cloud.agent.api.storage.DeleteEntityDownloadURLCommand;
|
||||
import com.cloud.agent.api.storage.ListTemplateAnswer;
|
||||
import com.cloud.agent.api.storage.UploadCommand;
|
||||
import com.cloud.agent.api.storage.UploadProgressCommand.RequestType;
|
||||
import com.cloud.agent.manager.Commands;
|
||||
|
|
@ -66,12 +65,10 @@ import com.cloud.storage.Upload.Status;
|
|||
import com.cloud.storage.Upload.Type;
|
||||
import com.cloud.storage.DataStoreRole;
|
||||
import com.cloud.storage.UploadVO;
|
||||
import com.cloud.storage.VMTemplateHostVO;
|
||||
import com.cloud.storage.VMTemplateVO;
|
||||
import com.cloud.storage.VolumeVO;
|
||||
import com.cloud.storage.dao.UploadDao;
|
||||
import com.cloud.storage.dao.VMTemplateDao;
|
||||
import com.cloud.storage.dao.VMTemplateHostDao;
|
||||
import com.cloud.storage.secondary.SecondaryStorageVmManager;
|
||||
import com.cloud.utils.NumbersUtil;
|
||||
import com.cloud.utils.component.ManagerBase;
|
||||
|
|
@ -92,8 +89,6 @@ public class UploadMonitorImpl extends ManagerBase implements UploadMonitor {
|
|||
|
||||
static final Logger s_logger = Logger.getLogger(UploadMonitorImpl.class);
|
||||
|
||||
@Inject
|
||||
VMTemplateHostDao _vmTemplateHostDao;
|
||||
@Inject
|
||||
UploadDao _uploadDao;
|
||||
@Inject
|
||||
|
|
|
|||
|
|
@ -173,7 +173,6 @@ import com.cloud.storage.dao.GuestOSDao;
|
|||
import com.cloud.storage.dao.SnapshotDao;
|
||||
import com.cloud.storage.dao.VMTemplateDao;
|
||||
import com.cloud.storage.dao.VMTemplateDetailsDao;
|
||||
import com.cloud.storage.dao.VMTemplateHostDao;
|
||||
import com.cloud.storage.dao.VMTemplateZoneDao;
|
||||
import com.cloud.storage.dao.VolumeDao;
|
||||
import com.cloud.storage.dao.VolumeHostDao;
|
||||
|
|
@ -249,8 +248,6 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use
|
|||
@Inject
|
||||
protected VMTemplateDetailsDao _templateDetailsDao = null;
|
||||
@Inject
|
||||
protected VMTemplateHostDao _templateHostDao = null;
|
||||
@Inject
|
||||
protected VMTemplateZoneDao _templateZoneDao = null;
|
||||
@Inject
|
||||
protected DomainDao _domainDao = null;
|
||||
|
|
@ -367,7 +364,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use
|
|||
VpcManager _vpcMgr;
|
||||
@Inject
|
||||
TemplateManager templateMgr;
|
||||
@Inject
|
||||
@Inject
|
||||
protected GuestOSCategoryDao _guestOSCategoryDao;
|
||||
@Inject
|
||||
UsageEventDao _usageEventDao;
|
||||
|
|
@ -682,7 +679,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use
|
|||
|
||||
try {
|
||||
VirtualMachineEntity vmEntity = _orchSrvc.getVirtualMachine(vm.getUuid());
|
||||
status = vmEntity.stop(new Long(userId).toString());
|
||||
status = vmEntity.stop(new Long(userId).toString());
|
||||
} catch (ResourceUnavailableException e) {
|
||||
s_logger.debug("Unable to stop due to ", e);
|
||||
status = false;
|
||||
|
|
@ -2032,7 +2029,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use
|
|||
isSecurityGroupEnabledNetworkUsed = true;
|
||||
|
||||
} else {
|
||||
// Verify that all the networks are Shared/Guest; can't create combination of SG enabled and disabled networks
|
||||
// Verify that all the networks are Shared/Guest; can't create combination of SG enabled and disabled networks
|
||||
for (Long networkId : networkIdList) {
|
||||
NetworkVO network = _networkDao.findById(networkId);
|
||||
|
||||
|
|
@ -2048,7 +2045,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use
|
|||
}
|
||||
|
||||
isSecurityGroupEnabledNetworkUsed = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!(network.getTrafficType() == TrafficType.Guest && network.getGuestType() == Network.GuestType.Shared)) {
|
||||
throw new InvalidParameterValueException("Can specify only Shared Guest networks when" +
|
||||
|
|
@ -2452,7 +2449,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use
|
|||
// * verify that there are no duplicates
|
||||
if (hostNames.contains(hostName)) {
|
||||
throw new InvalidParameterValueException("The vm with hostName " + hostName
|
||||
+ " already exists in the network domain: " + ntwkDomain + "; network="
|
||||
+ " already exists in the network domain: " + ntwkDomain + "; network="
|
||||
+ _networkModel.getNetwork(ntwkId));
|
||||
}
|
||||
}
|
||||
|
|
@ -2515,7 +2512,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use
|
|||
List<String> computeTags = new ArrayList<String>();
|
||||
computeTags.add(offering.getHostTag());
|
||||
|
||||
List<String> rootDiskTags = new ArrayList<String>();
|
||||
List<String> rootDiskTags = new ArrayList<String>();
|
||||
rootDiskTags.add(offering.getTags());
|
||||
|
||||
if(isIso){
|
||||
|
|
@ -2834,7 +2831,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use
|
|||
|
||||
try {
|
||||
VirtualMachineEntity vmEntity = _orchSrvc.getVirtualMachine(vm.getUuid());
|
||||
vmEntity.stop(new Long(userId).toString());
|
||||
vmEntity.stop(new Long(userId).toString());
|
||||
} catch (ResourceUnavailableException e) {
|
||||
throw new CloudRuntimeException(
|
||||
"Unable to contact the agent to stop the virtual machine "
|
||||
|
|
@ -3049,7 +3046,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use
|
|||
|
||||
try {
|
||||
VirtualMachineEntity vmEntity = _orchSrvc.getVirtualMachine(vm.getUuid());
|
||||
status = vmEntity.destroy(new Long(userId).toString());
|
||||
status = vmEntity.destroy(new Long(userId).toString());
|
||||
} catch (CloudException e) {
|
||||
CloudRuntimeException ex = new CloudRuntimeException(
|
||||
"Unable to destroy with specified vmId", e);
|
||||
|
|
|
|||
Loading…
Reference in New Issue