mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Changed SearchCriteria2 to GenericQueryBuilder to reflect the same placement
This commit is contained in:
parent
e2988902c9
commit
e8cac2c5d8
@ -20,14 +20,14 @@ import org.apache.cloudstack.api.Identity;
|
|||||||
import org.apache.cloudstack.api.InternalIdentity;
|
import org.apache.cloudstack.api.InternalIdentity;
|
||||||
|
|
||||||
public interface VirtualRouterProvider extends InternalIdentity, Identity {
|
public interface VirtualRouterProvider extends InternalIdentity, Identity {
|
||||||
public enum VirtualRouterProviderType {
|
public enum Type {
|
||||||
VirtualRouter,
|
VirtualRouter,
|
||||||
ElasticLoadBalancerVm,
|
ElasticLoadBalancerVm,
|
||||||
VPCVirtualRouter,
|
VPCVirtualRouter,
|
||||||
InternalLbVm
|
InternalLbVm
|
||||||
}
|
}
|
||||||
|
|
||||||
public VirtualRouterProviderType getType();
|
public Type getType();
|
||||||
|
|
||||||
public boolean isEnabled();
|
public boolean isEnabled();
|
||||||
|
|
||||||
|
|||||||
@ -22,12 +22,12 @@ import org.apache.cloudstack.api.command.admin.router.ConfigureVirtualRouterElem
|
|||||||
import org.apache.cloudstack.api.command.admin.router.ListVirtualRouterElementsCmd;
|
import org.apache.cloudstack.api.command.admin.router.ListVirtualRouterElementsCmd;
|
||||||
|
|
||||||
import com.cloud.network.VirtualRouterProvider;
|
import com.cloud.network.VirtualRouterProvider;
|
||||||
import com.cloud.network.VirtualRouterProvider.VirtualRouterProviderType;
|
import com.cloud.network.VirtualRouterProvider.Type;
|
||||||
import com.cloud.utils.component.PluggableService;
|
import com.cloud.utils.component.PluggableService;
|
||||||
|
|
||||||
public interface VirtualRouterElementService extends PluggableService{
|
public interface VirtualRouterElementService extends PluggableService{
|
||||||
VirtualRouterProvider configure(ConfigureVirtualRouterElementCmd cmd);
|
VirtualRouterProvider configure(ConfigureVirtualRouterElementCmd cmd);
|
||||||
VirtualRouterProvider addElement(Long nspId, VirtualRouterProviderType providerType);
|
VirtualRouterProvider addElement(Long nspId, Type providerType);
|
||||||
VirtualRouterProvider getCreatedElement(long id);
|
VirtualRouterProvider getCreatedElement(long id);
|
||||||
List<? extends VirtualRouterProvider> searchForVirtualRouterElement(ListVirtualRouterElementsCmd cmd);
|
List<? extends VirtualRouterProvider> searchForVirtualRouterElement(ListVirtualRouterElementsCmd cmd);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -36,7 +36,7 @@ import com.cloud.event.EventTypes;
|
|||||||
import com.cloud.exception.InvalidParameterValueException;
|
import com.cloud.exception.InvalidParameterValueException;
|
||||||
import com.cloud.exception.ResourceAllocationException;
|
import com.cloud.exception.ResourceAllocationException;
|
||||||
import com.cloud.network.VirtualRouterProvider;
|
import com.cloud.network.VirtualRouterProvider;
|
||||||
import com.cloud.network.VirtualRouterProvider.VirtualRouterProviderType;
|
import com.cloud.network.VirtualRouterProvider.Type;
|
||||||
import com.cloud.network.element.VirtualRouterElementService;
|
import com.cloud.network.element.VirtualRouterElementService;
|
||||||
import com.cloud.user.Account;
|
import com.cloud.user.Account;
|
||||||
|
|
||||||
@ -70,15 +70,15 @@ public class CreateVirtualRouterElementCmd extends BaseAsyncCreateCmd {
|
|||||||
return nspId;
|
return nspId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public VirtualRouterProviderType getProviderType() {
|
public Type getProviderType() {
|
||||||
if (providerType != null) {
|
if (providerType != null) {
|
||||||
if (providerType.equalsIgnoreCase(VirtualRouterProviderType.VirtualRouter.toString())) {
|
if (providerType.equalsIgnoreCase(Type.VirtualRouter.toString())) {
|
||||||
return VirtualRouterProviderType.VirtualRouter;
|
return Type.VirtualRouter;
|
||||||
} else if (providerType.equalsIgnoreCase(VirtualRouterProviderType.VPCVirtualRouter.toString())) {
|
} else if (providerType.equalsIgnoreCase(Type.VPCVirtualRouter.toString())) {
|
||||||
return VirtualRouterProviderType.VPCVirtualRouter;
|
return Type.VPCVirtualRouter;
|
||||||
} else throw new InvalidParameterValueException("Invalid providerType specified");
|
} else throw new InvalidParameterValueException("Invalid providerType specified");
|
||||||
}
|
}
|
||||||
return VirtualRouterProviderType.VirtualRouter;
|
return Type.VirtualRouter;
|
||||||
}
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////
|
||||||
|
|||||||
@ -1449,7 +1449,7 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl
|
|||||||
List<Long> behindAgents = findAgentsBehindOnPing();
|
List<Long> behindAgents = findAgentsBehindOnPing();
|
||||||
for (Long agentId : behindAgents) {
|
for (Long agentId : behindAgents) {
|
||||||
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
||||||
sc.addAnd(sc.getEntity().getId(), Op.EQ, agentId);
|
sc.and(sc.entity().getId(), Op.EQ, agentId);
|
||||||
HostVO h = sc.find();
|
HostVO h = sc.find();
|
||||||
if (h != null) {
|
if (h != null) {
|
||||||
ResourceState resourceState = h.getResourceState();
|
ResourceState resourceState = h.getResourceState();
|
||||||
@ -1471,7 +1471,7 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl
|
|||||||
}
|
}
|
||||||
|
|
||||||
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
||||||
sc.addAnd(sc.getEntity().getResourceState(), Op.IN, ResourceState.PrepareForMaintenance, ResourceState.ErrorInMaintenance);
|
sc.and(sc.entity().getResourceState(), Op.IN, ResourceState.PrepareForMaintenance, ResourceState.ErrorInMaintenance);
|
||||||
List<HostVO> hosts = sc.list();
|
List<HostVO> hosts = sc.list();
|
||||||
|
|
||||||
for (HostVO host : hosts) {
|
for (HostVO host : hosts) {
|
||||||
|
|||||||
@ -87,9 +87,8 @@ import com.cloud.serializer.GsonHelper;
|
|||||||
import com.cloud.utils.DateUtil;
|
import com.cloud.utils.DateUtil;
|
||||||
import com.cloud.utils.Profiler;
|
import com.cloud.utils.Profiler;
|
||||||
import com.cloud.utils.concurrency.NamedThreadFactory;
|
import com.cloud.utils.concurrency.NamedThreadFactory;
|
||||||
|
import com.cloud.utils.db.QueryBuilder;
|
||||||
import com.cloud.utils.db.SearchCriteria.Op;
|
import com.cloud.utils.db.SearchCriteria.Op;
|
||||||
import com.cloud.utils.db.GenericQueryBuilder;
|
|
||||||
import com.cloud.utils.db.GenericQueryBuilder;
|
|
||||||
import com.cloud.utils.db.Transaction;
|
import com.cloud.utils.db.Transaction;
|
||||||
import com.cloud.utils.exception.CloudRuntimeException;
|
import com.cloud.utils.exception.CloudRuntimeException;
|
||||||
import com.cloud.utils.nio.Link;
|
import com.cloud.utils.nio.Link;
|
||||||
@ -783,9 +782,9 @@ public class ClusteredAgentManagerImpl extends AgentManagerImpl implements Clust
|
|||||||
public void startRebalanceAgents() {
|
public void startRebalanceAgents() {
|
||||||
s_logger.debug("Management server " + _nodeId + " is asking other peers to rebalance their agents");
|
s_logger.debug("Management server " + _nodeId + " is asking other peers to rebalance their agents");
|
||||||
List<ManagementServerHostVO> allMS = _mshostDao.listBy(ManagementServerHost.State.Up);
|
List<ManagementServerHostVO> allMS = _mshostDao.listBy(ManagementServerHost.State.Up);
|
||||||
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);
|
||||||
sc.addAnd(sc.getEntity().getManagementServerId(), Op.NNULL);
|
sc.and(sc.entity().getManagementServerId(), Op.NNULL);
|
||||||
sc.addAnd(sc.getEntity().getType(), Op.EQ, Host.Type.Routing);
|
sc.and(sc.entity().getType(), Op.EQ, Host.Type.Routing);
|
||||||
List<HostVO> allManagedAgents = sc.list();
|
List<HostVO> allManagedAgents = sc.list();
|
||||||
|
|
||||||
int avLoad = 0;
|
int avLoad = 0;
|
||||||
@ -1369,13 +1368,13 @@ public class ClusteredAgentManagerImpl extends AgentManagerImpl implements Clust
|
|||||||
profilerAgentLB.start();
|
profilerAgentLB.start();
|
||||||
//initiate agent lb task will be scheduled and executed only once, and only when number of agents loaded exceeds _connectedAgentsThreshold
|
//initiate agent lb task will be scheduled and executed only once, and only when number of agents loaded exceeds _connectedAgentsThreshold
|
||||||
if (EnableLB.value() && !_agentLbHappened) {
|
if (EnableLB.value() && !_agentLbHappened) {
|
||||||
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);
|
||||||
sc.addAnd(sc.getEntity().getManagementServerId(), Op.NNULL);
|
sc.and(sc.entity().getManagementServerId(), Op.NNULL);
|
||||||
sc.addAnd(sc.getEntity().getType(), Op.EQ, Host.Type.Routing);
|
sc.and(sc.entity().getType(), Op.EQ, Host.Type.Routing);
|
||||||
List<HostVO> allManagedRoutingAgents = sc.list();
|
List<HostVO> allManagedRoutingAgents = sc.list();
|
||||||
|
|
||||||
sc = GenericQueryBuilder.create(HostVO.class);
|
sc = QueryBuilder.create(HostVO.class);
|
||||||
sc.addAnd(sc.getEntity().getType(), Op.EQ, Host.Type.Routing);
|
sc.and(sc.entity().getType(), Op.EQ, Host.Type.Routing);
|
||||||
List<HostVO> allAgents = sc.list();
|
List<HostVO> allAgents = sc.list();
|
||||||
double allHostsCount = allAgents.size();
|
double allHostsCount = allAgents.size();
|
||||||
double managedHostsCount = allManagedRoutingAgents.size();
|
double managedHostsCount = allManagedRoutingAgents.size();
|
||||||
|
|||||||
@ -26,7 +26,6 @@ import java.util.Map;
|
|||||||
|
|
||||||
import javax.ejb.Local;
|
import javax.ejb.Local;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.naming.ConfigurationException;
|
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
@ -36,9 +35,8 @@ import com.cloud.host.HostVO;
|
|||||||
import com.cloud.host.Status;
|
import com.cloud.host.Status;
|
||||||
import com.cloud.host.dao.HostDao;
|
import com.cloud.host.dao.HostDao;
|
||||||
import com.cloud.utils.component.AdapterBase;
|
import com.cloud.utils.component.AdapterBase;
|
||||||
import com.cloud.utils.db.GenericQueryBuilder;
|
import com.cloud.utils.db.QueryBuilder;
|
||||||
import com.cloud.utils.db.SearchCriteria.Op;
|
import com.cloud.utils.db.SearchCriteria.Op;
|
||||||
import com.cloud.utils.db.GenericQueryBuilder;
|
|
||||||
|
|
||||||
@Component
|
@Component
|
||||||
@Local(value=AgentLoadBalancerPlanner.class)
|
@Local(value=AgentLoadBalancerPlanner.class)
|
||||||
@ -49,9 +47,9 @@ public class ClusterBasedAgentLoadBalancerPlanner extends AdapterBase implements
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<HostVO> getHostsToRebalance(long msId, int avLoad) {
|
public List<HostVO> getHostsToRebalance(long msId, int avLoad) {
|
||||||
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);
|
||||||
sc.addAnd(sc.getEntity().getType(), Op.EQ, Host.Type.Routing);
|
sc.and(sc.entity().getType(), Op.EQ, Host.Type.Routing);
|
||||||
sc.addAnd(sc.getEntity().getManagementServerId(), Op.EQ, msId);
|
sc.and(sc.entity().getManagementServerId(), Op.EQ, msId);
|
||||||
List<HostVO> allHosts = sc.list();
|
List<HostVO> allHosts = sc.list();
|
||||||
|
|
||||||
if (allHosts.size() <= avLoad) {
|
if (allHosts.size() <= avLoad) {
|
||||||
@ -59,15 +57,15 @@ public class ClusterBasedAgentLoadBalancerPlanner extends AdapterBase implements
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
sc = GenericQueryBuilder.create(HostVO.class);
|
sc = QueryBuilder.create(HostVO.class);
|
||||||
sc.addAnd(sc.getEntity().getManagementServerId(), Op.EQ, msId);
|
sc.and(sc.entity().getManagementServerId(), Op.EQ, msId);
|
||||||
sc.addAnd(sc.getEntity().getStatus(), Op.EQ, Status.Up);
|
sc.and(sc.entity().getStatus(), Op.EQ, Status.Up);
|
||||||
List<HostVO> directHosts = sc.list();
|
List<HostVO> directHosts = sc.list();
|
||||||
|
|
||||||
if (directHosts.isEmpty()) {
|
if (directHosts.isEmpty()) {
|
||||||
s_logger.debug("No direct agents in status " + Status.Up + " exist for the management server " + msId + "; so it doesn't participate in agent rebalancing process");
|
s_logger.debug("No direct agents in status " + Status.Up + " exist for the management server " + msId + "; so it doesn't participate in agent rebalancing process");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Map<Long, List<HostVO>> hostToClusterMap = new HashMap<Long, List<HostVO>>();
|
Map<Long, List<HostVO>> hostToClusterMap = new HashMap<Long, List<HostVO>>();
|
||||||
@ -91,7 +89,7 @@ public class ClusterBasedAgentLoadBalancerPlanner extends AdapterBase implements
|
|||||||
int hostsLeft = directHosts.size();
|
int hostsLeft = directHosts.size();
|
||||||
List<HostVO> hostsToReturn = new ArrayList<HostVO>();
|
List<HostVO> hostsToReturn = new ArrayList<HostVO>();
|
||||||
|
|
||||||
s_logger.debug("Management server " + msId + " can give away " + hostsToGive + " as it currently owns " + allHosts.size() +
|
s_logger.debug("Management server " + msId + " can give away " + hostsToGive + " as it currently owns " + allHosts.size() +
|
||||||
" and the average agent load in the system is " + avLoad + "; finalyzing list of hosts to give away...");
|
" and the average agent load in the system is " + avLoad + "; finalyzing list of hosts to give away...");
|
||||||
for (Long cluster : hostToClusterMap.keySet()) {
|
for (Long cluster : hostToClusterMap.keySet()) {
|
||||||
List<HostVO> hostsInCluster = hostToClusterMap.get(cluster);
|
List<HostVO> hostsInCluster = hostToClusterMap.get(cluster);
|
||||||
@ -105,7 +103,7 @@ public class ClusterBasedAgentLoadBalancerPlanner extends AdapterBase implements
|
|||||||
continue;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
s_logger.debug("Taking all " + hostsInCluster.size() + " hosts: " + hostsInCluster + " from cluster id=" + cluster);
|
s_logger.debug("Taking all " + hostsInCluster.size() + " hosts: " + hostsInCluster + " from cluster id=" + cluster);
|
||||||
hostsToReturn.addAll(hostsInCluster);
|
hostsToReturn.addAll(hostsInCluster);
|
||||||
|
|||||||
@ -51,21 +51,21 @@ public class StorageNetworkIpRangeDaoImpl extends GenericDaoBase<StorageNetworkI
|
|||||||
@Override
|
@Override
|
||||||
public List<StorageNetworkIpRangeVO> listByPodId(long podId) {
|
public List<StorageNetworkIpRangeVO> listByPodId(long podId) {
|
||||||
GenericQueryBuilder<StorageNetworkIpRangeVO, StorageNetworkIpRangeVO> sc = GenericQueryBuilder.create(StorageNetworkIpRangeVO.class);
|
GenericQueryBuilder<StorageNetworkIpRangeVO, StorageNetworkIpRangeVO> sc = GenericQueryBuilder.create(StorageNetworkIpRangeVO.class);
|
||||||
sc.addAnd(sc.getEntity().getPodId(), Op.EQ, podId);
|
sc.and(sc.entity().getPodId(), Op.EQ, podId);
|
||||||
return sc.list();
|
return sc.list();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<StorageNetworkIpRangeVO> listByRangeId(long rangeId) {
|
public List<StorageNetworkIpRangeVO> listByRangeId(long rangeId) {
|
||||||
GenericQueryBuilder<StorageNetworkIpRangeVO, StorageNetworkIpRangeVO> sc = GenericQueryBuilder.create(StorageNetworkIpRangeVO.class);
|
GenericQueryBuilder<StorageNetworkIpRangeVO, StorageNetworkIpRangeVO> sc = GenericQueryBuilder.create(StorageNetworkIpRangeVO.class);
|
||||||
sc.addAnd(sc.getEntity().getId(), Op.EQ, rangeId);
|
sc.and(sc.entity().getId(), Op.EQ, rangeId);
|
||||||
return sc.list();
|
return sc.list();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<StorageNetworkIpRangeVO> listByDataCenterId(long dcId) {
|
public List<StorageNetworkIpRangeVO> listByDataCenterId(long dcId) {
|
||||||
GenericQueryBuilder<StorageNetworkIpRangeVO, StorageNetworkIpRangeVO> sc = GenericQueryBuilder.create(StorageNetworkIpRangeVO.class);
|
GenericQueryBuilder<StorageNetworkIpRangeVO, StorageNetworkIpRangeVO> sc = GenericQueryBuilder.create(StorageNetworkIpRangeVO.class);
|
||||||
sc.addAnd(sc.getEntity().getDataCenterId(), Op.EQ, dcId);
|
sc.and(sc.entity().getDataCenterId(), Op.EQ, dcId);
|
||||||
return sc.list();
|
return sc.list();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -20,12 +20,12 @@ import java.util.List;
|
|||||||
|
|
||||||
import com.cloud.network.VirtualRouterProvider;
|
import com.cloud.network.VirtualRouterProvider;
|
||||||
import com.cloud.network.element.VirtualRouterProviderVO;
|
import com.cloud.network.element.VirtualRouterProviderVO;
|
||||||
import com.cloud.network.VirtualRouterProvider.VirtualRouterProviderType;
|
import com.cloud.network.VirtualRouterProvider.Type;
|
||||||
import com.cloud.utils.db.GenericDao;
|
import com.cloud.utils.db.GenericDao;
|
||||||
|
|
||||||
public interface VirtualRouterProviderDao extends GenericDao<VirtualRouterProviderVO, Long> {
|
public interface VirtualRouterProviderDao extends GenericDao<VirtualRouterProviderVO, Long> {
|
||||||
public VirtualRouterProviderVO findByNspIdAndType(long nspId, VirtualRouterProviderType type);
|
public VirtualRouterProviderVO findByNspIdAndType(long nspId, Type type);
|
||||||
public List<VirtualRouterProviderVO> listByEnabledAndType(boolean enabled, VirtualRouterProviderType type);
|
public List<VirtualRouterProviderVO> listByEnabledAndType(boolean enabled, Type type);
|
||||||
public VirtualRouterProviderVO findByIdAndEnabledAndType(long id, boolean enabled, VirtualRouterProviderType type);
|
public VirtualRouterProviderVO findByIdAndEnabledAndType(long id, boolean enabled, Type type);
|
||||||
public List<VirtualRouterProviderVO> listByType(VirtualRouterProviderType type);
|
public List<VirtualRouterProviderVO> listByType(Type type);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -23,7 +23,7 @@ import javax.ejb.Local;
|
|||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import com.cloud.network.element.VirtualRouterProviderVO;
|
import com.cloud.network.element.VirtualRouterProviderVO;
|
||||||
import com.cloud.network.VirtualRouterProvider.VirtualRouterProviderType;
|
import com.cloud.network.VirtualRouterProvider.Type;
|
||||||
import com.cloud.utils.db.DB;
|
import com.cloud.utils.db.DB;
|
||||||
import com.cloud.utils.db.GenericDaoBase;
|
import com.cloud.utils.db.GenericDaoBase;
|
||||||
import com.cloud.utils.db.SearchBuilder;
|
import com.cloud.utils.db.SearchBuilder;
|
||||||
@ -46,7 +46,7 @@ public class VirtualRouterProviderDaoImpl extends GenericDaoBase<VirtualRouterPr
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public VirtualRouterProviderVO findByNspIdAndType(long nspId, VirtualRouterProviderType type) {
|
public VirtualRouterProviderVO findByNspIdAndType(long nspId, Type type) {
|
||||||
SearchCriteria<VirtualRouterProviderVO> sc = AllFieldsSearch.create();
|
SearchCriteria<VirtualRouterProviderVO> sc = AllFieldsSearch.create();
|
||||||
sc.setParameters("nsp_id", nspId);
|
sc.setParameters("nsp_id", nspId);
|
||||||
sc.setParameters("type", type);
|
sc.setParameters("type", type);
|
||||||
@ -54,7 +54,7 @@ public class VirtualRouterProviderDaoImpl extends GenericDaoBase<VirtualRouterPr
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<VirtualRouterProviderVO> listByEnabledAndType(boolean enabled, VirtualRouterProviderType type) {
|
public List<VirtualRouterProviderVO> listByEnabledAndType(boolean enabled, Type type) {
|
||||||
SearchCriteria<VirtualRouterProviderVO> sc = AllFieldsSearch.create();
|
SearchCriteria<VirtualRouterProviderVO> sc = AllFieldsSearch.create();
|
||||||
sc.setParameters("enabled", enabled);
|
sc.setParameters("enabled", enabled);
|
||||||
sc.setParameters("type", type);
|
sc.setParameters("type", type);
|
||||||
@ -62,7 +62,7 @@ public class VirtualRouterProviderDaoImpl extends GenericDaoBase<VirtualRouterPr
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public VirtualRouterProviderVO findByIdAndEnabledAndType(long id, boolean enabled, VirtualRouterProviderType type) {
|
public VirtualRouterProviderVO findByIdAndEnabledAndType(long id, boolean enabled, Type type) {
|
||||||
SearchCriteria<VirtualRouterProviderVO> sc = AllFieldsSearch.create();
|
SearchCriteria<VirtualRouterProviderVO> sc = AllFieldsSearch.create();
|
||||||
sc.setParameters("id", id);
|
sc.setParameters("id", id);
|
||||||
sc.setParameters("enabled", enabled);
|
sc.setParameters("enabled", enabled);
|
||||||
@ -71,7 +71,7 @@ public class VirtualRouterProviderDaoImpl extends GenericDaoBase<VirtualRouterPr
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<VirtualRouterProviderVO> listByType(VirtualRouterProviderType type) {
|
public List<VirtualRouterProviderVO> listByType(Type type) {
|
||||||
SearchCriteria<VirtualRouterProviderVO> sc = AllFieldsSearch.create();
|
SearchCriteria<VirtualRouterProviderVO> sc = AllFieldsSearch.create();
|
||||||
sc.setParameters("type", type);
|
sc.setParameters("type", type);
|
||||||
return listBy(sc);
|
return listBy(sc);
|
||||||
|
|||||||
@ -42,7 +42,7 @@ public class VirtualRouterProviderVO implements VirtualRouterProvider {
|
|||||||
|
|
||||||
@Column(name="type")
|
@Column(name="type")
|
||||||
@Enumerated(EnumType.STRING)
|
@Enumerated(EnumType.STRING)
|
||||||
private VirtualRouterProviderType type;
|
private Type type;
|
||||||
|
|
||||||
@Column(name="enabled")
|
@Column(name="enabled")
|
||||||
private boolean enabled;
|
private boolean enabled;
|
||||||
@ -60,7 +60,7 @@ public class VirtualRouterProviderVO implements VirtualRouterProvider {
|
|||||||
this.uuid = UUID.randomUUID().toString();
|
this.uuid = UUID.randomUUID().toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public VirtualRouterProviderVO(long nspId, VirtualRouterProviderType type) {
|
public VirtualRouterProviderVO(long nspId, Type type) {
|
||||||
this.nspId = nspId;
|
this.nspId = nspId;
|
||||||
this.type = type;
|
this.type = type;
|
||||||
this.uuid = UUID.randomUUID().toString();
|
this.uuid = UUID.randomUUID().toString();
|
||||||
@ -81,7 +81,7 @@ public class VirtualRouterProviderVO implements VirtualRouterProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public VirtualRouterProviderType getType() {
|
public Type getType() {
|
||||||
return this.type;
|
return this.type;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -106,7 +106,7 @@ public class VirtualRouterProviderVO implements VirtualRouterProvider {
|
|||||||
this.id = id;
|
this.id = id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setType(VirtualRouterProviderType type) {
|
public void setType(Type type) {
|
||||||
this.type = type;
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -47,7 +47,7 @@ public class AccountDetailsDaoImpl extends GenericDaoBase<AccountDetailVO, Long>
|
|||||||
@Override
|
@Override
|
||||||
public Map<String, String> findDetails(long accountId) {
|
public Map<String, String> findDetails(long accountId) {
|
||||||
GenericQueryBuilder<AccountDetailVO, AccountDetailVO> sc = GenericQueryBuilder.create(AccountDetailVO.class);
|
GenericQueryBuilder<AccountDetailVO, AccountDetailVO> sc = GenericQueryBuilder.create(AccountDetailVO.class);
|
||||||
sc.addAnd(sc.getEntity().getAccountId(), Op.EQ, accountId);
|
sc.and(sc.entity().getAccountId(), Op.EQ, accountId);
|
||||||
List<AccountDetailVO> results = sc.list();
|
List<AccountDetailVO> results = sc.list();
|
||||||
Map<String, String> details = new HashMap<String, String>(results.size());
|
Map<String, String> details = new HashMap<String, String>(results.size());
|
||||||
for (AccountDetailVO r : results) {
|
for (AccountDetailVO r : results) {
|
||||||
@ -73,8 +73,8 @@ public class AccountDetailsDaoImpl extends GenericDaoBase<AccountDetailVO, Long>
|
|||||||
@Override
|
@Override
|
||||||
public AccountDetailVO findDetail(long accountId, String name) {
|
public AccountDetailVO findDetail(long accountId, String name) {
|
||||||
GenericQueryBuilder<AccountDetailVO, AccountDetailVO> sc = GenericQueryBuilder.create(AccountDetailVO.class);
|
GenericQueryBuilder<AccountDetailVO, AccountDetailVO> sc = GenericQueryBuilder.create(AccountDetailVO.class);
|
||||||
sc.addAnd(sc.getEntity().getAccountId(), Op.EQ, accountId);
|
sc.and(sc.entity().getAccountId(), Op.EQ, accountId);
|
||||||
sc.addAnd(sc.getEntity().getName(), Op.EQ, name);
|
sc.and(sc.entity().getName(), Op.EQ, name);
|
||||||
return sc.find();
|
return sc.find();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -35,12 +35,11 @@ import com.cloud.storage.StoragePoolStatus;
|
|||||||
import com.cloud.utils.db.DB;
|
import com.cloud.utils.db.DB;
|
||||||
import com.cloud.utils.db.GenericDaoBase;
|
import com.cloud.utils.db.GenericDaoBase;
|
||||||
import com.cloud.utils.db.GenericSearchBuilder;
|
import com.cloud.utils.db.GenericSearchBuilder;
|
||||||
|
import com.cloud.utils.db.QueryBuilder;
|
||||||
import com.cloud.utils.db.SearchBuilder;
|
import com.cloud.utils.db.SearchBuilder;
|
||||||
import com.cloud.utils.db.SearchCriteria;
|
import com.cloud.utils.db.SearchCriteria;
|
||||||
import com.cloud.utils.db.SearchCriteria.Func;
|
import com.cloud.utils.db.SearchCriteria.Func;
|
||||||
import com.cloud.utils.db.SearchCriteria.Op;
|
import com.cloud.utils.db.SearchCriteria.Op;
|
||||||
import com.cloud.utils.db.GenericQueryBuilder;
|
|
||||||
import com.cloud.utils.db.GenericQueryBuilder;
|
|
||||||
import com.cloud.utils.db.Transaction;
|
import com.cloud.utils.db.Transaction;
|
||||||
import com.cloud.utils.exception.CloudRuntimeException;
|
import com.cloud.utils.exception.CloudRuntimeException;
|
||||||
|
|
||||||
@ -316,10 +315,10 @@ public class PrimaryDataStoreDaoImpl extends GenericDaoBase<StoragePoolVO, Long>
|
|||||||
public List<StoragePoolVO> findZoneWideStoragePoolsByTags(long dcId, String[] tags) {
|
public List<StoragePoolVO> findZoneWideStoragePoolsByTags(long dcId, String[] tags) {
|
||||||
List<StoragePoolVO> storagePools = null;
|
List<StoragePoolVO> storagePools = null;
|
||||||
if (tags == null || tags.length == 0) {
|
if (tags == null || tags.length == 0) {
|
||||||
GenericQueryBuilder<StoragePoolVO, StoragePoolVO> sc = GenericQueryBuilder.create(StoragePoolVO.class);
|
QueryBuilder<StoragePoolVO> sc = QueryBuilder.create(StoragePoolVO.class);
|
||||||
sc.addAnd(sc.getEntity().getDataCenterId(), Op.EQ, dcId);
|
sc.and(sc.entity().getDataCenterId(), Op.EQ,dcId);
|
||||||
sc.addAnd(sc.getEntity().getStatus(), Op.EQ, Status.Up);
|
sc.and(sc.entity().getStatus(), Op.EQ,Status.Up);
|
||||||
sc.addAnd(sc.getEntity().getScope(), Op.EQ, ScopeType.ZONE);
|
sc.and(sc.entity().getScope(), Op.EQ,ScopeType.ZONE);
|
||||||
return sc.list();
|
return sc.list();
|
||||||
} else {
|
} else {
|
||||||
Map<String, String> details = tagsToDetails(tags);
|
Map<String, String> details = tagsToDetails(tags);
|
||||||
@ -421,11 +420,11 @@ public class PrimaryDataStoreDaoImpl extends GenericDaoBase<StoragePoolVO, Long>
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<StoragePoolVO> findZoneWideStoragePoolsByHypervisor(long dataCenterId, HypervisorType hypervisorType) {
|
public List<StoragePoolVO> findZoneWideStoragePoolsByHypervisor(long dataCenterId, HypervisorType hypervisorType) {
|
||||||
GenericQueryBuilder<StoragePoolVO, StoragePoolVO> sc = GenericQueryBuilder.create(StoragePoolVO.class);
|
QueryBuilder<StoragePoolVO> sc = QueryBuilder.create(StoragePoolVO.class);
|
||||||
sc.addAnd(sc.getEntity().getDataCenterId(), Op.EQ, dataCenterId);
|
sc.and(sc.entity().getDataCenterId(), Op.EQ,dataCenterId);
|
||||||
sc.addAnd(sc.getEntity().getStatus(), Op.EQ, Status.Up);
|
sc.and(sc.entity().getStatus(), Op.EQ,Status.Up);
|
||||||
sc.addAnd(sc.getEntity().getScope(), Op.EQ, ScopeType.ZONE);
|
sc.and(sc.entity().getScope(), Op.EQ,ScopeType.ZONE);
|
||||||
sc.addAnd(sc.getEntity().getHypervisor(), Op.EQ, hypervisorType);
|
sc.and(sc.entity().getHypervisor(), Op.EQ,hypervisorType);
|
||||||
return sc.list();
|
return sc.list();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,35 +18,46 @@
|
|||||||
*/
|
*/
|
||||||
package org.apache.cloudstack.storage.cache.manager;
|
package org.apache.cloudstack.storage.cache.manager;
|
||||||
|
|
||||||
import com.cloud.configuration.Config;
|
import java.util.ArrayList;
|
||||||
import com.cloud.storage.DataStoreRole;
|
import java.util.Collections;
|
||||||
import com.cloud.utils.NumbersUtil;
|
import java.util.List;
|
||||||
import com.cloud.utils.component.Manager;
|
import java.util.Map;
|
||||||
import com.cloud.utils.concurrency.NamedThreadFactory;
|
import java.util.Random;
|
||||||
import com.cloud.utils.db.GlobalLock;
|
import java.util.concurrent.ExecutionException;
|
||||||
import com.cloud.utils.db.SearchCriteria;
|
import java.util.concurrent.Executors;
|
||||||
import com.cloud.utils.db.GenericQueryBuilder;
|
import java.util.concurrent.ScheduledExecutorService;
|
||||||
import com.cloud.utils.db.GenericQueryBuilder;
|
import java.util.concurrent.TimeUnit;
|
||||||
import com.cloud.utils.exception.CloudRuntimeException;
|
|
||||||
|
|
||||||
import org.apache.cloudstack.engine.subsystem.api.storage.*;
|
import javax.inject.Inject;
|
||||||
|
import javax.naming.ConfigurationException;
|
||||||
|
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
import org.apache.cloudstack.engine.subsystem.api.storage.CopyCommandResult;
|
||||||
|
import org.apache.cloudstack.engine.subsystem.api.storage.DataMotionService;
|
||||||
|
import org.apache.cloudstack.engine.subsystem.api.storage.DataObject;
|
||||||
|
import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectInStore;
|
||||||
|
import org.apache.cloudstack.engine.subsystem.api.storage.DataStore;
|
||||||
|
import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
|
||||||
|
import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine;
|
||||||
import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine.Event;
|
import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine.Event;
|
||||||
|
import org.apache.cloudstack.engine.subsystem.api.storage.Scope;
|
||||||
|
import org.apache.cloudstack.engine.subsystem.api.storage.StorageCacheManager;
|
||||||
import org.apache.cloudstack.framework.async.AsyncCallFuture;
|
import org.apache.cloudstack.framework.async.AsyncCallFuture;
|
||||||
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
|
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
|
||||||
import org.apache.cloudstack.storage.cache.allocator.StorageCacheAllocator;
|
import org.apache.cloudstack.storage.cache.allocator.StorageCacheAllocator;
|
||||||
import org.apache.cloudstack.storage.datastore.ObjectInDataStoreManager;
|
import org.apache.cloudstack.storage.datastore.ObjectInDataStoreManager;
|
||||||
import org.apache.cloudstack.storage.datastore.db.ImageStoreVO;
|
import org.apache.cloudstack.storage.datastore.db.ImageStoreVO;
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
import com.cloud.configuration.Config;
|
||||||
|
import com.cloud.storage.DataStoreRole;
|
||||||
import javax.inject.Inject;
|
import com.cloud.utils.NumbersUtil;
|
||||||
import javax.naming.ConfigurationException;
|
import com.cloud.utils.component.Manager;
|
||||||
|
import com.cloud.utils.concurrency.NamedThreadFactory;
|
||||||
import java.util.*;
|
import com.cloud.utils.db.GlobalLock;
|
||||||
import java.util.concurrent.ExecutionException;
|
import com.cloud.utils.db.QueryBuilder;
|
||||||
import java.util.concurrent.Executors;
|
import com.cloud.utils.db.SearchCriteria;
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
import com.cloud.utils.exception.CloudRuntimeException;
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
|
|
||||||
public class StorageCacheManagerImpl implements StorageCacheManager, Manager {
|
public class StorageCacheManagerImpl implements StorageCacheManager, Manager {
|
||||||
private static final Logger s_logger = Logger.getLogger(StorageCacheManagerImpl.class);
|
private static final Logger s_logger = Logger.getLogger(StorageCacheManagerImpl.class);
|
||||||
@ -79,8 +90,8 @@ public class StorageCacheManagerImpl implements StorageCacheManager, Manager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected List<DataStore> getCacheStores() {
|
protected List<DataStore> getCacheStores() {
|
||||||
GenericQueryBuilder<ImageStoreVO, ImageStoreVO> sc = GenericQueryBuilder.create(ImageStoreVO.class);
|
QueryBuilder<ImageStoreVO> sc = QueryBuilder.create(ImageStoreVO.class);
|
||||||
sc.addAnd(sc.getEntity().getRole(), SearchCriteria.Op.EQ, DataStoreRole.ImageCache);
|
sc.and(sc.entity().getRole(), SearchCriteria.Op.EQ,DataStoreRole.ImageCache);
|
||||||
List<ImageStoreVO> imageStoreVOs = sc.list();
|
List<ImageStoreVO> imageStoreVOs = sc.list();
|
||||||
List<DataStore> stores = new ArrayList<DataStore>();
|
List<DataStore> stores = new ArrayList<DataStore>();
|
||||||
for (ImageStoreVO vo : imageStoreVOs) {
|
for (ImageStoreVO vo : imageStoreVOs) {
|
||||||
@ -232,7 +243,7 @@ public class StorageCacheManagerImpl implements StorageCacheManager, Manager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DataObject createCacheObject(DataObject data, Scope scope) {
|
public DataObject createCacheObject(DataObject data, Scope scope) {
|
||||||
DataStore cacheStore = this.getCacheStorage(scope);
|
DataStore cacheStore = getCacheStorage(scope);
|
||||||
|
|
||||||
if (cacheStore == null)
|
if (cacheStore == null)
|
||||||
{
|
{
|
||||||
@ -244,7 +255,7 @@ public class StorageCacheManagerImpl implements StorageCacheManager, Manager {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DataObject getCacheObject(DataObject data, Scope scope) {
|
public DataObject getCacheObject(DataObject data, Scope scope) {
|
||||||
DataStore cacheStore = this.getCacheStorage(scope);
|
DataStore cacheStore = getCacheStorage(scope);
|
||||||
DataObject objOnCacheStore = cacheStore.create(data);
|
DataObject objOnCacheStore = cacheStore.create(data);
|
||||||
objOnCacheStore.incRefCount();
|
objOnCacheStore.incRefCount();
|
||||||
return objOnCacheStore;
|
return objOnCacheStore;
|
||||||
|
|||||||
@ -17,27 +17,29 @@
|
|||||||
* under the License.
|
* under the License.
|
||||||
*/
|
*/
|
||||||
package org.apache.cloudstack.storage.cache.manager;
|
package org.apache.cloudstack.storage.cache.manager;
|
||||||
import com.cloud.configuration.Config;
|
|
||||||
import com.cloud.utils.DateUtil;
|
|
||||||
import com.cloud.utils.NumbersUtil;
|
|
||||||
import com.cloud.utils.db.SearchCriteria;
|
|
||||||
import com.cloud.utils.db.GenericQueryBuilder;
|
|
||||||
import com.cloud.utils.db.GenericQueryBuilder;
|
|
||||||
|
|
||||||
import org.apache.cloudstack.engine.subsystem.api.storage.*;
|
|
||||||
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
|
|
||||||
import org.apache.cloudstack.storage.datastore.db.SnapshotDataStoreVO;
|
|
||||||
import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO;
|
|
||||||
import org.apache.cloudstack.storage.datastore.db.VolumeDataStoreVO;
|
|
||||||
|
|
||||||
import org.apache.commons.lang.math.NumberUtils;
|
|
||||||
|
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
import javax.annotation.PostConstruct;
|
import javax.annotation.PostConstruct;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import org.apache.cloudstack.engine.subsystem.api.storage.DataObject;
|
||||||
|
import org.apache.cloudstack.engine.subsystem.api.storage.DataStore;
|
||||||
|
import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine;
|
||||||
|
import org.apache.cloudstack.engine.subsystem.api.storage.SnapshotDataFactory;
|
||||||
|
import org.apache.cloudstack.engine.subsystem.api.storage.TemplateDataFactory;
|
||||||
|
import org.apache.cloudstack.engine.subsystem.api.storage.VolumeDataFactory;
|
||||||
|
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
|
||||||
|
import org.apache.cloudstack.storage.datastore.db.SnapshotDataStoreVO;
|
||||||
|
import org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO;
|
||||||
|
import org.apache.cloudstack.storage.datastore.db.VolumeDataStoreVO;
|
||||||
|
|
||||||
|
import com.cloud.configuration.Config;
|
||||||
|
import com.cloud.utils.DateUtil;
|
||||||
|
import com.cloud.utils.NumbersUtil;
|
||||||
|
import com.cloud.utils.db.QueryBuilder;
|
||||||
|
import com.cloud.utils.db.SearchCriteria;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public class StorageCacheReplacementAlgorithmLRU implements StorageCacheReplacementAlgorithm {
|
public class StorageCacheReplacementAlgorithmLRU implements StorageCacheReplacementAlgorithm {
|
||||||
@ -72,33 +74,33 @@ public class StorageCacheReplacementAlgorithmLRU implements StorageCacheReplacem
|
|||||||
cal.add(Calendar.DAY_OF_MONTH, -unusedTimeInterval.intValue());
|
cal.add(Calendar.DAY_OF_MONTH, -unusedTimeInterval.intValue());
|
||||||
Date bef = cal.getTime();
|
Date bef = cal.getTime();
|
||||||
|
|
||||||
GenericQueryBuilder<TemplateDataStoreVO, TemplateDataStoreVO> sc = GenericQueryBuilder.create(TemplateDataStoreVO.class);
|
QueryBuilder<TemplateDataStoreVO> sc = QueryBuilder.create(TemplateDataStoreVO.class);
|
||||||
sc.addAnd(sc.getEntity().getLastUpdated(), SearchCriteria.Op.LT, bef);
|
sc.and(sc.entity().getLastUpdated(), SearchCriteria.Op.LT, bef);
|
||||||
sc.addAnd(sc.getEntity().getState(), SearchCriteria.Op.EQ, ObjectInDataStoreStateMachine.State.Ready);
|
sc.and(sc.entity().getState(), SearchCriteria.Op.EQ,ObjectInDataStoreStateMachine.State.Ready);
|
||||||
sc.addAnd(sc.getEntity().getDataStoreId(), SearchCriteria.Op.EQ, store.getId());
|
sc.and(sc.entity().getDataStoreId(), SearchCriteria.Op.EQ,store.getId());
|
||||||
sc.addAnd(sc.getEntity().getDataStoreRole(), SearchCriteria.Op.EQ, store.getRole());
|
sc.and(sc.entity().getDataStoreRole(), SearchCriteria.Op.EQ,store.getRole());
|
||||||
sc.addAnd(sc.getEntity().getRefCnt(), SearchCriteria.Op.EQ, 0);
|
sc.and(sc.entity().getRefCnt(), SearchCriteria.Op.EQ,0);
|
||||||
TemplateDataStoreVO template = sc.find();
|
TemplateDataStoreVO template = sc.find();
|
||||||
if (template != null) {
|
if (template != null) {
|
||||||
return templateFactory.getTemplate(template.getTemplateId(), store);
|
return templateFactory.getTemplate(template.getTemplateId(), store);
|
||||||
}
|
}
|
||||||
|
|
||||||
GenericQueryBuilder<VolumeDataStoreVO, VolumeDataStoreVO> volSc = GenericQueryBuilder.create(VolumeDataStoreVO.class);
|
QueryBuilder<VolumeDataStoreVO> volSc = QueryBuilder.create(VolumeDataStoreVO.class);
|
||||||
volSc.addAnd(volSc.getEntity().getLastUpdated(), SearchCriteria.Op.LT, bef);
|
volSc.and(volSc.entity().getLastUpdated(), SearchCriteria.Op.LT, bef);
|
||||||
volSc.addAnd(volSc.getEntity().getState(), SearchCriteria.Op.EQ, ObjectInDataStoreStateMachine.State.Ready);
|
volSc.and(volSc.entity().getState(), SearchCriteria.Op.EQ,ObjectInDataStoreStateMachine.State.Ready);
|
||||||
volSc.addAnd(volSc.getEntity().getDataStoreId(), SearchCriteria.Op.EQ, store.getId());
|
volSc.and(volSc.entity().getDataStoreId(), SearchCriteria.Op.EQ,store.getId());
|
||||||
volSc.addAnd(volSc.getEntity().getRefCnt(), SearchCriteria.Op.EQ, 0);
|
volSc.and(volSc.entity().getRefCnt(), SearchCriteria.Op.EQ,0);
|
||||||
VolumeDataStoreVO volume = volSc.find();
|
VolumeDataStoreVO volume = volSc.find();
|
||||||
if (volume != null) {
|
if (volume != null) {
|
||||||
return volumeFactory.getVolume(volume.getVolumeId(), store);
|
return volumeFactory.getVolume(volume.getVolumeId(), store);
|
||||||
}
|
}
|
||||||
|
|
||||||
GenericQueryBuilder<SnapshotDataStoreVO, SnapshotDataStoreVO> snapshotSc = GenericQueryBuilder.create(SnapshotDataStoreVO.class);
|
QueryBuilder<SnapshotDataStoreVO> snapshotSc = QueryBuilder.create(SnapshotDataStoreVO.class);
|
||||||
snapshotSc.addAnd(snapshotSc.getEntity().getLastUpdated(), SearchCriteria.Op.LT, bef);
|
snapshotSc.and(snapshotSc.entity().getLastUpdated(), SearchCriteria.Op.LT, bef);
|
||||||
snapshotSc.addAnd(snapshotSc.getEntity().getState(), SearchCriteria.Op.EQ, ObjectInDataStoreStateMachine.State.Ready);
|
snapshotSc.and(snapshotSc.entity().getState(), SearchCriteria.Op.EQ,ObjectInDataStoreStateMachine.State.Ready);
|
||||||
snapshotSc.addAnd(snapshotSc.getEntity().getDataStoreId(), SearchCriteria.Op.EQ, store.getId());
|
snapshotSc.and(snapshotSc.entity().getDataStoreId(), SearchCriteria.Op.EQ,store.getId());
|
||||||
snapshotSc.addAnd(snapshotSc.getEntity().getRole(), SearchCriteria.Op.EQ, store.getRole());
|
snapshotSc.and(snapshotSc.entity().getRole(), SearchCriteria.Op.EQ,store.getRole());
|
||||||
snapshotSc.addAnd(snapshotSc.getEntity().getRefCnt(), SearchCriteria.Op.EQ, 0);
|
snapshotSc.and(snapshotSc.entity().getRefCnt(), SearchCriteria.Op.EQ,0);
|
||||||
SnapshotDataStoreVO snapshot = snapshotSc.find();
|
SnapshotDataStoreVO snapshot = snapshotSc.find();
|
||||||
if (snapshot != null) {
|
if (snapshot != null) {
|
||||||
return snapshotFactory.getSnapshot(snapshot.getSnapshotId(), store);
|
return snapshotFactory.getSnapshot(snapshot.getSnapshotId(), store);
|
||||||
|
|||||||
@ -22,14 +22,21 @@ import java.util.Date;
|
|||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
import org.apache.cloudstack.engine.subsystem.api.storage.*;
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
import org.apache.cloudstack.engine.subsystem.api.storage.DataObjectInStore;
|
||||||
|
import org.apache.cloudstack.engine.subsystem.api.storage.DataStore;
|
||||||
|
import org.apache.cloudstack.engine.subsystem.api.storage.ObjectInDataStoreStateMachine;
|
||||||
|
import org.apache.cloudstack.engine.subsystem.api.storage.SnapshotDataFactory;
|
||||||
|
import org.apache.cloudstack.engine.subsystem.api.storage.SnapshotInfo;
|
||||||
|
import org.apache.cloudstack.engine.subsystem.api.storage.VolumeDataFactory;
|
||||||
|
import org.apache.cloudstack.engine.subsystem.api.storage.VolumeInfo;
|
||||||
import org.apache.cloudstack.storage.command.CopyCmdAnswer;
|
import org.apache.cloudstack.storage.command.CopyCmdAnswer;
|
||||||
import org.apache.cloudstack.storage.command.CreateObjectAnswer;
|
import org.apache.cloudstack.storage.command.CreateObjectAnswer;
|
||||||
import org.apache.cloudstack.storage.datastore.ObjectInDataStoreManager;
|
import org.apache.cloudstack.storage.datastore.ObjectInDataStoreManager;
|
||||||
import org.apache.cloudstack.storage.datastore.db.SnapshotDataStoreDao;
|
import org.apache.cloudstack.storage.datastore.db.SnapshotDataStoreDao;
|
||||||
import org.apache.cloudstack.storage.datastore.db.SnapshotDataStoreVO;
|
import org.apache.cloudstack.storage.datastore.db.SnapshotDataStoreVO;
|
||||||
import org.apache.cloudstack.storage.to.SnapshotObjectTO;
|
import org.apache.cloudstack.storage.to.SnapshotObjectTO;
|
||||||
import org.apache.log4j.Logger;
|
|
||||||
|
|
||||||
import com.cloud.agent.api.Answer;
|
import com.cloud.agent.api.Answer;
|
||||||
import com.cloud.agent.api.to.DataObjectType;
|
import com.cloud.agent.api.to.DataObjectType;
|
||||||
@ -42,9 +49,8 @@ import com.cloud.storage.VolumeVO;
|
|||||||
import com.cloud.storage.dao.SnapshotDao;
|
import com.cloud.storage.dao.SnapshotDao;
|
||||||
import com.cloud.storage.dao.VolumeDao;
|
import com.cloud.storage.dao.VolumeDao;
|
||||||
import com.cloud.utils.component.ComponentContext;
|
import com.cloud.utils.component.ComponentContext;
|
||||||
|
import com.cloud.utils.db.QueryBuilder;
|
||||||
import com.cloud.utils.db.SearchCriteria.Op;
|
import com.cloud.utils.db.SearchCriteria.Op;
|
||||||
import com.cloud.utils.db.GenericQueryBuilder;
|
|
||||||
import com.cloud.utils.db.GenericQueryBuilder;
|
|
||||||
import com.cloud.utils.exception.CloudRuntimeException;
|
import com.cloud.utils.exception.CloudRuntimeException;
|
||||||
import com.cloud.utils.fsm.NoTransitionException;
|
import com.cloud.utils.fsm.NoTransitionException;
|
||||||
|
|
||||||
@ -83,19 +89,19 @@ public class SnapshotObject implements SnapshotInfo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public DataStore getStore() {
|
public DataStore getStore() {
|
||||||
return this.store;
|
return store;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SnapshotInfo getParent() {
|
public SnapshotInfo getParent() {
|
||||||
|
|
||||||
SnapshotDataStoreVO snapStoreVO = this.snapshotStoreDao.findByStoreSnapshot(this.store.getRole(),
|
SnapshotDataStoreVO snapStoreVO = snapshotStoreDao.findByStoreSnapshot(store.getRole(),
|
||||||
this.store.getId(), this.snapshot.getId());
|
store.getId(), snapshot.getId());
|
||||||
Long parentId = null;
|
Long parentId = null;
|
||||||
if (snapStoreVO != null) {
|
if (snapStoreVO != null) {
|
||||||
parentId = snapStoreVO.getParentSnapshotId();
|
parentId = snapStoreVO.getParentSnapshotId();
|
||||||
if (parentId != null && parentId != 0) {
|
if (parentId != null && parentId != 0) {
|
||||||
return this.snapshotFactory.getSnapshot(parentId, store);
|
return snapshotFactory.getSnapshot(parentId, store);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,42 +110,41 @@ public class SnapshotObject implements SnapshotInfo {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SnapshotInfo getChild() {
|
public SnapshotInfo getChild() {
|
||||||
GenericQueryBuilder<SnapshotDataStoreVO, SnapshotDataStoreVO> sc = GenericQueryBuilder
|
QueryBuilder<SnapshotDataStoreVO> sc = QueryBuilder.create(SnapshotDataStoreVO.class);
|
||||||
.create(SnapshotDataStoreVO.class);
|
sc.and(sc.entity().getDataStoreId(), Op.EQ,store.getId());
|
||||||
sc.addAnd(sc.getEntity().getDataStoreId(), Op.EQ, this.store.getId());
|
sc.and(sc.entity().getRole(), Op.EQ,store.getRole());
|
||||||
sc.addAnd(sc.getEntity().getRole(), Op.EQ, this.store.getRole());
|
sc.and(sc.entity().getState(), Op.NIN, State.Destroying, State.Destroyed, State.Error);
|
||||||
sc.addAnd(sc.getEntity().getState(), Op.NIN, State.Destroying, State.Destroyed, State.Error);
|
sc.and(sc.entity().getParentSnapshotId(), Op.EQ,getId());
|
||||||
sc.addAnd(sc.getEntity().getParentSnapshotId(), Op.EQ, this.getId());
|
|
||||||
SnapshotDataStoreVO vo = sc.find();
|
SnapshotDataStoreVO vo = sc.find();
|
||||||
if (vo == null) {
|
if (vo == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return this.snapshotFactory.getSnapshot(vo.getId(), store);
|
return snapshotFactory.getSnapshot(vo.getId(), store);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public VolumeInfo getBaseVolume() {
|
public VolumeInfo getBaseVolume() {
|
||||||
return volFactory.getVolume(this.snapshot.getVolumeId());
|
return volFactory.getVolume(snapshot.getVolumeId());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getId() {
|
public long getId() {
|
||||||
return this.snapshot.getId();
|
return snapshot.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getUri() {
|
public String getUri() {
|
||||||
return this.snapshot.getUuid();
|
return snapshot.getUuid();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DataStore getDataStore() {
|
public DataStore getDataStore() {
|
||||||
return this.store;
|
return store;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long getSize() {
|
public Long getSize() {
|
||||||
return this.snapshot.getSize();
|
return snapshot.getSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -149,7 +154,7 @@ public class SnapshotObject implements SnapshotInfo {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getUuid() {
|
public String getUuid() {
|
||||||
return this.snapshot.getUuid();
|
return snapshot.getUuid();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -168,17 +173,17 @@ public class SnapshotObject implements SnapshotInfo {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getAccountId() {
|
public long getAccountId() {
|
||||||
return this.snapshot.getAccountId();
|
return snapshot.getAccountId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getVolumeId() {
|
public long getVolumeId() {
|
||||||
return this.snapshot.getVolumeId();
|
return snapshot.getVolumeId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getPath() {
|
public String getPath() {
|
||||||
DataObjectInStore objectInStore = this.objectInStoreMgr.findObject(this, getDataStore());
|
DataObjectInStore objectInStore = objectInStoreMgr.findObject(this, getDataStore());
|
||||||
if (objectInStore != null) {
|
if (objectInStore != null) {
|
||||||
return objectInStore.getInstallPath();
|
return objectInStore.getInstallPath();
|
||||||
}
|
}
|
||||||
@ -187,60 +192,60 @@ public class SnapshotObject implements SnapshotInfo {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return this.snapshot.getName();
|
return snapshot.getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Date getCreated() {
|
public Date getCreated() {
|
||||||
return this.snapshot.getCreated();
|
return snapshot.getCreated();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Type getRecurringType() {
|
public Type getRecurringType() {
|
||||||
return this.snapshot.getRecurringType();
|
return snapshot.getRecurringType();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public State getState() {
|
public State getState() {
|
||||||
return this.snapshot.getState();
|
return snapshot.getState();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public HypervisorType getHypervisorType() {
|
public HypervisorType getHypervisorType() {
|
||||||
return this.snapshot.getHypervisorType();
|
return snapshot.getHypervisorType();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isRecursive() {
|
public boolean isRecursive() {
|
||||||
return this.snapshot.isRecursive();
|
return snapshot.isRecursive();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public short getsnapshotType() {
|
public short getsnapshotType() {
|
||||||
return this.snapshot.getsnapshotType();
|
return snapshot.getsnapshotType();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getDomainId() {
|
public long getDomainId() {
|
||||||
return this.snapshot.getDomainId();
|
return snapshot.getDomainId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long getDataCenterId() {
|
public Long getDataCenterId() {
|
||||||
return this.snapshot.getDataCenterId();
|
return snapshot.getDataCenterId();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void processEvent(Snapshot.Event event) throws NoTransitionException {
|
public void processEvent(Snapshot.Event event) throws NoTransitionException {
|
||||||
stateMachineMgr.processEvent(this.snapshot, event);
|
stateMachineMgr.processEvent(snapshot, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
public SnapshotVO getSnapshotVO() {
|
public SnapshotVO getSnapshotVO() {
|
||||||
return this.snapshot;
|
return snapshot;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DataTO getTO() {
|
public DataTO getTO() {
|
||||||
DataTO to = this.store.getDriver().getTO(this);
|
DataTO to = store.getDriver().getTO(this);
|
||||||
if (to == null) {
|
if (to == null) {
|
||||||
return new SnapshotObjectTO(this);
|
return new SnapshotObjectTO(this);
|
||||||
}
|
}
|
||||||
@ -250,28 +255,28 @@ public class SnapshotObject implements SnapshotInfo {
|
|||||||
@Override
|
@Override
|
||||||
public void processEvent(ObjectInDataStoreStateMachine.Event event, Answer answer) {
|
public void processEvent(ObjectInDataStoreStateMachine.Event event, Answer answer) {
|
||||||
try {
|
try {
|
||||||
SnapshotDataStoreVO snapshotStore = this.snapshotStoreDao.findByStoreSnapshot(
|
SnapshotDataStoreVO snapshotStore = snapshotStoreDao.findByStoreSnapshot(
|
||||||
this.getDataStore().getRole(), this.getDataStore().getId(), this.getId());
|
getDataStore().getRole(), getDataStore().getId(), getId());
|
||||||
if (answer instanceof CreateObjectAnswer) {
|
if (answer instanceof CreateObjectAnswer) {
|
||||||
SnapshotObjectTO snapshotTO = (SnapshotObjectTO) ((CreateObjectAnswer) answer).getData();
|
SnapshotObjectTO snapshotTO = (SnapshotObjectTO) ((CreateObjectAnswer) answer).getData();
|
||||||
snapshotStore.setInstallPath(snapshotTO.getPath());
|
snapshotStore.setInstallPath(snapshotTO.getPath());
|
||||||
this.snapshotStoreDao.update(snapshotStore.getId(), snapshotStore);
|
snapshotStoreDao.update(snapshotStore.getId(), snapshotStore);
|
||||||
} else if (answer instanceof CopyCmdAnswer) {
|
} else if (answer instanceof CopyCmdAnswer) {
|
||||||
SnapshotObjectTO snapshotTO = (SnapshotObjectTO) ((CopyCmdAnswer) answer).getNewData();
|
SnapshotObjectTO snapshotTO = (SnapshotObjectTO) ((CopyCmdAnswer) answer).getNewData();
|
||||||
snapshotStore.setInstallPath(snapshotTO.getPath());
|
snapshotStore.setInstallPath(snapshotTO.getPath());
|
||||||
if (snapshotTO.getParentSnapshotPath() == null) {
|
if (snapshotTO.getParentSnapshotPath() == null) {
|
||||||
snapshotStore.setParentSnapshotId(0L);
|
snapshotStore.setParentSnapshotId(0L);
|
||||||
}
|
}
|
||||||
this.snapshotStoreDao.update(snapshotStore.getId(), snapshotStore);
|
snapshotStoreDao.update(snapshotStore.getId(), snapshotStore);
|
||||||
|
|
||||||
// update side-effect of snapshot operation
|
// update side-effect of snapshot operation
|
||||||
if(snapshotTO.getVolume() != null && snapshotTO.getVolume().getPath() != null) {
|
if(snapshotTO.getVolume() != null && snapshotTO.getVolume().getPath() != null) {
|
||||||
VolumeVO vol = this.volumeDao.findByUuid(snapshotTO.getVolume().getUuid());
|
VolumeVO vol = volumeDao.findByUuid(snapshotTO.getVolume().getUuid());
|
||||||
if(vol != null) {
|
if(vol != null) {
|
||||||
s_logger.info("Update volume path change due to snapshot operation, volume " + vol.getId() + " path: "
|
s_logger.info("Update volume path change due to snapshot operation, volume " + vol.getId() + " path: "
|
||||||
+ vol.getPath() + "->" + snapshotTO.getVolume().getPath());
|
+ vol.getPath() + "->" + snapshotTO.getVolume().getPath());
|
||||||
vol.setPath(snapshotTO.getVolume().getPath());
|
vol.setPath(snapshotTO.getVolume().getPath());
|
||||||
this.volumeDao.update(vol.getId(), vol);
|
volumeDao.update(vol.getId(), vol);
|
||||||
} else {
|
} else {
|
||||||
s_logger.error("Cound't find the original volume with uuid: " + snapshotTO.getVolume().getUuid());
|
s_logger.error("Cound't find the original volume with uuid: " + snapshotTO.getVolume().getUuid());
|
||||||
}
|
}
|
||||||
@ -290,13 +295,13 @@ public class SnapshotObject implements SnapshotInfo {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void incRefCount() {
|
public void incRefCount() {
|
||||||
if (this.store == null) {
|
if (store == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.store.getRole() == DataStoreRole.Image || this.store.getRole() == DataStoreRole.ImageCache) {
|
if (store.getRole() == DataStoreRole.Image || store.getRole() == DataStoreRole.ImageCache) {
|
||||||
SnapshotDataStoreVO store = snapshotStoreDao.findByStoreSnapshot(this.store.getRole(), this.store.getId(),
|
SnapshotDataStoreVO store = snapshotStoreDao.findByStoreSnapshot(this.store.getRole(), this.store.getId(),
|
||||||
this.getId());
|
getId());
|
||||||
store.incrRefCnt();
|
store.incrRefCnt();
|
||||||
store.setLastUpdated(new Date());
|
store.setLastUpdated(new Date());
|
||||||
snapshotStoreDao.update(store.getId(), store);
|
snapshotStoreDao.update(store.getId(), store);
|
||||||
@ -305,12 +310,12 @@ public class SnapshotObject implements SnapshotInfo {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void decRefCount() {
|
public void decRefCount() {
|
||||||
if (this.store == null) {
|
if (store == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (this.store.getRole() == DataStoreRole.Image || this.store.getRole() == DataStoreRole.ImageCache) {
|
if (store.getRole() == DataStoreRole.Image || store.getRole() == DataStoreRole.ImageCache) {
|
||||||
SnapshotDataStoreVO store = snapshotStoreDao.findByStoreSnapshot(this.store.getRole(), this.store.getId(),
|
SnapshotDataStoreVO store = snapshotStoreDao.findByStoreSnapshot(this.store.getRole(), this.store.getId(),
|
||||||
this.getId());
|
getId());
|
||||||
store.decrRefCnt();
|
store.decrRefCnt();
|
||||||
store.setLastUpdated(new Date());
|
store.setLastUpdated(new Date());
|
||||||
snapshotStoreDao.update(store.getId(), store);
|
snapshotStoreDao.update(store.getId(), store);
|
||||||
@ -319,12 +324,12 @@ public class SnapshotObject implements SnapshotInfo {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Long getRefCount() {
|
public Long getRefCount() {
|
||||||
if (this.store == null) {
|
if (store == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (this.store.getRole() == DataStoreRole.Image || this.store.getRole() == DataStoreRole.ImageCache) {
|
if (store.getRole() == DataStoreRole.Image || store.getRole() == DataStoreRole.ImageCache) {
|
||||||
SnapshotDataStoreVO store = snapshotStoreDao.findByStoreSnapshot(this.store.getRole(), this.store.getId(),
|
SnapshotDataStoreVO store = snapshotStoreDao.findByStoreSnapshot(this.store.getRole(), this.store.getId(),
|
||||||
this.getId());
|
getId());
|
||||||
return store.getRefCnt();
|
return store.getRefCnt();
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
@ -332,7 +337,7 @@ public class SnapshotObject implements SnapshotInfo {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ObjectInDataStoreStateMachine.State getStatus() {
|
public ObjectInDataStoreStateMachine.State getStatus() {
|
||||||
return this.objectInStoreMgr.findObject(this, store).getObjectInStoreState();
|
return objectInStoreMgr.findObject(this, store).getObjectInStoreState();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -45,8 +45,8 @@ import com.cloud.host.dao.HostDao;
|
|||||||
import com.cloud.storage.DataStoreRole;
|
import com.cloud.storage.DataStoreRole;
|
||||||
import com.cloud.storage.ScopeType;
|
import com.cloud.storage.ScopeType;
|
||||||
import com.cloud.utils.db.DB;
|
import com.cloud.utils.db.DB;
|
||||||
|
import com.cloud.utils.db.QueryBuilder;
|
||||||
import com.cloud.utils.db.SearchCriteria.Op;
|
import com.cloud.utils.db.SearchCriteria.Op;
|
||||||
import com.cloud.utils.db.GenericQueryBuilder;
|
|
||||||
import com.cloud.utils.db.Transaction;
|
import com.cloud.utils.db.Transaction;
|
||||||
import com.cloud.utils.exception.CloudRuntimeException;
|
import com.cloud.utils.exception.CloudRuntimeException;
|
||||||
|
|
||||||
@ -220,12 +220,12 @@ public class DefaultEndPointSelector implements EndPointSelector {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private List<HostVO> listUpAndConnectingSecondaryStorageVmHost(Long dcId) {
|
private List<HostVO> listUpAndConnectingSecondaryStorageVmHost(Long dcId) {
|
||||||
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);
|
||||||
if (dcId != null) {
|
if (dcId != null) {
|
||||||
sc.addAnd(sc.getEntity().getDataCenterId(), Op.EQ, dcId);
|
sc.and(sc.entity().getDataCenterId(), Op.EQ,dcId);
|
||||||
}
|
}
|
||||||
sc.addAnd(sc.getEntity().getStatus(), Op.IN, com.cloud.host.Status.Up, com.cloud.host.Status.Connecting);
|
sc.and(sc.entity().getStatus(), Op.IN, Status.Up, Status.Connecting);
|
||||||
sc.addAnd(sc.getEntity().getType(), Op.EQ, Host.Type.SecondaryStorageVM);
|
sc.and(sc.entity().getType(), Op.EQ, Host.Type.SecondaryStorageVM);
|
||||||
return sc.list();
|
return sc.list();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -258,9 +258,9 @@ public class DefaultEndPointSelector implements EndPointSelector {
|
|||||||
endPoints.add(RemoteHostEndPoint.getHypervisorHostEndPoint(host.getId(), host.getPrivateIpAddress(),
|
endPoints.add(RemoteHostEndPoint.getHypervisorHostEndPoint(host.getId(), host.getPrivateIpAddress(),
|
||||||
host.getPublicIpAddress()));
|
host.getPublicIpAddress()));
|
||||||
} else if (store.getScope().getScopeType() == ScopeType.CLUSTER) {
|
} else if (store.getScope().getScopeType() == ScopeType.CLUSTER) {
|
||||||
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);
|
||||||
sc.addAnd(sc.getEntity().getClusterId(), Op.EQ, store.getScope().getScopeId());
|
sc.and(sc.entity().getClusterId(), Op.EQ, store.getScope().getScopeId());
|
||||||
sc.addAnd(sc.getEntity().getStatus(), Op.EQ, Status.Up);
|
sc.and(sc.entity().getStatus(), Op.EQ, Status.Up);
|
||||||
List<HostVO> hosts = sc.list();
|
List<HostVO> hosts = sc.list();
|
||||||
for (HostVO host : hosts) {
|
for (HostVO host : hosts) {
|
||||||
endPoints.add(RemoteHostEndPoint.getHypervisorHostEndPoint(host.getId(), host.getPrivateIpAddress(),
|
endPoints.add(RemoteHostEndPoint.getHypervisorHostEndPoint(host.getId(), host.getPrivateIpAddress(),
|
||||||
|
|||||||
@ -52,8 +52,8 @@ public class TemplatePrimaryDataStoreDaoImpl extends GenericDaoBase<TemplatePrim
|
|||||||
public TemplatePrimaryDataStoreVO findByTemplateIdAndPoolId(long templateId, long poolId) {
|
public TemplatePrimaryDataStoreVO findByTemplateIdAndPoolId(long templateId, long poolId) {
|
||||||
GenericQueryBuilder<TemplatePrimaryDataStoreVO, TemplatePrimaryDataStoreVO> sc = GenericQueryBuilder
|
GenericQueryBuilder<TemplatePrimaryDataStoreVO, TemplatePrimaryDataStoreVO> sc = GenericQueryBuilder
|
||||||
.create(TemplatePrimaryDataStoreVO.class);
|
.create(TemplatePrimaryDataStoreVO.class);
|
||||||
sc.addAnd(sc.getEntity().getTemplateId(), Op.EQ, templateId);
|
sc.and(sc.entity().getTemplateId(), Op.EQ, templateId);
|
||||||
sc.addAnd(sc.getEntity().getPoolId(), Op.EQ, poolId);
|
sc.and(sc.entity().getPoolId(), Op.EQ, poolId);
|
||||||
return sc.find();
|
return sc.find();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,9 +61,9 @@ public class TemplatePrimaryDataStoreDaoImpl extends GenericDaoBase<TemplatePrim
|
|||||||
public TemplatePrimaryDataStoreVO findByTemplateIdAndPoolIdAndReady(long templateId, long poolId) {
|
public TemplatePrimaryDataStoreVO findByTemplateIdAndPoolIdAndReady(long templateId, long poolId) {
|
||||||
GenericQueryBuilder<TemplatePrimaryDataStoreVO, TemplatePrimaryDataStoreVO> sc = GenericQueryBuilder
|
GenericQueryBuilder<TemplatePrimaryDataStoreVO, TemplatePrimaryDataStoreVO> sc = GenericQueryBuilder
|
||||||
.create(TemplatePrimaryDataStoreVO.class);
|
.create(TemplatePrimaryDataStoreVO.class);
|
||||||
sc.addAnd(sc.getEntity().getTemplateId(), Op.EQ, templateId);
|
sc.and(sc.entity().getTemplateId(), Op.EQ, templateId);
|
||||||
sc.addAnd(sc.getEntity().getPoolId(), Op.EQ, poolId);
|
sc.and(sc.entity().getPoolId(), Op.EQ, poolId);
|
||||||
sc.addAnd(sc.getEntity().getState(), Op.EQ, ObjectInDataStoreStateMachine.State.Ready);
|
sc.and(sc.entity().getState(), Op.EQ, ObjectInDataStoreStateMachine.State.Ready);
|
||||||
return sc.find();
|
return sc.find();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -66,23 +66,21 @@ public class GenericQueryBuilder<T, K> extends SearchBase<T, K> {
|
|||||||
_specifiedAttrs.clear();
|
_specifiedAttrs.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setParameters(String conditionName, Object... params) {
|
public void and(Object useless, Op op, Object... values) {
|
||||||
assert _conditions.contains(new Condition(conditionName)) : "Couldn't find " + conditionName;
|
|
||||||
_params.put(conditionName, params);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addAnd(Object useless, Op op, Object... values) {
|
|
||||||
String uuid = UUID.randomUUID().toString();
|
String uuid = UUID.randomUUID().toString();
|
||||||
constructCondition(uuid, " AND ", _specifiedAttrs.get(0), op);
|
Condition condition = constructCondition(uuid, " AND ", _specifiedAttrs.get(0), op);
|
||||||
setParameters(uuid, values);
|
condition.setPresets(values);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
public List<K> list() {
|
public List<K> list() {
|
||||||
finalize();
|
finalize();
|
||||||
SearchCriteria sc1 = create();
|
|
||||||
if (isSelectAll()) {
|
if (isSelectAll()) {
|
||||||
|
@SuppressWarnings("rawtypes")
|
||||||
|
SearchCriteria sc1 = create();
|
||||||
return (List<K>)_dao.search(sc1, null);
|
return (List<K>)_dao.search(sc1, null);
|
||||||
} else {
|
} else {
|
||||||
|
SearchCriteria<K> sc1 = create();
|
||||||
return _dao.customSearch(sc1, null);
|
return _dao.customSearch(sc1, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -91,60 +89,13 @@ public class GenericQueryBuilder<T, K> extends SearchBase<T, K> {
|
|||||||
return _selects == null || _selects.size() == 0;
|
return _selects == null || _selects.size() == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public T getEntity() {
|
@SuppressWarnings("unchecked")
|
||||||
return _entity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public K find() {
|
public K find() {
|
||||||
assert isSelectAll() : "find doesn't support select search";
|
|
||||||
finalize();
|
finalize();
|
||||||
|
@SuppressWarnings("rawtypes")
|
||||||
SearchCriteria sc1 = create();
|
SearchCriteria sc1 = create();
|
||||||
return (K)_dao.findOneBy(sc1);
|
return (K)_dao.findOneBy(sc1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Preset and(Object useless, Op op) {
|
|
||||||
Condition condition = constructCondition(UUID.randomUUID().toString(), " AND ", _specifiedAttrs.get(0), op);
|
|
||||||
return new Preset(this, condition);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Preset where(Object useless, Op op) {
|
|
||||||
return and(useless, op);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Preset left(Object useless, Op op) {
|
|
||||||
Condition condition = constructCondition(UUID.randomUUID().toString(), " ( ", _specifiedAttrs.get(0), op);
|
|
||||||
return new Preset(this, condition);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Preset op(Object useless, Op op) {
|
|
||||||
return left(useless, op);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Preset openParen(Object useless, Op op) {
|
|
||||||
return left(useless, op);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Preset or(Object useless, Op op) {
|
|
||||||
Condition condition = constructCondition(UUID.randomUUID().toString(), " OR ", _specifiedAttrs.get(0), op);
|
|
||||||
return new Preset(this, condition);
|
|
||||||
}
|
|
||||||
|
|
||||||
public class Preset {
|
|
||||||
GenericQueryBuilder<T, K> builder;
|
|
||||||
Condition condition;
|
|
||||||
|
|
||||||
protected Preset(GenericQueryBuilder<T, K> builder, Condition condition) {
|
|
||||||
this.builder = builder;
|
|
||||||
this.condition = condition;
|
|
||||||
}
|
|
||||||
|
|
||||||
public GenericQueryBuilder<T, K> values(Object... params) {
|
|
||||||
if (condition.op.getParams() > 0 && condition.op.params != params.length) {
|
|
||||||
throw new RuntimeException("The # of parameters set " + params.length + " does not match # of parameters required by " + condition.op);
|
|
||||||
}
|
|
||||||
condition.setPresets(params);
|
|
||||||
return builder;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -19,6 +19,7 @@ package com.cloud.utils.db;
|
|||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
import com.cloud.utils.db.SearchCriteria.Func;
|
import com.cloud.utils.db.SearchCriteria.Func;
|
||||||
import com.cloud.utils.db.SearchCriteria.Op;
|
import com.cloud.utils.db.SearchCriteria.Op;
|
||||||
@ -131,6 +132,11 @@ public class GenericSearchBuilder<T, K> extends SearchBase<T, K> {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Preset and(Object useless, Op op) {
|
||||||
|
Condition condition = constructCondition(UUID.randomUUID().toString(), " AND ", _specifiedAttrs.get(0), op);
|
||||||
|
return new Preset(this, condition);
|
||||||
|
}
|
||||||
|
|
||||||
public GenericSearchBuilder<T, K> and() {
|
public GenericSearchBuilder<T, K> and() {
|
||||||
constructCondition(null, " AND ", null, null);
|
constructCondition(null, " AND ", null, null);
|
||||||
return this;
|
return this;
|
||||||
@ -153,6 +159,10 @@ public class GenericSearchBuilder<T, K> extends SearchBase<T, K> {
|
|||||||
return and(name, useless, op);
|
return and(name, useless, op);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Preset where(Object useless, Op op) {
|
||||||
|
return and(useless, op);
|
||||||
|
}
|
||||||
|
|
||||||
public GenericSearchBuilder<T, K> left(String name, Object useless, Op op) {
|
public GenericSearchBuilder<T, K> left(String name, Object useless, Op op) {
|
||||||
constructCondition(name, " ( ", _specifiedAttrs.get(0), op);
|
constructCondition(name, " ( ", _specifiedAttrs.get(0), op);
|
||||||
return this;
|
return this;
|
||||||
@ -163,10 +173,19 @@ public class GenericSearchBuilder<T, K> extends SearchBase<T, K> {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Preset left(Object useless, Op op) {
|
||||||
|
Condition condition = constructCondition(UUID.randomUUID().toString(), " ( ", _specifiedAttrs.get(0), op);
|
||||||
|
return new Preset(this, condition);
|
||||||
|
}
|
||||||
|
|
||||||
public GenericSearchBuilder<T, K> op(Object useless, Op op, String name) {
|
public GenericSearchBuilder<T, K> op(Object useless, Op op, String name) {
|
||||||
return left(useless, op, name);
|
return left(useless, op, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Preset op(Object useless, Op op) {
|
||||||
|
return left(useless, op);
|
||||||
|
}
|
||||||
|
|
||||||
public GenericSearchBuilder<T, K> op(String name, Object useless, Op op) {
|
public GenericSearchBuilder<T, K> op(String name, Object useless, Op op) {
|
||||||
return left(name, useless, op);
|
return left(name, useless, op);
|
||||||
}
|
}
|
||||||
@ -179,6 +198,10 @@ public class GenericSearchBuilder<T, K> extends SearchBase<T, K> {
|
|||||||
return left(name, useless, op);
|
return left(name, useless, op);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Preset openParen(Object useless, Op op) {
|
||||||
|
return left(useless, op);
|
||||||
|
}
|
||||||
|
|
||||||
public GroupBy<GenericSearchBuilder<T, K>, T, K> groupBy(Object... useless) {
|
public GroupBy<GenericSearchBuilder<T, K>, T, K> groupBy(Object... useless) {
|
||||||
assert _groupBy == null : "Can't do more than one group bys";
|
assert _groupBy == null : "Can't do more than one group bys";
|
||||||
GroupBy<GenericSearchBuilder<T, K>, T, K> groupBy = new GroupBy<GenericSearchBuilder<T, K>, T, K>(this);
|
GroupBy<GenericSearchBuilder<T, K>, T, K> groupBy = new GroupBy<GenericSearchBuilder<T, K>, T, K>(this);
|
||||||
@ -205,6 +228,11 @@ public class GenericSearchBuilder<T, K> extends SearchBase<T, K> {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Preset or(Object useless, Op op) {
|
||||||
|
Condition condition = constructCondition(UUID.randomUUID().toString(), " OR ", _specifiedAttrs.get(0), op);
|
||||||
|
return new Preset(this, condition);
|
||||||
|
}
|
||||||
|
|
||||||
public GenericSearchBuilder<T, K> join(String name, GenericSearchBuilder<?, ?> builder, Object useless, Object useless2, JoinBuilder.JoinType joinType) {
|
public GenericSearchBuilder<T, K> join(String name, GenericSearchBuilder<?, ?> builder, Object useless, Object useless2, JoinBuilder.JoinType joinType) {
|
||||||
assert _entity != null : "SearchBuilder cannot be modified once it has been setup";
|
assert _entity != null : "SearchBuilder cannot be modified once it has been setup";
|
||||||
assert _specifiedAttrs.size() == 1 : "You didn't select the attribute.";
|
assert _specifiedAttrs.size() == 1 : "You didn't select the attribute.";
|
||||||
@ -251,4 +279,21 @@ public class GenericSearchBuilder<T, K> extends SearchBase<T, K> {
|
|||||||
super.finalize();
|
super.finalize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class Preset {
|
||||||
|
GenericSearchBuilder<T, K> builder;
|
||||||
|
Condition condition;
|
||||||
|
|
||||||
|
protected Preset(GenericSearchBuilder<T, K> builder, Condition condition) {
|
||||||
|
this.builder = builder;
|
||||||
|
this.condition = condition;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GenericSearchBuilder<T, K> values(Object... params) {
|
||||||
|
if (condition.op.getParams() > 0 && condition.op.params != params.length) {
|
||||||
|
throw new RuntimeException("The # of parameters set " + params.length + " does not match # of parameters required by " + condition.op);
|
||||||
|
}
|
||||||
|
condition.setPresets(params);
|
||||||
|
return builder;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -85,8 +85,8 @@ public class BareMetalPingServiceImpl extends BareMetalPxeServiceBase implements
|
|||||||
@Override
|
@Override
|
||||||
public boolean prepare(VirtualMachineProfile profile, NicProfile pxeNic, DeployDestination dest, ReservationContext context) {
|
public boolean prepare(VirtualMachineProfile profile, NicProfile pxeNic, DeployDestination dest, ReservationContext context) {
|
||||||
GenericQueryBuilder<BaremetalPxeVO, BaremetalPxeVO> sc = GenericQueryBuilder.create(BaremetalPxeVO.class);
|
GenericQueryBuilder<BaremetalPxeVO, BaremetalPxeVO> sc = GenericQueryBuilder.create(BaremetalPxeVO.class);
|
||||||
sc.addAnd(sc.getEntity().getDeviceType(), Op.EQ, BaremetalPxeType.PING.toString());
|
sc.and(sc.entity().getDeviceType(), Op.EQ, BaremetalPxeType.PING.toString());
|
||||||
sc.addAnd(sc.getEntity().getPodId(), Op.EQ, dest.getPod().getId());
|
sc.and(sc.entity().getPodId(), Op.EQ, dest.getPod().getId());
|
||||||
BaremetalPxeVO pxeVo = sc.find();
|
BaremetalPxeVO pxeVo = sc.find();
|
||||||
if (pxeVo == null) {
|
if (pxeVo == null) {
|
||||||
throw new CloudRuntimeException("No PING PXE server found in pod: " + dest.getPod().getId() + ", you need to add it before starting VM");
|
throw new CloudRuntimeException("No PING PXE server found in pod: " + dest.getPod().getId() + ", you need to add it before starting VM");
|
||||||
|
|||||||
@ -5,19 +5,28 @@
|
|||||||
// to you under the Apache License, Version 2.0 (the
|
// to you under the Apache License, Version 2.0 (the
|
||||||
// "License"); you may not use this file except in compliance
|
// "License"); you may not use this file except in compliance
|
||||||
// with the License. You may obtain a copy of the License at
|
// with the License. You may obtain a copy of the License at
|
||||||
//
|
//
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
//
|
//
|
||||||
// Unless required by applicable law or agreed to in writing,
|
// Unless required by applicable law or agreed to in writing,
|
||||||
// software distributed under the License is distributed on an
|
// software distributed under the License is distributed on an
|
||||||
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
// "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
|
// specific language governing permissions and limitations
|
||||||
// under the License.
|
// under the License.
|
||||||
//
|
//
|
||||||
// Automatically generated by addcopyright.py at 01/29/2013
|
// Automatically generated by addcopyright.py at 01/29/2013
|
||||||
package com.cloud.baremetal.networkservice;
|
package com.cloud.baremetal.networkservice;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import javax.ejb.Local;
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
import com.cloud.baremetal.database.BaremetalDhcpVO;
|
import com.cloud.baremetal.database.BaremetalDhcpVO;
|
||||||
import com.cloud.dc.DataCenter.NetworkType;
|
import com.cloud.dc.DataCenter.NetworkType;
|
||||||
import com.cloud.dc.Pod;
|
import com.cloud.dc.Pod;
|
||||||
@ -39,20 +48,15 @@ import com.cloud.network.element.NetworkElement;
|
|||||||
import com.cloud.offering.NetworkOffering;
|
import com.cloud.offering.NetworkOffering;
|
||||||
import com.cloud.utils.component.AdapterBase;
|
import com.cloud.utils.component.AdapterBase;
|
||||||
import com.cloud.utils.db.DB;
|
import com.cloud.utils.db.DB;
|
||||||
|
import com.cloud.utils.db.QueryBuilder;
|
||||||
import com.cloud.utils.db.SearchCriteria.Op;
|
import com.cloud.utils.db.SearchCriteria.Op;
|
||||||
import com.cloud.utils.db.GenericQueryBuilder;
|
|
||||||
import com.cloud.utils.db.GenericQueryBuilder;
|
|
||||||
import com.cloud.utils.db.Transaction;
|
import com.cloud.utils.db.Transaction;
|
||||||
import com.cloud.vm.*;
|
import com.cloud.vm.NicProfile;
|
||||||
|
import com.cloud.vm.NicVO;
|
||||||
|
import com.cloud.vm.ReservationContext;
|
||||||
import com.cloud.vm.VirtualMachine.Type;
|
import com.cloud.vm.VirtualMachine.Type;
|
||||||
|
import com.cloud.vm.VirtualMachineProfile;
|
||||||
import com.cloud.vm.dao.NicDao;
|
import com.cloud.vm.dao.NicDao;
|
||||||
import org.apache.log4j.Logger;
|
|
||||||
|
|
||||||
import javax.ejb.Local;
|
|
||||||
import javax.inject.Inject;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
@Local(value = NetworkElement.class)
|
@Local(value = NetworkElement.class)
|
||||||
public class BaremetalDhcpElement extends AdapterBase implements DhcpServiceProvider {
|
public class BaremetalDhcpElement extends AdapterBase implements DhcpServiceProvider {
|
||||||
@ -84,8 +88,8 @@ public class BaremetalDhcpElement extends AdapterBase implements DhcpServiceProv
|
|||||||
private boolean canHandle(DeployDestination dest, TrafficType trafficType, GuestType networkType) {
|
private boolean canHandle(DeployDestination dest, TrafficType trafficType, GuestType networkType) {
|
||||||
Pod pod = dest.getPod();
|
Pod pod = dest.getPod();
|
||||||
if (pod != null && dest.getDataCenter().getNetworkType() == NetworkType.Basic && trafficType == TrafficType.Guest) {
|
if (pod != null && dest.getDataCenter().getNetworkType() == NetworkType.Basic && trafficType == TrafficType.Guest) {
|
||||||
GenericQueryBuilder<BaremetalDhcpVO, BaremetalDhcpVO> sc = GenericQueryBuilder.create(BaremetalDhcpVO.class);
|
QueryBuilder<BaremetalDhcpVO> sc = QueryBuilder.create(BaremetalDhcpVO.class);
|
||||||
sc.addAnd(sc.getEntity().getPodId(), Op.EQ, pod.getId());
|
sc.and(sc.entity().getPodId(), Op.EQ,pod.getId());
|
||||||
return sc.find() != null;
|
return sc.find() != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -159,6 +163,7 @@ public class BaremetalDhcpElement extends AdapterBase implements DhcpServiceProv
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public boolean addDhcpEntry(Network network, NicProfile nic, VirtualMachineProfile vm, DeployDestination dest,
|
public boolean addDhcpEntry(Network network, NicProfile nic, VirtualMachineProfile vm, DeployDestination dest,
|
||||||
ReservationContext context) throws ConcurrentOperationException, InsufficientCapacityException, ResourceUnavailableException {
|
ReservationContext context) throws ConcurrentOperationException, InsufficientCapacityException, ResourceUnavailableException {
|
||||||
if (vm.getHypervisorType() != HypervisorType.BareMetal || !canHandle(dest, network.getTrafficType(), network.getGuestType())) {
|
if (vm.getHypervisorType() != HypervisorType.BareMetal || !canHandle(dest, network.getTrafficType(), network.getGuestType())) {
|
||||||
|
|||||||
@ -313,7 +313,7 @@ public class BaremetalDhcpManagerImpl extends ManagerBase implements BaremetalDh
|
|||||||
|
|
||||||
GenericQueryBuilder<BaremetalDhcpVO, BaremetalDhcpVO> sc = GenericQueryBuilder.create(BaremetalDhcpVO.class);
|
GenericQueryBuilder<BaremetalDhcpVO, BaremetalDhcpVO> sc = GenericQueryBuilder.create(BaremetalDhcpVO.class);
|
||||||
if (cmd.getDeviceType() != null) {
|
if (cmd.getDeviceType() != null) {
|
||||||
sc.addAnd(sc.getEntity().getDeviceType(), Op.EQ, cmd.getDeviceType());
|
sc.and(sc.entity().getDeviceType(), Op.EQ, cmd.getDeviceType());
|
||||||
}
|
}
|
||||||
|
|
||||||
List<BaremetalDhcpVO> vos = sc.list();
|
List<BaremetalDhcpVO> vos = sc.list();
|
||||||
|
|||||||
@ -88,8 +88,8 @@ public class BaremetalKickStartServiceImpl extends BareMetalPxeServiceBase imple
|
|||||||
public boolean prepare(VirtualMachineProfile profile, NicProfile nic, DeployDestination dest, ReservationContext context) {
|
public boolean prepare(VirtualMachineProfile profile, NicProfile nic, DeployDestination dest, ReservationContext context) {
|
||||||
NetworkVO nwVO = _nwDao.findById(nic.getNetworkId());
|
NetworkVO nwVO = _nwDao.findById(nic.getNetworkId());
|
||||||
GenericQueryBuilder<BaremetalPxeVO, BaremetalPxeVO> sc = GenericQueryBuilder.create(BaremetalPxeVO.class);
|
GenericQueryBuilder<BaremetalPxeVO, BaremetalPxeVO> sc = GenericQueryBuilder.create(BaremetalPxeVO.class);
|
||||||
sc.addAnd(sc.getEntity().getDeviceType(), Op.EQ, BaremetalPxeType.KICK_START.toString());
|
sc.and(sc.entity().getDeviceType(), Op.EQ, BaremetalPxeType.KICK_START.toString());
|
||||||
sc.addAnd(sc.getEntity().getPhysicalNetworkId(), Op.EQ, nwVO.getPhysicalNetworkId());
|
sc.and(sc.entity().getPhysicalNetworkId(), Op.EQ, nwVO.getPhysicalNetworkId());
|
||||||
BaremetalPxeVO pxeVo = sc.find();
|
BaremetalPxeVO pxeVo = sc.find();
|
||||||
if (pxeVo == null) {
|
if (pxeVo == null) {
|
||||||
throw new CloudRuntimeException("No kickstart PXE server found in pod: " + dest.getPod().getId() + ", you need to add it before starting VM");
|
throw new CloudRuntimeException("No kickstart PXE server found in pod: " + dest.getPod().getId() + ", you need to add it before starting VM");
|
||||||
|
|||||||
@ -92,7 +92,7 @@ public class BaremetalPxeElement extends AdapterBase implements NetworkElement {
|
|||||||
Pod pod = dest.getPod();
|
Pod pod = dest.getPod();
|
||||||
if (pod != null && dest.getDataCenter().getNetworkType() == NetworkType.Basic && trafficType == TrafficType.Guest) {
|
if (pod != null && dest.getDataCenter().getNetworkType() == NetworkType.Basic && trafficType == TrafficType.Guest) {
|
||||||
GenericQueryBuilder<BaremetalPxeVO, BaremetalPxeVO> sc = GenericQueryBuilder.create(BaremetalPxeVO.class);
|
GenericQueryBuilder<BaremetalPxeVO, BaremetalPxeVO> sc = GenericQueryBuilder.create(BaremetalPxeVO.class);
|
||||||
sc.addAnd(sc.getEntity().getPodId(), Op.EQ, pod.getId());
|
sc.and(sc.entity().getPodId(), Op.EQ, pod.getId());
|
||||||
return sc.find() != null;
|
return sc.find() != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -223,7 +223,7 @@ public class BaremetalPxeManagerImpl extends ManagerBase implements BaremetalPxe
|
|||||||
GenericQueryBuilder<BaremetalPxeVO, BaremetalPxeVO> sc = GenericQueryBuilder.create(BaremetalPxeVO.class);
|
GenericQueryBuilder<BaremetalPxeVO, BaremetalPxeVO> sc = GenericQueryBuilder.create(BaremetalPxeVO.class);
|
||||||
//TODO: handle both kickstart and PING
|
//TODO: handle both kickstart and PING
|
||||||
//sc.addAnd(sc.getEntity().getPodId(), Op.EQ, vm.getPodIdToDeployIn());
|
//sc.addAnd(sc.getEntity().getPodId(), Op.EQ, vm.getPodIdToDeployIn());
|
||||||
sc.addAnd(sc.getEntity().getPhysicalNetworkId(), Op.EQ, phy.getId());
|
sc.and(sc.entity().getPhysicalNetworkId(), Op.EQ, phy.getId());
|
||||||
BaremetalPxeVO pxeVo = sc.find();
|
BaremetalPxeVO pxeVo = sc.find();
|
||||||
if (pxeVo == null) {
|
if (pxeVo == null) {
|
||||||
throw new CloudRuntimeException("No PXE server found in pod: " + vm.getPodIdToDeployIn() + ", you need to add it before starting VM");
|
throw new CloudRuntimeException("No PXE server found in pod: " + vm.getPodIdToDeployIn() + ", you need to add it before starting VM");
|
||||||
|
|||||||
@ -31,9 +31,9 @@ import javax.naming.ConfigurationException;
|
|||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.apache.xmlrpc.XmlRpcException;
|
import org.apache.xmlrpc.XmlRpcException;
|
||||||
|
|
||||||
import com.cloud.configuration.Config;
|
|
||||||
import com.cloud.agent.api.StartupCommand;
|
import com.cloud.agent.api.StartupCommand;
|
||||||
import com.cloud.agent.api.StartupRoutingCommand;
|
import com.cloud.agent.api.StartupRoutingCommand;
|
||||||
|
import com.cloud.configuration.Config;
|
||||||
import com.cloud.dc.ClusterVO;
|
import com.cloud.dc.ClusterVO;
|
||||||
import com.cloud.dc.dao.ClusterDao;
|
import com.cloud.dc.dao.ClusterDao;
|
||||||
import com.cloud.exception.DiscoveryException;
|
import com.cloud.exception.DiscoveryException;
|
||||||
@ -48,244 +48,214 @@ import com.cloud.resource.ResourceManager;
|
|||||||
import com.cloud.resource.ResourceStateAdapter;
|
import com.cloud.resource.ResourceStateAdapter;
|
||||||
import com.cloud.resource.ServerResource;
|
import com.cloud.resource.ServerResource;
|
||||||
import com.cloud.resource.UnableDeleteHostException;
|
import com.cloud.resource.UnableDeleteHostException;
|
||||||
|
import com.cloud.utils.db.QueryBuilder;
|
||||||
import com.cloud.utils.db.SearchCriteria;
|
import com.cloud.utils.db.SearchCriteria;
|
||||||
import com.cloud.utils.db.GenericQueryBuilder;
|
|
||||||
import com.cloud.utils.exception.CloudRuntimeException;
|
import com.cloud.utils.exception.CloudRuntimeException;
|
||||||
import com.cloud.utils.ssh.SSHCmdHelper;
|
import com.cloud.utils.ssh.SSHCmdHelper;
|
||||||
|
|
||||||
@Local(value = Discoverer.class)
|
@Local(value = Discoverer.class)
|
||||||
public class OvmDiscoverer extends DiscovererBase implements Discoverer,
|
public class OvmDiscoverer extends DiscovererBase implements Discoverer, ResourceStateAdapter {
|
||||||
ResourceStateAdapter {
|
private static final Logger s_logger = Logger.getLogger(OvmDiscoverer.class);
|
||||||
private static final Logger s_logger = Logger
|
protected String _publicNetworkDevice;
|
||||||
.getLogger(OvmDiscoverer.class);
|
protected String _privateNetworkDevice;
|
||||||
protected String _publicNetworkDevice;
|
protected String _guestNetworkDevice;
|
||||||
protected String _privateNetworkDevice;
|
|
||||||
protected String _guestNetworkDevice;
|
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
ClusterDao _clusterDao;
|
ClusterDao _clusterDao;
|
||||||
@Inject
|
@Inject
|
||||||
ResourceManager _resourceMgr;
|
ResourceManager _resourceMgr;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean configure(String name, Map<String, Object> params)
|
public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
|
||||||
throws ConfigurationException {
|
super.configure(name, params);
|
||||||
super.configure(name, params);
|
_publicNetworkDevice = _params.get(Config.OvmPublicNetwork.key());
|
||||||
_publicNetworkDevice = _params.get(Config.OvmPublicNetwork.key());
|
_privateNetworkDevice = _params.get(Config.OvmPrivateNetwork.key());
|
||||||
_privateNetworkDevice = _params.get(Config.OvmPrivateNetwork.key());
|
_guestNetworkDevice = _params.get(Config.OvmGuestNetwork.key());
|
||||||
_guestNetworkDevice = _params.get(Config.OvmGuestNetwork.key());
|
_resourceMgr.registerResourceStateAdapter(this.getClass().getSimpleName(), this);
|
||||||
_resourceMgr.registerResourceStateAdapter(this.getClass()
|
return true;
|
||||||
.getSimpleName(), this);
|
}
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected OvmDiscoverer() {
|
protected OvmDiscoverer() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean stop() {
|
public boolean stop() {
|
||||||
_resourceMgr.unregisterResourceStateAdapter(this.getClass()
|
_resourceMgr.unregisterResourceStateAdapter(this.getClass().getSimpleName());
|
||||||
.getSimpleName());
|
return super.stop();
|
||||||
return super.stop();
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private boolean checkIfExisted(String guid) {
|
private boolean checkIfExisted(String guid) {
|
||||||
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);
|
||||||
sc.addAnd(sc.getEntity().getGuid(), SearchCriteria.Op.EQ, guid);
|
sc.and(sc.entity().getGuid(), SearchCriteria.Op.EQ, guid);
|
||||||
sc.addAnd(sc.getEntity().getHypervisorType(), SearchCriteria.Op.EQ,
|
sc.and(sc.entity().getHypervisorType(), SearchCriteria.Op.EQ, HypervisorType.Ovm);
|
||||||
HypervisorType.Ovm);
|
List<HostVO> hosts = sc.list();
|
||||||
List<HostVO> hosts = sc.list();
|
return !hosts.isEmpty();
|
||||||
return !hosts.isEmpty();
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Map<? extends ServerResource, Map<String, String>> find(long dcId,
|
public Map<? extends ServerResource, Map<String, String>> find(long dcId, Long podId, Long clusterId, URI url, String username, String password, List<String> hostTags)
|
||||||
Long podId, Long clusterId, URI url, String username,
|
throws DiscoveryException {
|
||||||
String password, List<String> hostTags) throws DiscoveryException {
|
Connection conn = null;
|
||||||
Connection conn = null;
|
|
||||||
|
|
||||||
if (!url.getScheme().equals("http")) {
|
if (!url.getScheme().equals("http")) {
|
||||||
String msg = "urlString is not http so we're not taking care of the discovery for this: "
|
String msg = "urlString is not http so we're not taking care of the discovery for this: " + url;
|
||||||
+ url;
|
s_logger.debug(msg);
|
||||||
s_logger.debug(msg);
|
return null;
|
||||||
return null;
|
}
|
||||||
}
|
if (clusterId == null) {
|
||||||
if (clusterId == null) {
|
String msg = "must specify cluster Id when add host";
|
||||||
String msg = "must specify cluster Id when add host";
|
s_logger.debug(msg);
|
||||||
s_logger.debug(msg);
|
throw new CloudRuntimeException(msg);
|
||||||
throw new CloudRuntimeException(msg);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (podId == null) {
|
if (podId == null) {
|
||||||
String msg = "must specify pod Id when add host";
|
String msg = "must specify pod Id when add host";
|
||||||
s_logger.debug(msg);
|
s_logger.debug(msg);
|
||||||
throw new CloudRuntimeException(msg);
|
throw new CloudRuntimeException(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
ClusterVO cluster = _clusterDao.findById(clusterId);
|
ClusterVO cluster = _clusterDao.findById(clusterId);
|
||||||
if (cluster == null
|
if (cluster == null || (cluster.getHypervisorType() != HypervisorType.Ovm)) {
|
||||||
|| (cluster.getHypervisorType() != HypervisorType.Ovm)) {
|
if (s_logger.isInfoEnabled())
|
||||||
if (s_logger.isInfoEnabled())
|
s_logger.info("invalid cluster id or cluster is not for Ovm hypervisors");
|
||||||
s_logger.info("invalid cluster id or cluster is not for Ovm hypervisors");
|
return null;
|
||||||
return null;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
String agentUsername = _params.get("agentusername");
|
String agentUsername = _params.get("agentusername");
|
||||||
if (agentUsername == null) {
|
if (agentUsername == null) {
|
||||||
throw new CloudRuntimeException("Agent user name must be specified");
|
throw new CloudRuntimeException("Agent user name must be specified");
|
||||||
}
|
}
|
||||||
|
|
||||||
String agentPassword = _params.get("agentpassword");
|
String agentPassword = _params.get("agentpassword");
|
||||||
if (agentPassword == null) {
|
if (agentPassword == null) {
|
||||||
throw new CloudRuntimeException("Agent password must be specified");
|
throw new CloudRuntimeException("Agent password must be specified");
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
String hostname = url.getHost();
|
String hostname = url.getHost();
|
||||||
InetAddress ia = InetAddress.getByName(hostname);
|
InetAddress ia = InetAddress.getByName(hostname);
|
||||||
String hostIp = ia.getHostAddress();
|
String hostIp = ia.getHostAddress();
|
||||||
String guid = UUID.nameUUIDFromBytes(hostIp.getBytes()).toString();
|
String guid = UUID.nameUUIDFromBytes(hostIp.getBytes()).toString();
|
||||||
|
|
||||||
if (checkIfExisted(guid)) {
|
if (checkIfExisted(guid)) {
|
||||||
throw new CloudRuntimeException("The host " + hostIp
|
throw new CloudRuntimeException("The host " + hostIp + " has been added before");
|
||||||
+ " has been added before");
|
}
|
||||||
}
|
|
||||||
|
|
||||||
s_logger.debug("Ovm discover is going to disover host having guid "
|
s_logger.debug("Ovm discover is going to disover host having guid " + guid);
|
||||||
+ guid);
|
|
||||||
|
|
||||||
ClusterVO clu = _clusterDao.findById(clusterId);
|
ClusterVO clu = _clusterDao.findById(clusterId);
|
||||||
if (clu.getGuid() == null) {
|
if (clu.getGuid() == null) {
|
||||||
clu.setGuid(UUID.randomUUID().toString());
|
clu.setGuid(UUID.randomUUID().toString());
|
||||||
_clusterDao.update(clusterId, clu);
|
_clusterDao.update(clusterId, clu);
|
||||||
}
|
}
|
||||||
|
|
||||||
com.trilead.ssh2.Connection sshConnection = new com.trilead.ssh2.Connection(
|
com.trilead.ssh2.Connection sshConnection = new com.trilead.ssh2.Connection(hostIp, 22);
|
||||||
hostIp, 22);
|
sshConnection.connect(null, 60000, 60000);
|
||||||
sshConnection.connect(null, 60000, 60000);
|
sshConnection = SSHCmdHelper.acquireAuthorizedConnection(hostIp, username, password);
|
||||||
sshConnection = SSHCmdHelper.acquireAuthorizedConnection(hostIp,
|
if (sshConnection == null) {
|
||||||
username, password);
|
throw new DiscoveryException(String.format("Cannot connect to ovm host(IP=%1$s, username=%2$s, password=%3$s, discover failed", hostIp, username, password));
|
||||||
if (sshConnection == null) {
|
}
|
||||||
throw new DiscoveryException(
|
|
||||||
String.format(
|
|
||||||
"Cannot connect to ovm host(IP=%1$s, username=%2$s, password=%3$s, discover failed",
|
|
||||||
hostIp, username, password));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!SSHCmdHelper.sshExecuteCmd(sshConnection,
|
if (!SSHCmdHelper.sshExecuteCmd(sshConnection, "[ -f '/etc/ovs-agent/agent.ini' ]")) {
|
||||||
"[ -f '/etc/ovs-agent/agent.ini' ]")) {
|
throw new DiscoveryException("Can not find /etc/ovs-agent/agent.ini " + hostIp);
|
||||||
throw new DiscoveryException(
|
}
|
||||||
"Can not find /etc/ovs-agent/agent.ini " + hostIp);
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, String> details = new HashMap<String, String>();
|
Map<String, String> details = new HashMap<String, String>();
|
||||||
OvmResourceBase ovmResource = new OvmResourceBase();
|
OvmResourceBase ovmResource = new OvmResourceBase();
|
||||||
details.put("ip", hostIp);
|
details.put("ip", hostIp);
|
||||||
details.put("username", username);
|
details.put("username", username);
|
||||||
details.put("password", password);
|
details.put("password", password);
|
||||||
details.put("zone", Long.toString(dcId));
|
details.put("zone", Long.toString(dcId));
|
||||||
details.put("guid", guid);
|
details.put("guid", guid);
|
||||||
details.put("pod", Long.toString(podId));
|
details.put("pod", Long.toString(podId));
|
||||||
details.put("cluster", Long.toString(clusterId));
|
details.put("cluster", Long.toString(clusterId));
|
||||||
details.put("agentusername", agentUsername);
|
details.put("agentusername", agentUsername);
|
||||||
details.put("agentpassword", agentPassword);
|
details.put("agentpassword", agentPassword);
|
||||||
if (_publicNetworkDevice != null) {
|
if (_publicNetworkDevice != null) {
|
||||||
details.put("public.network.device", _publicNetworkDevice);
|
details.put("public.network.device", _publicNetworkDevice);
|
||||||
}
|
}
|
||||||
if (_privateNetworkDevice != null) {
|
if (_privateNetworkDevice != null) {
|
||||||
details.put("private.network.device", _privateNetworkDevice);
|
details.put("private.network.device", _privateNetworkDevice);
|
||||||
}
|
}
|
||||||
if (_guestNetworkDevice != null) {
|
if (_guestNetworkDevice != null) {
|
||||||
details.put("guest.network.device", _guestNetworkDevice);
|
details.put("guest.network.device", _guestNetworkDevice);
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, Object> params = new HashMap<String, Object>();
|
Map<String, Object> params = new HashMap<String, Object>();
|
||||||
params.putAll(details);
|
params.putAll(details);
|
||||||
ovmResource.configure("Ovm Server", params);
|
ovmResource.configure("Ovm Server", params);
|
||||||
ovmResource.start();
|
ovmResource.start();
|
||||||
|
|
||||||
conn = new Connection(hostIp, "oracle", agentPassword);
|
conn = new Connection(hostIp, "oracle", agentPassword);
|
||||||
/* After resource start, we are able to execute our agent api */
|
/* After resource start, we are able to execute our agent api */
|
||||||
OvmHost.Details d = OvmHost.getDetails(conn);
|
OvmHost.Details d = OvmHost.getDetails(conn);
|
||||||
details.put("agentVersion", d.agentVersion);
|
details.put("agentVersion", d.agentVersion);
|
||||||
details.put(HostInfo.HOST_OS_KERNEL_VERSION, d.dom0KernelVersion);
|
details.put(HostInfo.HOST_OS_KERNEL_VERSION, d.dom0KernelVersion);
|
||||||
details.put(HostInfo.HYPERVISOR_VERSION, d.hypervisorVersion);
|
details.put(HostInfo.HYPERVISOR_VERSION, d.hypervisorVersion);
|
||||||
|
|
||||||
Map<OvmResourceBase, Map<String, String>> resources = new HashMap<OvmResourceBase, Map<String, String>>();
|
Map<OvmResourceBase, Map<String, String>> resources = new HashMap<OvmResourceBase, Map<String, String>>();
|
||||||
resources.put(ovmResource, details);
|
resources.put(ovmResource, details);
|
||||||
return resources;
|
return resources;
|
||||||
} catch (XmlRpcException e) {
|
} catch (XmlRpcException e) {
|
||||||
s_logger.debug("XmlRpc exception, Unable to discover OVM: " + url,
|
s_logger.debug("XmlRpc exception, Unable to discover OVM: " + url, e);
|
||||||
e);
|
return null;
|
||||||
return null;
|
} catch (UnknownHostException e) {
|
||||||
} catch (UnknownHostException e) {
|
s_logger.debug("Host name resolve failed exception, Unable to discover OVM: " + url, e);
|
||||||
s_logger.debug(
|
return null;
|
||||||
"Host name resolve failed exception, Unable to discover OVM: "
|
} catch (ConfigurationException e) {
|
||||||
+ url, e);
|
s_logger.debug("Configure resource failed, Unable to discover OVM: " + url, e);
|
||||||
return null;
|
return null;
|
||||||
} catch (ConfigurationException e) {
|
} catch (Exception e) {
|
||||||
s_logger.debug(
|
s_logger.debug("Unable to discover OVM: " + url, e);
|
||||||
"Configure resource failed, Unable to discover OVM: " + url,
|
return null;
|
||||||
e);
|
}
|
||||||
return null;
|
}
|
||||||
} catch (Exception e) {
|
|
||||||
s_logger.debug("Unable to discover OVM: " + url, e);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void postDiscovery(List<HostVO> hosts, long msId)
|
public void postDiscovery(List<HostVO> hosts, long msId) throws DiscoveryException {
|
||||||
throws DiscoveryException {
|
// TODO Auto-generated method stub
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean matchHypervisor(String hypervisor) {
|
public boolean matchHypervisor(String hypervisor) {
|
||||||
return HypervisorType.Ovm.toString().equalsIgnoreCase(hypervisor);
|
return HypervisorType.Ovm.toString().equalsIgnoreCase(hypervisor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public HypervisorType getHypervisorType() {
|
public HypervisorType getHypervisorType() {
|
||||||
return HypervisorType.Ovm;
|
return HypervisorType.Ovm;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public HostVO createHostVOForConnectedAgent(HostVO host,
|
public HostVO createHostVOForConnectedAgent(HostVO host, StartupCommand[] cmd) {
|
||||||
StartupCommand[] cmd) {
|
// TODO Auto-generated method stub
|
||||||
// TODO Auto-generated method stub
|
return null;
|
||||||
return null;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public HostVO createHostVOForDirectConnectAgent(HostVO host,
|
public HostVO createHostVOForDirectConnectAgent(HostVO host, StartupCommand[] startup, ServerResource resource, Map<String, String> details, List<String> hostTags) {
|
||||||
StartupCommand[] startup, ServerResource resource,
|
StartupCommand firstCmd = startup[0];
|
||||||
Map<String, String> details, List<String> hostTags) {
|
if (!(firstCmd instanceof StartupRoutingCommand)) {
|
||||||
StartupCommand firstCmd = startup[0];
|
return null;
|
||||||
if (!(firstCmd instanceof StartupRoutingCommand)) {
|
}
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
StartupRoutingCommand ssCmd = ((StartupRoutingCommand) firstCmd);
|
StartupRoutingCommand ssCmd = ((StartupRoutingCommand)firstCmd);
|
||||||
if (ssCmd.getHypervisorType() != HypervisorType.Ovm) {
|
if (ssCmd.getHypervisorType() != HypervisorType.Ovm) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return _resourceMgr.fillRoutingHostVO(host, ssCmd, HypervisorType.Ovm,
|
return _resourceMgr.fillRoutingHostVO(host, ssCmd, HypervisorType.Ovm, details, hostTags);
|
||||||
details, hostTags);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DeleteHostAnswer deleteHost(HostVO host, boolean isForced,
|
public DeleteHostAnswer deleteHost(HostVO host, boolean isForced, boolean isForceDeleteStorage) throws UnableDeleteHostException {
|
||||||
boolean isForceDeleteStorage) throws UnableDeleteHostException {
|
if (host.getType() != com.cloud.host.Host.Type.Routing || host.getHypervisorType() != HypervisorType.Ovm) {
|
||||||
if (host.getType() != com.cloud.host.Host.Type.Routing
|
return null;
|
||||||
|| host.getHypervisorType() != HypervisorType.Ovm) {
|
}
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
_resourceMgr.deleteRoutingHost(host, isForced, isForceDeleteStorage);
|
_resourceMgr.deleteRoutingHost(host, isForced, isForceDeleteStorage);
|
||||||
return new DeleteHostAnswer(true);
|
return new DeleteHostAnswer(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -133,7 +133,7 @@ public class UcsManagerImpl implements UcsManager {
|
|||||||
|
|
||||||
private void syncBlades(UcsManagerVO mgr) {
|
private void syncBlades(UcsManagerVO mgr) {
|
||||||
GenericQueryBuilder<UcsBladeVO, UcsBladeVO> q = GenericQueryBuilder.create(UcsBladeVO.class);
|
GenericQueryBuilder<UcsBladeVO, UcsBladeVO> q = GenericQueryBuilder.create(UcsBladeVO.class);
|
||||||
q.addAnd(q.getEntity().getUcsManagerId(), Op.EQ, mgr.getId());
|
q.and(q.entity().getUcsManagerId(), Op.EQ, mgr.getId());
|
||||||
List<UcsBladeVO> pblades = q.list();
|
List<UcsBladeVO> pblades = q.list();
|
||||||
if (pblades.isEmpty()) {
|
if (pblades.isEmpty()) {
|
||||||
return;
|
return;
|
||||||
@ -211,7 +211,7 @@ public class UcsManagerImpl implements UcsManager {
|
|||||||
@DB
|
@DB
|
||||||
public UcsManagerResponse addUcsManager(AddUcsManagerCmd cmd) {
|
public UcsManagerResponse addUcsManager(AddUcsManagerCmd cmd) {
|
||||||
GenericQueryBuilder<UcsManagerVO, UcsManagerVO> q = GenericQueryBuilder.create(UcsManagerVO.class);
|
GenericQueryBuilder<UcsManagerVO, UcsManagerVO> q = GenericQueryBuilder.create(UcsManagerVO.class);
|
||||||
q.addAnd(q.getEntity().getUrl(), Op.EQ, cmd.getUrl());
|
q.and(q.entity().getUrl(), Op.EQ, cmd.getUrl());
|
||||||
UcsManagerVO mgrvo = q.find();
|
UcsManagerVO mgrvo = q.find();
|
||||||
if (mgrvo != null) {
|
if (mgrvo != null) {
|
||||||
throw new IllegalArgumentException(String.format("duplicate UCS manager. url[%s] is used by another UCS manager already", cmd.getUrl()));
|
throw new IllegalArgumentException(String.format("duplicate UCS manager. url[%s] is used by another UCS manager already", cmd.getUrl()));
|
||||||
@ -343,8 +343,8 @@ public class UcsManagerImpl implements UcsManager {
|
|||||||
@Override
|
@Override
|
||||||
public UcsBladeResponse associateProfileToBlade(AssociateUcsProfileToBladeCmd cmd) {
|
public UcsBladeResponse associateProfileToBlade(AssociateUcsProfileToBladeCmd cmd) {
|
||||||
GenericQueryBuilder<UcsBladeVO, UcsBladeVO> q = GenericQueryBuilder.create(UcsBladeVO.class);
|
GenericQueryBuilder<UcsBladeVO, UcsBladeVO> q = GenericQueryBuilder.create(UcsBladeVO.class);
|
||||||
q.addAnd(q.getEntity().getUcsManagerId(), Op.EQ, cmd.getUcsManagerId());
|
q.and(q.entity().getUcsManagerId(), Op.EQ, cmd.getUcsManagerId());
|
||||||
q.addAnd(q.getEntity().getId(), Op.EQ, cmd.getBladeId());
|
q.and(q.entity().getId(), Op.EQ, cmd.getBladeId());
|
||||||
UcsBladeVO bvo = q.find();
|
UcsBladeVO bvo = q.find();
|
||||||
if (bvo == null) {
|
if (bvo == null) {
|
||||||
throw new IllegalArgumentException(String.format("cannot find UCS blade[id:%s, ucs manager id:%s]", cmd.getBladeId(), cmd.getUcsManagerId()));
|
throw new IllegalArgumentException(String.format("cannot find UCS blade[id:%s, ucs manager id:%s]", cmd.getBladeId(), cmd.getUcsManagerId()));
|
||||||
@ -425,7 +425,7 @@ public class UcsManagerImpl implements UcsManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
GenericQueryBuilder<UcsManagerVO, UcsManagerVO> serv = GenericQueryBuilder.create(UcsManagerVO.class);
|
GenericQueryBuilder<UcsManagerVO, UcsManagerVO> serv = GenericQueryBuilder.create(UcsManagerVO.class);
|
||||||
serv.addAnd(serv.getEntity().getZoneId(), Op.EQ, cmd.getZoneId());
|
serv.and(serv.entity().getZoneId(), Op.EQ, cmd.getZoneId());
|
||||||
List<UcsManagerVO> vos = serv.list();
|
List<UcsManagerVO> vos = serv.list();
|
||||||
|
|
||||||
for (UcsManagerVO vo : vos) {
|
for (UcsManagerVO vo : vos) {
|
||||||
@ -455,7 +455,7 @@ public class UcsManagerImpl implements UcsManager {
|
|||||||
@Override
|
@Override
|
||||||
public ListResponse<UcsBladeResponse> listUcsBlades(ListUcsBladeCmd cmd) {
|
public ListResponse<UcsBladeResponse> listUcsBlades(ListUcsBladeCmd cmd) {
|
||||||
GenericQueryBuilder<UcsBladeVO, UcsBladeVO> serv = GenericQueryBuilder.create(UcsBladeVO.class);
|
GenericQueryBuilder<UcsBladeVO, UcsBladeVO> serv = GenericQueryBuilder.create(UcsBladeVO.class);
|
||||||
serv.addAnd(serv.getEntity().getUcsManagerId(), Op.EQ, cmd.getUcsManagerId());
|
serv.and(serv.entity().getUcsManagerId(), Op.EQ, cmd.getUcsManagerId());
|
||||||
List<UcsBladeVO> vos = serv.list();
|
List<UcsBladeVO> vos = serv.list();
|
||||||
|
|
||||||
List<UcsBladeResponse> rsps = new ArrayList<UcsBladeResponse>(vos.size());
|
List<UcsBladeResponse> rsps = new ArrayList<UcsBladeResponse>(vos.size());
|
||||||
@ -510,7 +510,7 @@ public class UcsManagerImpl implements UcsManager {
|
|||||||
@Override
|
@Override
|
||||||
public void deleteUcsManager(Long id) {
|
public void deleteUcsManager(Long id) {
|
||||||
GenericQueryBuilder<UcsBladeVO, UcsBladeVO> serv = GenericQueryBuilder.create(UcsBladeVO.class);
|
GenericQueryBuilder<UcsBladeVO, UcsBladeVO> serv = GenericQueryBuilder.create(UcsBladeVO.class);
|
||||||
serv.addAnd(serv.getEntity().getUcsManagerId(), Op.EQ, id);
|
serv.and(serv.entity().getUcsManagerId(), Op.EQ, id);
|
||||||
List<UcsBladeVO> vos = serv.list();
|
List<UcsBladeVO> vos = serv.list();
|
||||||
for (UcsBladeVO vo : vos) {
|
for (UcsBladeVO vo : vos) {
|
||||||
bladeDao.remove(vo.getId());
|
bladeDao.remove(vo.getId());
|
||||||
|
|||||||
@ -127,7 +127,7 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
|
|||||||
_clusterDao.update(cluster.getId(), cluster);
|
_clusterDao.update(cluster.getId(), cluster);
|
||||||
} catch (EntityExistsException e) {
|
} catch (EntityExistsException e) {
|
||||||
GenericQueryBuilder<ClusterVO, ClusterVO> sc = GenericQueryBuilder.create(ClusterVO.class);
|
GenericQueryBuilder<ClusterVO, ClusterVO> sc = GenericQueryBuilder.create(ClusterVO.class);
|
||||||
sc.addAnd(sc.getEntity().getGuid(), Op.EQ, guid);
|
sc.and(sc.entity().getGuid(), Op.EQ, guid);
|
||||||
List<ClusterVO> clusters = sc.list();
|
List<ClusterVO> clusters = sc.list();
|
||||||
ClusterVO clu = clusters.get(0);
|
ClusterVO clu = clusters.get(0);
|
||||||
List<HostVO> clusterHosts = _resourceMgr.listAllHostsInCluster(clu.getId());
|
List<HostVO> clusterHosts = _resourceMgr.listAllHostsInCluster(clu.getId());
|
||||||
|
|||||||
@ -85,7 +85,7 @@ import com.cloud.network.NetworkModel;
|
|||||||
import com.cloud.network.Networks.TrafficType;
|
import com.cloud.network.Networks.TrafficType;
|
||||||
import com.cloud.network.PhysicalNetworkServiceProvider;
|
import com.cloud.network.PhysicalNetworkServiceProvider;
|
||||||
import com.cloud.network.VirtualRouterProvider;
|
import com.cloud.network.VirtualRouterProvider;
|
||||||
import com.cloud.network.VirtualRouterProvider.VirtualRouterProviderType;
|
import com.cloud.network.VirtualRouterProvider.Type;
|
||||||
import com.cloud.network.addr.PublicIp;
|
import com.cloud.network.addr.PublicIp;
|
||||||
import com.cloud.network.dao.IPAddressDao;
|
import com.cloud.network.dao.IPAddressDao;
|
||||||
import com.cloud.network.dao.IPAddressVO;
|
import com.cloud.network.dao.IPAddressVO;
|
||||||
@ -506,7 +506,7 @@ public class ElasticLoadBalancerManagerImpl extends ManagerBase implements Elast
|
|||||||
if (provider == null) {
|
if (provider == null) {
|
||||||
throw new CloudRuntimeException("Cannot find service provider " + typeString + " in physical network " + physicalNetworkId);
|
throw new CloudRuntimeException("Cannot find service provider " + typeString + " in physical network " + physicalNetworkId);
|
||||||
}
|
}
|
||||||
VirtualRouterProvider vrProvider = _vrProviderDao.findByNspIdAndType(provider.getId(), VirtualRouterProviderType.ElasticLoadBalancerVm);
|
VirtualRouterProvider vrProvider = _vrProviderDao.findByNspIdAndType(provider.getId(), Type.ElasticLoadBalancerVm);
|
||||||
if (vrProvider == null) {
|
if (vrProvider == null) {
|
||||||
throw new CloudRuntimeException("Cannot find virtual router provider " + typeString + " as service provider " + provider.getId());
|
throw new CloudRuntimeException("Cannot find virtual router provider " + typeString + " as service provider " + provider.getId());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -53,7 +53,7 @@ import com.cloud.network.Networks.TrafficType;
|
|||||||
import com.cloud.network.PhysicalNetworkServiceProvider;
|
import com.cloud.network.PhysicalNetworkServiceProvider;
|
||||||
import com.cloud.network.PublicIpAddress;
|
import com.cloud.network.PublicIpAddress;
|
||||||
import com.cloud.network.VirtualRouterProvider;
|
import com.cloud.network.VirtualRouterProvider;
|
||||||
import com.cloud.network.VirtualRouterProvider.VirtualRouterProviderType;
|
import com.cloud.network.VirtualRouterProvider.Type;
|
||||||
import com.cloud.network.dao.NetworkServiceMapDao;
|
import com.cloud.network.dao.NetworkServiceMapDao;
|
||||||
import com.cloud.network.dao.PhysicalNetworkServiceProviderDao;
|
import com.cloud.network.dao.PhysicalNetworkServiceProviderDao;
|
||||||
import com.cloud.network.dao.VirtualRouterProviderDao;
|
import com.cloud.network.dao.VirtualRouterProviderDao;
|
||||||
@ -73,9 +73,8 @@ import com.cloud.user.AccountManager;
|
|||||||
import com.cloud.user.User;
|
import com.cloud.user.User;
|
||||||
import com.cloud.utils.component.AdapterBase;
|
import com.cloud.utils.component.AdapterBase;
|
||||||
import com.cloud.utils.db.EntityManager;
|
import com.cloud.utils.db.EntityManager;
|
||||||
|
import com.cloud.utils.db.QueryBuilder;
|
||||||
import com.cloud.utils.db.SearchCriteria.Op;
|
import com.cloud.utils.db.SearchCriteria.Op;
|
||||||
import com.cloud.utils.db.GenericQueryBuilder;
|
|
||||||
import com.cloud.utils.db.GenericQueryBuilder;
|
|
||||||
import com.cloud.utils.exception.CloudRuntimeException;
|
import com.cloud.utils.exception.CloudRuntimeException;
|
||||||
import com.cloud.utils.net.Ip;
|
import com.cloud.utils.net.Ip;
|
||||||
import com.cloud.vm.DomainRouterVO;
|
import com.cloud.vm.DomainRouterVO;
|
||||||
@ -270,7 +269,7 @@ public class InternalLoadBalancerElement extends AdapterBase implements LoadBala
|
|||||||
@Override
|
@Override
|
||||||
public boolean isReady(PhysicalNetworkServiceProvider provider) {
|
public boolean isReady(PhysicalNetworkServiceProvider provider) {
|
||||||
VirtualRouterProviderVO element = _vrProviderDao.findByNspIdAndType(provider.getId(),
|
VirtualRouterProviderVO element = _vrProviderDao.findByNspIdAndType(provider.getId(),
|
||||||
VirtualRouterProviderType.InternalLbVm);
|
Type.InternalLbVm);
|
||||||
if (element == null) {
|
if (element == null) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -282,7 +281,7 @@ public class InternalLoadBalancerElement extends AdapterBase implements LoadBala
|
|||||||
public boolean shutdownProviderInstances(PhysicalNetworkServiceProvider provider, ReservationContext context)
|
public boolean shutdownProviderInstances(PhysicalNetworkServiceProvider provider, ReservationContext context)
|
||||||
throws ConcurrentOperationException, ResourceUnavailableException {
|
throws ConcurrentOperationException, ResourceUnavailableException {
|
||||||
VirtualRouterProviderVO element = _vrProviderDao.findByNspIdAndType(provider.getId(),
|
VirtualRouterProviderVO element = _vrProviderDao.findByNspIdAndType(provider.getId(),
|
||||||
VirtualRouterProviderType.InternalLbVm);
|
Type.InternalLbVm);
|
||||||
if (element == null) {
|
if (element == null) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -467,7 +466,7 @@ public class InternalLoadBalancerElement extends AdapterBase implements LoadBala
|
|||||||
@Override
|
@Override
|
||||||
public VirtualRouterProvider configureInternalLoadBalancerElement(long id, boolean enable) {
|
public VirtualRouterProvider configureInternalLoadBalancerElement(long id, boolean enable) {
|
||||||
VirtualRouterProviderVO element = _vrProviderDao.findById(id);
|
VirtualRouterProviderVO element = _vrProviderDao.findById(id);
|
||||||
if (element == null || element.getType() != VirtualRouterProviderType.InternalLbVm) {
|
if (element == null || element.getType() != Type.InternalLbVm) {
|
||||||
throw new InvalidParameterValueException("Can't find " + getName() + " element with network service provider id " + id +
|
throw new InvalidParameterValueException("Can't find " + getName() + " element with network service provider id " + id +
|
||||||
" to be used as a provider for " + getName());
|
" to be used as a provider for " + getName());
|
||||||
}
|
}
|
||||||
@ -480,7 +479,7 @@ public class InternalLoadBalancerElement extends AdapterBase implements LoadBala
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public VirtualRouterProvider addInternalLoadBalancerElement(long ntwkSvcProviderId) {
|
public VirtualRouterProvider addInternalLoadBalancerElement(long ntwkSvcProviderId) {
|
||||||
VirtualRouterProviderVO element = _vrProviderDao.findByNspIdAndType(ntwkSvcProviderId, VirtualRouterProviderType.InternalLbVm);
|
VirtualRouterProviderVO element = _vrProviderDao.findByNspIdAndType(ntwkSvcProviderId, Type.InternalLbVm);
|
||||||
if (element != null) {
|
if (element != null) {
|
||||||
s_logger.debug("There is already an " + getName() + " with service provider id " + ntwkSvcProviderId);
|
s_logger.debug("There is already an " + getName() + " with service provider id " + ntwkSvcProviderId);
|
||||||
return null;
|
return null;
|
||||||
@ -491,7 +490,7 @@ public class InternalLoadBalancerElement extends AdapterBase implements LoadBala
|
|||||||
throw new InvalidParameterValueException("Invalid network service provider is specified");
|
throw new InvalidParameterValueException("Invalid network service provider is specified");
|
||||||
}
|
}
|
||||||
|
|
||||||
element = new VirtualRouterProviderVO(ntwkSvcProviderId, VirtualRouterProviderType.InternalLbVm);
|
element = new VirtualRouterProviderVO(ntwkSvcProviderId, Type.InternalLbVm);
|
||||||
element = _vrProviderDao.persist(element);
|
element = _vrProviderDao.persist(element);
|
||||||
return element;
|
return element;
|
||||||
}
|
}
|
||||||
@ -500,7 +499,7 @@ public class InternalLoadBalancerElement extends AdapterBase implements LoadBala
|
|||||||
@Override
|
@Override
|
||||||
public VirtualRouterProvider getInternalLoadBalancerElement(long id) {
|
public VirtualRouterProvider getInternalLoadBalancerElement(long id) {
|
||||||
VirtualRouterProvider provider = _vrProviderDao.findById(id);
|
VirtualRouterProvider provider = _vrProviderDao.findById(id);
|
||||||
if (provider == null || provider.getType() != VirtualRouterProviderType.InternalLbVm) {
|
if (provider == null || provider.getType() != Type.InternalLbVm) {
|
||||||
throw new InvalidParameterValueException("Unable to find " + getName() + " by id");
|
throw new InvalidParameterValueException("Unable to find " + getName() + " by id");
|
||||||
}
|
}
|
||||||
return provider;
|
return provider;
|
||||||
@ -509,19 +508,19 @@ public class InternalLoadBalancerElement extends AdapterBase implements LoadBala
|
|||||||
@Override
|
@Override
|
||||||
public List<? extends VirtualRouterProvider> searchForInternalLoadBalancerElements(Long id, Long ntwkSvsProviderId, Boolean enabled) {
|
public List<? extends VirtualRouterProvider> searchForInternalLoadBalancerElements(Long id, Long ntwkSvsProviderId, Boolean enabled) {
|
||||||
|
|
||||||
GenericQueryBuilder<VirtualRouterProviderVO, VirtualRouterProviderVO> sc = GenericQueryBuilder.create(VirtualRouterProviderVO.class);
|
QueryBuilder<VirtualRouterProviderVO> sc = QueryBuilder.create(VirtualRouterProviderVO.class);
|
||||||
if (id != null) {
|
if (id != null) {
|
||||||
sc.addAnd(sc.getEntity().getId(), Op.EQ, id);
|
sc.and(sc.entity().getId(), Op.EQ, id);
|
||||||
}
|
}
|
||||||
if (ntwkSvsProviderId != null) {
|
if (ntwkSvsProviderId != null) {
|
||||||
sc.addAnd(sc.getEntity().getNspId(), Op.EQ, ntwkSvsProviderId);
|
sc.and(sc.entity().getNspId(), Op.EQ, ntwkSvsProviderId);
|
||||||
}
|
}
|
||||||
if (enabled != null) {
|
if (enabled != null) {
|
||||||
sc.addAnd(sc.getEntity().isEnabled(), Op.EQ, enabled);
|
sc.and(sc.entity().isEnabled(), Op.EQ, enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
//return only Internal LB elements
|
//return only Internal LB elements
|
||||||
sc.addAnd(sc.getEntity().getType(), Op.EQ, VirtualRouterProvider.VirtualRouterProviderType.InternalLbVm);
|
sc.and(sc.entity().getType(), Op.EQ, VirtualRouterProvider.Type.InternalLbVm);
|
||||||
|
|
||||||
return sc.list();
|
return sc.list();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -69,7 +69,7 @@ import com.cloud.network.NetworkModel;
|
|||||||
import com.cloud.network.Networks.TrafficType;
|
import com.cloud.network.Networks.TrafficType;
|
||||||
import com.cloud.network.PhysicalNetworkServiceProvider;
|
import com.cloud.network.PhysicalNetworkServiceProvider;
|
||||||
import com.cloud.network.VirtualRouterProvider;
|
import com.cloud.network.VirtualRouterProvider;
|
||||||
import com.cloud.network.VirtualRouterProvider.VirtualRouterProviderType;
|
import com.cloud.network.VirtualRouterProvider.Type;
|
||||||
import com.cloud.network.dao.NetworkDao;
|
import com.cloud.network.dao.NetworkDao;
|
||||||
import com.cloud.network.dao.PhysicalNetworkServiceProviderDao;
|
import com.cloud.network.dao.PhysicalNetworkServiceProviderDao;
|
||||||
import com.cloud.network.dao.VirtualRouterProviderDao;
|
import com.cloud.network.dao.VirtualRouterProviderDao;
|
||||||
@ -310,7 +310,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements In
|
|||||||
|
|
||||||
VirtualRouterProvider lbProvider = _vrProviderDao.findById(internalLbVm.getElementId());
|
VirtualRouterProvider lbProvider = _vrProviderDao.findById(internalLbVm.getElementId());
|
||||||
if (lbProvider == null) {
|
if (lbProvider == null) {
|
||||||
throw new CloudRuntimeException("Cannot find related element " + VirtualRouterProviderType.InternalLbVm + " of vm: " + internalLbVm.getHostName());
|
throw new CloudRuntimeException("Cannot find related element " + Type.InternalLbVm + " of vm: " + internalLbVm.getHostName());
|
||||||
}
|
}
|
||||||
|
|
||||||
Provider provider = Network.Provider.getProvider(lbProvider.getType().toString());
|
Provider provider = Network.Provider.getProvider(lbProvider.getType().toString());
|
||||||
@ -629,7 +629,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements In
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected long getInternalLbProviderId(Network guestNetwork) {
|
protected long getInternalLbProviderId(Network guestNetwork) {
|
||||||
VirtualRouterProviderType type = VirtualRouterProviderType.InternalLbVm;
|
Type type = Type.InternalLbVm;
|
||||||
long physicalNetworkId = _ntwkModel.getPhysicalNetworkId(guestNetwork);
|
long physicalNetworkId = _ntwkModel.getPhysicalNetworkId(guestNetwork);
|
||||||
|
|
||||||
PhysicalNetworkServiceProvider provider = _physicalProviderDao.findByServiceProvider(physicalNetworkId, type.toString());
|
PhysicalNetworkServiceProvider provider = _physicalProviderDao.findByServiceProvider(physicalNetworkId, type.toString());
|
||||||
|
|||||||
@ -33,7 +33,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
|||||||
|
|
||||||
import com.cloud.exception.InvalidParameterValueException;
|
import com.cloud.exception.InvalidParameterValueException;
|
||||||
import com.cloud.network.VirtualRouterProvider;
|
import com.cloud.network.VirtualRouterProvider;
|
||||||
import com.cloud.network.VirtualRouterProvider.VirtualRouterProviderType;
|
import com.cloud.network.VirtualRouterProvider.Type;
|
||||||
import com.cloud.network.dao.PhysicalNetworkServiceProviderDao;
|
import com.cloud.network.dao.PhysicalNetworkServiceProviderDao;
|
||||||
import com.cloud.network.dao.PhysicalNetworkServiceProviderVO;
|
import com.cloud.network.dao.PhysicalNetworkServiceProviderVO;
|
||||||
import com.cloud.network.dao.VirtualRouterProviderDao;
|
import com.cloud.network.dao.VirtualRouterProviderDao;
|
||||||
@ -65,15 +65,15 @@ public class InternalLbElementServiceTest {
|
|||||||
public void setUp() {
|
public void setUp() {
|
||||||
|
|
||||||
ComponentContext.initComponentsLifeCycle();
|
ComponentContext.initComponentsLifeCycle();
|
||||||
VirtualRouterProviderVO validElement = new VirtualRouterProviderVO(1, VirtualRouterProviderType.InternalLbVm);
|
VirtualRouterProviderVO validElement = new VirtualRouterProviderVO(1, Type.InternalLbVm);
|
||||||
VirtualRouterProviderVO invalidElement = new VirtualRouterProviderVO(1, VirtualRouterProviderType.VirtualRouter);
|
VirtualRouterProviderVO invalidElement = new VirtualRouterProviderVO(1, Type.VirtualRouter);
|
||||||
|
|
||||||
Mockito.when(_vrProviderDao.findById(validElId)).thenReturn(validElement);
|
Mockito.when(_vrProviderDao.findById(validElId)).thenReturn(validElement);
|
||||||
Mockito.when(_vrProviderDao.findById(invalidElId)).thenReturn(invalidElement);
|
Mockito.when(_vrProviderDao.findById(invalidElId)).thenReturn(invalidElement);
|
||||||
|
|
||||||
Mockito.when(_vrProviderDao.persist(validElement)).thenReturn(validElement);
|
Mockito.when(_vrProviderDao.persist(validElement)).thenReturn(validElement);
|
||||||
|
|
||||||
Mockito.when(_vrProviderDao.findByNspIdAndType(validProviderId, VirtualRouterProviderType.InternalLbVm)).thenReturn(validElement);
|
Mockito.when(_vrProviderDao.findByNspIdAndType(validProviderId, Type.InternalLbVm)).thenReturn(validElement);
|
||||||
|
|
||||||
PhysicalNetworkServiceProviderVO validProvider = new PhysicalNetworkServiceProviderVO(1, "InternalLoadBalancerElement");
|
PhysicalNetworkServiceProviderVO validProvider = new PhysicalNetworkServiceProviderVO(1, "InternalLoadBalancerElement");
|
||||||
PhysicalNetworkServiceProviderVO invalidProvider = new PhysicalNetworkServiceProviderVO(1, "Invalid name!");
|
PhysicalNetworkServiceProviderVO invalidProvider = new PhysicalNetworkServiceProviderVO(1, "Invalid name!");
|
||||||
|
|||||||
@ -47,7 +47,7 @@ import com.cloud.dc.DataCenterVO;
|
|||||||
import com.cloud.exception.ResourceUnavailableException;
|
import com.cloud.exception.ResourceUnavailableException;
|
||||||
import com.cloud.network.Network.Provider;
|
import com.cloud.network.Network.Provider;
|
||||||
import com.cloud.network.Network.Service;
|
import com.cloud.network.Network.Service;
|
||||||
import com.cloud.network.VirtualRouterProvider.VirtualRouterProviderType;
|
import com.cloud.network.VirtualRouterProvider.Type;
|
||||||
import com.cloud.network.addr.PublicIp;
|
import com.cloud.network.addr.PublicIp;
|
||||||
import com.cloud.network.dao.NetworkVO;
|
import com.cloud.network.dao.NetworkVO;
|
||||||
import com.cloud.network.dao.PhysicalNetworkServiceProviderDao;
|
import com.cloud.network.dao.PhysicalNetworkServiceProviderDao;
|
||||||
@ -91,18 +91,18 @@ public class InternalLbElementTest {
|
|||||||
public void setUp() {
|
public void setUp() {
|
||||||
|
|
||||||
ComponentContext.initComponentsLifeCycle();
|
ComponentContext.initComponentsLifeCycle();
|
||||||
VirtualRouterProviderVO validElement = new VirtualRouterProviderVO(1, VirtualRouterProviderType.InternalLbVm);
|
VirtualRouterProviderVO validElement = new VirtualRouterProviderVO(1, Type.InternalLbVm);
|
||||||
validElement.setEnabled(true);
|
validElement.setEnabled(true);
|
||||||
VirtualRouterProviderVO invalidElement = new VirtualRouterProviderVO(1, VirtualRouterProviderType.VirtualRouter);
|
VirtualRouterProviderVO invalidElement = new VirtualRouterProviderVO(1, Type.VirtualRouter);
|
||||||
VirtualRouterProviderVO notEnabledElement = new VirtualRouterProviderVO(1, VirtualRouterProviderType.InternalLbVm);
|
VirtualRouterProviderVO notEnabledElement = new VirtualRouterProviderVO(1, Type.InternalLbVm);
|
||||||
|
|
||||||
Mockito.when(_vrProviderDao.findByNspIdAndType(validElId, VirtualRouterProviderType.InternalLbVm)).thenReturn(validElement);
|
Mockito.when(_vrProviderDao.findByNspIdAndType(validElId, Type.InternalLbVm)).thenReturn(validElement);
|
||||||
Mockito.when(_vrProviderDao.findByNspIdAndType(invalidElId, VirtualRouterProviderType.InternalLbVm)).thenReturn(invalidElement);
|
Mockito.when(_vrProviderDao.findByNspIdAndType(invalidElId, Type.InternalLbVm)).thenReturn(invalidElement);
|
||||||
Mockito.when(_vrProviderDao.findByNspIdAndType(notEnabledElId, VirtualRouterProviderType.InternalLbVm)).thenReturn(notEnabledElement);
|
Mockito.when(_vrProviderDao.findByNspIdAndType(notEnabledElId, Type.InternalLbVm)).thenReturn(notEnabledElement);
|
||||||
|
|
||||||
Mockito.when(_vrProviderDao.persist(validElement)).thenReturn(validElement);
|
Mockito.when(_vrProviderDao.persist(validElement)).thenReturn(validElement);
|
||||||
|
|
||||||
Mockito.when(_vrProviderDao.findByNspIdAndType(validProviderId, VirtualRouterProviderType.InternalLbVm)).thenReturn(validElement);
|
Mockito.when(_vrProviderDao.findByNspIdAndType(validProviderId, Type.InternalLbVm)).thenReturn(validElement);
|
||||||
|
|
||||||
PhysicalNetworkServiceProviderVO validProvider = new PhysicalNetworkServiceProviderVO(1, "InternalLoadBalancerElement");
|
PhysicalNetworkServiceProviderVO validProvider = new PhysicalNetworkServiceProviderVO(1, "InternalLoadBalancerElement");
|
||||||
PhysicalNetworkServiceProviderVO invalidProvider = new PhysicalNetworkServiceProviderVO(1, "Invalid name!");
|
PhysicalNetworkServiceProviderVO invalidProvider = new PhysicalNetworkServiceProviderVO(1, "Invalid name!");
|
||||||
|
|||||||
@ -2681,8 +2681,8 @@ public class ApiResponseHelper implements ResponseGenerator {
|
|||||||
@Override
|
@Override
|
||||||
public VirtualRouterProviderResponse createVirtualRouterProviderResponse(VirtualRouterProvider result) {
|
public VirtualRouterProviderResponse createVirtualRouterProviderResponse(VirtualRouterProvider result) {
|
||||||
//generate only response of the VR/VPCVR provider type
|
//generate only response of the VR/VPCVR provider type
|
||||||
if (!(result.getType() == VirtualRouterProvider.VirtualRouterProviderType.VirtualRouter
|
if (!(result.getType() == VirtualRouterProvider.Type.VirtualRouter
|
||||||
|| result.getType() == VirtualRouterProvider.VirtualRouterProviderType.VPCVirtualRouter)) {
|
|| result.getType() == VirtualRouterProvider.Type.VPCVirtualRouter)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
VirtualRouterProviderResponse response = new VirtualRouterProviderResponse();
|
VirtualRouterProviderResponse response = new VirtualRouterProviderResponse();
|
||||||
@ -3734,7 +3734,7 @@ public class ApiResponseHelper implements ResponseGenerator {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public InternalLoadBalancerElementResponse createInternalLbElementResponse(VirtualRouterProvider result) {
|
public InternalLoadBalancerElementResponse createInternalLbElementResponse(VirtualRouterProvider result) {
|
||||||
if (result.getType() != VirtualRouterProvider.VirtualRouterProviderType.InternalLbVm) {
|
if (result.getType() != VirtualRouterProvider.Type.InternalLbVm) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
InternalLoadBalancerElementResponse response = new InternalLoadBalancerElementResponse();
|
InternalLoadBalancerElementResponse response = new InternalLoadBalancerElementResponse();
|
||||||
|
|||||||
@ -1694,8 +1694,8 @@ VirtualMachineGuru, SystemVmLoadScanHandler<Long>, ResourceStateAdapter {
|
|||||||
|
|
||||||
protected HostVO findConsoleProxyHostByName(String name) {
|
protected HostVO findConsoleProxyHostByName(String name) {
|
||||||
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
||||||
sc.addAnd(sc.getEntity().getType(), Op.EQ, Host.Type.ConsoleProxy);
|
sc.and(sc.entity().getType(), Op.EQ, Host.Type.ConsoleProxy);
|
||||||
sc.addAnd(sc.getEntity().getName(), Op.EQ, name);
|
sc.and(sc.entity().getName(), Op.EQ, name);
|
||||||
return sc.find();
|
return sc.find();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -21,7 +21,6 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.naming.ConfigurationException;
|
import javax.naming.ConfigurationException;
|
||||||
|
|
||||||
@ -38,16 +37,15 @@ import com.cloud.host.Status;
|
|||||||
import com.cloud.host.dao.HostDao;
|
import com.cloud.host.dao.HostDao;
|
||||||
import com.cloud.resource.ResourceManager;
|
import com.cloud.resource.ResourceManager;
|
||||||
import com.cloud.utils.component.AdapterBase;
|
import com.cloud.utils.component.AdapterBase;
|
||||||
import com.cloud.utils.db.GenericQueryBuilder;
|
import com.cloud.utils.db.QueryBuilder;
|
||||||
import com.cloud.utils.db.SearchCriteria.Op;
|
import com.cloud.utils.db.SearchCriteria.Op;
|
||||||
import com.cloud.utils.db.GenericQueryBuilder;
|
|
||||||
|
|
||||||
public abstract class AbstractInvestigatorImpl extends AdapterBase implements Investigator {
|
public abstract class AbstractInvestigatorImpl extends AdapterBase implements Investigator {
|
||||||
private static final Logger s_logger = Logger.getLogger(AbstractInvestigatorImpl.class);
|
private static final Logger s_logger = Logger.getLogger(AbstractInvestigatorImpl.class);
|
||||||
|
|
||||||
@Inject private HostDao _hostDao = null;
|
@Inject private final HostDao _hostDao = null;
|
||||||
@Inject private AgentManager _agentMgr = null;
|
@Inject private final AgentManager _agentMgr = null;
|
||||||
@Inject private ResourceManager _resourceMgr = null;
|
@Inject private final ResourceManager _resourceMgr = null;
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -68,10 +66,10 @@ public abstract class AbstractInvestigatorImpl extends AdapterBase implements In
|
|||||||
|
|
||||||
// Host.status is up and Host.type is routing
|
// Host.status is up and Host.type is routing
|
||||||
protected List<Long> findHostByPod(long podId, Long excludeHostId) {
|
protected List<Long> findHostByPod(long podId, Long excludeHostId) {
|
||||||
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);
|
||||||
sc.addAnd(sc.getEntity().getType(), Op.EQ, Type.Routing);
|
sc.and(sc.entity().getType(), Op.EQ, Type.Routing);
|
||||||
sc.addAnd(sc.getEntity().getPodId(), Op.EQ, podId);
|
sc.and(sc.entity().getPodId(), Op.EQ, podId);
|
||||||
sc.addAnd(sc.getEntity().getStatus(), Op.EQ, Status.Up);
|
sc.and(sc.entity().getStatus(), Op.EQ, Status.Up);
|
||||||
List<HostVO> hosts = sc.list();
|
List<HostVO> hosts = sc.list();
|
||||||
|
|
||||||
List<Long> hostIds = new ArrayList<Long>(hosts.size());
|
List<Long> hostIds = new ArrayList<Long>(hosts.size());
|
||||||
|
|||||||
@ -97,7 +97,7 @@ import com.cloud.network.Network.Service;
|
|||||||
import com.cloud.network.Networks.BroadcastDomainType;
|
import com.cloud.network.Networks.BroadcastDomainType;
|
||||||
import com.cloud.network.Networks.TrafficType;
|
import com.cloud.network.Networks.TrafficType;
|
||||||
import com.cloud.network.PhysicalNetwork.BroadcastDomainRange;
|
import com.cloud.network.PhysicalNetwork.BroadcastDomainRange;
|
||||||
import com.cloud.network.VirtualRouterProvider.VirtualRouterProviderType;
|
import com.cloud.network.VirtualRouterProvider.Type;
|
||||||
import com.cloud.network.addr.PublicIp;
|
import com.cloud.network.addr.PublicIp;
|
||||||
import com.cloud.network.dao.AccountGuestVlanMapDao;
|
import com.cloud.network.dao.AccountGuestVlanMapDao;
|
||||||
import com.cloud.network.dao.AccountGuestVlanMapVO;
|
import com.cloud.network.dao.AccountGuestVlanMapVO;
|
||||||
@ -3685,7 +3685,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
VirtualRouterElement element = (VirtualRouterElement)networkElement;
|
VirtualRouterElement element = (VirtualRouterElement)networkElement;
|
||||||
element.addElement(nsp.getId(), VirtualRouterProviderType.VirtualRouter);
|
element.addElement(nsp.getId(), Type.VirtualRouter);
|
||||||
|
|
||||||
return nsp;
|
return nsp;
|
||||||
}
|
}
|
||||||
@ -3701,7 +3701,7 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
VpcVirtualRouterElement element = (VpcVirtualRouterElement)networkElement;
|
VpcVirtualRouterElement element = (VpcVirtualRouterElement)networkElement;
|
||||||
element.addElement(nsp.getId(), VirtualRouterProviderType.VPCVirtualRouter);
|
element.addElement(nsp.getId(), Type.VPCVirtualRouter);
|
||||||
|
|
||||||
return nsp;
|
return nsp;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -340,7 +340,7 @@ public class StorageNetworkManagerImpl extends ManagerBase implements StorageNet
|
|||||||
@Override
|
@Override
|
||||||
public boolean isStorageIpRangeAvailable(long zoneId) {
|
public boolean isStorageIpRangeAvailable(long zoneId) {
|
||||||
GenericQueryBuilder<StorageNetworkIpRangeVO, StorageNetworkIpRangeVO> sc = GenericQueryBuilder.create(StorageNetworkIpRangeVO.class);
|
GenericQueryBuilder<StorageNetworkIpRangeVO, StorageNetworkIpRangeVO> sc = GenericQueryBuilder.create(StorageNetworkIpRangeVO.class);
|
||||||
sc.addAnd(sc.getEntity().getDataCenterId(), Op.EQ, zoneId);
|
sc.and(sc.entity().getDataCenterId(), Op.EQ, zoneId);
|
||||||
List<StorageNetworkIpRangeVO> entries = sc.list();
|
List<StorageNetworkIpRangeVO> entries = sc.list();
|
||||||
return entries.size() > 0;
|
return entries.size() > 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
// to you under the Apache License, Version 2.0 (the
|
// to you under the Apache License, Version 2.0 (the
|
||||||
// "License"); you may not use this file except in compliance
|
// "License"); you may not use this file except in compliance
|
||||||
// with the License. You may obtain a copy of the License at
|
// with the License. You may obtain a copy of the License at
|
||||||
//
|
//
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
//
|
//
|
||||||
// Unless required by applicable law or agreed to in writing,
|
// Unless required by applicable law or agreed to in writing,
|
||||||
@ -25,13 +25,15 @@ import java.util.Set;
|
|||||||
import javax.ejb.Local;
|
import javax.ejb.Local;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
|
||||||
import org.apache.cloudstack.api.command.admin.router.ConfigureVirtualRouterElementCmd;
|
import org.apache.cloudstack.api.command.admin.router.ConfigureVirtualRouterElementCmd;
|
||||||
import org.apache.cloudstack.api.command.admin.router.CreateVirtualRouterElementCmd;
|
import org.apache.cloudstack.api.command.admin.router.CreateVirtualRouterElementCmd;
|
||||||
import org.apache.cloudstack.api.command.admin.router.ListVirtualRouterElementsCmd;
|
import org.apache.cloudstack.api.command.admin.router.ListVirtualRouterElementsCmd;
|
||||||
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
|
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
|
||||||
|
|
||||||
import com.cloud.agent.api.to.LoadBalancerTO;
|
import com.cloud.agent.api.to.LoadBalancerTO;
|
||||||
import com.cloud.configuration.ConfigurationManager;
|
import com.cloud.configuration.ConfigurationManager;
|
||||||
import com.cloud.dc.DataCenter;
|
import com.cloud.dc.DataCenter;
|
||||||
@ -55,7 +57,7 @@ import com.cloud.network.PhysicalNetworkServiceProvider;
|
|||||||
import com.cloud.network.PublicIpAddress;
|
import com.cloud.network.PublicIpAddress;
|
||||||
import com.cloud.network.RemoteAccessVpn;
|
import com.cloud.network.RemoteAccessVpn;
|
||||||
import com.cloud.network.VirtualRouterProvider;
|
import com.cloud.network.VirtualRouterProvider;
|
||||||
import com.cloud.network.VirtualRouterProvider.VirtualRouterProviderType;
|
import com.cloud.network.VirtualRouterProvider.Type;
|
||||||
import com.cloud.network.VpnUser;
|
import com.cloud.network.VpnUser;
|
||||||
import com.cloud.network.dao.IPAddressDao;
|
import com.cloud.network.dao.IPAddressDao;
|
||||||
import com.cloud.network.dao.LoadBalancerDao;
|
import com.cloud.network.dao.LoadBalancerDao;
|
||||||
@ -77,12 +79,10 @@ import com.cloud.offering.NetworkOffering;
|
|||||||
import com.cloud.offerings.NetworkOfferingVO;
|
import com.cloud.offerings.NetworkOfferingVO;
|
||||||
import com.cloud.offerings.dao.NetworkOfferingDao;
|
import com.cloud.offerings.dao.NetworkOfferingDao;
|
||||||
import com.cloud.user.AccountManager;
|
import com.cloud.user.AccountManager;
|
||||||
import com.cloud.uservm.UserVm;
|
|
||||||
import com.cloud.utils.Pair;
|
import com.cloud.utils.Pair;
|
||||||
import com.cloud.utils.component.AdapterBase;
|
import com.cloud.utils.component.AdapterBase;
|
||||||
|
import com.cloud.utils.db.QueryBuilder;
|
||||||
import com.cloud.utils.db.SearchCriteria.Op;
|
import com.cloud.utils.db.SearchCriteria.Op;
|
||||||
import com.cloud.utils.db.GenericQueryBuilder;
|
|
||||||
import com.cloud.utils.db.GenericQueryBuilder;
|
|
||||||
import com.cloud.utils.exception.CloudRuntimeException;
|
import com.cloud.utils.exception.CloudRuntimeException;
|
||||||
import com.cloud.vm.DomainRouterVO;
|
import com.cloud.vm.DomainRouterVO;
|
||||||
import com.cloud.vm.NicProfile;
|
import com.cloud.vm.NicProfile;
|
||||||
@ -91,19 +91,16 @@ import com.cloud.vm.UserVmManager;
|
|||||||
import com.cloud.vm.UserVmVO;
|
import com.cloud.vm.UserVmVO;
|
||||||
import com.cloud.vm.VirtualMachine;
|
import com.cloud.vm.VirtualMachine;
|
||||||
import com.cloud.vm.VirtualMachine.State;
|
import com.cloud.vm.VirtualMachine.State;
|
||||||
import com.cloud.vm.VirtualMachine.Type;
|
|
||||||
import com.cloud.vm.VirtualMachineProfile;
|
import com.cloud.vm.VirtualMachineProfile;
|
||||||
import com.cloud.vm.dao.DomainRouterDao;
|
import com.cloud.vm.dao.DomainRouterDao;
|
||||||
import com.cloud.vm.dao.UserVmDao;
|
import com.cloud.vm.dao.UserVmDao;
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
@Local(value = {NetworkElement.class, FirewallServiceProvider.class,
|
||||||
|
DhcpServiceProvider.class, UserDataServiceProvider.class,
|
||||||
@Local(value = {NetworkElement.class, FirewallServiceProvider.class,
|
|
||||||
DhcpServiceProvider.class, UserDataServiceProvider.class,
|
|
||||||
StaticNatServiceProvider.class, LoadBalancingServiceProvider.class,
|
StaticNatServiceProvider.class, LoadBalancingServiceProvider.class,
|
||||||
PortForwardingServiceProvider.class, IpDeployer.class,
|
PortForwardingServiceProvider.class, IpDeployer.class,
|
||||||
RemoteAccessVPNServiceProvider.class, NetworkMigrationResponder.class} )
|
RemoteAccessVPNServiceProvider.class, NetworkMigrationResponder.class} )
|
||||||
public class VirtualRouterElement extends AdapterBase implements VirtualRouterElementService, DhcpServiceProvider,
|
public class VirtualRouterElement extends AdapterBase implements VirtualRouterElementService, DhcpServiceProvider,
|
||||||
UserDataServiceProvider, SourceNatServiceProvider, StaticNatServiceProvider, FirewallServiceProvider,
|
UserDataServiceProvider, SourceNatServiceProvider, StaticNatServiceProvider, FirewallServiceProvider,
|
||||||
LoadBalancingServiceProvider, PortForwardingServiceProvider, RemoteAccessVPNServiceProvider, IpDeployer,
|
LoadBalancingServiceProvider, PortForwardingServiceProvider, RemoteAccessVPNServiceProvider, IpDeployer,
|
||||||
NetworkMigrationResponder {
|
NetworkMigrationResponder {
|
||||||
@ -166,7 +163,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!_networkMgr.isProviderSupportServiceInNetwork(network.getId(), service, getProvider())) {
|
if (!_networkMgr.isProviderSupportServiceInNetwork(network.getId(), service, getProvider())) {
|
||||||
s_logger.trace("Element " + getProvider().getName() + " doesn't support service " + service.getName()
|
s_logger.trace("Element " + getProvider().getName() + " doesn't support service " + service.getName()
|
||||||
+ " in the network " + network);
|
+ " in the network " + network);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -187,19 +184,19 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
Map<VirtualMachineProfile.Param, Object> params = new HashMap<VirtualMachineProfile.Param, Object>(1);
|
Map<VirtualMachineProfile.Param, Object> params = new HashMap<VirtualMachineProfile.Param, Object>(1);
|
||||||
params.put(VirtualMachineProfile.Param.ReProgramGuestNetworks, true);
|
params.put(VirtualMachineProfile.Param.ReProgramGuestNetworks, true);
|
||||||
|
|
||||||
List<DomainRouterVO> routers = _routerMgr.deployVirtualRouterInGuestNetwork(network, dest,
|
List<DomainRouterVO> routers = _routerMgr.deployVirtualRouterInGuestNetwork(network, dest,
|
||||||
_accountMgr.getAccount(network.getAccountId()), params,
|
_accountMgr.getAccount(network.getAccountId()), params,
|
||||||
offering.getRedundantRouter());
|
offering.getRedundantRouter());
|
||||||
if ((routers == null) || (routers.size() == 0)) {
|
if ((routers == null) || (routers.size() == 0)) {
|
||||||
throw new ResourceUnavailableException("Can't find at least one running router!",
|
throw new ResourceUnavailableException("Can't find at least one running router!",
|
||||||
DataCenter.class, network.getDataCenterId());
|
DataCenter.class, network.getDataCenterId());
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean prepare(Network network, NicProfile nic, VirtualMachineProfile vm,
|
public boolean prepare(Network network, NicProfile nic, VirtualMachineProfile vm,
|
||||||
DeployDestination dest, ReservationContext context)
|
DeployDestination dest, ReservationContext context)
|
||||||
throws ConcurrentOperationException, InsufficientCapacityException, ResourceUnavailableException {
|
throws ConcurrentOperationException, InsufficientCapacityException, ResourceUnavailableException {
|
||||||
if (vm.getType() != VirtualMachine.Type.User || vm.getHypervisorType() == HypervisorType.BareMetal) {
|
if (vm.getType() != VirtualMachine.Type.User || vm.getHypervisorType() == HypervisorType.BareMetal) {
|
||||||
@ -219,15 +216,15 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
VirtualMachineProfile uservm = (VirtualMachineProfile) vm;
|
VirtualMachineProfile uservm = vm;
|
||||||
List<DomainRouterVO> routers = _routerMgr.deployVirtualRouterInGuestNetwork(network, dest,
|
List<DomainRouterVO> routers = _routerMgr.deployVirtualRouterInGuestNetwork(network, dest,
|
||||||
_accountMgr.getAccount(network.getAccountId()),
|
_accountMgr.getAccount(network.getAccountId()),
|
||||||
uservm.getParameters(), offering.getRedundantRouter());
|
uservm.getParameters(), offering.getRedundantRouter());
|
||||||
if ((routers == null) || (routers.size() == 0)) {
|
if ((routers == null) || (routers.size() == 0)) {
|
||||||
throw new ResourceUnavailableException("Can't find at least one running router!",
|
throw new ResourceUnavailableException("Can't find at least one running router!",
|
||||||
DataCenter.class, network.getDataCenterId());
|
DataCenter.class, network.getDataCenterId());
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -306,11 +303,11 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
expire = value;
|
expire = value;
|
||||||
}
|
}
|
||||||
if ((expire != null) && !containsOnlyNumbers(expire, timeEndChar)) {
|
if ((expire != null) && !containsOnlyNumbers(expire, timeEndChar)) {
|
||||||
throw new InvalidParameterValueException("Failed LB in validation rule id: " + rule.getId() +
|
throw new InvalidParameterValueException("Failed LB in validation rule id: " + rule.getId() +
|
||||||
" Cause: expire is not in timeformat: " + expire);
|
" Cause: expire is not in timeformat: " + expire);
|
||||||
}
|
}
|
||||||
if ((tablesize != null) && !containsOnlyNumbers(tablesize, "kmg")) {
|
if ((tablesize != null) && !containsOnlyNumbers(tablesize, "kmg")) {
|
||||||
throw new InvalidParameterValueException("Failed LB in validation rule id: " + rule.getId() +
|
throw new InvalidParameterValueException("Failed LB in validation rule id: " + rule.getId() +
|
||||||
" Cause: tablesize is not in size format: " + tablesize);
|
" Cause: tablesize is not in size format: " + tablesize);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -337,11 +334,11 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((length != null) && (!containsOnlyNumbers(length, null))) {
|
if ((length != null) && (!containsOnlyNumbers(length, null))) {
|
||||||
throw new InvalidParameterValueException("Failed LB in validation rule id: " + rule.getId() +
|
throw new InvalidParameterValueException("Failed LB in validation rule id: " + rule.getId() +
|
||||||
" Cause: length is not a number: " + length);
|
" Cause: length is not a number: " + length);
|
||||||
}
|
}
|
||||||
if ((holdTime != null) && (!containsOnlyNumbers(holdTime, timeEndChar) && !containsOnlyNumbers(holdTime, null))) {
|
if ((holdTime != null) && (!containsOnlyNumbers(holdTime, timeEndChar) && !containsOnlyNumbers(holdTime, null))) {
|
||||||
throw new InvalidParameterValueException("Failed LB in validation rule id: " + rule.getId() +
|
throw new InvalidParameterValueException("Failed LB in validation rule id: " + rule.getId() +
|
||||||
" Cause: holdtime is not in timeformat: " + holdTime);
|
" Cause: holdtime is not in timeformat: " + holdTime);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -400,7 +397,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
}
|
}
|
||||||
return _routerMgr.applyVpnUsers(network, users, routers);
|
return _routerMgr.applyVpnUsers(network, users, routers);
|
||||||
} else {
|
} else {
|
||||||
s_logger.debug("Element " + this.getName() + " doesn't handle applyVpnUsers command");
|
s_logger.debug("Element " + getName() + " doesn't handle applyVpnUsers command");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -416,7 +413,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
}
|
}
|
||||||
return _routerMgr.startRemoteAccessVpn(network, vpn, routers);
|
return _routerMgr.startRemoteAccessVpn(network, vpn, routers);
|
||||||
} else {
|
} else {
|
||||||
s_logger.debug("Element " + this.getName() + " doesn't handle createVpn command");
|
s_logger.debug("Element " + getName() + " doesn't handle createVpn command");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -432,13 +429,13 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
}
|
}
|
||||||
return _routerMgr.deleteRemoteAccessVpn(network, vpn, routers);
|
return _routerMgr.deleteRemoteAccessVpn(network, vpn, routers);
|
||||||
} else {
|
} else {
|
||||||
s_logger.debug("Element " + this.getName() + " doesn't handle removeVpn command");
|
s_logger.debug("Element " + getName() + " doesn't handle removeVpn command");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean applyIps(Network network, List<? extends PublicIpAddress> ipAddress, Set<Service> services)
|
public boolean applyIps(Network network, List<? extends PublicIpAddress> ipAddress, Set<Service> services)
|
||||||
throws ResourceUnavailableException {
|
throws ResourceUnavailableException {
|
||||||
boolean canHandle = true;
|
boolean canHandle = true;
|
||||||
for (Service service : services) {
|
for (Service service : services) {
|
||||||
@ -636,7 +633,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shutdown(Network network, ReservationContext context, boolean cleanup)
|
public boolean shutdown(Network network, ReservationContext context, boolean cleanup)
|
||||||
throws ConcurrentOperationException, ResourceUnavailableException {
|
throws ConcurrentOperationException, ResourceUnavailableException {
|
||||||
List<DomainRouterVO> routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER);
|
List<DomainRouterVO> routers = _routerDao.listByNetworkAndRole(network.getId(), Role.VIRTUAL_ROUTER);
|
||||||
if (routers == null || routers.isEmpty()) {
|
if (routers == null || routers.isEmpty()) {
|
||||||
@ -672,7 +669,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean savePassword(Network network, NicProfile nic, VirtualMachineProfile vm)
|
public boolean savePassword(Network network, NicProfile nic, VirtualMachineProfile vm)
|
||||||
throws ResourceUnavailableException {
|
throws ResourceUnavailableException {
|
||||||
if (!canHandle(network, null)) {
|
if (!canHandle(network, null)) {
|
||||||
return false;
|
return false;
|
||||||
@ -684,7 +681,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
VirtualMachineProfile uservm = (VirtualMachineProfile) vm;
|
VirtualMachineProfile uservm = vm;
|
||||||
|
|
||||||
return _routerMgr.savePasswordToRouter(network, nic, uservm, routers);
|
return _routerMgr.savePasswordToRouter(network, nic, uservm, routers);
|
||||||
}
|
}
|
||||||
@ -702,7 +699,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
VirtualMachineProfile uservm = (VirtualMachineProfile) vm;
|
VirtualMachineProfile uservm = vm;
|
||||||
|
|
||||||
return _routerMgr.saveSSHPublicKeyToRouter(network, nic, uservm, routers, SSHPublicKey);
|
return _routerMgr.saveSSHPublicKeyToRouter(network, nic, uservm, routers, SSHPublicKey);
|
||||||
}
|
}
|
||||||
@ -720,7 +717,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
VirtualMachineProfile uservm = (VirtualMachineProfile) vm;
|
VirtualMachineProfile uservm = vm;
|
||||||
|
|
||||||
return _routerMgr.saveUserDataToRouter(network, nic, uservm, routers);
|
return _routerMgr.saveUserDataToRouter(network, nic, uservm, routers);
|
||||||
}
|
}
|
||||||
@ -737,7 +734,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
@Override
|
@Override
|
||||||
public VirtualRouterProvider configure(ConfigureVirtualRouterElementCmd cmd) {
|
public VirtualRouterProvider configure(ConfigureVirtualRouterElementCmd cmd) {
|
||||||
VirtualRouterProviderVO element = _vrProviderDao.findById(cmd.getId());
|
VirtualRouterProviderVO element = _vrProviderDao.findById(cmd.getId());
|
||||||
if (element == null || !(element.getType() == VirtualRouterProviderType.VirtualRouter || element.getType() == VirtualRouterProviderType.VPCVirtualRouter)) {
|
if (element == null || !(element.getType() == Type.VirtualRouter || element.getType() == Type.VPCVirtualRouter)) {
|
||||||
s_logger.debug("Can't find Virtual Router element with network service provider id " + cmd.getId());
|
s_logger.debug("Can't find Virtual Router element with network service provider id " + cmd.getId());
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -749,10 +746,10 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public VirtualRouterProvider addElement(Long nspId, VirtualRouterProviderType providerType) {
|
public VirtualRouterProvider addElement(Long nspId, Type providerType) {
|
||||||
if (!(providerType == VirtualRouterProviderType.VirtualRouter || providerType == VirtualRouterProviderType.VPCVirtualRouter)) {
|
if (!(providerType == Type.VirtualRouter || providerType == Type.VPCVirtualRouter)) {
|
||||||
throw new InvalidParameterValueException("Element " + this.getName() + " supports only providerTypes: " +
|
throw new InvalidParameterValueException("Element " + getName() + " supports only providerTypes: " +
|
||||||
VirtualRouterProviderType.VirtualRouter.toString() + " and " + VirtualRouterProviderType.VPCVirtualRouter);
|
Type.VirtualRouter.toString() + " and " + Type.VPCVirtualRouter);
|
||||||
}
|
}
|
||||||
VirtualRouterProviderVO element = _vrProviderDao.findByNspIdAndType(nspId, providerType);
|
VirtualRouterProviderVO element = _vrProviderDao.findByNspIdAndType(nspId, providerType);
|
||||||
if (element != null) {
|
if (element != null) {
|
||||||
@ -786,7 +783,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isReady(PhysicalNetworkServiceProvider provider) {
|
public boolean isReady(PhysicalNetworkServiceProvider provider) {
|
||||||
VirtualRouterProviderVO element = _vrProviderDao.findByNspIdAndType(provider.getId(),
|
VirtualRouterProviderVO element = _vrProviderDao.findByNspIdAndType(provider.getId(),
|
||||||
getVirtualRouterProvider());
|
getVirtualRouterProvider());
|
||||||
if (element == null) {
|
if (element == null) {
|
||||||
return false;
|
return false;
|
||||||
@ -795,10 +792,10 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shutdownProviderInstances(PhysicalNetworkServiceProvider provider, ReservationContext context)
|
public boolean shutdownProviderInstances(PhysicalNetworkServiceProvider provider, ReservationContext context)
|
||||||
throws ConcurrentOperationException,
|
throws ConcurrentOperationException,
|
||||||
ResourceUnavailableException {
|
ResourceUnavailableException {
|
||||||
VirtualRouterProviderVO element = _vrProviderDao.findByNspIdAndType(provider.getId(),
|
VirtualRouterProviderVO element = _vrProviderDao.findByNspIdAndType(provider.getId(),
|
||||||
getVirtualRouterProvider());
|
getVirtualRouterProvider());
|
||||||
if (element == null) {
|
if (element == null) {
|
||||||
return true;
|
return true;
|
||||||
@ -821,14 +818,14 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Long getIdByNspId(Long nspId) {
|
public Long getIdByNspId(Long nspId) {
|
||||||
VirtualRouterProviderVO vr = _vrProviderDao.findByNspIdAndType(nspId, VirtualRouterProviderType.VirtualRouter);
|
VirtualRouterProviderVO vr = _vrProviderDao.findByNspIdAndType(nspId, Type.VirtualRouter);
|
||||||
return vr.getId();
|
return vr.getId();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public VirtualRouterProvider getCreatedElement(long id) {
|
public VirtualRouterProvider getCreatedElement(long id) {
|
||||||
VirtualRouterProvider provider = _vrProviderDao.findById(id);
|
VirtualRouterProvider provider = _vrProviderDao.findById(id);
|
||||||
if (!(provider.getType() == VirtualRouterProviderType.VirtualRouter || provider.getType() == VirtualRouterProviderType.VPCVirtualRouter)) {
|
if (!(provider.getType() == Type.VirtualRouter || provider.getType() == Type.VPCVirtualRouter)) {
|
||||||
throw new InvalidParameterValueException("Unable to find provider by id");
|
throw new InvalidParameterValueException("Unable to find provider by id");
|
||||||
}
|
}
|
||||||
return provider;
|
return provider;
|
||||||
@ -849,7 +846,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
VirtualMachineProfile uservm = (VirtualMachineProfile) vm;
|
VirtualMachineProfile uservm = vm;
|
||||||
|
|
||||||
List<DomainRouterVO> routers = getRouters(network, dest);
|
List<DomainRouterVO> routers = getRouters(network, dest);
|
||||||
|
|
||||||
@ -880,7 +877,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean addDhcpEntry(Network network, NicProfile nic, VirtualMachineProfile vm,
|
public boolean addDhcpEntry(Network network, NicProfile nic, VirtualMachineProfile vm,
|
||||||
DeployDestination dest, ReservationContext context)
|
DeployDestination dest, ReservationContext context)
|
||||||
throws ConcurrentOperationException, InsufficientCapacityException, ResourceUnavailableException {
|
throws ConcurrentOperationException, InsufficientCapacityException, ResourceUnavailableException {
|
||||||
if (canHandle(network, Service.Dhcp)) {
|
if (canHandle(network, Service.Dhcp)) {
|
||||||
@ -889,7 +886,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
VirtualMachineProfile uservm = (VirtualMachineProfile) vm;
|
VirtualMachineProfile uservm = vm;
|
||||||
|
|
||||||
List<DomainRouterVO> routers = getRouters(network, dest);
|
List<DomainRouterVO> routers = getRouters(network, dest);
|
||||||
|
|
||||||
@ -917,7 +914,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
VirtualMachineProfile uservm = (VirtualMachineProfile) vm;
|
VirtualMachineProfile uservm = vm;
|
||||||
|
|
||||||
List<DomainRouterVO> routers = getRouters(network, dest);
|
List<DomainRouterVO> routers = getRouters(network, dest);
|
||||||
|
|
||||||
@ -935,7 +932,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
if (_networkMgr.isProviderSupportServiceInNetwork(network.getId(), Service.SourceNat, getProvider())) {
|
if (_networkMgr.isProviderSupportServiceInNetwork(network.getId(), Service.SourceNat, getProvider())) {
|
||||||
publicNetwork = true;
|
publicNetwork = true;
|
||||||
}
|
}
|
||||||
boolean isPodBased = (dest.getDataCenter().getNetworkType() == NetworkType.Basic
|
boolean isPodBased = (dest.getDataCenter().getNetworkType() == NetworkType.Basic
|
||||||
|| _networkMgr.isSecurityGroupSupportedInNetwork(network)) &&
|
|| _networkMgr.isSecurityGroupSupportedInNetwork(network)) &&
|
||||||
network.getTrafficType() == TrafficType.Guest;
|
network.getTrafficType() == TrafficType.Guest;
|
||||||
|
|
||||||
@ -969,19 +966,19 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
Long nspId = cmd.getNspId();
|
Long nspId = cmd.getNspId();
|
||||||
Boolean enabled = cmd.getEnabled();
|
Boolean enabled = cmd.getEnabled();
|
||||||
|
|
||||||
GenericQueryBuilder<VirtualRouterProviderVO, VirtualRouterProviderVO> sc = GenericQueryBuilder.create(VirtualRouterProviderVO.class);
|
QueryBuilder<VirtualRouterProviderVO> sc = QueryBuilder.create(VirtualRouterProviderVO.class);
|
||||||
if (id != null) {
|
if (id != null) {
|
||||||
sc.addAnd(sc.getEntity().getId(), Op.EQ, id);
|
sc.and(sc.entity().getId(), Op.EQ, id);
|
||||||
}
|
}
|
||||||
if (nspId != null) {
|
if (nspId != null) {
|
||||||
sc.addAnd(sc.getEntity().getNspId(), Op.EQ, nspId);
|
sc.and(sc.entity().getNspId(), Op.EQ, nspId);
|
||||||
}
|
}
|
||||||
if (enabled != null) {
|
if (enabled != null) {
|
||||||
sc.addAnd(sc.getEntity().isEnabled(), Op.EQ, enabled);
|
sc.and(sc.entity().isEnabled(), Op.EQ, enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
//return only VR and VPC VR
|
//return only VR and VPC VR
|
||||||
sc.addAnd(sc.getEntity().getType(), Op.IN, VirtualRouterProvider.VirtualRouterProviderType.VPCVirtualRouter, VirtualRouterProvider.VirtualRouterProviderType.VirtualRouter);
|
sc.and(sc.entity().getType(), Op.IN, VirtualRouterProvider.Type.VPCVirtualRouter, VirtualRouterProvider.Type.VirtualRouter);
|
||||||
|
|
||||||
return sc.list();
|
return sc.list();
|
||||||
}
|
}
|
||||||
@ -989,7 +986,7 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
@Override
|
@Override
|
||||||
public boolean verifyServicesCombination(Set<Service> services) {
|
public boolean verifyServicesCombination(Set<Service> services) {
|
||||||
if (!services.contains(Service.SourceNat)) {
|
if (!services.contains(Service.SourceNat)) {
|
||||||
if (services.contains(Service.StaticNat) || services.contains(Service.Firewall) || services.contains(Service.Lb) ||
|
if (services.contains(Service.StaticNat) || services.contains(Service.Firewall) || services.contains(Service.Lb) ||
|
||||||
services.contains(Service.PortForwarding) || services.contains(Service.Vpn)) {
|
services.contains(Service.PortForwarding) || services.contains(Service.Vpn)) {
|
||||||
String servicesList = "[";
|
String servicesList = "[";
|
||||||
for (Service service : services) {
|
for (Service service : services) {
|
||||||
@ -1008,8 +1005,8 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected VirtualRouterProviderType getVirtualRouterProvider() {
|
protected VirtualRouterProvider.Type getVirtualRouterProvider() {
|
||||||
return VirtualRouterProviderType.VirtualRouter;
|
return VirtualRouterProvider.Type.VirtualRouter;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1019,13 +1016,13 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
private boolean canHandleLbRules(List<LoadBalancingRule> rules) {
|
private boolean canHandleLbRules(List<LoadBalancingRule> rules) {
|
||||||
Map<Capability, String> lbCaps = this.getCapabilities().get(Service.Lb);
|
Map<Capability, String> lbCaps = getCapabilities().get(Service.Lb);
|
||||||
if (!lbCaps.isEmpty()) {
|
if (!lbCaps.isEmpty()) {
|
||||||
String schemeCaps = lbCaps.get(Capability.LbSchemes);
|
String schemeCaps = lbCaps.get(Capability.LbSchemes);
|
||||||
if (schemeCaps != null) {
|
if (schemeCaps != null) {
|
||||||
for (LoadBalancingRule rule : rules) {
|
for (LoadBalancingRule rule : rules) {
|
||||||
if (!schemeCaps.contains(rule.getScheme().toString())) {
|
if (!schemeCaps.contains(rule.getScheme().toString())) {
|
||||||
s_logger.debug("Scheme " + rules.get(0).getScheme() + " is not supported by the provider " + this.getName());
|
s_logger.debug("Scheme " + rules.get(0).getScheme() + " is not supported by the provider " + getName());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1041,11 +1038,11 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
if (nic.getBroadcastType() != Networks.BroadcastDomainType.Pvlan) {
|
if (nic.getBroadcastType() != Networks.BroadcastDomainType.Pvlan) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (vm.getType() == Type.DomainRouter) {
|
if (vm.getType() == VirtualMachine.Type.DomainRouter) {
|
||||||
assert vm instanceof DomainRouterVO;
|
assert vm instanceof DomainRouterVO;
|
||||||
DomainRouterVO router = (DomainRouterVO)vm.getVirtualMachine();
|
DomainRouterVO router = (DomainRouterVO)vm.getVirtualMachine();
|
||||||
_routerMgr.setupDhcpForPvlan(false, router, router.getHostId(), nic);
|
_routerMgr.setupDhcpForPvlan(false, router, router.getHostId(), nic);
|
||||||
} else if (vm.getType() == Type.User){
|
} else if (vm.getType() == VirtualMachine.Type.User) {
|
||||||
assert vm instanceof UserVmVO;
|
assert vm instanceof UserVmVO;
|
||||||
UserVmVO userVm = (UserVmVO)vm.getVirtualMachine();
|
UserVmVO userVm = (UserVmVO)vm.getVirtualMachine();
|
||||||
_userVmMgr.setupVmForPvlan(false, userVm.getHostId(), nic);
|
_userVmMgr.setupVmForPvlan(false, userVm.getHostId(), nic);
|
||||||
@ -1060,11 +1057,11 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
if (nic.getBroadcastType() != Networks.BroadcastDomainType.Pvlan) {
|
if (nic.getBroadcastType() != Networks.BroadcastDomainType.Pvlan) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (vm.getType() == Type.DomainRouter) {
|
if (vm.getType() == VirtualMachine.Type.DomainRouter) {
|
||||||
assert vm instanceof DomainRouterVO;
|
assert vm instanceof DomainRouterVO;
|
||||||
DomainRouterVO router = (DomainRouterVO)vm.getVirtualMachine();
|
DomainRouterVO router = (DomainRouterVO)vm.getVirtualMachine();
|
||||||
_routerMgr.setupDhcpForPvlan(true, router, router.getHostId(), nic);
|
_routerMgr.setupDhcpForPvlan(true, router, router.getHostId(), nic);
|
||||||
} else if (vm.getType() == Type.User){
|
} else if (vm.getType() == VirtualMachine.Type.User) {
|
||||||
assert vm instanceof UserVmVO;
|
assert vm instanceof UserVmVO;
|
||||||
UserVmVO userVm = (UserVmVO)vm.getVirtualMachine();
|
UserVmVO userVm = (UserVmVO)vm.getVirtualMachine();
|
||||||
_userVmMgr.setupVmForPvlan(true, userVm.getHostId(), nic);
|
_userVmMgr.setupVmForPvlan(true, userVm.getHostId(), nic);
|
||||||
@ -1078,11 +1075,11 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
|
|||||||
if (nic.getBroadcastType() != Networks.BroadcastDomainType.Pvlan) {
|
if (nic.getBroadcastType() != Networks.BroadcastDomainType.Pvlan) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (vm.getType() == Type.DomainRouter) {
|
if (vm.getType() == VirtualMachine.Type.DomainRouter) {
|
||||||
assert vm instanceof DomainRouterVO;
|
assert vm instanceof DomainRouterVO;
|
||||||
DomainRouterVO router = (DomainRouterVO)vm.getVirtualMachine();
|
DomainRouterVO router = (DomainRouterVO)vm.getVirtualMachine();
|
||||||
_routerMgr.setupDhcpForPvlan(true, router, router.getHostId(), nic);
|
_routerMgr.setupDhcpForPvlan(true, router, router.getHostId(), nic);
|
||||||
} else if (vm.getType() == Type.User){
|
} else if (vm.getType() == VirtualMachine.Type.User) {
|
||||||
assert vm instanceof UserVmVO;
|
assert vm instanceof UserVmVO;
|
||||||
UserVmVO userVm = (UserVmVO)vm.getVirtualMachine();
|
UserVmVO userVm = (UserVmVO)vm.getVirtualMachine();
|
||||||
_userVmMgr.setupVmForPvlan(true, userVm.getHostId(), nic);
|
_userVmMgr.setupVmForPvlan(true, userVm.getHostId(), nic);
|
||||||
|
|||||||
@ -41,7 +41,7 @@ import com.cloud.network.NetworkModel;
|
|||||||
import com.cloud.network.PublicIpAddress;
|
import com.cloud.network.PublicIpAddress;
|
||||||
import com.cloud.network.Site2SiteVpnConnection;
|
import com.cloud.network.Site2SiteVpnConnection;
|
||||||
import com.cloud.network.Site2SiteVpnGateway;
|
import com.cloud.network.Site2SiteVpnGateway;
|
||||||
import com.cloud.network.VirtualRouterProvider.VirtualRouterProviderType;
|
import com.cloud.network.VirtualRouterProvider.Type;
|
||||||
import com.cloud.network.dao.IPAddressDao;
|
import com.cloud.network.dao.IPAddressDao;
|
||||||
import com.cloud.network.dao.NetworkDao;
|
import com.cloud.network.dao.NetworkDao;
|
||||||
import com.cloud.network.dao.Site2SiteVpnGatewayDao;
|
import com.cloud.network.dao.Site2SiteVpnGatewayDao;
|
||||||
@ -63,7 +63,7 @@ import com.cloud.utils.exception.CloudRuntimeException;
|
|||||||
import com.cloud.vm.DomainRouterVO;
|
import com.cloud.vm.DomainRouterVO;
|
||||||
import com.cloud.vm.NicProfile;
|
import com.cloud.vm.NicProfile;
|
||||||
import com.cloud.vm.ReservationContext;
|
import com.cloud.vm.ReservationContext;
|
||||||
import com.cloud.vm.VirtualMachine.Type;
|
import com.cloud.vm.VirtualMachine;
|
||||||
import com.cloud.vm.VirtualMachineProfile;
|
import com.cloud.vm.VirtualMachineProfile;
|
||||||
|
|
||||||
@Local(value = {NetworkElement.class, FirewallServiceProvider.class,
|
@Local(value = {NetworkElement.class, FirewallServiceProvider.class,
|
||||||
@ -210,7 +210,7 @@ public class VpcVirtualRouterElement extends VirtualRouterElement implements Vpc
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vm.getType() == Type.User) {
|
if (vm.getType() == VirtualMachine.Type.User) {
|
||||||
Map<VirtualMachineProfile.Param, Object> params = new HashMap<VirtualMachineProfile.Param, Object>(1);
|
Map<VirtualMachineProfile.Param, Object> params = new HashMap<VirtualMachineProfile.Param, Object>(1);
|
||||||
params.put(VirtualMachineProfile.Param.ReProgramGuestNetworks, true);
|
params.put(VirtualMachineProfile.Param.ReProgramGuestNetworks, true);
|
||||||
List<DomainRouterVO> routers = _vpcRouterMgr.deployVirtualRouterInVpc(vpc, dest,
|
List<DomainRouterVO> routers = _vpcRouterMgr.deployVirtualRouterInVpc(vpc, dest,
|
||||||
@ -434,8 +434,8 @@ public class VpcVirtualRouterElement extends VirtualRouterElement implements Vpc
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected VirtualRouterProviderType getVirtualRouterProvider() {
|
protected Type getVirtualRouterProvider() {
|
||||||
return VirtualRouterProviderType.VPCVirtualRouter;
|
return Type.VPCVirtualRouter;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -155,7 +155,7 @@ import com.cloud.network.Site2SiteVpnConnection;
|
|||||||
import com.cloud.network.SshKeysDistriMonitor;
|
import com.cloud.network.SshKeysDistriMonitor;
|
||||||
import com.cloud.network.VirtualNetworkApplianceService;
|
import com.cloud.network.VirtualNetworkApplianceService;
|
||||||
import com.cloud.network.VirtualRouterProvider;
|
import com.cloud.network.VirtualRouterProvider;
|
||||||
import com.cloud.network.VirtualRouterProvider.VirtualRouterProviderType;
|
import com.cloud.network.VirtualRouterProvider.Type;
|
||||||
import com.cloud.network.VpnUser;
|
import com.cloud.network.VpnUser;
|
||||||
import com.cloud.network.VpnUserVO;
|
import com.cloud.network.VpnUserVO;
|
||||||
import com.cloud.network.addr.PublicIp;
|
import com.cloud.network.addr.PublicIp;
|
||||||
@ -202,7 +202,7 @@ import com.cloud.server.ConfigurationServer;
|
|||||||
import com.cloud.service.ServiceOfferingVO;
|
import com.cloud.service.ServiceOfferingVO;
|
||||||
import com.cloud.service.dao.ServiceOfferingDao;
|
import com.cloud.service.dao.ServiceOfferingDao;
|
||||||
import com.cloud.storage.VMTemplateVO;
|
import com.cloud.storage.VMTemplateVO;
|
||||||
import com.cloud.storage.Volume.Type;
|
import com.cloud.storage.Volume;
|
||||||
import com.cloud.storage.VolumeVO;
|
import com.cloud.storage.VolumeVO;
|
||||||
import com.cloud.storage.dao.GuestOSDao;
|
import com.cloud.storage.dao.GuestOSDao;
|
||||||
import com.cloud.storage.dao.VMTemplateDao;
|
import com.cloud.storage.dao.VMTemplateDao;
|
||||||
@ -1506,7 +1506,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Check if providers are supported in the physical networks
|
// Check if providers are supported in the physical networks
|
||||||
VirtualRouterProviderType type = VirtualRouterProviderType.VirtualRouter;
|
Type type = Type.VirtualRouter;
|
||||||
Long physicalNetworkId = _networkModel.getPhysicalNetworkId(guestNetwork);
|
Long physicalNetworkId = _networkModel.getPhysicalNetworkId(guestNetwork);
|
||||||
PhysicalNetworkServiceProvider provider = _physicalProviderDao.findByServiceProvider(physicalNetworkId, type.toString());
|
PhysicalNetworkServiceProvider provider = _physicalProviderDao.findByServiceProvider(physicalNetworkId, type.toString());
|
||||||
if (provider == null) {
|
if (provider == null) {
|
||||||
@ -1930,7 +1930,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
|
|||||||
avoids[1] = new ExcludeList();
|
avoids[1] = new ExcludeList();
|
||||||
avoids[1].addCluster(_hostDao.findById(routerToBeAvoid.getHostId()).getClusterId());
|
avoids[1].addCluster(_hostDao.findById(routerToBeAvoid.getHostId()).getClusterId());
|
||||||
avoids[2] = new ExcludeList();
|
avoids[2] = new ExcludeList();
|
||||||
List<VolumeVO> volumes = _volumeDao.findByInstanceAndType(routerToBeAvoid.getId(), Type.ROOT);
|
List<VolumeVO> volumes = _volumeDao.findByInstanceAndType(routerToBeAvoid.getId(), Volume.Type.ROOT);
|
||||||
if (volumes != null && volumes.size() != 0) {
|
if (volumes != null && volumes.size() != 0) {
|
||||||
avoids[2].addPool(volumes.get(0).getPoolId());
|
avoids[2].addPool(volumes.get(0).getPoolId());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -72,7 +72,7 @@ import com.cloud.network.PhysicalNetworkServiceProvider;
|
|||||||
import com.cloud.network.PublicIpAddress;
|
import com.cloud.network.PublicIpAddress;
|
||||||
import com.cloud.network.Site2SiteVpnConnection;
|
import com.cloud.network.Site2SiteVpnConnection;
|
||||||
import com.cloud.network.VirtualRouterProvider;
|
import com.cloud.network.VirtualRouterProvider;
|
||||||
import com.cloud.network.VirtualRouterProvider.VirtualRouterProviderType;
|
import com.cloud.network.VirtualRouterProvider.Type;
|
||||||
import com.cloud.network.VpcVirtualNetworkApplianceService;
|
import com.cloud.network.VpcVirtualNetworkApplianceService;
|
||||||
import com.cloud.network.addr.PublicIp;
|
import com.cloud.network.addr.PublicIp;
|
||||||
import com.cloud.network.dao.FirewallRulesDao;
|
import com.cloud.network.dao.FirewallRulesDao;
|
||||||
@ -203,13 +203,13 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
|
|||||||
|
|
||||||
for (PhysicalNetwork pNtwk : pNtwks) {
|
for (PhysicalNetwork pNtwk : pNtwks) {
|
||||||
PhysicalNetworkServiceProvider provider = _physicalProviderDao.findByServiceProvider(pNtwk.getId(),
|
PhysicalNetworkServiceProvider provider = _physicalProviderDao.findByServiceProvider(pNtwk.getId(),
|
||||||
VirtualRouterProviderType.VPCVirtualRouter.toString());
|
Type.VPCVirtualRouter.toString());
|
||||||
if (provider == null) {
|
if (provider == null) {
|
||||||
throw new CloudRuntimeException("Cannot find service provider " +
|
throw new CloudRuntimeException("Cannot find service provider " +
|
||||||
VirtualRouterProviderType.VPCVirtualRouter.toString() + " in physical network " + pNtwk.getId());
|
Type.VPCVirtualRouter.toString() + " in physical network " + pNtwk.getId());
|
||||||
}
|
}
|
||||||
vpcVrProvider = _vrProviderDao.findByNspIdAndType(provider.getId(),
|
vpcVrProvider = _vrProviderDao.findByNspIdAndType(provider.getId(),
|
||||||
VirtualRouterProviderType.VPCVirtualRouter);
|
Type.VPCVirtualRouter);
|
||||||
if (vpcVrProvider != null) {
|
if (vpcVrProvider != null) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -140,12 +140,11 @@ import com.cloud.utils.component.ManagerBase;
|
|||||||
import com.cloud.utils.db.DB;
|
import com.cloud.utils.db.DB;
|
||||||
import com.cloud.utils.db.GenericSearchBuilder;
|
import com.cloud.utils.db.GenericSearchBuilder;
|
||||||
import com.cloud.utils.db.GlobalLock;
|
import com.cloud.utils.db.GlobalLock;
|
||||||
|
import com.cloud.utils.db.QueryBuilder;
|
||||||
import com.cloud.utils.db.SearchBuilder;
|
import com.cloud.utils.db.SearchBuilder;
|
||||||
import com.cloud.utils.db.SearchCriteria;
|
import com.cloud.utils.db.SearchCriteria;
|
||||||
import com.cloud.utils.db.SearchCriteria.Func;
|
import com.cloud.utils.db.SearchCriteria.Func;
|
||||||
import com.cloud.utils.db.SearchCriteria.Op;
|
import com.cloud.utils.db.SearchCriteria.Op;
|
||||||
import com.cloud.utils.db.GenericQueryBuilder;
|
|
||||||
import com.cloud.utils.db.GenericQueryBuilder;
|
|
||||||
import com.cloud.utils.db.Transaction;
|
import com.cloud.utils.db.Transaction;
|
||||||
import com.cloud.utils.exception.CloudRuntimeException;
|
import com.cloud.utils.exception.CloudRuntimeException;
|
||||||
import com.cloud.utils.fsm.NoTransitionException;
|
import com.cloud.utils.fsm.NoTransitionException;
|
||||||
@ -2256,27 +2255,27 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager,
|
|||||||
@Override
|
@Override
|
||||||
public List<HostVO> findDirectlyConnectedHosts() {
|
public List<HostVO> findDirectlyConnectedHosts() {
|
||||||
/* The resource column is not null for direct connected resource */
|
/* The resource column is not null for direct connected resource */
|
||||||
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);
|
||||||
sc.addAnd(sc.getEntity().getResource(), Op.NNULL);
|
sc.and(sc.entity().getResource(), Op.NNULL);
|
||||||
sc.addAnd(sc.getEntity().getResourceState(), Op.NIN, ResourceState.Disabled);
|
sc.and(sc.entity().getResourceState(), Op.NIN, ResourceState.Disabled);
|
||||||
return sc.list();
|
return sc.list();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<HostVO> listAllUpAndEnabledHosts(Type type, Long clusterId, Long podId, long dcId) {
|
public List<HostVO> listAllUpAndEnabledHosts(Type type, Long clusterId, Long podId, long dcId) {
|
||||||
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);
|
||||||
if (type != null) {
|
if (type != null) {
|
||||||
sc.addAnd(sc.getEntity().getType(), Op.EQ, type);
|
sc.and(sc.entity().getType(), Op.EQ,type);
|
||||||
}
|
}
|
||||||
if (clusterId != null) {
|
if (clusterId != null) {
|
||||||
sc.addAnd(sc.getEntity().getClusterId(), Op.EQ, clusterId);
|
sc.and(sc.entity().getClusterId(), Op.EQ,clusterId);
|
||||||
}
|
}
|
||||||
if (podId != null) {
|
if (podId != null) {
|
||||||
sc.addAnd(sc.getEntity().getPodId(), Op.EQ, podId);
|
sc.and(sc.entity().getPodId(), Op.EQ,podId);
|
||||||
}
|
}
|
||||||
sc.addAnd(sc.getEntity().getDataCenterId(), Op.EQ, dcId);
|
sc.and(sc.entity().getDataCenterId(), Op.EQ,dcId);
|
||||||
sc.addAnd(sc.getEntity().getStatus(), Op.EQ, Status.Up);
|
sc.and(sc.entity().getStatus(), Op.EQ,Status.Up);
|
||||||
sc.addAnd(sc.getEntity().getResourceState(), Op.EQ, ResourceState.Enabled);
|
sc.and(sc.entity().getResourceState(), Op.EQ,ResourceState.Enabled);
|
||||||
return sc.list();
|
return sc.list();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2288,60 +2287,60 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager,
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<HostVO> findHostByGuid(long dcId, String guid) {
|
public List<HostVO> findHostByGuid(long dcId, String guid) {
|
||||||
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);
|
||||||
sc.addAnd(sc.getEntity().getDataCenterId(), Op.EQ, dcId);
|
sc.and(sc.entity().getDataCenterId(), Op.EQ,dcId);
|
||||||
sc.addAnd(sc.getEntity().getGuid(), Op.EQ, guid);
|
sc.and(sc.entity().getGuid(), Op.EQ,guid);
|
||||||
return sc.list();
|
return sc.list();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<HostVO> listAllHostsInCluster(long clusterId) {
|
public List<HostVO> listAllHostsInCluster(long clusterId) {
|
||||||
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);
|
||||||
sc.addAnd(sc.getEntity().getClusterId(), Op.EQ, clusterId);
|
sc.and(sc.entity().getClusterId(), Op.EQ,clusterId);
|
||||||
return sc.list();
|
return sc.list();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<HostVO> listHostsInClusterByStatus(long clusterId, Status status) {
|
public List<HostVO> listHostsInClusterByStatus(long clusterId, Status status) {
|
||||||
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);
|
||||||
sc.addAnd(sc.getEntity().getClusterId(), Op.EQ, clusterId);
|
sc.and(sc.entity().getClusterId(), Op.EQ,clusterId);
|
||||||
sc.addAnd(sc.getEntity().getStatus(), Op.EQ, status);
|
sc.and(sc.entity().getStatus(), Op.EQ,status);
|
||||||
return sc.list();
|
return sc.list();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<HostVO> listAllUpAndEnabledHostsInOneZoneByType(Type type, long dcId) {
|
public List<HostVO> listAllUpAndEnabledHostsInOneZoneByType(Type type, long dcId) {
|
||||||
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);
|
||||||
sc.addAnd(sc.getEntity().getType(), Op.EQ, type);
|
sc.and(sc.entity().getType(), Op.EQ,type);
|
||||||
sc.addAnd(sc.getEntity().getDataCenterId(), Op.EQ, dcId);
|
sc.and(sc.entity().getDataCenterId(), Op.EQ,dcId);
|
||||||
sc.addAnd(sc.getEntity().getStatus(), Op.EQ, Status.Up);
|
sc.and(sc.entity().getStatus(), Op.EQ,Status.Up);
|
||||||
sc.addAnd(sc.getEntity().getResourceState(), Op.EQ, ResourceState.Enabled);
|
sc.and(sc.entity().getResourceState(), Op.EQ,ResourceState.Enabled);
|
||||||
return sc.list();
|
return sc.list();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<HostVO> listAllNotInMaintenanceHostsInOneZone(Type type, Long dcId) {
|
public List<HostVO> listAllNotInMaintenanceHostsInOneZone(Type type, Long dcId) {
|
||||||
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);
|
||||||
if (dcId != null) {
|
if (dcId != null) {
|
||||||
sc.addAnd(sc.getEntity().getDataCenterId(), Op.EQ, dcId);
|
sc.and(sc.entity().getDataCenterId(), Op.EQ,dcId);
|
||||||
}
|
}
|
||||||
sc.addAnd(sc.getEntity().getType(), Op.EQ, type);
|
sc.and(sc.entity().getType(), Op.EQ,type);
|
||||||
sc.addAnd(sc.getEntity().getResourceState(), Op.NIN, ResourceState.Maintenance, ResourceState.ErrorInMaintenance, ResourceState.PrepareForMaintenance, ResourceState.Error);
|
sc.and(sc.entity().getResourceState(), Op.NIN, ResourceState.Maintenance, ResourceState.ErrorInMaintenance, ResourceState.PrepareForMaintenance, ResourceState.Error);
|
||||||
return sc.list();
|
return sc.list();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<HostVO> listAllHostsInOneZoneByType(Type type, long dcId) {
|
public List<HostVO> listAllHostsInOneZoneByType(Type type, long dcId) {
|
||||||
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);
|
||||||
sc.addAnd(sc.getEntity().getType(), Op.EQ, type);
|
sc.and(sc.entity().getType(), Op.EQ,type);
|
||||||
sc.addAnd(sc.getEntity().getDataCenterId(), Op.EQ, dcId);
|
sc.and(sc.entity().getDataCenterId(), Op.EQ,dcId);
|
||||||
return sc.list();
|
return sc.list();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<HostVO> listAllHostsInAllZonesByType(Type type) {
|
public List<HostVO> listAllHostsInAllZonesByType(Type type) {
|
||||||
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);
|
||||||
sc.addAnd(sc.getEntity().getType(), Op.EQ, type);
|
sc.and(sc.entity().getType(), Op.EQ,type);
|
||||||
return sc.list();
|
return sc.list();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2370,15 +2369,15 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager,
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public HostVO findHostByGuid(String guid) {
|
public HostVO findHostByGuid(String guid) {
|
||||||
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);
|
||||||
sc.addAnd(sc.getEntity().getGuid(), Op.EQ, guid);
|
sc.and(sc.entity().getGuid(), Op.EQ,guid);
|
||||||
return sc.find();
|
return sc.find();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public HostVO findHostByName(String name) {
|
public HostVO findHostByName(String name) {
|
||||||
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);
|
||||||
sc.addAnd(sc.getEntity().getName(), Op.EQ, name);
|
sc.and(sc.entity().getName(), Op.EQ,name);
|
||||||
return sc.find();
|
return sc.find();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2449,11 +2448,11 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager,
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<HostVO> listAllUpAndEnabledHostsInOneZoneByHypervisor(HypervisorType type, long dcId) {
|
public List<HostVO> listAllUpAndEnabledHostsInOneZoneByHypervisor(HypervisorType type, long dcId) {
|
||||||
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);
|
||||||
sc.addAnd(sc.getEntity().getHypervisorType(), Op.EQ, type);
|
sc.and(sc.entity().getHypervisorType(), Op.EQ,type);
|
||||||
sc.addAnd(sc.getEntity().getDataCenterId(), Op.EQ, dcId);
|
sc.and(sc.entity().getDataCenterId(), Op.EQ,dcId);
|
||||||
sc.addAnd(sc.getEntity().getStatus(), Op.EQ, Status.Up);
|
sc.and(sc.entity().getStatus(), Op.EQ,Status.Up);
|
||||||
sc.addAnd(sc.getEntity().getResourceState(), Op.EQ, ResourceState.Enabled);
|
sc.and(sc.entity().getResourceState(), Op.EQ,ResourceState.Enabled);
|
||||||
return sc.list();
|
return sc.list();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -142,10 +142,10 @@ public class OCFS2ManagerImpl extends ManagerBase implements OCFS2Manager, Resou
|
|||||||
}
|
}
|
||||||
|
|
||||||
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
||||||
sc.addAnd(sc.getEntity().getClusterId(), Op.EQ, clusterId);
|
sc.and(sc.entity().getClusterId(), Op.EQ, clusterId);
|
||||||
sc.addAnd(sc.getEntity().getPodId(), Op.EQ, cluster.getPodId());
|
sc.and(sc.entity().getPodId(), Op.EQ, cluster.getPodId());
|
||||||
sc.addAnd(sc.getEntity().getDataCenterId(), Op.EQ, cluster.getDataCenterId());
|
sc.and(sc.entity().getDataCenterId(), Op.EQ, cluster.getDataCenterId());
|
||||||
sc.addAnd(sc.getEntity().getType(), Op.EQ, Host.Type.Routing);
|
sc.and(sc.entity().getType(), Op.EQ, Host.Type.Routing);
|
||||||
List<HostVO> hosts = sc.list();
|
List<HostVO> hosts = sc.list();
|
||||||
if (hosts.isEmpty()) {
|
if (hosts.isEmpty()) {
|
||||||
s_logger.debug("There is no host in cluster " + clusterId + ", no need to prepare OCFS2 nodes");
|
s_logger.debug("There is no host in cluster " + clusterId + ", no need to prepare OCFS2 nodes");
|
||||||
|
|||||||
@ -75,6 +75,7 @@ import com.cloud.exception.ResourceUnavailableException;
|
|||||||
import com.cloud.exception.StorageUnavailableException;
|
import com.cloud.exception.StorageUnavailableException;
|
||||||
import com.cloud.host.Host;
|
import com.cloud.host.Host;
|
||||||
import com.cloud.host.HostVO;
|
import com.cloud.host.HostVO;
|
||||||
|
import com.cloud.host.Status;
|
||||||
import com.cloud.host.dao.HostDao;
|
import com.cloud.host.dao.HostDao;
|
||||||
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
||||||
import com.cloud.info.RunningHostCountInfo;
|
import com.cloud.info.RunningHostCountInfo;
|
||||||
@ -114,9 +115,8 @@ import com.cloud.utils.NumbersUtil;
|
|||||||
import com.cloud.utils.Pair;
|
import com.cloud.utils.Pair;
|
||||||
import com.cloud.utils.component.ManagerBase;
|
import com.cloud.utils.component.ManagerBase;
|
||||||
import com.cloud.utils.db.GlobalLock;
|
import com.cloud.utils.db.GlobalLock;
|
||||||
|
import com.cloud.utils.db.QueryBuilder;
|
||||||
import com.cloud.utils.db.SearchCriteria.Op;
|
import com.cloud.utils.db.SearchCriteria.Op;
|
||||||
import com.cloud.utils.db.GenericQueryBuilder;
|
|
||||||
import com.cloud.utils.db.GenericQueryBuilder;
|
|
||||||
import com.cloud.utils.events.SubscriptionMgr;
|
import com.cloud.utils.events.SubscriptionMgr;
|
||||||
import com.cloud.utils.exception.CloudRuntimeException;
|
import com.cloud.utils.exception.CloudRuntimeException;
|
||||||
import com.cloud.utils.net.NetUtils;
|
import com.cloud.utils.net.NetUtils;
|
||||||
@ -420,9 +420,9 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar
|
|||||||
SecStorageFirewallCfgCommand thiscpc = new SecStorageFirewallCfgCommand(true);
|
SecStorageFirewallCfgCommand thiscpc = new SecStorageFirewallCfgCommand(true);
|
||||||
thiscpc.addPortConfig(thisSecStorageVm.getPublicIpAddress(), copyPort, true, TemplateConstants.DEFAULT_TMPLT_COPY_INTF);
|
thiscpc.addPortConfig(thisSecStorageVm.getPublicIpAddress(), copyPort, true, TemplateConstants.DEFAULT_TMPLT_COPY_INTF);
|
||||||
|
|
||||||
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);
|
||||||
sc.addAnd(sc.getEntity().getType(), Op.EQ, Host.Type.SecondaryStorageVM);
|
sc.and(sc.entity().getType(), Op.EQ,Host.Type.SecondaryStorageVM);
|
||||||
sc.addAnd(sc.getEntity().getStatus(), Op.IN, com.cloud.host.Status.Up, com.cloud.host.Status.Connecting);
|
sc.and(sc.entity().getStatus(), Op.IN, Status.Up, Status.Connecting);
|
||||||
List<HostVO> ssvms = sc.list();
|
List<HostVO> ssvms = sc.list();
|
||||||
for (HostVO ssvm : ssvms) {
|
for (HostVO ssvm : ssvms) {
|
||||||
if (ssvm.getId() == ssAHostId) {
|
if (ssvm.getId() == ssAHostId) {
|
||||||
@ -1345,12 +1345,12 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<HostVO> listUpAndConnectingSecondaryStorageVmHost(Long dcId) {
|
public List<HostVO> listUpAndConnectingSecondaryStorageVmHost(Long dcId) {
|
||||||
GenericQueryBuilder<HostVO, HostVO> sc = GenericQueryBuilder.create(HostVO.class);
|
QueryBuilder<HostVO> sc = QueryBuilder.create(HostVO.class);
|
||||||
if (dcId != null) {
|
if (dcId != null) {
|
||||||
sc.addAnd(sc.getEntity().getDataCenterId(), Op.EQ, dcId);
|
sc.and(sc.entity().getDataCenterId(), Op.EQ,dcId);
|
||||||
}
|
}
|
||||||
sc.addAnd(sc.getEntity().getState(), Op.IN, com.cloud.host.Status.Up, com.cloud.host.Status.Connecting);
|
sc.and(sc.entity().getState(), Op.IN, Status.Up, Status.Connecting);
|
||||||
sc.addAnd(sc.getEntity().getType(), Op.EQ, Host.Type.SecondaryStorageVM);
|
sc.and(sc.entity().getType(), Op.EQ,Host.Type.SecondaryStorageVM);
|
||||||
return sc.list();
|
return sc.list();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user