diff --git a/server/src/main/java/com/cloud/hypervisor/kvm/discoverer/LibvirtServerDiscoverer.java b/server/src/main/java/com/cloud/hypervisor/kvm/discoverer/LibvirtServerDiscoverer.java index 0b8b40b1b9b..6c9bcace90f 100644 --- a/server/src/main/java/com/cloud/hypervisor/kvm/discoverer/LibvirtServerDiscoverer.java +++ b/server/src/main/java/com/cloud/hypervisor/kvm/discoverer/LibvirtServerDiscoverer.java @@ -210,6 +210,12 @@ public abstract class LibvirtServerDiscoverer extends DiscovererBase implements return null; } + // Set cluster GUID based on cluster ID if null + if (cluster.getGuid() == null) { + cluster.setGuid(UUID.nameUUIDFromBytes(String.valueOf(clusterId).getBytes()).toString()); + _clusterDao.update(clusterId, cluster); + } + Map> resources = new HashMap>(); Map details = new HashMap(); if (!uri.getScheme().equals("http")) { @@ -230,8 +236,9 @@ public abstract class LibvirtServerDiscoverer extends DiscovererBase implements if (existingHosts != null) { for (HostVO existingHost : existingHosts) { if (existingHost.getGuid().toLowerCase().startsWith(guid.toLowerCase())) { - s_logger.debug("Skipping " + agentIp + " because " + guid + " is already in the database for resource " + existingHost.getGuid()); - return null; + final String msg = "Skipping host " + agentIp + " because " + guid + " is already in the database for resource " + existingHost.getGuid() + " with ID " + existingHost.getUuid(); + s_logger.debug(msg); + throw new CloudRuntimeException(msg); } } } @@ -326,12 +333,6 @@ public abstract class LibvirtServerDiscoverer extends DiscovererBase implements details.put("guid", connectedHost.getGuid()); - // place a place holder guid derived from cluster ID - if (cluster.getGuid() == null) { - cluster.setGuid(UUID.nameUUIDFromBytes(String.valueOf(clusterId).getBytes()).toString()); - _clusterDao.update(clusterId, cluster); - } - // save user name and password _hostDao.loadDetails(connectedHost); Map hostDetails = connectedHost.getDetails();