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);
     }