fixed merge

This commit is contained in:
anthony 2011-05-16 16:54:00 -07:00
parent a0357a6af0
commit 9c4964bc1b
6 changed files with 61 additions and 21 deletions

View File

@ -17,16 +17,19 @@
*/
package com.cloud.agent.api;
public class ComputeChecksumCommand extends Command {
import com.cloud.agent.api.storage.ssCommand;
public class ComputeChecksumCommand extends ssCommand {
private String templatePath;
public ComputeChecksumCommand() {
super();
}
private String templatePath;
public ComputeChecksumCommand(String templatePath) {
super();
public ComputeChecksumCommand(String secUrl, String templatePath) {
super(secUrl);
this.templatePath = templatePath;
}
@ -34,9 +37,5 @@ public class ComputeChecksumCommand extends Command {
return templatePath;
}
@Override
public boolean executeInSequence() {
return true;
}
}

View File

@ -151,7 +151,7 @@ public class NfsSecondaryStorageResource extends ServerResourceBase implements S
private Answer execute(ComputeChecksumCommand cmd) {
String relativeTemplatePath = cmd.getTemplatePath();
String parent = _parent;
String parent = getRootDir(cmd);
if (relativeTemplatePath.startsWith(File.separator)) {
relativeTemplatePath = relativeTemplatePath.substring(1);

View File

@ -25,19 +25,27 @@ import com.cloud.agent.api.Answer;
import com.cloud.agent.api.Command;
import com.cloud.agent.manager.AgentAttache;
import com.cloud.agent.manager.Commands;
import com.cloud.api.commands.AddClusterCmd;
import com.cloud.api.commands.AddHostCmd;
import com.cloud.api.commands.AddSecondaryStorageCmd;
import com.cloud.api.commands.DeleteClusterCmd;
import com.cloud.api.commands.UpdateHostPasswordCmd;
import com.cloud.dc.DataCenterVO;
import com.cloud.dc.HostPodVO;
import com.cloud.dc.PodCluster;
import com.cloud.exception.AgentUnavailableException;
import com.cloud.exception.DiscoveryException;
import com.cloud.exception.InvalidParameterValueException;
import com.cloud.exception.OperationTimedoutException;
import com.cloud.host.Host;
import com.cloud.host.Host.Type;
import com.cloud.host.HostStats;
import com.cloud.host.HostVO;
import com.cloud.host.Status;
import com.cloud.host.Status.Event;
import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.offering.ServiceOffering;
import com.cloud.org.Cluster;
import com.cloud.resource.ServerResource;
import com.cloud.service.ServiceOfferingVO;
import com.cloud.template.VirtualMachineTemplate;
@ -271,4 +279,20 @@ public interface AgentManager extends Manager {
HostVO getSSAgent(HostVO ssHost);
void updateStatus(HostVO host, Event event);
List<? extends Cluster> discoverCluster(AddClusterCmd cmd) throws IllegalArgumentException, DiscoveryException;
Cluster getCluster(Long clusterId);
Cluster updateCluster(Cluster clusterToUpdate, String clusterType, String hypervisor, String allocationState);
boolean deleteCluster(DeleteClusterCmd cmd);
List<HostVO> discoverHosts(Long dcId, Long podId, Long clusterId, String clusterName, String url, String username, String password, String hypervisorType, List<String> hostTags)
throws IllegalArgumentException, DiscoveryException, InvalidParameterValueException;
List<? extends Host> discoverHosts(com.cloud.api.commands.AddSecondaryStorageCmd cmd) throws IllegalArgumentException, DiscoveryException, InvalidParameterValueException;
List<? extends Host> discoverHosts(AddHostCmd cmd) throws IllegalArgumentException, DiscoveryException, InvalidParameterValueException;
}

View File

@ -19,6 +19,9 @@ package com.cloud.agent.manager;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URLDecoder;
import java.nio.channels.ClosedChannelException;
import java.util.ArrayList;
import java.util.Enumeration;
@ -76,6 +79,10 @@ import com.cloud.agent.transport.Request;
import com.cloud.agent.transport.Response;
import com.cloud.alert.AlertManager;
import com.cloud.api.ApiConstants;
import com.cloud.api.commands.AddClusterCmd;
import com.cloud.api.commands.AddHostCmd;
import com.cloud.api.commands.AddSecondaryStorageCmd;
import com.cloud.api.commands.DeleteClusterCmd;
import com.cloud.api.commands.UpdateHostPasswordCmd;
import com.cloud.capacity.Capacity;
import com.cloud.capacity.CapacityVO;
@ -97,8 +104,11 @@ import com.cloud.dc.dao.HostPodDao;
import com.cloud.event.dao.EventDao;
import com.cloud.exception.AgentUnavailableException;
import com.cloud.exception.ConnectionException;
import com.cloud.exception.DiscoveredWithErrorException;
import com.cloud.exception.DiscoveryException;
import com.cloud.exception.InvalidParameterValueException;
import com.cloud.exception.OperationTimedoutException;
import com.cloud.exception.PermissionDeniedException;
import com.cloud.exception.UnsupportedVersionException;
import com.cloud.ha.HighAvailabilityManager;
import com.cloud.ha.HighAvailabilityManager.WorkType;
@ -113,11 +123,14 @@ import com.cloud.host.Status.Event;
import com.cloud.host.dao.HostDao;
import com.cloud.host.dao.HostDetailsDao;
import com.cloud.host.dao.HostTagsDao;
import com.cloud.hypervisor.Hypervisor;
import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.hypervisor.kvm.resource.KvmDummyResourceBase;
import com.cloud.network.IPAddressVO;
import com.cloud.network.dao.IPAddressDao;
import com.cloud.offering.ServiceOffering;
import com.cloud.org.Cluster;
import com.cloud.org.Grouping;
import com.cloud.resource.Discoverer;
import com.cloud.resource.ServerResource;
import com.cloud.service.ServiceOfferingVO;
@ -132,13 +145,16 @@ import com.cloud.storage.dao.StoragePoolHostDao;
import com.cloud.storage.dao.VMTemplateHostDao;
import com.cloud.storage.resource.DummySecondaryStorageResource;
import com.cloud.template.VirtualMachineTemplate;
import com.cloud.user.Account;
import com.cloud.user.AccountManager;
import com.cloud.user.User;
import com.cloud.user.UserContext;
import com.cloud.uservm.UserVm;
import com.cloud.utils.ActionDelegate;
import com.cloud.utils.NumbersUtil;
import com.cloud.utils.Pair;
import com.cloud.utils.StringUtils;
import com.cloud.utils.UriUtils;
import com.cloud.utils.component.Adapters;
import com.cloud.utils.component.ComponentLocator;
import com.cloud.utils.component.Inject;

View File

@ -1587,17 +1587,16 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
@Override
public String getChecksum(Long hostId, String templatePath){
HostVO ssHost = _hostDao.findById(hostId);
Host.Type type = ssHost.getType();
if( type != Host.Type.SecondaryStorage && type != Host.Type.LocalSecondaryStorage ) {
return null;
}
String secUrl = ssHost.getStorageUrl();
Answer answer;
try {
answer = _agentMgr.send(hostId, new ComputeChecksumCommand(templatePath));
if(answer.getResult())
return answer.getDetails();
else
return null;
} catch (AgentUnavailableException e) {
s_logger.error("Unable to send ComputeChecksumCommand to " + hostId, e);
} catch (OperationTimedoutException e) {
s_logger.error("Unable to send ComputeChecksumCommand to " + hostId, e);
answer = _agentMgr.sendToSecStorage(ssHost, new ComputeChecksumCommand(secUrl, templatePath));
if(answer.getResult()) {
return answer.getDetails();
}
return null;
}

View File

@ -17,10 +17,12 @@
*/
package com.cloud.utils.nio;
import java.util.List;
/**
* WorkerFactory creates and selects workers.
*/
public interface HandlerFactory {
public Task create(Task.Type type, Link link, byte[] data);
}