You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ah...@apache.org on 2013/06/12 16:18:43 UTC

[3/5] git commit: updated refs/heads/vmsync to d71e358

Removed all the apis that need the user and account to be passed in.  Get them from the call context instead


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/33dfe4f7
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/33dfe4f7
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/33dfe4f7

Branch: refs/heads/vmsync
Commit: 33dfe4f75236c4f87e5ce7d60242692b5373127f
Parents: ad1c82f
Author: Alex Huang <al...@gmail.com>
Authored: Tue Jun 11 14:11:40 2013 -0700
Committer: Alex Huang <al...@gmail.com>
Committed: Tue Jun 11 14:11:40 2013 -0700

----------------------------------------------------------------------
 .../apache/cloudstack/context/CallContext.java  | 19 +++++---
 .../src/com/cloud/vm/VirtualMachineManager.java | 19 ++++----
 .../engine/vm/VMEntityManagerImpl.java          | 11 +++--
 .../lb/ElasticLoadBalancerManagerImpl.java      | 36 ++++++++++-----
 .../lb/InternalLoadBalancerVMManagerImpl.java   |  6 +--
 .../cloud/agent/manager/AgentManagerImpl.java   |  2 +-
 .../consoleproxy/ConsoleProxyManagerImpl.java   |  6 +--
 .../cloud/ha/HighAvailabilityManagerImpl.java   | 21 +++++----
 .../VirtualNetworkApplianceManagerImpl.java     | 12 ++---
 .../com/cloud/resource/ResourceManagerImpl.java |  5 +--
 .../com/cloud/server/ManagementServerImpl.java  |  4 +-
 .../storage/StoragePoolAutomationImpl.java      | 22 ++++-----
 .../secondary/SecondaryStorageManagerImpl.java  |  6 +--
 .../storage/snapshot/SnapshotSchedulerImpl.java |  2 +-
 .../src/com/cloud/user/AccountManagerImpl.java  |  4 +-
 .../src/com/cloud/vm/SystemVmLoadScanner.java   |  7 ++-
 server/src/com/cloud/vm/UserVmManagerImpl.java  |  6 +--
 .../com/cloud/vm/VirtualMachineManagerImpl.java | 47 +++++++++-----------
 .../vm/snapshot/VMSnapshotManagerImpl.java      |  4 +-
 .../vm/VmWorkMockVirtualMachineManagerImpl.java | 32 ++++---------
 20 files changed, 135 insertions(+), 136 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/33dfe4f7/api/src/org/apache/cloudstack/context/CallContext.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/context/CallContext.java b/api/src/org/apache/cloudstack/context/CallContext.java
index 6610896..c4271f5 100644
--- a/api/src/org/apache/cloudstack/context/CallContext.java
+++ b/api/src/org/apache/cloudstack/context/CallContext.java
@@ -104,14 +104,19 @@ public class CallContext {
         return callingContext;
     }
 
