mirror of https://github.com/apache/cloudstack.git
Let discovers be able to identify itself
This commit is contained in:
parent
5726ebc62b
commit
2719972cf6
|
|
@ -62,6 +62,9 @@ public class AddHostCmd extends BaseCmd {
|
|||
|
||||
@Parameter(name=ApiConstants.ZONE_ID, type=CommandType.LONG, required=true, description="the Zone ID for the host")
|
||||
private Long zoneId;
|
||||
|
||||
@Parameter(name=ApiConstants.HYPERVISOR, type=CommandType.STRING, required=false, description="hypervisor type of the host")
|
||||
private String hypervisor;
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
|
|
@ -95,6 +98,10 @@ public class AddHostCmd extends BaseCmd {
|
|||
public Long getZoneId() {
|
||||
return zoneId;
|
||||
}
|
||||
|
||||
public String getHypervisor() {
|
||||
return hypervisor;
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////
|
||||
/////////////// API Implementation///////////////////
|
||||
|
|
|
|||
|
|
@ -222,7 +222,8 @@ public interface AgentManager extends Manager {
|
|||
public boolean executeUserRequest(long hostId, Event event) throws AgentUnavailableException;
|
||||
public boolean reconnect(final long hostId) throws AgentUnavailableException;
|
||||
|
||||
public List<HostVO> discoverHosts(Long dcId, Long podId, Long clusterId, String clusterName, String url, String username, String password) throws IllegalArgumentException, DiscoveryException, InvalidParameterValueException;
|
||||
public List<HostVO> discoverHosts(Long dcId, Long podId, Long clusterId, String clusterName, String url, String username, String password, String hypervisor)
|
||||
throws IllegalArgumentException, DiscoveryException, InvalidParameterValueException;
|
||||
|
||||
Answer easySend(Long hostId, Command cmd, int timeout);
|
||||
|
||||
|
|
|
|||
|
|
@ -118,6 +118,7 @@ import com.cloud.host.Status;
|
|||
import com.cloud.host.Status.Event;
|
||||
import com.cloud.host.dao.DetailsDao;
|
||||
import com.cloud.host.dao.HostDao;
|
||||
import com.cloud.hypervisor.Hypervisor;
|
||||
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
||||
import com.cloud.hypervisor.kvm.resource.KvmDummyResourceBase;
|
||||
import com.cloud.maid.StackMaid;
|
||||
|
|
@ -557,18 +558,19 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory, ResourceS
|
|||
if( clusterName == null && clusterId == null ) {
|
||||
clusterName = "Standalone-" + url;
|
||||
}
|
||||
return discoverHosts(dcId, podId, clusterId, clusterName, url, username, password);
|
||||
return discoverHosts(dcId, podId, clusterId, clusterName, url, username, password, cmd.getHypervisor());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Host> discoverHosts(AddSecondaryStorageCmd cmd) throws IllegalArgumentException, DiscoveryException, InvalidParameterValueException {
|
||||
Long dcId = cmd.getZoneId();
|
||||
String url = cmd.getUrl();
|
||||
return discoverHosts(dcId, null, null, null, url, null, null);
|
||||
return discoverHosts(dcId, null, null, null, url, null, null, "");
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<HostVO> discoverHosts(Long dcId, Long podId, Long clusterId, String clusterName, String url, String username, String password) throws IllegalArgumentException, DiscoveryException, InvalidParameterValueException {
|
||||
public List<HostVO> discoverHosts(Long dcId, Long podId, Long clusterId, String clusterName, String url, String username, String password, String hypervisorType)
|
||||
throws IllegalArgumentException, DiscoveryException, InvalidParameterValueException {
|
||||
URI uri = null;
|
||||
|
||||
//Check if the zone exists in the system
|
||||
|
|
@ -639,6 +641,11 @@ public class AgentManagerImpl implements AgentManager, HandlerFactory, ResourceS
|
|||
Enumeration<Discoverer> en = _discoverers.enumeration();
|
||||
while (en.hasMoreElements()) {
|
||||
Discoverer discoverer = en.nextElement();
|
||||
if(hypervisorType != null) {
|
||||
if(!discoverer.matchHypervisor(hypervisorType))
|
||||
continue;
|
||||
}
|
||||
|
||||
Map<? extends ServerResource, Map<String, String>> resources = null;
|
||||
|
||||
try {
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ import com.cloud.host.Host;
|
|||
import com.cloud.host.HostVO;
|
||||
import com.cloud.host.Status;
|
||||
import com.cloud.host.dao.HostDao;
|
||||
import com.cloud.hypervisor.Hypervisor;
|
||||
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
||||
import com.cloud.hypervisor.kvm.resource.KvmDummyResourceBase;
|
||||
import com.cloud.resource.Discoverer;
|
||||
|
|
@ -310,6 +311,18 @@ public class KvmServerDiscoverer extends DiscovererBase implements Discoverer,
|
|||
public void postDiscovery(List<HostVO> hosts, long msId)
|
||||
throws DiscoveryException {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
|
||||
public Hypervisor.HypervisorType getHypervisorType() {
|
||||
return Hypervisor.HypervisorType.KVM;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matchHypervisor(String hypervisor) {
|
||||
// for backwards compatibility, if not supplied, always let to try it
|
||||
if(hypervisor == null)
|
||||
return true;
|
||||
|
||||
return Hypervisor.HypervisorType.KVM.toString().equalsIgnoreCase(hypervisor);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@ import com.cloud.host.HostInfo;
|
|||
import com.cloud.host.HostVO;
|
||||
import com.cloud.host.Status;
|
||||
import com.cloud.host.dao.HostDao;
|
||||
import com.cloud.hypervisor.Hypervisor;
|
||||
import com.cloud.hypervisor.Hypervisor.HypervisorType;
|
||||
import com.cloud.hypervisor.xen.resource.CitrixResourceBase;
|
||||
import com.cloud.hypervisor.xen.resource.XcpServerResource;
|
||||
|
|
@ -478,7 +479,14 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
|
|||
createXsToolsISO();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean matchHypervisor(String hypervisor) {
|
||||
if(hypervisor == null)
|
||||
return true;
|
||||
return Hypervisor.HypervisorType.XenServer.toString().equalsIgnoreCase(hypervisor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postDiscovery(List<HostVO> hosts, long msId) throws DiscoveryException{
|
||||
//do nothing
|
||||
|
|
@ -540,4 +548,5 @@ public class XcpServerDiscoverer extends DiscovererBase implements Discoverer, L
|
|||
public boolean processTimeout(long agentId, long seq) {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ import java.util.Map;
|
|||
|
||||
import com.cloud.exception.DiscoveryException;
|
||||
import com.cloud.host.HostVO;
|
||||
import com.cloud.hypervisor.Hypervisor;
|
||||
import com.cloud.utils.component.Adapter;
|
||||
|
||||
/**
|
||||
|
|
@ -41,4 +42,6 @@ public interface Discoverer extends Adapter {
|
|||
Map<? extends ServerResource, Map<String, String>> find(long dcId, Long podId, Long clusterId, URI uri, String username, String password) throws DiscoveryException;
|
||||
|
||||
void postDiscovery(List<HostVO> hosts, long msId) throws DiscoveryException;
|
||||
|
||||
boolean matchHypervisor(String hypervisor);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ import javax.naming.ConfigurationException;
|
|||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.host.HostVO;
|
||||
import com.cloud.hypervisor.Hypervisor;
|
||||
|
||||
@Local(value=Discoverer.class)
|
||||
public class DummyHostDiscoverer implements Discoverer {
|
||||
|
|
@ -88,7 +89,12 @@ public class DummyHostDiscoverer implements Discoverer {
|
|||
public boolean stop() {
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean matchHypervisor(String hypervisor) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postDiscovery(List<HostVO> hosts, long msId) {
|
||||
//do nothing
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ import com.cloud.configuration.dao.ConfigurationDao;
|
|||
import com.cloud.host.HostVO;
|
||||
import com.cloud.host.Status.Event;
|
||||
import com.cloud.host.dao.HostDao;
|
||||
import com.cloud.hypervisor.Hypervisor;
|
||||
import com.cloud.resource.Discoverer;
|
||||
import com.cloud.resource.DiscovererBase;
|
||||
import com.cloud.resource.ServerResource;
|
||||
|
|
@ -237,6 +238,11 @@ public class SecondaryStorageDiscoverer extends DiscovererBase implements Discov
|
|||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matchHypervisor(String hypervisor) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postDiscovery(List<HostVO> hosts, long msId) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue