RemoteHostEndPoint.configure will set all private variables of this RemoteHostEndPoint instance based on passed HostVO instance.
Thanks -min On 4/23/14 12:53 AM, "Daan Hoogland" <[email protected]> wrote: >Min, > >You added a setId on an object, >+ private void setId(long id) { >+ HostVO host = _hostDao.findById(hostId); >+ if (host != null) { >+ configure(host); >+ } > } > >But nowhere in the method you set the Id on the object. Is This really >what is intended? > >regards, >Daan > >On Wed, Apr 23, 2014 at 4:23 AM, <[email protected]> wrote: >> Repository: cloudstack >> Updated Branches: >> refs/heads/4.4-forward be10b32b2 -> f3e9c84cd >> >> >> CLOUDSTACK-6478: Failed to download Template when having 3 SSVM's in one >> zone on Vmware. >> >> Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo >> Commit: >>http://git-wip-us.apache.org/repos/asf/cloudstack/commit/f3e9c84c >> Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/f3e9c84c >> Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/f3e9c84c >> >> Branch: refs/heads/4.4-forward >> Commit: f3e9c84cddbc0ab7b89f8000dd0db42ba1570d28 >> Parents: be10b32 >> Author: Min Chen <[email protected]> >> Authored: Tue Apr 22 19:14:55 2014 -0700 >> Committer: Min Chen <[email protected]> >> Committed: Tue Apr 22 19:14:55 2014 -0700 >> >> ---------------------------------------------------------------------- >> .../cloudstack/storage/RemoteHostEndPoint.java | 43 >>+++++++++++++++----- >> 1 file changed, 32 insertions(+), 11 deletions(-) >> ---------------------------------------------------------------------- >> >> >> >>http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f3e9c84c/engine/st >>orage/src/org/apache/cloudstack/storage/RemoteHostEndPoint.java >> ---------------------------------------------------------------------- >> diff --git >>a/engine/storage/src/org/apache/cloudstack/storage/RemoteHostEndPoint.jav >>a >>b/engine/storage/src/org/apache/cloudstack/storage/RemoteHostEndPoint.jav >>a >> index 34f9c9d..c54430f 100644 >> --- >>a/engine/storage/src/org/apache/cloudstack/storage/RemoteHostEndPoint.jav >>a >> +++ >>b/engine/storage/src/org/apache/cloudstack/storage/RemoteHostEndPoint.jav >>a >> @@ -25,8 +25,7 @@ import java.util.concurrent.TimeUnit; >> import javax.inject.Inject; >> >> import org.apache.log4j.Logger; >> -import com.cloud.vm.SecondaryStorageVmVO; >> -import com.cloud.vm.dao.SecondaryStorageVmDao; >> + >> import org.apache.cloudstack.engine.subsystem.api.storage.EndPoint; >> import org.apache.cloudstack.framework.async.AsyncCompletionCallback; >> import org.apache.cloudstack.managed.context.ManagedContextRunnable; >> @@ -43,11 +42,15 @@ import >>com.cloud.exception.AgentUnavailableException; >> import com.cloud.exception.ConnectionException; >> import com.cloud.exception.OperationTimedoutException; >> 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.HypervisorGuruManager; >> import com.cloud.utils.component.ComponentContext; >> import com.cloud.utils.concurrency.NamedThreadFactory; >> import com.cloud.utils.exception.CloudRuntimeException; >> +import com.cloud.vm.SecondaryStorageVmVO; >> +import com.cloud.vm.dao.SecondaryStorageVmDao; >> >> public class RemoteHostEndPoint implements EndPoint { >> private static final Logger s_logger = >>Logger.getLogger(RemoteHostEndPoint.class); >> @@ -60,6 +63,8 @@ public class RemoteHostEndPoint implements EndPoint { >> protected HypervisorGuruManager _hvGuruMgr; >> @Inject >> protected SecondaryStorageVmDao vmDao; >> + @Inject >> + protected HostDao _hostDao; >> private ScheduledExecutorService executor; >> >> public RemoteHostEndPoint() { >> @@ -67,14 +72,14 @@ public class RemoteHostEndPoint implements EndPoint >>{ >> } >> >> private void configure(Host host) { >> - this.hostId = host.getId(); >> - this.hostAddress = host.getPrivateIpAddress(); >> - this.publicAddress = host.getPublicIpAddress(); >> + hostId = host.getId(); >> + hostAddress = host.getPrivateIpAddress(); >> + publicAddress = host.getPublicIpAddress(); >> if (Host.Type.SecondaryStorageVM == host.getType()) { >> String vmName = host.getName(); >> SecondaryStorageVmVO ssvm = >>vmDao.findByInstanceName(vmName); >> if (ssvm != null) { >> - this.publicAddress = ssvm.getPublicIpAddress(); >> + publicAddress = ssvm.getPublicIpAddress(); >> } >> } >> } >> @@ -87,17 +92,25 @@ public class RemoteHostEndPoint implements EndPoint >>{ >> >> @Override >> public String getHostAddr() { >> - return this.hostAddress; >> + return hostAddress; >> } >> >> @Override >> public String getPublicAddr() { >> - return this.publicAddress; >> + return publicAddress; >> } >> >> @Override >> public long getId() { >> - return this.hostId; >> + return hostId; >> + } >> + >> + // used when HypervisorGuruManager choose a different host to send >>command >> + private void setId(long id) { >> + HostVO host = _hostDao.findById(hostId); >> + if (host != null) { >> + configure(host); >> + } >> } >> >> @Override >> @@ -105,6 +118,10 @@ public class RemoteHostEndPoint implements >>EndPoint { >> String errMsg = null; >> try { >> long newHostId = >>_hvGuruMgr.getGuruProcessedCommandTargetHost(hostId, cmd); >> + if (newHostId != hostId) { >> + // update endpoint with new host if changed >> + setId(newHostId); >> + } >> return agentMgr.send(newHostId, cmd); >> } catch (AgentUnavailableException e) { >> errMsg = e.toString(); >> @@ -126,7 +143,7 @@ public class RemoteHostEndPoint implements EndPoint >>{ >> >> @Override >> public boolean processAnswers(long agentId, long seq, Answer[] >>answers) { >> - this.answer = answers[0]; >> + answer = answers[0]; >> executor.schedule(this, 10, TimeUnit.SECONDS); >> return true; >> } >> @@ -182,7 +199,11 @@ public class RemoteHostEndPoint implements >>EndPoint { >> @Override >> public void sendMessageAsync(Command cmd, >>AsyncCompletionCallback<Answer> callback) { >> try { >> - long newHostId = >>_hvGuruMgr.getGuruProcessedCommandTargetHost(this.hostId, cmd); >> + long newHostId = >>_hvGuruMgr.getGuruProcessedCommandTargetHost(hostId, cmd); >> + if (newHostId != hostId) { >> + // update endpoint with new host if changed >> + setId(newHostId); >> + } >> if (s_logger.isDebugEnabled()) { >> s_logger.debug("Sending command " + cmd.toString() + " >>to host: " + newHostId); >> } >> > > > >-- >Daan