-    public static CallContext registerOnceOnly() {
-        CallContext context = s_currentContext.get();
-        if (context == null) {
-            return register(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM, null);
+    public static CallContext registerSystemCallContextOnceOnly() {
+        try {
+            CallContext context = s_currentContext.get();
+            if (context == null) {
+                return register(User.UID_SYSTEM, Account.ACCOUNT_ID_SYSTEM, null);
+            }
+            assert context.getCallingUserId() == User.UID_SYSTEM : "You are calling a very specific method that registers a one time system context.  This method is meant for background threads that does processing.";
+            return context;
+        } catch (Exception e) {
+            s_logger.fatal("Exiting the system because we're unable to register the system call context.", e);
+            System.exit(1);
+            throw new CloudRuntimeException("Should never hit this");
         }
-
-        assert context.getCallingUserId() == User.UID_SYSTEM : "You are calling a very specific method that registers a one time system context.  This method is meant for background threads that does processing.";
-        return context;
     }
 
     public static CallContext register(String callingUserUuid, String callingAccountUuid, String contextId) {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/33dfe4f7/engine/components-api/src/com/cloud/vm/VirtualMachineManager.java
----------------------------------------------------------------------
diff --git a/engine/components-api/src/com/cloud/vm/VirtualMachineManager.java b/engine/components-api/src/com/cloud/vm/VirtualMachineManager.java
index 70142d5..1a647e1 100644
--- a/engine/components-api/src/com/cloud/vm/VirtualMachineManager.java
+++ b/engine/components-api/src/com/cloud/vm/VirtualMachineManager.java
@@ -87,13 +87,13 @@ public interface VirtualMachineManager extends Manager {
             HypervisorType hyperType,
             Account owner);
 
-    void start(String vmUuid, Map<VirtualMachineProfile.Param, Object> params, @Deprecated User caller, @Deprecated Account account);
+    void start(String vmUuid, Map<VirtualMachineProfile.Param, Object> params);
 
-    void start(String vmUuid, Map<VirtualMachineProfile.Param, Object> params, @Deprecated User caller, @Deprecated Account account, DeploymentPlan planToDeploy);
+    void start(String vmUuid, Map<VirtualMachineProfile.Param, Object> params, DeploymentPlan planToDeploy);
 
-    void stop(String vmUuid, @Deprecated User caller, @Deprecated Account account);
+    void stop(String vmUuid);
 
-    void expunge(String vmUuid, @Deprecated User caller, @Deprecated Account account);
+    void expunge(String vmUuid);
 
     void registerGuru(VirtualMachine.Type type, VirtualMachineGuru guru);
     
@@ -105,19 +105,16 @@ public interface VirtualMachineManager extends Manager {
     
     boolean stateTransitTo(VMInstanceVO vm, VirtualMachine.Event e, Long hostId) throws NoTransitionException;
 
-    void advanceStart(String vmUuid, Map<VirtualMachineProfile.Param, Object> params, @Deprecated User caller, @Deprecated Account account) throws InsufficientCapacityException,
-            ResourceUnavailableException, ConcurrentOperationException, OperationTimedoutException;
-
-    void advanceStart(String vmUuid, Map<VirtualMachineProfile.Param, Object> params, @Deprecated User caller, @Deprecated Account account, DeploymentPlan planToDeploy)
+    void advanceStart(String vmUuid, Map<VirtualMachineProfile.Param, Object> params, DeploymentPlan planToDeploy)
             throws InsufficientCapacityException, ResourceUnavailableException, ConcurrentOperationException, OperationTimedoutException;
 
-    void advanceStop(String vmUuid, boolean cleanup, @Deprecated User caller, @Deprecated Account account) throws ResourceUnavailableException, OperationTimedoutException,
+    void advanceStop(String vmUuid, boolean cleanup) throws ResourceUnavailableException, OperationTimedoutException,
             ConcurrentOperationException;
 
-    void advanceExpunge(String vmUuid, @Deprecated User caller, @Deprecated Account account) throws ResourceUnavailableException, OperationTimedoutException,
+    void advanceExpunge(String vmUuid) throws ResourceUnavailableException, OperationTimedoutException,
             ConcurrentOperationException;
 
-    boolean destroy(String vmUuid, @Deprecated User caller, @Deprecated Account account) throws ResourceUnavailableException, OperationTimedoutException,
+    boolean destroy(String vmUuid) throws ResourceUnavailableException, OperationTimedoutException,
             ConcurrentOperationException;
 
     boolean migrateAway(VirtualMachine.Type type, long vmid, long hostId) throws InsufficientServerCapacityException, VirtualMachineMigrationException;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/33dfe4f7/engine/orchestration/src/org/apache/cloudstack/engine/vm/VMEntityManagerImpl.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/org/apache/cloudstack/engine/vm/VMEntityManagerImpl.java b/engine/orchestration/src/org/apache/cloudstack/engine/vm/VMEntityManagerImpl.java
index 82706a2..c4e2b4c 100755
--- a/engine/orchestration/src/org/apache/cloudstack/engine/vm/VMEntityManagerImpl.java
+++ b/engine/orchestration/src/org/apache/cloudstack/engine/vm/VMEntityManagerImpl.java
@@ -242,15 +242,14 @@ public class VMEntityManagerImpl implements VMEntityManager {
             DataCenterDeployment reservedPlan = new DataCenterDeployment(vm.getDataCenterId(),
                     vmReservation.getPodId(), vmReservation.getClusterId(), vmReservation.getHostId(), null, null);
             try {
-                _itMgr.start(vm.getUuid(), params, _userDao.findById(new Long(caller)), _accountDao.findById(vm.getAccountId()), reservedPlan);
+                _itMgr.start(vm.getUuid(), params, reservedPlan);
             } catch (CloudRuntimeException ex) {
                 // Retry the deployment without using the reservation plan
-                _itMgr.start(vm.getUuid(), params, _userDao.findById(new Long(caller)), _accountDao.findById(vm.getAccountId()),
-                        null);
+                _itMgr.start(vm.getUuid(), params, null);
             }
         } else {
             // no reservation found. Let VirtualMachineManager retry
-            _itMgr.start(vm.getUuid(), params, _userDao.findById(new Long(caller)), _accountDao.findById(vm.getAccountId()), null);
+            _itMgr.start(vm.getUuid(), params, null);
         }
 
     }
@@ -258,7 +257,7 @@ public class VMEntityManagerImpl implements VMEntityManager {
     @Override
     public boolean stop(VMEntityVO vm, String caller) throws ResourceUnavailableException {
         try {
-            _itMgr.stop(vm.getUuid(), _userDao.findById(new Long(caller)), _accountDao.findById(vm.getAccountId()));
+            _itMgr.stop(vm.getUuid());
             return true;
         } catch (CloudRuntimeException e) {
             s_logger.warn("Unable to stop " + vm, e);
@@ -271,7 +270,7 @@ public class VMEntityManagerImpl implements VMEntityManager {
     public boolean destroy(VMEntityVO vm, String caller) throws ResourceUnavailableException, OperationTimedoutException, ConcurrentOperationException {
 
         try {
-            _itMgr.destroy(vm.getUuid(), _userDao.findById(new Long(caller)), _accountDao.findById(vm.getAccountId()));
+            _itMgr.destroy(vm.getUuid());
             return true;
         } catch (CloudRuntimeException e) {
             s_logger.warn("Unable to destroy " + vm, e);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/33dfe4f7/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java b/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
index 7d5e023..d8daeae 100644
--- a/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
+++ b/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
@@ -204,6 +204,7 @@ public class ElasticLoadBalancerManagerImpl extends ManagerBase implements
     static final private String _systemVmType = "elbvm";
     
     boolean _enabled;
+    long _gcIntervalMinutes;
     TrafficType _frontendTrafficType = TrafficType.Guest;
 
     Account _systemAcct;
@@ -386,6 +387,15 @@ public class ElasticLoadBalancerManagerImpl extends ManagerBase implements
     }
 
     @Override
+    public boolean start() {
+        if (_enabled) {
+            _gcThreadPool.scheduleAtFixedRate(new CleanupTask(), _gcIntervalMinutes, _gcIntervalMinutes, TimeUnit.MINUTES);
+        }
+        return true;
+
+    }
+
+    @Override
     public boolean configure(String name, Map<String, Object> params)
             throws ConfigurationException {
         final Map<String, String> configs = _configDao.getConfiguration("AgentManager", params);
@@ -420,12 +430,11 @@ public class ElasticLoadBalancerManagerImpl extends ManagerBase implements
             } else
                 throw new ConfigurationException("ELB: Traffic type for front end of load balancer has to be guest or public; found : " + traffType);
             s_logger.info("ELB: Elastic Load Balancer: will balance on " + traffType );
-            int gcIntervalMinutes =  NumbersUtil.parseInt(configs.get(Config.ElasticLoadBalancerVmGcInterval.key()), 5);
-            if (gcIntervalMinutes < 5)
-                gcIntervalMinutes = 5;
-            s_logger.info("ELB: Elastic Load Balancer: scheduling GC to run every " + gcIntervalMinutes + " minutes" );
+            _gcIntervalMinutes = NumbersUtil.parseInt(configs.get(Config.ElasticLoadBalancerVmGcInterval.key()), 5);
+            if (_gcIntervalMinutes < 5)
+                _gcIntervalMinutes = 5;
+            s_logger.info("ELB: Elastic Load Balancer: scheduling GC to run every " + _gcIntervalMinutes + " minutes");
             _gcThreadPool = Executors.newScheduledThreadPool(1, new NamedThreadFactory("ELBVM-GC"));
-            _gcThreadPool.scheduleAtFixedRate(new CleanupThread(), gcIntervalMinutes, gcIntervalMinutes, TimeUnit.MINUTES);
             _itMgr.registerGuru(VirtualMachine.Type.ElasticLoadBalancerVm, this);
         }
         
@@ -537,7 +546,7 @@ public class ElasticLoadBalancerManagerImpl extends ManagerBase implements
     ConcurrentOperationException, ResourceUnavailableException {
         s_logger.debug("Starting ELB VM " + elbVm);
         try {
-            _itMgr.start(elbVm.getUuid(), params, user, caller);
+            _itMgr.start(elbVm.getUuid(), params);
             return _routerDao.findById(elbVm.getId());
         } catch (CloudRuntimeException e) {
             s_logger.warn("Unable to start " + elbVm, e);
@@ -548,7 +557,7 @@ public class ElasticLoadBalancerManagerImpl extends ManagerBase implements
     private DomainRouterVO stop(DomainRouterVO elbVm, boolean forced, User user, Account caller) throws ConcurrentOperationException, ResourceUnavailableException {
         s_logger.debug("Stopping ELB vm " + elbVm);
         try {
-            _itMgr.advanceStop(elbVm.getUuid(), forced, user, caller);
+            _itMgr.advanceStop(elbVm.getUuid(), forced);
             return _routerDao.findById(elbVm.getId());
         } catch (OperationTimedoutException e) {
             throw new CloudRuntimeException("Unable to stop " + elbVm, e);
@@ -739,7 +748,7 @@ public class ElasticLoadBalancerManagerImpl extends ManagerBase implements
             if (gceed) {
                 try {
                     s_logger.info("Attempting to destroy ELB VM: " + elbVm);
-                    _itMgr.expunge(elbVm.getUuid(), user, _systemAcct);
+                    _itMgr.expunge(elbVm.getUuid());
                 } catch (CloudRuntimeException e) {
                     s_logger.warn("Unable to destroy unused ELB vm " + elbVm + " due to ", e);
                     gceed = false;
@@ -753,14 +762,21 @@ public class ElasticLoadBalancerManagerImpl extends ManagerBase implements
         _gcCandidateElbVmIds = currentGcCandidates;
     }
     
-    public class CleanupThread implements Runnable {
+    public class CleanupTask implements Runnable {
         @Override
         public void run() {
+            try {
+                CallContext.registerSystemCallContextOnceOnly();
+            } catch (Exception e) {
+                s_logger.fatal("Unable to establish system context");
+                System.exit(1);
+            }
+            
             garbageCollectUnusedElbVms();
             
         }
 
-        CleanupThread() {
+        CleanupTask() {
 
         }
     }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/33dfe4f7/plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java b/plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java
index 5413c16..6754103 100644
--- a/plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java
+++ b/plugins/network-elements/internal-loadbalancer/src/org/apache/cloudstack/network/lb/InternalLoadBalancerVMManagerImpl.java
@@ -526,7 +526,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements
         _accountMgr.checkAccess(caller, null, true, internalLbVm);
 
         try {
-            _itMgr.expunge(internalLbVm.getUuid(), _accountMgr.getActiveUser(callerUserId), caller);
+            _itMgr.expunge(internalLbVm.getUuid());
             return true;
         } catch (CloudRuntimeException e) {
             s_logger.warn("Unable to expunge internal load balancer", e);
@@ -552,7 +552,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements
     protected VirtualRouter stopInternalLbVm(DomainRouterVO internalLbVm, boolean forced, Account caller, long callerUserId) throws ResourceUnavailableException, ConcurrentOperationException {
         s_logger.debug("Stopping internal lb vm " + internalLbVm);
         try {
-            _itMgr.advanceStop(internalLbVm.getUuid(), forced, _accountMgr.getActiveUser(callerUserId), caller);
+            _itMgr.advanceStop(internalLbVm.getUuid(), forced);
             return _internalLbVmDao.findById(internalLbVm.getId());
         } catch (OperationTimedoutException e) {
             throw new CloudRuntimeException("Unable to stop " + internalLbVm, e);
@@ -830,7 +830,7 @@ public class InternalLoadBalancerVMManagerImpl extends ManagerBase implements
             ConcurrentOperationException, ResourceUnavailableException {
         s_logger.debug("Starting Internal LB VM " + internalLbVm);
         try {
-            _itMgr.start(internalLbVm.getUuid(), params, _accountMgr.getUserIncludingRemoved(callerUserId), caller, null);
+            _itMgr.start(internalLbVm.getUuid(), params, null);
             internalLbVm = _internalLbVmDao.findById(internalLbVm.getId());
             if (internalLbVm.isStopPending()) {
                 s_logger.info("Clear the stop pending flag of Internal LB VM " + internalLbVm.getHostName() + " after start router successfully!");

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/33dfe4f7/server/src/com/cloud/agent/manager/AgentManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/agent/manager/AgentManagerImpl.java b/server/src/com/cloud/agent/manager/AgentManagerImpl.java
index 17ffb7e..6513117 100755
--- a/server/src/com/cloud/agent/manager/AgentManagerImpl.java
+++ b/server/src/com/cloud/agent/manager/AgentManagerImpl.java
@@ -1177,7 +1177,7 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl
         @Override
         public void run() {
             try {
-                CallContext.registerOnceOnly();
+                CallContext.registerSystemCallContextOnceOnly();
             } catch (Exception e) {
                 s_logger.error("Unable to register context", e);
                 return;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/33dfe4f7/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
index 67ffa18..f6bddf0 100755
--- a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
+++ b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
@@ -558,7 +558,7 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy
             }
 
             if (proxy.getState() == VirtualMachine.State.Stopped) {
-                _itMgr.start(proxy.getUuid(), null, systemUser, systemAcct);
+                _itMgr.start(proxy.getUuid(), null);
                 proxy = _consoleProxyDao.findById(proxyVmId);
                 if (proxy.getState() == State.Running) {
                     return null;
@@ -1036,7 +1036,7 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy
         }
 
         try {
-            _itMgr.stop(proxy.getUuid(), _accountMgr.getSystemUser(), _accountMgr.getSystemAccount());
+            _itMgr.stop(proxy.getUuid());
             return true;
         } catch (CloudRuntimeException e) {
             s_logger.warn("Unable to stop " + proxy, e);
@@ -1160,7 +1160,7 @@ public class ConsoleProxyManagerImpl extends ManagerBase implements ConsoleProxy
         ConsoleProxyVO proxy = _consoleProxyDao.findById(vmId);
         try {
             //expunge the vm
-            _itMgr.expunge(proxy.getUuid(), _accountMgr.getSystemUser(), _accountMgr.getSystemAccount());
+            _itMgr.expunge(proxy.getUuid());
             HostVO host = _hostDao.findByTypeNameAndZoneId(proxy.getDataCenterId(), proxy.getHostName(),
                     Host.Type.ConsoleProxy);
             if (host != null) {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/33dfe4f7/server/src/com/cloud/ha/HighAvailabilityManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/ha/HighAvailabilityManagerImpl.java b/server/src/com/cloud/ha/HighAvailabilityManagerImpl.java
index 1dad57d..9e8b905 100755
--- a/server/src/com/cloud/ha/HighAvailabilityManagerImpl.java
+++ b/server/src/com/cloud/ha/HighAvailabilityManagerImpl.java
@@ -32,6 +32,8 @@ import javax.naming.ConfigurationException;
 import org.apache.log4j.Logger;
 import org.apache.log4j.NDC;
 
+import org.apache.cloudstack.context.CallContext;
+
 import com.cloud.agent.AgentManager;
 import com.cloud.alert.AlertManager;
 import com.cloud.cluster.ClusterManagerListener;
@@ -283,7 +285,7 @@ public class HighAvailabilityManagerImpl extends ManagerBase implements HighAvai
         if (hostId == null) {
             try {
                 s_logger.debug("Found a vm that is scheduled to be restarted but has no host id: " + vm);
-                _itMgr.advanceStop(vm.getUuid(), true, _accountMgr.getSystemUser(), _accountMgr.getSystemAccount());
+                _itMgr.advanceStop(vm.getUuid(), true);
             } catch (ResourceUnavailableException e) {
                 assert false : "How do we hit this when force is true?";
             throw new CloudRuntimeException("Caught exception even though it should be handled.", e);
@@ -327,7 +329,7 @@ public class HighAvailabilityManagerImpl extends ManagerBase implements HighAvai
             }
 
             try {
-                _itMgr.advanceStop(vm.getUuid(), true, _accountMgr.getSystemUser(), _accountMgr.getSystemAccount());
+                _itMgr.advanceStop(vm.getUuid(), true);
             } catch (ResourceUnavailableException e) {
                 assert false : "How do we hit this when force is true?";
             throw new CloudRuntimeException("Caught exception even though it should be handled.", e);
@@ -472,7 +474,7 @@ public class HighAvailabilityManagerImpl extends ManagerBase implements HighAvai
                 }
 
                 try {
-                    _itMgr.advanceStop(vm.getUuid(), true, _accountMgr.getSystemUser(), _accountMgr.getSystemAccount());
+                    _itMgr.advanceStop(vm.getUuid(), true);
                 } catch (ResourceUnavailableException e) {
                     assert false : "How do we hit this when force is true?";
                 throw new CloudRuntimeException("Caught exception even though it should be handled.", e);
@@ -489,7 +491,7 @@ public class HighAvailabilityManagerImpl extends ManagerBase implements HighAvai
             } else {
                 s_logger.debug("How come that HA step is Investigating and the host is removed? Calling forced Stop on Vm anyways");
                 try {
-                    _itMgr.advanceStop(vm.getUuid(), true, _accountMgr.getSystemUser(), _accountMgr.getSystemAccount());
+                    _itMgr.advanceStop(vm.getUuid(), true);
                 } catch (ResourceUnavailableException e) {
                     assert false : "How do we hit this when force is true?";
                 throw new CloudRuntimeException("Caught exception even though it should be handled.", e);
@@ -529,7 +531,7 @@ public class HighAvailabilityManagerImpl extends ManagerBase implements HighAvai
             if (_haTag != null) {
                 params.put(VirtualMachineProfile.Param.HaTag, _haTag);
             }
-            _itMgr.advanceStart(vm.getUuid(), params, _accountMgr.getSystemUser(), _accountMgr.getSystemAccount());
+            _itMgr.advanceStart(vm.getUuid(), params, null);
             
             VMInstanceVO started = _instanceDao.findById(vm.getId());
 
@@ -618,7 +620,7 @@ public class HighAvailabilityManagerImpl extends ManagerBase implements HighAvai
             }
 
             if (vm.getHostId() != null) {
-                _itMgr.destroy(vm.getUuid(), _accountMgr.getSystemUser(), _accountMgr.getSystemAccount());
+                _itMgr.destroy(vm.getUuid());
                 s_logger.info("Successfully destroy " + vm);
                 return null;
             }
@@ -644,7 +646,7 @@ public class HighAvailabilityManagerImpl extends ManagerBase implements HighAvai
         s_logger.info("Stopping " + vm);
         try {
             if (work.getWorkType() == WorkType.Stop) {
-                _itMgr.advanceStop(vm.getUuid(), false, _accountMgr.getSystemUser(), _accountMgr.getSystemAccount());
+                _itMgr.advanceStop(vm.getUuid(), false);
                 s_logger.info("Successfully stopped " + vm);
                 return null;
             } else if (work.getWorkType() == WorkType.CheckStop) {
@@ -652,7 +654,7 @@ public class HighAvailabilityManagerImpl extends ManagerBase implements HighAvai
                     s_logger.info(vm + " is different now.  Scheduled Host: " + work.getHostId() + " Current Host: " + (vm.getHostId() != null ? vm.getHostId() : "none") + " State: " + vm.getState());
                     return null;
                 }
-                _itMgr.advanceStop(vm.getUuid(), false, _accountMgr.getSystemUser(), _accountMgr.getSystemAccount());
+                _itMgr.advanceStop(vm.getUuid(), false);
                 s_logger.info("Stop for " + vm + " was successful");
                 return null;
             } else if (work.getWorkType() == WorkType.ForceStop) {
@@ -660,7 +662,7 @@ public class HighAvailabilityManagerImpl extends ManagerBase implements HighAvai
                     s_logger.info(vm + " is different now.  Scheduled Host: " + work.getHostId() + " Current Host: " + (vm.getHostId() != null ? vm.getHostId() : "none") + " State: " + vm.getState());
                     return null;
                 }
-                _itMgr.advanceStop(vm.getUuid(), true, _accountMgr.getSystemUser(), _accountMgr.getSystemAccount());
+                _itMgr.advanceStop(vm.getUuid(), true);
                 s_logger.info("Stop for " + vm + " was successful");
                 return null;
             } else {
@@ -797,6 +799,7 @@ public class HighAvailabilityManagerImpl extends ManagerBase implements HighAvai
 
         @Override
         public void run() {
+            CallContext.registerSystemCallContextOnceOnly();
             s_logger.info("Starting work");
             while (!_stopped) {
                 HaWorkVO work = null;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/33dfe4f7/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
index 742a3c1..e8090c8 100755
--- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@ -418,7 +418,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
         _accountMgr.checkAccess(caller, null, true, router);
 
         try {
-            _itMgr.expunge(router.getUuid(), _accountMgr.getActiveUser(callerUserId), _accountMgr.getAccount(router.getAccountId()));
+            _itMgr.expunge(router.getUuid());
             return router;
         } catch (CloudRuntimeException e) {
             s_logger.warn("Unable to destroy " + router, e);
@@ -1281,7 +1281,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
         @Override
         public void run() {
             try {
-                CallContext.registerOnceOnly();
+                CallContext.registerSystemCallContextOnceOnly();
                 while (true) {
                     try {
                         Long networkId = _vrUpdateQueue.take();
@@ -1756,7 +1756,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
                         if (startIp != null && _ipAddressDao.findByIpAndSourceNetworkId(guestNetwork.getId(), startIp).getAllocatedTime() == null) {
                             defaultNetworkStartIp = startIp;
             			} else if (s_logger.isDebugEnabled()){
-            				s_logger.debug("First ipv4 " + startIp + " in network id=" + guestNetwork.getId() + 
+            				s_logger.debug("First ipv4 " + startIp + " in network id=" + guestNetwork.getId() +
                                     " is already allocated, can't use it for domain router; will get random ip address from the range");
                         }
                     }
@@ -1765,7 +1765,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
                 if (guestNetwork.getIp6Cidr() != null) {
             		if (placeholder != null && placeholder.getIp6Address() != null) {
             			s_logger.debug("Requesting ipv6 address " + placeholder.getIp6Address() + " stored in placeholder nic for the network " + guestNetwork);
-            			defaultNetworkStartIpv6 = placeholder.getIp6Address(); 
+            			defaultNetworkStartIpv6 = placeholder.getIp6Address();
             		} else {
                     String startIpv6 = _networkModel.getStartIpv6Address(guestNetwork.getId());
                     if (startIpv6 != null && _ipv6Dao.findByNetworkIdAndIp(guestNetwork.getId(), startIpv6) == null) {
@@ -2717,7 +2717,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
             ConcurrentOperationException, ResourceUnavailableException {
         s_logger.debug("Starting router " + router);
         try {
-            _itMgr.start(router.getUuid(), params, user, caller, planToDeploy);
+            _itMgr.start(router.getUuid(), params, planToDeploy);
             router = _routerDao.findById(router.getId());
             if (router.isStopPending()) {
                 s_logger.info("Clear the stop pending flag of router " + router.getHostName() + " after start router successfully!");
@@ -2741,7 +2741,7 @@ public class VirtualNetworkApplianceManagerImpl extends ManagerBase implements V
     public DomainRouterVO stop(VirtualRouter router, boolean forced, User user, Account caller) throws ConcurrentOperationException, ResourceUnavailableException {
         s_logger.debug("Stopping router " + router);
         try {
-            _itMgr.advanceStop(router.getUuid(), forced, user, caller);
+            _itMgr.advanceStop(router.getUuid(), forced);
             return _routerDao.findById(router.getId());
         } catch (OperationTimedoutException e) {
             throw new CloudRuntimeException("Unable to stop " + router, e);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/33dfe4f7/server/src/com/cloud/resource/ResourceManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/resource/ResourceManagerImpl.java b/server/src/com/cloud/resource/ResourceManagerImpl.java
index 4da572e..b429e01 100755
--- a/server/src/com/cloud/resource/ResourceManagerImpl.java
+++ b/server/src/com/cloud/resource/ResourceManagerImpl.java
@@ -2343,8 +2343,7 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager,
 						.listByStoragePool(storagePool.getId());
                 for (VMInstanceVO vm : vmsOnLocalStorage) {
                     try {
-                        if (!_vmMgr.destroy(vm.getUuid(), caller,
-								_accountMgr.getAccount(vm.getAccountId()))) {
+                        if (!_vmMgr.destroy(vm.getUuid())) {
 							String errorMsg = "There was an error Destory the vm: "
 									+ vm
 									+ " as a part of hostDelete id="
@@ -2376,7 +2375,7 @@ public class ResourceManagerImpl extends ManagerBase implements ResourceManager,
 									+ " as a part of deleteHost id="
 									+ host.getId());
                             try {
-                                _vmMgr.stop(vm.getUuid(), caller, _accountMgr.getAccount(vm.getAccountId()));
+                                _vmMgr.stop(vm.getUuid());
                             } catch (Exception e) {
 								String errorMsg = "There was an error stopping the vm: "
 										+ vm

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/33dfe4f7/server/src/com/cloud/server/ManagementServerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java
index a365f7a..4ad60ea 100755
--- a/server/src/com/cloud/server/ManagementServerImpl.java
+++ b/server/src/com/cloud/server/ManagementServerImpl.java
@@ -2167,7 +2167,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
 
         User caller = _userDao.findById(CallContext.current().getCallingUserId());
 
-        _itMgr.advanceStop(systemVm.getUuid(), isForced, caller, CallContext.current().getCallingAccount());
+        _itMgr.advanceStop(systemVm.getUuid(), isForced);
         return _consoleProxyDao.findById(systemVm.getId());
     }
 
@@ -3049,7 +3049,7 @@ public class ManagementServerImpl extends ManagerBase implements ManagementServe
 
         User caller = _userDao.findById(CallContext.current().getCallingUserId());
 
-        _itMgr.advanceStop(systemVm.getUuid(), isForced, caller, CallContext.current().getCallingAccount());
+        _itMgr.advanceStop(systemVm.getUuid(), isForced);
         return _secStorageVmDao.findById(systemVm.getId());
     }
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/33dfe4f7/server/src/com/cloud/storage/StoragePoolAutomationImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/StoragePoolAutomationImpl.java b/server/src/com/cloud/storage/StoragePoolAutomationImpl.java
index 6154a3b..0e6d53b 100644
--- a/server/src/com/cloud/storage/StoragePoolAutomationImpl.java
+++ b/server/src/com/cloud/storage/StoragePoolAutomationImpl.java
@@ -203,42 +203,42 @@ public class StoragePoolAutomationImpl implements StoragePoolAutomation {
                     // call the consoleproxymanager
                     ConsoleProxyVO consoleProxy = _consoleProxyDao
                             .findById(vmInstance.getId());
-                    vmMgr.stop(consoleProxy.getUuid(), user, account);
+                    vmMgr.stop(consoleProxy.getUuid());
                         // update work status
                     work.setStoppedForMaintenance(true);
                     _storagePoolWorkDao.update(work.getId(), work);
 
                     if (restart) {
 
-                        vmMgr.start(consoleProxy.getUuid(), null, user, account);
+                        vmMgr.start(consoleProxy.getUuid(), null);
                         work.setStartedAfterMaintenance(true);
                         _storagePoolWorkDao.update(work.getId(), work);
                     }
                 } else if (vmInstance.getType().equals(VirtualMachine.Type.User)) {
                     UserVmVO userVm = userVmDao.findById(vmInstance.getId());
-                    vmMgr.stop(userVm.getUuid(), user, account);
+                    vmMgr.stop(userVm.getUuid());
                     // update work status
                     work.setStoppedForMaintenance(true);
                     _storagePoolWorkDao.update(work.getId(), work);
                 } else if (vmInstance.getType().equals(VirtualMachine.Type.SecondaryStorageVm)) {
                     SecondaryStorageVmVO secStrgVm = _secStrgDao
                             .findById(vmInstance.getId());
-                    vmMgr.stop(secStrgVm.getUuid(), user, account);
+                    vmMgr.stop(secStrgVm.getUuid());
                     work.setStoppedForMaintenance(true);
                     _storagePoolWorkDao.update(work.getId(), work);
 
                     if (restart) {
-                        vmMgr.start(secStrgVm.getUuid(), null, user, account);
+                        vmMgr.start(secStrgVm.getUuid(), null);
                         work.setStartedAfterMaintenance(true);
                         _storagePoolWorkDao.update(work.getId(), work);
                     }
                 } else if (vmInstance.getType().equals(VirtualMachine.Type.DomainRouter)) {
                     DomainRouterVO domR = _domrDao.findById(vmInstance.getId());
-                    vmMgr.advanceStop(domR.getUuid(), false, user, account);
+                    vmMgr.advanceStop(domR.getUuid(), false);
                     work.setStoppedForMaintenance(true);
                     _storagePoolWorkDao.update(work.getId(), work);
                     if (restart) {
-                        vmMgr.start(domR.getUuid(), null, user, account);
+                        vmMgr.start(domR.getUuid(), null);
                         work.setStartedAfterMaintenance(true);
                         _storagePoolWorkDao.update(work.getId(), work);
                     }
@@ -302,23 +302,23 @@ public class StoragePoolAutomationImpl implements StoragePoolAutomation {
 
                 if (vmInstance.getType().equals(VirtualMachine.Type.ConsoleProxy)) {
                     ConsoleProxyVO consoleProxy = _consoleProxyDao.findById(vmInstance.getId());
-                    vmMgr.start(consoleProxy.getUuid(), null, user, account);
+                    vmMgr.start(consoleProxy.getUuid(), null);
                     work.setStartedAfterMaintenance(true);
                     _storagePoolWorkDao.update(work.getId(), work);
                 } else if (vmInstance.getType().equals(VirtualMachine.Type.SecondaryStorageVm)) {
                     SecondaryStorageVmVO ssVm = _secStrgDao.findById(vmInstance.getId());
-                    vmMgr.advanceStart(ssVm.getUuid(), null, user, account);
+                    vmMgr.advanceStart(ssVm.getUuid(), null, null);
                     work.setStartedAfterMaintenance(true);
                     _storagePoolWorkDao.update(work.getId(), work);
                 } else if (vmInstance.getType().equals(VirtualMachine.Type.DomainRouter)) {
                     DomainRouterVO domR = _domrDao.findById(vmInstance.getId());
-                    vmMgr.start(domR.getUuid(), null, user, account);
+                    vmMgr.start(domR.getUuid(), null);
                     work.setStartedAfterMaintenance(true);
                     _storagePoolWorkDao.update(work.getId(), work);
                 } else if (vmInstance.getType().equals(VirtualMachine.Type.User)) {
                     UserVmVO userVm = userVmDao.findById(vmInstance.getId());
 
-                    vmMgr.start(userVm.getUuid(), null, user, account);
+                    vmMgr.start(userVm.getUuid(), null);
                     work.setStartedAfterMaintenance(true);
                     _storagePoolWorkDao.update(work.getId(), work);
                 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/33dfe4f7/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
index 1d85652..562db28 100755
--- a/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
+++ b/server/src/com/cloud/storage/secondary/SecondaryStorageManagerImpl.java
@@ -258,7 +258,7 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar
             SecondaryStorageVmVO secStorageVm = _secStorageVmDao.findById(secStorageVmId);
             Account systemAcct = _accountMgr.getSystemAccount();
             User systemUser = _accountMgr.getSystemUser();
-            _itMgr.start(secStorageVm.getUuid(), null, systemUser, systemAcct);
+            _itMgr.start(secStorageVm.getUuid(), null);
             return _secStorageVmDao.findById(secStorageVmId);
         } catch (Exception e) {
             s_logger.warn("Exception while trying to start secondary storage vm", e);
@@ -921,7 +921,7 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar
             try {
                 if (secStorageVmLock.lock(ACQUIRE_GLOBAL_LOCK_TIMEOUT_FOR_SYNC)) {
                     try {
-                        _itMgr.stop(secStorageVm.getUuid(), _accountMgr.getSystemUser(), _accountMgr.getSystemAccount());
+                        _itMgr.stop(secStorageVm.getUuid());
                         return true;
                     } catch (Exception e) {
                         s_logger.warn("Unable to stop " + secStorageVm, e);
@@ -982,7 +982,7 @@ public class SecondaryStorageManagerImpl extends ManagerBase implements Secondar
         SecondaryStorageVmVO ssvm = _secStorageVmDao.findById(vmId);
 
         try {
-            _itMgr.expunge(ssvm.getUuid(), _accountMgr.getSystemUser(), _accountMgr.getSystemAccount());
+            _itMgr.expunge(ssvm.getUuid());
             HostVO host = _hostDao.findByTypeNameAndZoneId(ssvm.getDataCenterId(), ssvm.getHostName(),
                     Host.Type.SecondaryStorageVM);
             if (host != null) {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/33dfe4f7/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java b/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java
index a8ef32b..c6dd772 100644
--- a/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java
+++ b/server/src/com/cloud/storage/snapshot/SnapshotSchedulerImpl.java
@@ -374,7 +374,7 @@ public class SnapshotSchedulerImpl extends ManagerBase implements SnapshotSchedu
                 @Override
                 public void run() {
                     try {
-                        CallContext.registerOnceOnly();
+                        CallContext.registerSystemCallContextOnceOnly();
                     } catch (Exception e) {
                         s_logger.error("Unable to register context", e);
                         return;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/33dfe4f7/server/src/com/cloud/user/AccountManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/user/AccountManagerImpl.java b/server/src/com/cloud/user/AccountManagerImpl.java
index b623dd2..3e4520c 100755
--- a/server/src/com/cloud/user/AccountManagerImpl.java
+++ b/server/src/com/cloud/user/AccountManagerImpl.java
@@ -815,7 +815,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M
         boolean success = true;
         for (VMInstanceVO vm : vms) {
             try {
-                _itMgr.stop(vm.getUuid(), getSystemUser(), getSystemAccount());
+                _itMgr.stop(vm.getUuid());
             } catch (CloudRuntimeException ote) {
                 s_logger.warn("Operation for stopping vm timed out, unable to stop vm " + vm.getHostName(), ote);
                 success = false;
@@ -1452,7 +1452,7 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M
         @Override
         public void run() {
             try {
-                CallContext.registerOnceOnly();
+                CallContext.registerSystemCallContextOnceOnly();
             } catch (Exception e) {
                 s_logger.error("Unable to register the system user context", e);
                 return;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/33dfe4f7/server/src/com/cloud/vm/SystemVmLoadScanner.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/SystemVmLoadScanner.java b/server/src/com/cloud/vm/SystemVmLoadScanner.java
index 9eafe0f..3d7953f 100644
--- a/server/src/com/cloud/vm/SystemVmLoadScanner.java
+++ b/server/src/com/cloud/vm/SystemVmLoadScanner.java
@@ -25,7 +25,6 @@ import org.apache.log4j.Logger;
 import org.apache.cloudstack.context.CallContext;
 
 import com.cloud.async.AsyncJobExecutionContext;
-import com.cloud.exception.CloudAuthenticationException;
 import com.cloud.utils.Pair;
 import com.cloud.utils.concurrency.NamedThreadFactory;
 import com.cloud.utils.db.GlobalLock;
@@ -72,10 +71,10 @@ public class SystemVmLoadScanner<T> {
             @Override
             public void run() {
                 try {
-                    CallContext.registerOnceOnly();
+                    CallContext.registerSystemCallContextOnceOnly();
                     AsyncJobExecutionContext.registerPseudoExecutionContext();
-                } catch (CloudAuthenticationException e) {
-                    s_logger.error("Unable to start the capacity scan task", e);
+                } catch (Exception e) {
+                    s_logger.fatal("Unable to start the capacity scan task", e);
                     System.exit(1);
                 }
                 Transaction txn = Transaction.open(Transaction.CLOUD_DB);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/33dfe4f7/server/src/com/cloud/vm/UserVmManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/UserVmManagerImpl.java b/server/src/com/cloud/vm/UserVmManagerImpl.java
index 8378fdd..e248c43 100755
--- a/server/src/com/cloud/vm/UserVmManagerImpl.java
+++ b/server/src/com/cloud/vm/UserVmManagerImpl.java
@@ -1512,7 +1512,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use
         try {
             List<VolumeVO> rootVol = _volsDao.findByInstanceAndType(vm.getId(), Volume.Type.ROOT);
             // expunge the vm
-            _itMgr.advanceExpunge(vm.getUuid(), _accountMgr.getSystemUser(), caller);
+            _itMgr.advanceExpunge(vm.getUuid());
 
             // Update Resource count
             if (vm.getAccountId() != Account.ACCOUNT_ID_SYSTEM && !rootVol.isEmpty()) {
@@ -4554,7 +4554,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use
 
         if (needRestart) {
             try {
-                _itMgr.stop(vm.getUuid(), user, caller);
+                _itMgr.stop(vm.getUuid());
             } catch (CloudRuntimeException e) {
                 s_logger.debug("Stop vm " + vm.getUuid() + " failed");
                 CloudRuntimeException ex = new CloudRuntimeException("Stop vm failed for specified vmId");
@@ -4614,7 +4614,7 @@ public class UserVmManagerImpl extends ManagerBase implements UserVmManager, Use
 
         if (needRestart) {
             try {
-                _itMgr.start(vm.getUuid(), null, user, caller);
+                _itMgr.start(vm.getUuid(), null);
             } catch (Exception e) {
                 s_logger.debug("Unable to start VM " + vm.getUuid(), e);
                 CloudRuntimeException ex = new CloudRuntimeException(

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/33dfe4f7/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
index e42427b..d1a557d 100755
--- a/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
+++ b/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
@@ -364,9 +364,9 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
     }
 
     @Override
-    public void expunge(String vmUuid, User caller, Account account) {
+    public void expunge(String vmUuid) {
         try {
-            advanceExpunge(vmUuid, caller, account);
+            advanceExpunge(vmUuid);
         } catch (OperationTimedoutException e) {
             throw new CloudRuntimeException("Operation timed out", e);
         } catch (ConcurrentOperationException e) {
@@ -377,7 +377,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
     }
 
     @Override
-    public void advanceExpunge(String vmUuid, User caller, Account account) throws ResourceUnavailableException, OperationTimedoutException,
+    public void advanceExpunge(String vmUuid) throws ResourceUnavailableException, OperationTimedoutException,
             ConcurrentOperationException {
         VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
         if (vm == null || vm.getRemoved() != null) {
@@ -387,7 +387,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
             return;
         }
 
-        advanceStop(vmUuid, false, caller, account);
+        advanceStop(vmUuid, false);
 
         vm = _vmDao.findByUuid(vmUuid);
         try {
@@ -493,14 +493,14 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
     }
 
     @Override
-    public void start(String vmUuid, Map<VirtualMachineProfile.Param, Object> params, User caller, Account account) {
-        start(vmUuid, params, caller, account, null);
+    public void start(String vmUuid, Map<VirtualMachineProfile.Param, Object> params) {
+        start(vmUuid, params, null);
     }
 
     @Override
-    public void start(String vmUuid, Map<VirtualMachineProfile.Param, Object> params, User caller, Account account, DeploymentPlan planToDeploy) {
+    public void start(String vmUuid, Map<VirtualMachineProfile.Param, Object> params, DeploymentPlan planToDeploy) {
         try {
-            advanceStart(vmUuid, params, caller, account, planToDeploy);
+            advanceStart(vmUuid, params, planToDeploy);
         } catch (ConcurrentOperationException e) {
             throw new CloudRuntimeException(e).add(VirtualMachine.class, vmUuid);
         } catch (InsufficientCapacityException e) {
@@ -671,18 +671,12 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
     }
 
     @Override
-    public void advanceStart(String vmUuid, Map<VirtualMachineProfile.Param, Object> params, User caller, Account account) throws InsufficientCapacityException,
-    	ConcurrentOperationException, ResourceUnavailableException {
-        advanceStart(vmUuid, params, caller, account, null);
-    }
-    
-    @Override
     @DB
-    public void advanceStart(String vmUuid, Map<VirtualMachineProfile.Param, Object> params, User callingUser, Account callingAccount, DeploymentPlan planToDeploy)
+    public void advanceStart(String vmUuid, Map<VirtualMachineProfile.Param, Object> params, DeploymentPlan planToDeploy)
         throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException {
         CallContext context = CallContext.current();
-        callingUser = context.getCallingUser();
-        callingAccount = context.getCallingAccount();
+        User callingUser = context.getCallingUser();
+        Account callingAccount = context.getCallingAccount();
 
         final VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
     	
@@ -1013,9 +1007,9 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
     }
     
     @Override
-    public void stop(String vmUuid, User user, Account account) {
+    public void stop(String vmUuid) {
         try {
-            advanceStop(vmUuid, false, user, account);
+            advanceStop(vmUuid, false);
         } catch (OperationTimedoutException e) {
             throw new CloudRuntimeException(e).add(VirtualMachine.class, vmUuid);
         } catch (ConcurrentOperationException e) {
@@ -1114,9 +1108,12 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
     }
     
     @Override
-    public void advanceStop(final String vmUuid, boolean forced, User user, Account account) throws ResourceUnavailableException,
+    public void advanceStop(final String vmUuid, boolean forced) throws ResourceUnavailableException,
             OperationTimedoutException, ConcurrentOperationException {
-        CallContext context = CallContext.current();
+        CallContext cc = CallContext.current();
+        Account account = cc.getCallingAccount();
+        User user = cc.getCallingUser();
+
         final VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
     	VmWorkJobVO workJob = null;
     	Transaction txn = Transaction.currentTxn();
@@ -1132,7 +1129,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
         		assert(pendingWorkJobs.size() == 1);
         		workJob = pendingWorkJobs.get(0);
         	} else {
-                workJob = new VmWorkJobVO(context.getContextId());
+                workJob = new VmWorkJobVO(cc.getContextId());
         	
                 workJob.setDispatcher(VmWorkJobDispatcher.VM_WORK_JOB_DISPATCHER);
                 workJob.setCmd(VmWorkJobDispatcher.Stop);
@@ -1534,7 +1531,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
     }
 
     @Override
-    public boolean destroy(String vmUuid, User user, Account caller) throws ResourceUnavailableException, OperationTimedoutException,
+    public boolean destroy(String vmUuid) throws ResourceUnavailableException, OperationTimedoutException,
             ConcurrentOperationException {
         VMInstanceVO vm = _vmDao.findByUuid(vmUuid);
         if (s_logger.isDebugEnabled()) {
@@ -1547,7 +1544,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
             return true;
         }
 
-        advanceStop(vmUuid, _forceStop, user, caller);
+        advanceStop(vmUuid, _forceStop);
         
         vm = _vmDao.findById(vm.getId());
 
@@ -2098,7 +2095,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
                 return true;
             }
             try {
-                advanceStop(vm.getUuid(), true, cc.getCallingUser(), cc.getCallingAccount());
+                advanceStop(vm.getUuid(), true);
                 return true;
             } catch (ResourceUnavailableException e) {
                 s_logger.debug("Unable to stop VM due to " + e.getMessage());

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/33dfe4f7/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java b/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java
index 41d53d3..8d1c628 100644
--- a/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java
+++ b/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java
@@ -673,7 +673,7 @@ public class VMSnapshotManagerImpl extends ManagerBase implements VMSnapshotMana
         // start or stop VM first, if revert from stopped state to running state, or from running to stopped
         if(userVm.getState() == VirtualMachine.State.Stopped && vmSnapshotVo.getType() == VMSnapshot.Type.DiskAndMemory){
             try {
-                _itMgr.start(userVm.getUuid(), new HashMap<VirtualMachineProfile.Param, Object>(), callerUser, owner);
+                _itMgr.start(userVm.getUuid(), new HashMap<VirtualMachineProfile.Param, Object>());
                 userVm = _userVMDao.findById(userVm.getId());
                 hostId = userVm.getHostId();
             } catch (CloudRuntimeException e) {
@@ -683,7 +683,7 @@ public class VMSnapshotManagerImpl extends ManagerBase implements VMSnapshotMana
         }else {
             if(userVm.getState() == VirtualMachine.State.Running && vmSnapshotVo.getType() == VMSnapshot.Type.Disk){
                 try {
-                    _itMgr.advanceStop(userVm.getUuid(), false, callerUser, owner);
+                    _itMgr.advanceStop(userVm.getUuid(), false);
                 } catch (Exception e) {
                     s_logger.error("Stop VM " + userVm.getInstanceName() + " before reverting failed due to " + e.getMessage());
     			    throw new CloudRuntimeException(e.getMessage());

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/33dfe4f7/server/test/com/cloud/vm/VmWorkMockVirtualMachineManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/test/com/cloud/vm/VmWorkMockVirtualMachineManagerImpl.java b/server/test/com/cloud/vm/VmWorkMockVirtualMachineManagerImpl.java
index 1d49071..80fe930 100644
--- a/server/test/com/cloud/vm/VmWorkMockVirtualMachineManagerImpl.java
+++ b/server/test/com/cloud/vm/VmWorkMockVirtualMachineManagerImpl.java
@@ -141,26 +141,22 @@ public class VmWorkMockVirtualMachineManagerImpl implements VirtualMachineManage
 	}
 
 	@Override
-    public void start(String vmUuid, Map<Param, Object> params,
-            User caller, Account account) {
+    public void start(String vmUuid, Map<Param, Object> params) {
 		// TODO Auto-generated method stub
 	}
 
 	@Override
-    public void start(String vmUuid, Map<Param, Object> params,
-            User caller, Account account, DeploymentPlan planToDeploy) {
+    public void start(String vmUuid, Map<Param, Object> params, DeploymentPlan planToDeploy) {
 		// TODO Auto-generated method stub
 	}
 
 	@Override
-    public void stop(String vmUuid, User caller,
-            Account account) {
+    public void stop(String vmUuid) {
 		// TODO Auto-generated method stub
 	}
 
 	@Override
-    public void expunge(String vmUuid, User caller,
-            Account account) {
+    public void expunge(String vmUuid) {
 		// TODO Auto-generated method stub
 	}
 
@@ -190,16 +186,7 @@ public class VmWorkMockVirtualMachineManagerImpl implements VirtualMachineManage
 	}
 
 	@Override
-    public void advanceStart(String vmUuid,
-			Map<Param, Object> params, User caller, Account account)
-			throws InsufficientCapacityException, ResourceUnavailableException,
-			ConcurrentOperationException, OperationTimedoutException {
-		// TODO Auto-generated method stub
-	}
-
-	@Override
-    public void advanceStart(String vmUuid,
-			Map<Param, Object> params, User caller, Account account,
+    public void advanceStart(String vmUuid, Map<Param, Object> params,
 			DeploymentPlan planToDeploy) throws InsufficientCapacityException,
 			ResourceUnavailableException, ConcurrentOperationException,
 			OperationTimedoutException {
@@ -207,22 +194,19 @@ public class VmWorkMockVirtualMachineManagerImpl implements VirtualMachineManage
 	}
 
 	@Override
-    public void advanceStop(String vmUuid, boolean forced,
-			User caller, Account account) throws ResourceUnavailableException,
+    public void advanceStop(String vmUuid, boolean forced) throws ResourceUnavailableException,
 			OperationTimedoutException, ConcurrentOperationException {
 		// TODO Auto-generated method stub
 	}
 
 	@Override
-    public void advanceExpunge(String vmUuid, User caller,
-			Account account) throws ResourceUnavailableException,
+    public void advanceExpunge(String vmUuid) throws ResourceUnavailableException,
 			OperationTimedoutException, ConcurrentOperationException {
 		// TODO Auto-generated method stub
 	}
 
 	@Override
-    public boolean destroy(String vmUuid, User caller,
-			Account account) throws AgentUnavailableException,
+    public boolean destroy(String vmUuid) throws AgentUnavailableException,
 			OperationTimedoutException, ConcurrentOperationException {
 		// TODO Auto-generated method stub
 		return false;