You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ke...@apache.org on 2014/06/25 01:33:24 UTC
git commit: updated refs/heads/master to f756d4a
Repository: cloudstack
Updated Branches:
refs/heads/master 3d9eaf075 -> f756d4aa3
Make job info universally available across management server and resource agents
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/f756d4aa
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/f756d4aa
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/f756d4aa
Branch: refs/heads/master
Commit: f756d4aa334dfd9b0798a291061c9e1260a2d230
Parents: 3d9eaf0
Author: Kelven Yang <ke...@gmail.com>
Authored: Mon Jun 23 16:44:59 2014 -0700
Committer: Kelven Yang <ke...@gmail.com>
Committed: Tue Jun 24 16:28:22 2014 -0700
----------------------------------------------------------------------
.../cloud/agent/manager/AgentManagerImpl.java | 21 +++++++++
.../vmware/resource/VmwareResource.java | 16 ++++++-
.../VmwareSecondaryStorageResourceHandler.java | 47 ++++++++++----------
3 files changed, 59 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f756d4aa/engine/orchestration/src/com/cloud/agent/manager/AgentManagerImpl.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/agent/manager/AgentManagerImpl.java b/engine/orchestration/src/com/cloud/agent/manager/AgentManagerImpl.java
index c0a87ad..fdb88d0 100755
--- a/engine/orchestration/src/com/cloud/agent/manager/AgentManagerImpl.java
+++ b/engine/orchestration/src/com/cloud/agent/manager/AgentManagerImpl.java
@@ -43,6 +43,8 @@ import org.apache.log4j.Logger;
import org.apache.cloudstack.framework.config.ConfigKey;
import org.apache.cloudstack.framework.config.Configurable;
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
+import org.apache.cloudstack.framework.jobs.AsyncJob;
+import org.apache.cloudstack.framework.jobs.AsyncJobExecutionContext;
import org.apache.cloudstack.managed.context.ManagedContextRunnable;
import org.apache.cloudstack.utils.identity.ManagementServerNode;
@@ -379,6 +381,18 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl
return !txn.dbTxnStarted();
}
+ private static void tagCommand(Command cmd) {
+ AsyncJobExecutionContext context = AsyncJobExecutionContext.getCurrentExecutionContext();
+ if (context != null && context.getJob() != null) {
+ AsyncJob job = context.getJob();
+
+ if (job.getRelated() != null && !job.getRelated().isEmpty())
+ cmd.setContextParam("job", "job-" + job.getRelated() + "/" + "job-" + job.getId());
+ else
+ cmd.setContextParam("job", "job-" + job.getId());
+ }
+ }
+
@Override
public Answer[] send(Long hostId, Commands commands, int timeout) throws AgentUnavailableException, OperationTimedoutException {
assert hostId != null : "Who's not checking the agent id before sending? ... (finger wagging)";
@@ -408,6 +422,9 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl
commands.setAnswers(new Answer[0]);
}
+ for (Command cmd : cmds)
+ tagCommand(cmd);
+
final AgentAttache agent = getAttache(hostId);
if (agent == null || agent.isClosed()) {
throw new AgentUnavailableException("agent not logged into this management server", hostId);
@@ -466,6 +483,10 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl
if (cmds.length == 0) {
throw new AgentUnavailableException("Empty command set for agent " + agent.getId(), agent.getId());
}
+
+ for (Command cmd : cmds)
+ tagCommand(cmd);
+
Request req = new Request(hostId, agent.getName(), _nodeId, cmds, commands.stopOnError(), true);
req.setSequence(agent.getNextSequence());
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f756d4aa/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
index 8dc2784..5b49e5b 100755
--- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
@@ -354,6 +354,20 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
_gson = GsonHelper.getGsonLogger();
}
+ private String getCommandLogTitle(Command cmd) {
+ StringBuffer sb = new StringBuffer();
+ if (_hostName != null) {
+ sb.append(_hostName);
+ }
+
+ if (cmd.getContextParam("job") != null) {
+ sb.append(", ").append(cmd.getContextParam("job"));
+ }
+ sb.append(", cmd: ").append(cmd.getClass().getSimpleName());
+
+ return sb.toString();
+ }
+
@Override
public Answer executeRequest(Command cmd) {
@@ -361,7 +375,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
s_logger.trace("Begin executeRequest(), cmd: " + cmd.getClass().getSimpleName());
Answer answer = null;
- NDC.push(_hostName != null ? _hostName : _guid + "(" + this.getClass().getPackage().getImplementationVersion() + ")");
+ NDC.push(getCommandLogTitle(cmd));
try {
long cmdSequence = _cmdSequence++;
Date startTime = DateUtil.currentGMTTime();
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f756d4aa/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareSecondaryStorageResourceHandler.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareSecondaryStorageResourceHandler.java b/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareSecondaryStorageResourceHandler.java
index f633774..e67fed6 100644
--- a/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareSecondaryStorageResourceHandler.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/storage/resource/VmwareSecondaryStorageResourceHandler.java
@@ -19,6 +19,7 @@ package com.cloud.storage.resource;
import java.util.List;
import org.apache.log4j.Logger;
+import org.apache.log4j.NDC;
import com.google.gson.Gson;
import com.vmware.vim25.ManagedObjectReference;
@@ -77,11 +78,27 @@ public class VmwareSecondaryStorageResourceHandler implements SecondaryStorageRe
storageSubsystemHandler = vmwareStorageSubsystemCommandHandler;
}
+ private static String getCommandLogTitle(Command cmd) {
+ StringBuffer sb = new StringBuffer();
+ if (cmd.getContextParam("job") != null) {
+ sb.append(cmd.getContextParam("job"));
+ }
+
+ sb.append(", cmd: ").append(cmd.getClass().getSimpleName());
+
+ return sb.toString();
+ }
+
@Override
public Answer executeRequest(Command cmd) {
try {
Answer answer;
+ NDC.push(getCommandLogTitle(cmd));
+
+ if (s_logger.isDebugEnabled())
+ s_logger.debug("Executing " + _gson.toJson(cmd));
+
if (cmd instanceof PrimaryStorageDownloadCommand) {
answer = execute((PrimaryStorageDownloadCommand)cmd);
} else if (cmd instanceof BackupSnapshotCommand) {
@@ -115,9 +132,15 @@ public class VmwareSecondaryStorageResourceHandler implements SecondaryStorageRe
answer.setContextParam("checkpoint2", cmd.getContextParam("checkpoint2"));
}
+ if (s_logger.isDebugEnabled())
+ s_logger.debug("Command execution answer: " + _gson.toJson(answer));
+
return answer;
} finally {
+ if (s_logger.isDebugEnabled())
+ s_logger.debug("Done executing " + _gson.toJson(cmd));
recycleServiceContext();
+ NDC.pop();
}
}
@@ -127,50 +150,26 @@ public class VmwareSecondaryStorageResourceHandler implements SecondaryStorageRe
}
private Answer execute(PrimaryStorageDownloadCommand cmd) {
- if (s_logger.isDebugEnabled()) {
- s_logger.debug("Executing resource PrimaryStorageDownloadCommand: " + _gson.toJson(cmd));
- }
-
return _storageMgr.execute(this, cmd);
}
private Answer execute(BackupSnapshotCommand cmd) {
- if (s_logger.isDebugEnabled()) {
- s_logger.debug("Executing resource BackupSnapshotCommand: " + _gson.toJson(cmd));
- }
-
return _storageMgr.execute(this, cmd);
}
private Answer execute(CreatePrivateTemplateFromVolumeCommand cmd) {
- if (s_logger.isDebugEnabled()) {
- s_logger.debug("Executing resource CreatePrivateTemplateFromVolumeCommand: " + _gson.toJson(cmd));
- }
-
return _storageMgr.execute(this, cmd);
}
private Answer execute(CreatePrivateTemplateFromSnapshotCommand cmd) {
- if (s_logger.isDebugEnabled()) {
- s_logger.debug("Executing resource CreatePrivateTemplateFromVolumeCommand: " + _gson.toJson(cmd));
- }
-
return _storageMgr.execute(this, cmd);
}
private Answer execute(CopyVolumeCommand cmd) {
- if (s_logger.isDebugEnabled()) {
- s_logger.debug("Executing resource CopyVolumeCommand: " + _gson.toJson(cmd));
- }
-
return _storageMgr.execute(this, cmd);
}
private Answer execute(CreateVolumeFromSnapshotCommand cmd) {
- if (s_logger.isDebugEnabled()) {
- s_logger.debug("Executing resource CreateVolumeFromSnapshotCommand: " + _gson.toJson(cmd));
- }
-
return _storageMgr.execute(this, cmd);
}