Refactored the destroy console proxy command

This commit is contained in:
abhishek 2010-08-26 11:10:29 -07:00
parent 14fde77792
commit f73d14e267
5 changed files with 61 additions and 48 deletions

View File

@ -18,20 +18,12 @@
package com.cloud.api.commands; package com.cloud.api.commands;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import com.cloud.api.BaseAsyncCmd; import com.cloud.api.BaseAsyncCmd;
import com.cloud.api.BaseCmd;
import com.cloud.api.Implementation; import com.cloud.api.Implementation;
import com.cloud.api.Parameter; import com.cloud.api.Parameter;
import com.cloud.api.ServerApiException;
import com.cloud.api.BaseCmd.Manager; import com.cloud.api.BaseCmd.Manager;
import com.cloud.utils.Pair;
import com.cloud.vm.ConsoleProxyVO;
@Implementation(method="destroyConsoleProxy", manager=Manager.ConsoleProxyManager) @Implementation(method="destroyConsoleProxy", manager=Manager.ConsoleProxyManager)
public class DestroyConsoleProxyCmd extends BaseAsyncCmd { public class DestroyConsoleProxyCmd extends BaseAsyncCmd {
@ -64,27 +56,27 @@ public class DestroyConsoleProxyCmd extends BaseAsyncCmd {
return s_name; return s_name;
} }
public List<Pair<String, Object>> execute(Map<String, Object> params) { // public List<Pair<String, Object>> execute(Map<String, Object> params) {
Long proxyId = (Long)params.get(BaseCmd.Properties.ID.getName()); // Long proxyId = (Long)params.get(BaseCmd.Properties.ID.getName());
//
// verify parameters // // verify parameters
ConsoleProxyVO proxy = getManagementServer().findConsoleProxyById(proxyId); // ConsoleProxyVO proxy = getManagementServer().findConsoleProxyById(proxyId);
if (proxy == null) { // if (proxy == null) {
throw new ServerApiException (BaseCmd.PARAM_ERROR, "unable to find a console proxy with id " + proxyId); // throw new ServerApiException (BaseCmd.PARAM_ERROR, "unable to find a console proxy with id " + proxyId);
} // }
//
long jobId = getManagementServer().destroyConsoleProxyAsync(proxyId.longValue()); // long jobId = getManagementServer().destroyConsoleProxyAsync(proxyId.longValue());
if(jobId == 0) { // if(jobId == 0) {
s_logger.warn("Unable to schedule async-job for DestroyConsoleProxy comamnd"); // s_logger.warn("Unable to schedule async-job for DestroyConsoleProxy comamnd");
} else { // } else {
if(s_logger.isDebugEnabled()) // if(s_logger.isDebugEnabled())
s_logger.debug("DestroyConsoleProxy command has been accepted, job id: " + jobId); // s_logger.debug("DestroyConsoleProxy command has been accepted, job id: " + jobId);
} // }
//
List<Pair<String, Object>> returnValues = new ArrayList<Pair<String, Object>>(); // List<Pair<String, Object>> returnValues = new ArrayList<Pair<String, Object>>();
returnValues.add(new Pair<String, Object>(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId))); // returnValues.add(new Pair<String, Object>(BaseCmd.Properties.JOB_ID.getName(), Long.valueOf(jobId)));
return returnValues; // return returnValues;
} // }
@Override @Override

View File

@ -22,6 +22,7 @@ import com.cloud.agent.api.AgentControlAnswer;
import com.cloud.agent.api.ConsoleAccessAuthenticationCommand; import com.cloud.agent.api.ConsoleAccessAuthenticationCommand;
import com.cloud.agent.api.ConsoleProxyLoadReportCommand; import com.cloud.agent.api.ConsoleProxyLoadReportCommand;
import com.cloud.agent.api.StartupCommand; import com.cloud.agent.api.StartupCommand;
import com.cloud.api.ServerApiException;
import com.cloud.api.commands.DestroyConsoleProxyCmd; import com.cloud.api.commands.DestroyConsoleProxyCmd;
import com.cloud.host.HostVO; import com.cloud.host.HostVO;
import com.cloud.host.Status; import com.cloud.host.Status;
@ -52,5 +53,5 @@ public interface ConsoleProxyManager extends Manager {
public void onAgentConnect(HostVO host, StartupCommand cmd); public void onAgentConnect(HostVO host, StartupCommand cmd);
public void onAgentDisconnect(long agentId, Status state); public void onAgentDisconnect(long agentId, Status state);
public boolean destroyConsoleProxy(DestroyConsoleProxyCmd cmd); public boolean destroyConsoleProxy(DestroyConsoleProxyCmd cmd) throws ServerApiException;
} }

View File

