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

Reply via email to