@ -57,6 +57,9 @@ import com.cloud.agent.api.StopAnswer;
import com.cloud.agent.api.StopCommand; import com.cloud.agent.api.StopCommand;
import com.cloud.agent.api.proxy.ConsoleProxyLoadAnswer; import com.cloud.agent.api.proxy.ConsoleProxyLoadAnswer;
import com.cloud.agent.manager.AgentManager; import com.cloud.agent.manager.AgentManager;
import com.cloud.api.BaseCmd;
import com.cloud.api.ServerApiException;
import com.cloud.api.commands.DestroyConsoleProxyCmd;
import com.cloud.async.AsyncJobExecutor; import com.cloud.async.AsyncJobExecutor;
import com.cloud.async.AsyncJobManager; import com.cloud.async.AsyncJobManager;
import com.cloud.async.AsyncJobVO; import com.cloud.async.AsyncJobVO;
@ -76,6 +79,7 @@ import com.cloud.dc.dao.VlanDao;
import com.cloud.domain.DomainVO; import com.cloud.domain.DomainVO;
import com.cloud.event.EventState; import com.cloud.event.EventState;
import com.cloud.event.EventTypes; import com.cloud.event.EventTypes;
import com.cloud.event.EventUtils;
import com.cloud.event.EventVO; import com.cloud.event.EventVO;
import com.cloud.event.dao.EventDao; import com.cloud.event.dao.EventDao;
import com.cloud.exception.AgentUnavailableException; import com.cloud.exception.AgentUnavailableException;
@ -2360,4 +2364,20 @@ public class ConsoleProxyManagerImpl implements ConsoleProxyManager,
return event.getId(); return event.getId();
return null; return null;
} }
@Override
public boolean destroyConsoleProxy(DestroyConsoleProxyCmd cmd) throws ServerApiException{
Long proxyId = cmd.getId();
// verify parameters
ConsoleProxyVO proxy = _consoleProxyDao.findById(proxyId);
if (proxy == null) {
throw new ServerApiException (BaseCmd.PARAM_ERROR, "unable to find a console proxy with id " + proxyId);
}
long eventId = EventUtils.saveScheduledEvent(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM, EventTypes.EVENT_PROXY_DESTROY, "destroying console proxy with Id: "+proxyId);
return destroyProxy(proxyId, eventId);
}
} }

View File

@ -1322,8 +1322,8 @@ public interface ManagementServer {
long stopConsoleProxyAsync(long instanceId); long stopConsoleProxyAsync(long instanceId);
boolean rebootConsoleProxy(long instanceId, long startEventId); boolean rebootConsoleProxy(long instanceId, long startEventId);
long rebootConsoleProxyAsync(long instanceId); long rebootConsoleProxyAsync(long instanceId);
boolean destroyConsoleProxy(long instanceId, long startEventId); // boolean destroyConsoleProxy(long instanceId, long startEventId);
long destroyConsoleProxyAsync(long instanceId); // long destroyConsoleProxyAsync(long instanceId);
String getConsoleAccessUrlRoot(long vmId); String getConsoleAccessUrlRoot(long vmId);
ConsoleProxyVO findConsoleProxyById(long instanceId); ConsoleProxyVO findConsoleProxyById(long instanceId);
VMInstanceVO findSystemVMById(long instanceId); VMInstanceVO findSystemVMById(long instanceId);

View File

@ -5966,9 +5966,9 @@ public class ManagementServerImpl implements ManagementServer {
return _consoleProxyMgr.rebootProxy(instanceId, startEventId); return _consoleProxyMgr.rebootProxy(instanceId, startEventId);
} }
public boolean destroyConsoleProxy(long instanceId, long startEventId) { // public boolean destroyConsoleProxy(long instanceId, long startEventId) {
return _consoleProxyMgr.destroyProxy(instanceId, startEventId); // return _consoleProxyMgr.destroyProxy(instanceId, startEventId);
} // }
public long startConsoleProxyAsync(long instanceId) { public long startConsoleProxyAsync(long instanceId) {
long eventId = EventUtils.saveScheduledEvent(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM, EventTypes.EVENT_PROXY_START, "starting console proxy with Id: "+instanceId); long eventId = EventUtils.saveScheduledEvent(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM, EventTypes.EVENT_PROXY_START, "starting console proxy with Id: "+instanceId);
@ -6016,19 +6016,19 @@ public class ManagementServerImpl implements ManagementServer {
return _asyncMgr.submitAsyncJob(job, true); return _asyncMgr.submitAsyncJob(job, true);
} }
public long destroyConsoleProxyAsync(long instanceId) { // public long destroyConsoleProxyAsync(long instanceId) {
long eventId = EventUtils.saveScheduledEvent(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM, EventTypes.EVENT_PROXY_DESTROY, "destroying console proxy with Id: "+instanceId); // long eventId = EventUtils.saveScheduledEvent(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM, EventTypes.EVENT_PROXY_DESTROY, "destroying console proxy with Id: "+instanceId);
VMOperationParam param = new VMOperationParam(0, instanceId, null, eventId); // VMOperationParam param = new VMOperationParam(0, instanceId, null, eventId);
Gson gson = GsonHelper.getBuilder().create(); // Gson gson = GsonHelper.getBuilder().create();
//
AsyncJobVO job = new AsyncJobVO(); // AsyncJobVO job = new AsyncJobVO();
job.setUserId(UserContext.current().getUserId()); // job.setUserId(UserContext.current().getUserId());
job.setAccountId(Account.ACCOUNT_ID_SYSTEM); // job.setAccountId(Account.ACCOUNT_ID_SYSTEM);
job.setCmd("DestroyConsoleProxy"); // job.setCmd("DestroyConsoleProxy");
job.setCmdInfo(gson.toJson(param)); // job.setCmdInfo(gson.toJson(param));
//
return _asyncMgr.submitAsyncJob(job); // return _asyncMgr.submitAsyncJob(job);
} // }
public String getConsoleAccessUrlRoot(long vmId) { public String getConsoleAccessUrlRoot(long vmId) {
VMInstanceVO vm = this.findVMInstanceById(vmId); VMInstanceVO vm = this.findVMInstanceById(vmId);