You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by an...@apache.org on 2014/07/28 21:52:42 UTC

[1/3] completed the new vmsync TODOs in the code. removed old vmsync logic

Repository: cloudstack
Updated Branches:
  refs/heads/master acc9c7937 -> 330c4ba57


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
index 4fa0456..775f5455 100644
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
+++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/CitrixResourceBase.java
@@ -244,7 +244,6 @@ import com.cloud.utils.ssh.SshHelper;
 import com.cloud.vm.DiskProfile;
 import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.VirtualMachine.PowerState;
-import com.cloud.vm.VirtualMachine.State;
 import com.cloud.vm.snapshot.VMSnapshot;
 
 /**
@@ -271,7 +270,6 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
     protected long _dcId;
     protected String _pod;
     protected String _cluster;
-    protected static final XenServerPoolVms s_vms = new XenServerPoolVms();
     protected String _privateNetworkName;
     protected String _linkLocalPrivateNetworkName;
     protected String _publicNetworkName;
@@ -328,29 +326,16 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
         }
     }
 
-    protected static final HashMap<Types.VmPowerState, PowerState> s_powerStatesTable;
+    protected static final HashMap<VmPowerState, PowerState> s_powerStatesTable;
     static {
-        s_powerStatesTable = new HashMap<Types.VmPowerState, PowerState>();
-        s_powerStatesTable.put(Types.VmPowerState.HALTED, PowerState.PowerOff);
-        s_powerStatesTable.put(Types.VmPowerState.PAUSED, PowerState.PowerOff);
-        s_powerStatesTable.put(Types.VmPowerState.RUNNING, PowerState.PowerOn);
-        s_powerStatesTable.put(Types.VmPowerState.SUSPENDED, PowerState.PowerOff);
-        s_powerStatesTable.put(Types.VmPowerState.UNRECOGNIZED, PowerState.PowerUnknown);
+        s_powerStatesTable = new HashMap<VmPowerState, PowerState>();
+        s_powerStatesTable.put(VmPowerState.HALTED, PowerState.PowerOff);
+        s_powerStatesTable.put(VmPowerState.PAUSED, PowerState.PowerOff);
+        s_powerStatesTable.put(VmPowerState.RUNNING, PowerState.PowerOn);
+        s_powerStatesTable.put(VmPowerState.SUSPENDED, PowerState.PowerOff);
+        s_powerStatesTable.put(VmPowerState.UNRECOGNIZED, PowerState.PowerUnknown);
     }
 
-    // TODO vmsync {
-    protected static final HashMap<Types.VmPowerState, State> s_statesTable;
-    static {
-        s_statesTable = new HashMap<Types.VmPowerState, State>();
-        s_statesTable.put(Types.VmPowerState.HALTED, State.Stopped);
-        s_statesTable.put(Types.VmPowerState.PAUSED, State.Running);
-        s_statesTable.put(Types.VmPowerState.RUNNING, State.Running);
-        s_statesTable.put(Types.VmPowerState.SUSPENDED, State.Running);
-        s_statesTable.put(Types.VmPowerState.UNRECOGNIZED, State.Unknown);
-    }
-
-    // TODO vmsync }
-
     public XsHost getHost() {
         return _host;
     }
@@ -790,13 +775,10 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
         VMSnapshot.Type vmSnapshotType = cmd.getTarget().getType();
         Boolean snapshotMemory = vmSnapshotType == VMSnapshot.Type.DiskAndMemory;
         Connection conn = getConnection();
-        VirtualMachine.State vmState = null;
+        PowerState vmState = null;
         VM vm = null;
         try {
 
-            // remove vm from s_vms, for delta sync
-            s_vms.remove(_cluster, _name, vmName);
-
             Set<VM> vmSnapshots = VM.getByNameLabel(conn, cmd.getTarget().getSnapshotName());
             if (vmSnapshots.size() == 0)
                 return new RevertToVMSnapshotAnswer(cmd, false, "Cannot find vmSnapshot with name: " + cmd.getTarget().getSnapshotName());
@@ -830,10 +812,9 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
 
             if (!snapshotMemory) {
                 vm.destroy(conn);
-                vmState = VirtualMachine.State.Stopped;
+                vmState = PowerState.PowerOff;
             } else {
-                s_vms.put(_cluster, _name, vmName, State.Running);
-                vmState = VirtualMachine.State.Running;
+                vmState = PowerState.PowerOn;
             }
 
             // after revert, VM's volumes path have been changed, need to report to manager
@@ -1710,7 +1691,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
         Connection conn = getConnection();
         VirtualMachineTO vmSpec = cmd.getVirtualMachine();
         String vmName = vmSpec.getName();
-        State state = State.Stopped;
+        VmPowerState state = VmPowerState.HALTED;
         VM vm = null;
         // if a VDI is created, record its UUID to send back to the CS MS
         Map<String, String> iqnToPath = new HashMap<String, String>();
@@ -1733,9 +1714,6 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
                     }
                 }
             }
-            synchronized (_cluster.intern()) {
-                s_vms.put(_cluster, _name, vmName, State.Starting);
-            }
             s_logger.debug("1. The VM " + vmName + " is in Starting state.");
 
             Host host = Host.getByUuid(conn, _host.uuid);
@@ -1839,7 +1817,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
                 }
             }
 
-            state = State.Running;
+            state = VmPowerState.RUNNING;
 
             StartAnswer startAnswer = new StartAnswer(cmd);
 
@@ -1856,14 +1834,10 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
 
             return startAnswer;
         } finally {
-            synchronized (_cluster.intern()) {
-                if (state != State.Stopped) {
-                    s_vms.put(_cluster, _name, vmName, state);
-                    s_logger.debug("2. The VM " + vmName + " is in " + state + " state.");
-                } else {
-                    s_vms.remove(_cluster, _name, vmName);
-                    s_logger.debug("The VM is in stopped state, detected problem during startup : " + vmName);
-                }
+            if (state != VmPowerState.HALTED) {
+                s_logger.debug("2. The VM " + vmName + " is in " + state + " state.");
+            } else {
+                s_logger.debug("The VM is in stopped state, detected problem during startup : " + vmName);
             }
         }
     }
@@ -2575,13 +2549,9 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
 
     }
 
-    protected State convertToState(Types.VmPowerState ps) {
-        final State state = s_statesTable.get(ps);
-        return state == null ? State.Unknown : state;
-    }
-
-    private static PowerState convertPowerState(Types.VmPowerState powerState) {
-        return s_powerStatesTable.get(powerState);
+    private static PowerState convertToPowerState(VmPowerState ps) {
+        final PowerState powerState = s_powerStatesTable.get(ps);
+        return powerState == null ?  PowerState.PowerUnknown : powerState;
     }
 
     protected HashMap<String, HostVmStateReportEntry> getHostVmStateReport(Connection conn) {
@@ -2629,7 +2599,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
                 if (host_uuid.equalsIgnoreCase(_host.uuid)) {
                     vmStates.put(
                             record.nameLabel,
-                            new HostVmStateReportEntry(convertPowerState(ps), host_uuid)
+                            new HostVmStateReportEntry(convertToPowerState(ps), host_uuid)
                             );
                 }
             }
@@ -2638,65 +2608,13 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
         return vmStates;
     }
 
-    // TODO vmsync {
-    protected HashMap<String, Pair<String, State>> getAllVms(Connection conn) {
-        final HashMap<String, Pair<String, State>> vmStates = new HashMap<String, Pair<String, State>>();
-        Map<VM, VM.Record> vm_map = null;
-        for (int i = 0; i < 2; i++) {
-            try {
-                vm_map = VM.getAllRecords(conn);  //USE THIS TO GET ALL VMS FROM  A CLUSTER
-                break;
-            } catch (final Throwable e) {
-                s_logger.warn("Unable to get vms", e);
-            }
-            try {
-                Thread.sleep(1000);
-            } catch (final InterruptedException ex) {
-
-            }
-        }
-
-        if (vm_map == null) {
-            return null;
-        }
-        for (VM.Record record : vm_map.values()) {
-            if (record.isControlDomain || record.isASnapshot || record.isATemplate) {
-                continue; // Skip DOM0
-            }
-
-            VmPowerState ps = record.powerState;
-            final State state = convertToState(ps);
-            if (s_logger.isTraceEnabled()) {
-                s_logger.trace("VM " + record.nameLabel + ": powerstate = " + ps + "; vm state=" + state.toString());
-            }
-            Host host = record.residentOn;
-            String host_uuid = null;
-            if (!isRefNull(host)) {
-                try {
-                    host_uuid = host.getUuid(conn);
-                } catch (BadServerResponse e) {
-                    s_logger.error("Failed to get host uuid for host " + host.toWireString(), e);
-                } catch (XenAPIException e) {
-                    s_logger.error("Failed to get host uuid for host " + host.toWireString(), e);
-                } catch (XmlRpcException e) {
-                    s_logger.error("Failed to get host uuid for host " + host.toWireString(), e);
-                }
-                vmStates.put(record.nameLabel, new Pair<String, State>(host_uuid, state));
-            }
-        }
-
-        return vmStates;
-    }
-
-    // TODO vmsync }
-
-    protected State getVmState(Connection conn, final String vmName) {
+    protected PowerState getVmState(Connection conn, final String vmName) {
         int retry = 3;
         while (retry-- > 0) {
             try {
                 Set<VM> vms = VM.getByNameLabel(conn, vmName);
                 for (final VM vm : vms) {
-                    return convertToState(vm.getPowerState(conn));
+                    return convertToPowerState(vm.getPowerState(conn));
                 }
             } catch (final BadServerResponse e) {
                 // There is a race condition within xenserver such that if a vm is
@@ -2727,22 +2645,19 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
             }
         }
 
-        return State.Stopped;
+        return PowerState.PowerOff;
     }
 
     protected CheckVirtualMachineAnswer execute(final CheckVirtualMachineCommand cmd) {
         Connection conn = getConnection();
         final String vmName = cmd.getVmName();
-        final State state = getVmState(conn, vmName);
+        final PowerState powerState = getVmState(conn, vmName);
         Integer vncPort = null;
-        if (state == State.Running) {
-            synchronized (_cluster.intern()) {
-                s_vms.put(_cluster, _name, vmName, State.Running);
-            }
+        if (powerState == PowerState.PowerOn) {
             s_logger.debug("3. The VM " + vmName + " is in Running state");
         }
 
-        return new CheckVirtualMachineAnswer(cmd, state, vncPort);
+        return new CheckVirtualMachineAnswer(cmd, powerState, vncPort);
     }
 
     protected PrepareForMigrationAnswer execute(PrepareForMigrationCommand cmd) {
@@ -2760,9 +2675,6 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
             for (NicTO nic : nics) {
                 getNetwork(conn, nic);
             }
-            synchronized (_cluster.intern()) {
-                s_vms.put(_cluster, _name, vm.getName(), State.Migrating);
-            }
             s_logger.debug("4. The VM " + vm.getName() + " is in Migrating state");
 
             return new PrepareForMigrationAnswer(cmd);
@@ -3000,14 +2912,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
     protected MigrateAnswer execute(final MigrateCommand cmd) {
         Connection conn = getConnection();
         final String vmName = cmd.getVmName();
-        State state = null;
-
-        state = s_vms.getState(_cluster, vmName);
 
-        synchronized (_cluster.intern()) {
-            s_vms.put(_cluster, _name, vmName, State.Stopping);
-        }
-        s_logger.debug("5. The VM " + vmName + " is in Stopping state");
         try {
             Set<VM> vms = VM.getByNameLabel(conn, vmName);
 
@@ -3037,54 +2942,16 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
                 }
                 migrateVM(conn, dsthost, vm, vmName);
                 vm.setAffinity(conn, dsthost);
-                state = State.Stopping;
             }
             return new MigrateAnswer(cmd, true, "migration succeeded", null);
         } catch (Exception e) {
             String msg = "Catch Exception " + e.getClass().getName() + ": Migration failed due to " + e.toString();
             s_logger.warn(msg, e);
             return new MigrateAnswer(cmd, false, msg, null);
-        } finally {
-            synchronized (_cluster.intern()) {
-                s_vms.put(_cluster, _name, vmName, state);
-            }
-            s_logger.debug("6. The VM " + vmName + " is in " + state + " state");
         }
 
     }
 
-    protected State getRealPowerState(Connection conn, String label) {
-        int i = 0;
-        s_logger.trace("Checking on the HALTED State");
-        for (; i < 20; i++) {
-            try {
-                Set<VM> vms = VM.getByNameLabel(conn, label);
-                if (vms == null || vms.size() == 0) {
-                    continue;
-                }
-
-                VM vm = vms.iterator().next();
-
-                VmPowerState vps = vm.getPowerState(conn);
-                if (vps != null && vps != VmPowerState.HALTED && vps != VmPowerState.UNRECOGNIZED) {
-                    return convertToState(vps);
-                }
-            } catch (XenAPIException e) {
-                String msg = "Unable to get real power state due to " + e.toString();
-                s_logger.warn(msg, e);
-            } catch (XmlRpcException e) {
-                String msg = "Unable to get real power state due to " + e.getMessage();
-                s_logger.warn(msg, e);
-            }
-
-            try {
-                Thread.sleep(1000);
-            } catch (InterruptedException e) {
-            }
-        }
-        return State.Stopped;
-    }
-
     protected Pair<VM, VM.Record> getControlDomain(Connection conn) throws XenAPIException, XmlRpcException {
         Host host = Host.getByUuid(conn, _host.uuid);
         Set<VM> vms = null;
@@ -3172,9 +3039,6 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
     @Override
     public RebootAnswer execute(RebootCommand cmd) {
         Connection conn = getConnection();
-        synchronized (_cluster.intern()) {
-            s_vms.put(_cluster, _name, cmd.getVmName(), State.Starting);
-        }
         s_logger.debug("7. The VM " + cmd.getVmName() + " is in Starting state");
         try {
             Set<VM> vms = null;
@@ -3198,9 +3062,6 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
             }
             return new RebootAnswer(cmd, "reboot succeeded", true);
         } finally {
-            synchronized (_cluster.intern()) {
-                s_vms.put(_cluster, _name, cmd.getVmName(), State.Running);
-            }
             s_logger.debug("8. The VM " + cmd.getVmName() + " is in Running state");
         }
     }
@@ -3342,7 +3203,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
                 waitForTask(conn, task, 1000, 10 * 60 * 1000);
                 checkForSuccess(conn, task);
             } catch (Types.HandleInvalid e) {
-                if (vm.getPowerState(conn) == Types.VmPowerState.RUNNING) {
+                if (vm.getPowerState(conn) == VmPowerState.RUNNING) {
                     task = null;
                     return;
                 }
@@ -3390,7 +3251,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
                 waitForTask(conn, task, 1000, 10 * 60 * 1000);
                 checkForSuccess(conn, task);
             } catch (TimeoutException e) {
-                if (vm.getPowerState(conn) == Types.VmPowerState.HALTED) {
+                if (vm.getPowerState(conn) == VmPowerState.HALTED) {
                     task = null;
                     return;
                 }
@@ -3399,19 +3260,19 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
         } catch (XenAPIException e) {
             s_logger.debug("Unable to cleanShutdown VM(" + vmName + ") on host(" + _host.uuid + ") due to " + e.toString());
             try {
-                Types.VmPowerState state = vm.getPowerState(conn);
-                if (state == Types.VmPowerState.RUNNING) {
+                VmPowerState state = vm.getPowerState(conn);
+                if (state == VmPowerState.RUNNING) {
                     try {
                         vm.hardShutdown(conn);
                     } catch (Exception e1) {
                         s_logger.debug("Unable to hardShutdown VM(" + vmName + ") on host(" + _host.uuid + ") due to " + e.toString());
                         state = vm.getPowerState(conn);
-                        if (state == Types.VmPowerState.RUNNING) {
+                        if (state == VmPowerState.RUNNING) {
                             forceShutdownVM(conn, vm);
                         }
                         return;
                     }
-                } else if (state == Types.VmPowerState.HALTED) {
+                } else if (state == VmPowerState.HALTED) {
                     return;
                 } else {
                     String msg = "After cleanShutdown the VM status is " + state.toString() + ", that is not expected";
@@ -3443,14 +3304,14 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
                 waitForTask(conn, task, 1000, 10 * 60 * 1000);
                 checkForSuccess(conn, task);
             } catch (Types.HandleInvalid e) {
-                if (vm.getPowerState(conn) == Types.VmPowerState.RUNNING) {
+                if (vm.getPowerState(conn) == VmPowerState.RUNNING) {
                     s_logger.debug("VM " + vmName + " is in Running status");
                     task = null;
                     return;
                 }
                 throw new CloudRuntimeException("Start VM " + vmName + " catch HandleInvalid and VM is not in RUNNING state");
             } catch (TimeoutException e) {
-                if (vm.getPowerState(conn) == Types.VmPowerState.RUNNING) {
+                if (vm.getPowerState(conn) == VmPowerState.RUNNING) {
                     s_logger.debug("VM " + vmName + " is in Running status");
                     task = null;
                     return;
@@ -3593,10 +3454,6 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
             }
 
             if (vms.size() == 0) {
-                synchronized (_cluster.intern()) {
-                    s_logger.info("VM does not exist on XenServer" + _host.uuid);
-                    s_vms.remove(_cluster, _name, vmName);
-                }
                 return new StopAnswer(cmd, "VM does not exist", true);
             }
             for (VM vm : vms) {
@@ -3620,11 +3477,6 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
                     return new StopAnswer(cmd, msg, false);
                 }
 
-                State state = s_vms.getState(_cluster, vmName);
-
-                synchronized (_cluster.intern()) {
-                    s_vms.put(_cluster, _name, vmName, State.Stopping);
-                }
                 s_logger.debug("9. The VM " + vmName + " is in Stopping state");
 
                 try {
@@ -3668,7 +3520,6 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
                                 networks.add(vif.getNetwork(conn));
                             }
                             vm.destroy(conn);
-                            state = State.Stopped;
                             SR sr = getISOSRbyVmName(conn, cmd.getVmName());
                             removeSR(conn, sr);
                             // Disable any VLAN networks that aren't used
@@ -3688,10 +3539,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
                         String msg = "VM destroy failed in Stop " + vmName + " Command due to " + e.getMessage();
                         s_logger.warn(msg, e);
                     } finally {
-                        synchronized (_cluster.intern()) {
-                            s_vms.put(_cluster, _name, vmName, state);
-                        }
-                        s_logger.debug("10. The VM " + vmName + " is in " + state + " state");
+                        s_logger.debug("10. The VM " + vmName + " is in Stopped state");
                     }
                 }
             }
@@ -4317,13 +4165,13 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
             }
             Connection conn = getConnection();
             if (!_canBridgeFirewall && !_isOvs) {
-                return new PingRoutingCommand(getType(), id, null, getHostVmStateReport(conn));
+                return new PingRoutingCommand(getType(), id, getHostVmStateReport(conn));
             } else if (_isOvs) {
                 List<Pair<String, Long>> ovsStates = ovsFullSyncStates();
-                return new PingRoutingWithOvsCommand(getType(), id, null, getHostVmStateReport(conn), ovsStates);
+                return new PingRoutingWithOvsCommand(getType(), id, getHostVmStateReport(conn), ovsStates);
             } else {
                 HashMap<String, Pair<Long, Long>> nwGrpStates = syncNetworkGroups(conn, id);
-                return new PingRoutingWithNwGroupsCommand(getType(), id, null, getHostVmStateReport(conn), nwGrpStates);
+                return new PingRoutingWithNwGroupsCommand(getType(), id, getHostVmStateReport(conn), nwGrpStates);
             }
         } catch (Exception e) {
             s_logger.warn("Unable to get current status", e);
@@ -4581,7 +4429,6 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
         cmd.setHypervisorType(HypervisorType.XenServer);
         cmd.setCluster(_cluster);
         cmd.setPoolSync(false);
-        cmd.setHostVmStateReport(getHostVmStateReport(conn));
 
         Pool pool;
         try {
@@ -4589,10 +4436,6 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
             Pool.Record poolr = pool.getRecord(conn);
 
             Host.Record hostr = poolr.master.getRecord(conn);
-            if (_host.uuid.equals(hostr.uuid)) {
-                HashMap<String, Pair<String, State>> allStates = fullClusterSync(conn);
-                cmd.setClusterVMStateChanges(allStates);
-            }
         } catch (Throwable e) {
             s_logger.warn("Check for master failed, failing the FULL Cluster sync command");
         }
@@ -6411,7 +6254,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
         String vmName = cmd.getVmName();
         String vmSnapshotName = cmd.getTarget().getSnapshotName();
         List<VolumeObjectTO> listVolumeTo = cmd.getVolumeTOs();
-        VirtualMachine.State vmState = cmd.getVmState();
+        VmPowerState vmState = VmPowerState.HALTED;
         String guestOSType = cmd.getGuestOSType();
         String platformEmulator = cmd.getPlatformEmulator();
 
@@ -6446,6 +6289,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
             if (task == null) {
                 try {
                     vm = getVM(conn, vmName);
+                    vmState = vm.getPowerState(conn);
                 } catch (Exception e) {
                     if (!snapshotMemory) {
                         vm = createWorkingVM(conn, vmName, guestOSType, platformEmulator, listVolumeTo);
@@ -6525,7 +6369,7 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
                         vmSnapshot.destroy(conn);
                     }
                 }
-                if (vmState == VirtualMachine.State.Stopped) {
+                if (vmState == VmPowerState.HALTED) {
                     if (vm != null) {
                         vm.destroy(conn);
                     }
@@ -7193,146 +7037,6 @@ public abstract class CitrixResourceBase implements ServerResource, HypervisorRe
         return vmMetaDatum;
     }
 
-    protected HashMap<String, Pair<String, State>> fullClusterSync(Connection conn) {
-        synchronized (_cluster.intern()) {
-            s_vms.clear(_cluster);
-        }
-        try {
-            Map<VM, VM.Record> vm_map = VM.getAllRecords(conn);  //USE THIS TO GET ALL VMS FROM  A CLUSTER
-            for (VM.Record record : vm_map.values()) {
-                if (record.isControlDomain || record.isASnapshot || record.isATemplate) {
-                    continue; // Skip DOM0
-                }
-                String vm_name = record.nameLabel;
-                VmPowerState ps = record.powerState;
-                final State state = convertToState(ps);
-                Host host = record.residentOn;
-                String host_uuid = null;
-                if (!isRefNull(host)) {
-                    host_uuid = host.getUuid(conn);
-                    synchronized (_cluster.intern()) {
-                        s_vms.put(_cluster, host_uuid, vm_name, state);
-                    }
-                }
-                if (s_logger.isTraceEnabled()) {
-                    s_logger.trace("VM " + vm_name + ": powerstate = " + ps + "; vm state=" + state.toString());
-                }
-            }
-        } catch (final Throwable e) {
-            String msg = "Unable to get vms through host " + _host.uuid + " due to to " + e.toString();
-            s_logger.warn(msg, e);
-            throw new CloudRuntimeException(msg);
-        }
-        return s_vms.getClusterVmState(_cluster);
-    }
-
-    protected HashMap<String, Pair<String, State>> deltaClusterSync(Connection conn) {
-        final HashMap<String, Pair<String, State>> changes = new HashMap<String, Pair<String, State>>();
-
-        synchronized (_cluster.intern()) {
-            HashMap<String, Pair<String, State>> newStates = getAllVms(conn);
-            if (newStates == null) {
-                s_logger.warn("Unable to get the vm states so no state sync at this point.");
-                return null;
-            }
-            HashMap<String, Pair<String, State>> oldStates = new HashMap<String, Pair<String, State>>(s_vms.size(_cluster));
-            oldStates.putAll(s_vms.getClusterVmState(_cluster));
-
-            for (final Map.Entry<String, Pair<String, State>> entry : newStates.entrySet()) {
-                final String vm = entry.getKey();
-                State newState = entry.getValue().second();
-                String host_uuid = entry.getValue().first();
-                final Pair<String, State> oldState = oldStates.remove(vm);
-
-                //check if host is changed
-                if (host_uuid != null && oldState != null) {
-                    if (!host_uuid.equals(oldState.first()) && newState != State.Stopped && newState != State.Stopping) {
-                        s_logger.warn("Detecting a change in host for " + vm);
-                        changes.put(vm, new Pair<String, State>(host_uuid, newState));
-
-                        s_logger.debug("11. The VM " + vm + " is in " + newState + " state");
-                        s_vms.put(_cluster, host_uuid, vm, newState);
-                        continue;
-                    }
-                }
-
-                if (newState == State.Stopped && oldState != null && oldState.second() != State.Stopping && oldState.second() != State.Stopped) {
-                    newState = getRealPowerState(conn, vm);
-                }
-
-                if (s_logger.isTraceEnabled()) {
-                    s_logger.trace("VM " + vm + ": xenserver has state " + newState + " and we have state " + (oldState != null ? oldState.toString() : "null"));
-                }
-
-                if (vm.startsWith("migrating")) {
-                    s_logger.warn("Migrating from xenserver detected.  Skipping");
-                    continue;
-                }
-                if (oldState == null) {
-                    s_vms.put(_cluster, host_uuid, vm, newState);
-                    s_logger.warn("Detecting a new state but couldn't find a old state so adding it to the changes: " + vm);
-                    changes.put(vm, new Pair<String, State>(host_uuid, newState));
-                } else if (oldState.second() == State.Starting) {
-                    if (newState == State.Running) {
-                        s_logger.debug("12. The VM " + vm + " is in " + State.Running + " state");
-                        s_vms.put(_cluster, host_uuid, vm, newState);
-                    } else if (newState == State.Stopped) {
-                        s_logger.warn("Ignoring vm " + vm + " because of a lag in starting the vm.");
-                    }
-                } else if (oldState.second() == State.Migrating) {
-                    if (newState == State.Running) {
-                        s_logger.debug("Detected that an migrating VM is now running: " + vm);
-                        s_vms.put(_cluster, host_uuid, vm, newState);
-                    }
-                } else if (oldState.second() == State.Stopping) {
-                    if (newState == State.Stopped) {
-                        s_logger.debug("13. The VM " + vm + " is in " + State.Stopped + " state");
-                        s_vms.put(_cluster, host_uuid, vm, newState);
-                    } else if (newState == State.Running) {
-                        s_logger.warn("Ignoring vm " + vm + " because of a lag in stopping the vm. ");
-                    }
-                } else if (oldState.second() != newState) {
-                    s_logger.debug("14. The VM " + vm + " is in " + newState + " state was " + oldState.second());
-                    s_vms.put(_cluster, host_uuid, vm, newState);
-                    if (newState == State.Stopped) {
-                        /*
-                         * if (s_vmsKilled.remove(vm)) { s_logger.debug("VM " + vm + " has been killed for storage. ");
-                         * newState = State.Error; }
-                         */
-                    }
-                    changes.put(vm, new Pair<String, State>(host_uuid, newState));
-                }
-            }
-
-            for (final Map.Entry<String, Pair<String, State>> entry : oldStates.entrySet()) {
-                final String vm = entry.getKey();
-                final State oldState = entry.getValue().second();
-                String host_uuid = entry.getValue().first();
-
-                if (s_logger.isTraceEnabled()) {
-                    s_logger.trace("VM " + vm + " is now missing from xenserver so reporting stopped");
-                }
-
-                if (oldState == State.Stopping) {
-                    s_logger.warn("Ignoring VM " + vm + " in transition state stopping.");
-                    s_vms.remove(_cluster, host_uuid, vm);
-                } else if (oldState == State.Starting) {
-                    s_logger.warn("Ignoring VM " + vm + " in transition state starting.");
-                } else if (oldState == State.Stopped) {
-                    s_logger.debug("VM missing " + vm + " old state stopped so removing.");
-                    s_vms.remove(_cluster, host_uuid, vm);
-                } else if (oldState == State.Migrating) {
-                    s_logger.warn("Ignoring VM " + vm + " in migrating state.");
-                } else {
-                    State newState = State.Stopped;
-                    s_logger.warn("The VM is now missing marking it as Stopped " + vm);
-                    changes.put(vm, new Pair<String, State>(host_uuid, newState));
-                }
-            }
-        }
-        return changes;
-    }
-
     /**
      * @param cmd
      * @return

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServer56FP1Resource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServer56FP1Resource.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServer56FP1Resource.java
index e1669a5..1a04f1f 100644
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServer56FP1Resource.java
+++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServer56FP1Resource.java
@@ -101,9 +101,6 @@ public class XenServer56FP1Resource extends XenServer56Resource {
                         vdis.add(vdi);
                     }
                 }
-                synchronized (_cluster.intern()) {
-                    s_vms.remove(_cluster, _name, vm.getNameLabel(conn));
-                }
                 s_logger.info("Fence command for VM " + cmd.getVmName());
                 vm.powerStateReset(conn);
                 vm.destroy(conn);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServer56Resource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServer56Resource.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServer56Resource.java
index d3e17bd..6f3537d 100644
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServer56Resource.java
+++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServer56Resource.java
@@ -261,9 +261,6 @@ public class XenServer56Resource extends CitrixResourceBase {
             }
             Set<VM> vms = VM.getByNameLabel(conn, cmd.getVmName());
             for (VM vm : vms) {
-                synchronized (_cluster.intern()) {
-                    s_vms.remove(_cluster, _name, vm.getNameLabel(conn));
-                }
                 s_logger.info("Fence command for VM " + cmd.getVmName());
                 vm.powerStateReset(conn);
                 vm.destroy(conn);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServer610Resource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServer610Resource.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServer610Resource.java
index b099c99..c4a0056 100644
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServer610Resource.java
+++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServer610Resource.java
@@ -62,7 +62,6 @@ import com.cloud.network.Networks.TrafficType;
 import com.cloud.resource.ServerResource;
 import com.cloud.storage.Volume;
 import com.cloud.utils.exception.CloudRuntimeException;
-import com.cloud.vm.VirtualMachine.State;
 
 @Local(value = ServerResource.class)
 public class XenServer610Resource extends XenServer602Resource {
@@ -143,13 +142,8 @@ public class XenServer610Resource extends XenServer602Resource {
         VirtualMachineTO vmSpec = cmd.getVirtualMachine();
         Map<VolumeTO, StorageFilerTO> volumeToFiler = cmd.getVolumeToFiler();
         final String vmName = vmSpec.getName();
-        State state = s_vms.getState(_cluster, vmName);
         Task task = null;
 
-        synchronized (_cluster.intern()) {
-            s_vms.put(_cluster, _name, vmName, State.Stopping);
-        }
-
         try {
             prepareISO(connection, vmSpec.getName());
             Map<String, String> other = new HashMap<String, String>();
@@ -196,8 +190,6 @@ public class XenServer610Resource extends XenServer602Resource {
             // Volume paths would have changed. Return that information.
             List<VolumeObjectTO> volumeToList = getUpdatedVolumePathsOfMigratedVm(connection, vmToMigrate, vmSpec.getDisks());
             vmToMigrate.setAffinity(connection, host);
-            state = State.Stopping;
-
             return new MigrateWithStorageAnswer(cmd, volumeToList);
         } catch (Exception e) {
             s_logger.warn("Catch Exception " + e.getClass().getName() + ". Storage motion failed due to " + e.toString(), e);
@@ -210,10 +202,6 @@ public class XenServer610Resource extends XenServer602Resource {
                     s_logger.debug("Unable to destroy task " + task.toString() + " on host " + _host.uuid + " due to " + e.toString());
                 }
             }
-
-            synchronized (_cluster.intern()) {
-                s_vms.put(_cluster, _name, vmName, state);
-            }
         }
     }
 
@@ -260,15 +248,9 @@ public class XenServer610Resource extends XenServer602Resource {
         Map<NicTO, Object> nicToNetwork = cmd.getNicToNetwork();
         Map<String, String> token = cmd.getToken();
         final String vmName = vmSpec.getName();
-        State state = s_vms.getState(_cluster, vmName);
         Set<VolumeTO> volumeToSet = null;
         boolean migrated = false;
         Task task = null;
-
-        synchronized (_cluster.intern()) {
-            s_vms.put(_cluster, _name, vmName, State.Stopping);
-        }
-
         try {
             Set<VM> vms = VM.getByNameLabel(connection, vmSpec.getName());
             VM vmToMigrate = vms.iterator().next();
@@ -339,15 +321,6 @@ public class XenServer610Resource extends XenServer602Resource {
                     s_logger.debug("Unable to destroy task " + task.toString() + " on host " + _host.uuid + " due to " + e.toString());
                 }
             }
-
-            // Keep cluster/vm sync happy.
-            synchronized (_cluster.intern()) {
-                if (migrated) {
-                    s_vms.remove(_cluster, _name, vmName);
-                } else {
-                    s_vms.put(_cluster, _name, vmName, state);
-                }
-            }
         }
     }
 
@@ -369,10 +342,6 @@ public class XenServer610Resource extends XenServer602Resource {
             List<VolumeObjectTO> volumeToSet = getUpdatedVolumePathsOfMigratedVm(connection, migratedVm, vmSpec.getDisks());
             migratedVm.setAffinity(connection, host);
 
-            synchronized (_cluster.intern()) {
-                s_vms.put(_cluster, _name, vmSpec.getName(), State.Running);
-            }
-
             return new MigrateWithStorageCompleteAnswer(cmd, volumeToSet);
         } catch (CloudRuntimeException e) {
             s_logger.error("Migration of vm " + vmSpec.getName() + " with storage failed due to " + e.toString(), e);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServerPoolVms.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServerPoolVms.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServerPoolVms.java
deleted file mode 100644
index 9cbf71f..0000000
--- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/XenServerPoolVms.java
+++ /dev/null
@@ -1,92 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements.  See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership.  The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License.  You may obtain a copy of the License at
-//
-//   http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied.  See the License for the
-// specific language governing permissions and limitations
-// under the License.
-package com.cloud.hypervisor.xenserver.resource;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.apache.log4j.Logger;
-
-import com.cloud.utils.Pair;
-import com.cloud.vm.VirtualMachine.State;
-
-public class XenServerPoolVms {
-    private static final Logger s_logger = Logger.getLogger(XenServerPoolVms.class);
-    private final Map<String/* clusterId */, HashMap<String/* vm name */, Pair<String/* host uuid */, State/* vm state */>>> _clusterVms =
-        new ConcurrentHashMap<String, HashMap<String, Pair<String, State>>>();
-
-    public HashMap<String, Pair<String, State>> getClusterVmState(String clusterId) {
-        HashMap<String, Pair<String, State>> _vms = _clusterVms.get(clusterId);
-        if (_vms == null) {
-            HashMap<String, Pair<String, State>> vmStates = new HashMap<String, Pair<String, State>>();
-            _clusterVms.put(clusterId, vmStates);
-            return vmStates;
-        } else
-            return _vms;
-    }
-
-    public void clear(String clusterId) {
-        HashMap<String, Pair<String, State>> _vms = getClusterVmState(clusterId);
-        _vms.clear();
-    }
-
-    public State getState(String clusterId, String name) {
-        HashMap<String, Pair<String, State>> vms = getClusterVmState(clusterId);
-        Pair<String, State> pv = vms.get(name);
-        return pv == null ? State.Stopped : pv.second(); // if a VM is absent on the cluster, it is effectively in stopped state.
-    }
-
-    public Pair<String, State> get(String clusterId, String name) {
-        HashMap<String, Pair<String, State>> vms = getClusterVmState(clusterId);
-        return vms.get(name);
-    }
-
-    public void put(String clusterId, String hostUuid, String name, State state) {
-        HashMap<String, Pair<String, State>> vms = getClusterVmState(clusterId);
-        vms.put(name, new Pair<String, State>(hostUuid, state));
-    }
-
-    public void remove(String clusterId, String hostUuid, String name) {
-        HashMap<String, Pair<String, State>> vms = getClusterVmState(clusterId);
-        vms.remove(name);
-    }
-
-    public void putAll(String clusterId, HashMap<String, Pair<String, State>> newVms) {
-        HashMap<String, Pair<String, State>> vms = getClusterVmState(clusterId);
-        vms.putAll(newVms);
-    }
-
-    public int size(String clusterId) {
-        HashMap<String, Pair<String, State>> vms = getClusterVmState(clusterId);
-        return vms.size();
-    }
-
-    @Override
-    public String toString() {
-        StringBuilder sbuf = new StringBuilder("PoolVms=");
-        for (HashMap<String/* vm name */, Pair<String/* host uuid */, State/* vm state */>> clusterVM : _clusterVms.values()) {
-            for (Map.Entry<String,Pair<String,State>> entry: clusterVM.entrySet()) {
-                String vmname = entry.getKey();
-                Pair<String,State> vmstate= entry.getValue();
-                sbuf.append(vmname).append("-").append(vmstate.second()).append(",");
-            }
-        }
-        return sbuf.toString();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/plugins/hypervisors/xenserver/src/org/apache/cloudstack/hypervisor/xenserver/XenServerResourceNewBase.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/xenserver/src/org/apache/cloudstack/hypervisor/xenserver/XenServerResourceNewBase.java b/plugins/hypervisors/xenserver/src/org/apache/cloudstack/hypervisor/xenserver/XenServerResourceNewBase.java
index def1b05..161a7b2 100644
--- a/plugins/hypervisors/xenserver/src/org/apache/cloudstack/hypervisor/xenserver/XenServerResourceNewBase.java
+++ b/plugins/hypervisors/xenserver/src/org/apache/cloudstack/hypervisor/xenserver/XenServerResourceNewBase.java
@@ -40,7 +40,6 @@ import com.cloud.hypervisor.xenserver.resource.XenServer620SP1Resource;
 import com.cloud.utils.Pair;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.vm.VirtualMachine;
-import com.cloud.vm.VirtualMachineName;
 
 /**
  *
@@ -205,99 +204,7 @@ public class XenServerResourceNewBase extends XenServer620SP1Resource {
         }
 
         protected void recordChanges(Connection conn, VM.Record rec, String hostUuid) {
-            String vm = rec.nameLabel;
-            if (!VirtualMachineName.isValidCloudStackVmName(vm, _instance)) {
-                s_logger.debug("Skipping over VMs that does not conform to CloudStack naming convention: " + vm);
-                return;
-            }
-
-            VirtualMachine.State currentState = convertToState(rec.powerState);
-            if (vm.startsWith("migrating")) {
-                s_logger.warn("Skipping " + vm + " because it is migrating.");
-                return;
-            }
-
-            if (currentState == VirtualMachine.State.Stopped) {
-                if (s_logger.isTraceEnabled()) {
-                    s_logger.trace("Double check the power state to make sure we got the correct state for " + vm);
-                }
-                currentState = getRealPowerState(conn, vm);
-            }
-
-            boolean updateMap = false;
-            boolean reportChange = false;
-
-            // NOTE: For now we only record change when the VM is stopped.  We don't find out any VMs starting for now.
-            synchronized (_cluster.intern()) {
-                Pair<String, VirtualMachine.State> oldState = s_vms.get(_cluster, vm);
-                if (oldState == null) {
-                    if (s_logger.isTraceEnabled()) {
-                        s_logger.trace("Unable to find " + vm + " from previous map.  Assuming it was in Stopped state.");
-                    }
-                    oldState = new Pair<String, VirtualMachine.State>(null, VirtualMachine.State.Stopped);
-                }
-
-                if (s_logger.isTraceEnabled()) {
-                    s_logger.trace(vm + ": current state=" + currentState + ", previous state=" + oldState);
-                }
 
-                if (oldState.second() == VirtualMachine.State.Starting) {
-                    if (currentState == VirtualMachine.State.Running) {
-                        updateMap = true;
-                        reportChange = false;
-                    } else if (currentState == VirtualMachine.State.Stopped) {
-                        updateMap = false;
-                        reportChange = false;
-                    }
-                } else if (oldState.second() == VirtualMachine.State.Migrating) {
-                    updateMap = true;
-                    reportChange = false;
-                } else if (oldState.second() == VirtualMachine.State.Stopping) {
-                    if (currentState == VirtualMachine.State.Stopped) {
-                        updateMap = true;
-                        reportChange = false;
-                    } else if (currentState == VirtualMachine.State.Running) {
-                        updateMap = false;
-                        reportChange = false;
-                    }
-                } else if (oldState.second() != currentState) {
-                    updateMap = true;
-                    reportChange = true;
-                } else if (hostUuid != null && !hostUuid.equals(oldState.first())) {
-                    if (s_logger.isDebugEnabled()) {
-                        s_logger.debug("Detecting " + vm + " moved from " + oldState.first() + " to " + hostUuid);
-                    }
-                    reportChange = true;
-                    updateMap = true;
-                }
-
-                if (updateMap) {
-                    s_vms.put(_cluster, hostUuid, vm, currentState);
-                    if (s_logger.isTraceEnabled()) {
-                        s_logger.trace("Updated " + vm + " to [" + hostUuid + ", " + currentState);
-                    }
-                }
-                if (reportChange) {
-                    Pair<String, VirtualMachine.State> change = _changes.get(vm);
-                    if (hostUuid == null) {
-                        // This is really strange code.  It looks like the sync
-                        // code wants this to be set, which is extremely weird
-                        // for VMs that are dead.  Why would I want to set the
-                        // hostUuid if the VM is stopped.
-                        hostUuid = oldState.first();
-                        if (hostUuid == null) {
-                            hostUuid = _host.uuid;
-                        }
-                    }
-                    if (change == null) {
-                        change = new Pair<String, VirtualMachine.State>(hostUuid, currentState);
-                    } else {
-                        change.first(hostUuid);
-                        change.second(currentState);
-                    }
-                    _changes.put(vm, change);
-                }
-            }
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/server/src/com/cloud/ha/CheckOnAgentInvestigator.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/ha/CheckOnAgentInvestigator.java b/server/src/com/cloud/ha/CheckOnAgentInvestigator.java
index 1dfe8c0..b361199 100644
--- a/server/src/com/cloud/ha/CheckOnAgentInvestigator.java
+++ b/server/src/com/cloud/ha/CheckOnAgentInvestigator.java
@@ -30,7 +30,7 @@ import com.cloud.host.Host;
 import com.cloud.host.Status;
 import com.cloud.utils.component.AdapterBase;
 import com.cloud.vm.VirtualMachine;
-import com.cloud.vm.VirtualMachine.State;
+import com.cloud.vm.VirtualMachine.PowerState;
 
 @Local(value = Investigator.class)
 public class CheckOnAgentInvestigator extends AdapterBase implements Investigator {
@@ -57,7 +57,7 @@ public class CheckOnAgentInvestigator extends AdapterBase implements Investigato
             }
 
             s_logger.debug("Agent responded with state " + answer.getState().toString());
-            return answer.getState() == State.Running;
+            return answer.getState() == PowerState.PowerOn;
         } catch (AgentUnavailableException e) {
             s_logger.debug("Unable to reach the agent for " + vm.toString() + ": " + e.getMessage());
             return null;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/server/src/com/cloud/hypervisor/kvm/discoverer/KvmDummyResourceBase.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/hypervisor/kvm/discoverer/KvmDummyResourceBase.java b/server/src/com/cloud/hypervisor/kvm/discoverer/KvmDummyResourceBase.java
index 33548c8..ee69a07 100644
--- a/server/src/com/cloud/hypervisor/kvm/discoverer/KvmDummyResourceBase.java
+++ b/server/src/com/cloud/hypervisor/kvm/discoverer/KvmDummyResourceBase.java
@@ -23,11 +23,9 @@ import javax.naming.ConfigurationException;
 
 import com.cloud.agent.api.Answer;
 import com.cloud.agent.api.Command;
-import com.cloud.agent.api.HostVmStateReportEntry;
 import com.cloud.agent.api.PingCommand;
 import com.cloud.agent.api.StartupCommand;
 import com.cloud.agent.api.StartupRoutingCommand;
-import com.cloud.agent.api.StartupRoutingCommand.VmState;
 import com.cloud.host.Host.Type;
 import com.cloud.hypervisor.Hypervisor;
 import com.cloud.resource.ServerResource;
@@ -49,8 +47,7 @@ public class KvmDummyResourceBase extends ServerResourceBase implements ServerRe
     @Override
     public StartupCommand[] initialize() {
         StartupRoutingCommand cmd =
-            new StartupRoutingCommand(0, 0, 0, 0, null, Hypervisor.HypervisorType.KVM, new HashMap<String, String>(), new HashMap<String, VmState>(),
-                new HashMap<String, HostVmStateReportEntry>());
+            new StartupRoutingCommand(0, 0, 0, 0, null, Hypervisor.HypervisorType.KVM, new HashMap<String, String>());
         cmd.setDataCenter(_zoneId);
         cmd.setPod(_podId);
         cmd.setCluster(_clusterId);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/server/src/com/cloud/resource/DummyHostServerResource.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/resource/DummyHostServerResource.java b/server/src/com/cloud/resource/DummyHostServerResource.java
index 2252a81..41f5d3d 100644
--- a/server/src/com/cloud/resource/DummyHostServerResource.java
+++ b/server/src/com/cloud/resource/DummyHostServerResource.java
@@ -31,7 +31,6 @@ import com.cloud.agent.api.StartupRoutingCommand;
 import com.cloud.host.Host.Type;
 import com.cloud.hypervisor.Hypervisor.HypervisorType;
 import com.cloud.utils.net.MacAddress;
-import com.cloud.vm.VirtualMachine;
 
 public class DummyHostServerResource extends ServerResourceBase {
 
@@ -57,8 +56,7 @@ public class DummyHostServerResource extends ServerResourceBase {
 
     @Override
     public PingCommand getCurrentStatus(long id) {
-        HashMap<String, VirtualMachine.State> newStates = new HashMap<String, VirtualMachine.State>();
-        return new PingRoutingCommand(com.cloud.host.Host.Type.Routing, id, newStates, new HashMap<String, HostVmStateReportEntry>());
+        return new PingRoutingCommand(com.cloud.host.Host.Type.Routing, id, new HashMap<String, HostVmStateReportEntry>());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/server/src/com/cloud/storage/VolumeApiServiceImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/storage/VolumeApiServiceImpl.java b/server/src/com/cloud/storage/VolumeApiServiceImpl.java
index 54ae965..7432fc4 100644
--- a/server/src/com/cloud/storage/VolumeApiServiceImpl.java
+++ b/server/src/com/cloud/storage/VolumeApiServiceImpl.java
@@ -220,10 +220,6 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
 
     VmWorkJobHandlerProxy _jobHandlerProxy = new VmWorkJobHandlerProxy(this);
 
-    // TODO
-    static final ConfigKey<Boolean> VmJobEnabled = new ConfigKey<Boolean>("Advanced",
-            Boolean.class, "vm.job.enabled", "true",
-            "True to enable new VM sync model. false to use the old way", false);
     static final ConfigKey<Long> VmJobCheckInterval = new ConfigKey<Long>("Advanced", Long.class, "vm.job.check.interval", "3000",
             "Interval in milliseconds to check if the job is complete", false);
 
@@ -898,22 +894,18 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
             // serialize VM operation
             AsyncJobExecutionContext jobContext = AsyncJobExecutionContext.getCurrentExecutionContext();
 
-            if (!VmJobEnabled.value() || jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
+            if ( jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
                 // avoid re-entrance
 
                 VmWorkJobVO placeHolder = null;
 
-                if (VmJobEnabled.value()) {
-                    placeHolder = createPlaceHolderWork(userVm.getId());
-                }
+                placeHolder = createPlaceHolderWork(userVm.getId());
 
                 try {
                     return orchestrateResizeVolume(volume.getId(), currentSize, newSize, newMinIops, newMaxIops,
                             newDiskOffering != null ? cmd.getNewDiskOfferingId() : null, shrinkOk);
                 } finally {
-                    if (VmJobEnabled.value()) {
-                        _workJobDao.expunge(placeHolder.getId());
-                    }
+                    _workJobDao.expunge(placeHolder.getId());
                 }
             } else {
                 Outcome<Volume> outcome = resizeVolumeThroughJobQueue(userVm.getId(), volume.getId(), currentSize, newSize, newMinIops, newMaxIops,
@@ -1328,18 +1320,15 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
         }
 
         AsyncJobExecutionContext jobContext = AsyncJobExecutionContext.getCurrentExecutionContext();
-        if (!VmJobEnabled.value() || jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
+        if (jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
             // avoid re-entrance
 
             VmWorkJobVO placeHolder = null;
-            if (VmJobEnabled.value()) {
-                placeHolder = createPlaceHolderWork(vmId);
-            }
+            placeHolder = createPlaceHolderWork(vmId);
             try {
                 return orchestrateAttachVolumeToVM(vmId, volumeId, deviceId);
             } finally {
-                if (VmJobEnabled.value())
-                    _workJobDao.expunge(placeHolder.getId());
+                _workJobDao.expunge(placeHolder.getId());
             }
 
         } else {
@@ -1536,17 +1525,14 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
         }
 
         AsyncJobExecutionContext jobContext = AsyncJobExecutionContext.getCurrentExecutionContext();
-        if (!VmJobEnabled.value() || jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
+        if (jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
             // avoid re-entrance
             VmWorkJobVO placeHolder = null;
-            if (VmJobEnabled.value()) {
-                placeHolder = createPlaceHolderWork(vmId);
-            }
+            placeHolder = createPlaceHolderWork(vmId);
             try {
                 return orchestrateDetachVolumeFromVM(vmId, volumeId);
             } finally {
-                if (VmJobEnabled.value())
-                    _workJobDao.expunge(placeHolder.getId());
+                _workJobDao.expunge(placeHolder.getId());
             }
         } else {
             Outcome<Volume> outcome = detachVolumeFromVmThroughJobQueue(vmId, volumeId);
@@ -1733,18 +1719,15 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
         if (vm != null) {
             // serialize VM operation
             AsyncJobExecutionContext jobContext = AsyncJobExecutionContext.getCurrentExecutionContext();
-            if (!VmJobEnabled.value() || jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
+            if (jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
                 // avoid re-entrance
 
                 VmWorkJobVO placeHolder = null;
-                if (VmJobEnabled.value()) {
-                    placeHolder = createPlaceHolderWork(vm.getId());
-                }
+                placeHolder = createPlaceHolderWork(vm.getId());
                 try {
                     return orchestrateMigrateVolume(vol.getId(), destPool.getId(), liveMigrateVolume);
                 } finally {
-                    if ((VmJobEnabled.value())&&(placeHolder != null))
-                        _workJobDao.expunge(placeHolder.getId());
+                    _workJobDao.expunge(placeHolder.getId());
                 }
 
             } else {
@@ -1835,18 +1818,15 @@ public class VolumeApiServiceImpl extends ManagerBase implements VolumeApiServic
         if (vm != null) {
             // serialize VM operation
             AsyncJobExecutionContext jobContext = AsyncJobExecutionContext.getCurrentExecutionContext();
-            if (!VmJobEnabled.value() || jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
+            if (jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
                 // avoid re-entrance
 
                 VmWorkJobVO placeHolder = null;
-                if (VmJobEnabled.value()) {
-                    placeHolder = createPlaceHolderWork(vm.getId());
-                }
+                placeHolder = createPlaceHolderWork(vm.getId());
                 try {
                     return orchestrateTakeVolumeSnapshot(volumeId, policyId, snapshotId, account, quiescevm);
                 } finally {
-                    if (VmJobEnabled.value())
-                        _workJobDao.expunge(placeHolder.getId());
+                    _workJobDao.expunge(placeHolder.getId());
                 }
 
             } else {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/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 e46aded..c7d7a8c 100644
--- a/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java
+++ b/server/src/com/cloud/vm/snapshot/VMSnapshotManagerImpl.java
@@ -134,10 +134,6 @@ public class VMSnapshotManagerImpl extends ManagerBase implements VMSnapshotMana
     int _vmSnapshotMax;
     int _wait;
 
-    // TODO
-    static final ConfigKey<Boolean> VmJobEnabled = new ConfigKey<Boolean>("Advanced",
-            Boolean.class, "vm.job.enabled", "true",
-            "True to enable new VM sync model. false to use the old way", false);
     static final ConfigKey<Long> VmJobCheckInterval = new ConfigKey<Long>("Advanced",
             Long.class, "vm.job.check.interval", "3000",
             "Interval in milliseconds to check if the job is complete", false);
@@ -368,17 +364,14 @@ public class VMSnapshotManagerImpl extends ManagerBase implements VMSnapshotMana
 
         // serialize VM operation
         AsyncJobExecutionContext jobContext = AsyncJobExecutionContext.getCurrentExecutionContext();
-        if (!VmJobEnabled.value() || jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
+        if (jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
             // avoid re-entrance
             VmWorkJobVO placeHolder = null;
-            if (VmJobEnabled.value()) {
-                placeHolder = createPlaceHolderWork(vmId);
-            }
+            placeHolder = createPlaceHolderWork(vmId);
             try {
-            return orchestrateCreateVMSnapshot(vmId, vmSnapshotId, quiescevm);
+                return orchestrateCreateVMSnapshot(vmId, vmSnapshotId, quiescevm);
             } finally {
-                if (VmJobEnabled.value())
-                    _workJobDao.expunge(placeHolder.getId());
+                _workJobDao.expunge(placeHolder.getId());
             }
 
         } else {
@@ -466,17 +459,14 @@ public class VMSnapshotManagerImpl extends ManagerBase implements VMSnapshotMana
 
         // serialize VM operation
         AsyncJobExecutionContext jobContext = AsyncJobExecutionContext.getCurrentExecutionContext();
-        if (!VmJobEnabled.value() || jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
+        if (jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
             // avoid re-entrance
             VmWorkJobVO placeHolder = null;
-            if (VmJobEnabled.value()) {
-                placeHolder = createPlaceHolderWork(vmSnapshot.getVmId());
-            }
+            placeHolder = createPlaceHolderWork(vmSnapshot.getVmId());
             try {
-            return orchestrateDeleteVMSnapshot(vmSnapshotId);
+                return orchestrateDeleteVMSnapshot(vmSnapshotId);
             } finally {
-                if (VmJobEnabled.value())
-                    _workJobDao.expunge(placeHolder.getId());
+                _workJobDao.expunge(placeHolder.getId());
             }
         } else {
             Outcome<VMSnapshot> outcome = deleteVMSnapshotThroughJobQueue(vmSnapshot.getVmId(), vmSnapshotId);
@@ -581,18 +571,15 @@ public class VMSnapshotManagerImpl extends ManagerBase implements VMSnapshotMana
 
         // serialize VM operation
         AsyncJobExecutionContext jobContext = AsyncJobExecutionContext.getCurrentExecutionContext();
-        if (!VmJobEnabled.value() || jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
+        if (jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
             // avoid re-entrance
 
             VmWorkJobVO placeHolder = null;
-            if (VmJobEnabled.value()) {
-                placeHolder = createPlaceHolderWork(vmSnapshotVo.getVmId());
-            }
+            placeHolder = createPlaceHolderWork(vmSnapshotVo.getVmId());
             try {
-            return orchestrateRevertToVMSnapshot(vmSnapshotId);
+                return orchestrateRevertToVMSnapshot(vmSnapshotId);
             } finally {
-                if (VmJobEnabled.value())
-                    _workJobDao.expunge(placeHolder.getId());
+                _workJobDao.expunge(placeHolder.getId());
             }
 
         } else {
@@ -718,16 +705,14 @@ public class VMSnapshotManagerImpl extends ManagerBase implements VMSnapshotMana
     public boolean deleteAllVMSnapshots(long vmId, VMSnapshot.Type type) {
         // serialize VM operation
         AsyncJobExecutionContext jobContext = AsyncJobExecutionContext.getCurrentExecutionContext();
-        if (!VmJobEnabled.value() || jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
+        if (jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
             // avoid re-entrance
             VmWorkJobVO placeHolder = null;
-            if (VmJobEnabled.value()) {
-                placeHolder = createPlaceHolderWork(vmId);
-            }
+            placeHolder = createPlaceHolderWork(vmId);
             try {
-            return orchestrateDeleteAllVMSnapshots(vmId, type);
+                return orchestrateDeleteAllVMSnapshots(vmId, type);
             } finally {
-                if ( (VmJobEnabled.value()) && (placeHolder != null))
+                if (placeHolder != null)
                     _workJobDao.expunge(placeHolder.getId());
             }
 


[3/3] git commit: updated refs/heads/master to 330c4ba

Posted by an...@apache.org.
completed the new vmsync TODOs in the code.
removed old vmsync logic


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

Branch: refs/heads/master
Commit: 330c4ba57856c161d34b81b2ae4e59877e28eb19
Parents: acc9c79
Author: Anthony Xu <an...@citrix.com>
Authored: Mon Jul 28 12:45:14 2014 -0700
Committer: Anthony Xu <an...@citrix.com>
Committed: Mon Jul 28 12:51:37 2014 -0700

----------------------------------------------------------------------
 .../com/cloud/agent/resource/DummyResource.java |   5 +-
 .../agent/api/CheckVirtualMachineAnswer.java    |  10 +-
 .../agent/api/CreateVMSnapshotCommand.java      |  15 +-
 .../com/cloud/agent/api/PingRoutingCommand.java |  12 +-
 .../api/PingRoutingWithNwGroupsCommand.java     |   5 +-
 .../agent/api/PingRoutingWithOvsCommand.java    |   5 +-
 .../agent/api/RevertToVMSnapshotAnswer.java     |   8 +-
 .../cloud/agent/api/StartupRoutingCommand.java  | 101 +--
 .../cloud/agent/manager/AgentManagerImpl.java   |  10 +-
 .../com/cloud/vm/VirtualMachineManagerImpl.java | 638 ++-----------------
 .../cloud/vm/VirtualMachineManagerImplTest.java |   3 +-
 .../vmsnapshot/DefaultVMSnapshotStrategy.java   |   2 +-
 .../storage/helper/HypervisorHelperImpl.java    |   2 +-
 .../networkservice/BareMetalResourceBase.java   | 155 +----
 .../BaremetalDhcpResourceBase.java              |   3 +-
 .../networkservice/BaremetalDhcpdResource.java  |   3 +-
 .../BaremetalDnsmasqResource.java               |   3 +-
 .../BaremetalKickStartPxeResource.java          |   3 +-
 .../BaremetalPingPxeResource.java               |   3 +-
 .../resource/HypervDirectConnectResource.java   |   7 +-
 .../test/HypervDirectConnectResourceTest.java   |   4 +-
 .../kvm/resource/LibvirtComputingResource.java  | 371 +----------
 .../cloud/ovm/hypervisor/OvmResourceBase.java   | 205 +-----
 .../cloud/resource/AgentRoutingResource.java    | 108 +---
 .../vmware/resource/VmwareResource.java         | 235 +------
 .../xenserver/resource/CitrixResourceBase.java  | 378 ++---------
 .../resource/XenServer56FP1Resource.java        |   3 -
 .../xenserver/resource/XenServer56Resource.java |   3 -
 .../resource/XenServer610Resource.java          |  31 -
 .../xenserver/resource/XenServerPoolVms.java    |  92 ---
 .../xenserver/XenServerResourceNewBase.java     |  93 ---
 .../com/cloud/ha/CheckOnAgentInvestigator.java  |   4 +-
 .../kvm/discoverer/KvmDummyResourceBase.java    |   5 +-
 .../cloud/resource/DummyHostServerResource.java |   4 +-
 .../com/cloud/storage/VolumeApiServiceImpl.java |  50 +-
 .../vm/snapshot/VMSnapshotManagerImpl.java      |  47 +-
 36 files changed, 233 insertions(+), 2393 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/agent/src/com/cloud/agent/resource/DummyResource.java
----------------------------------------------------------------------
diff --git a/agent/src/com/cloud/agent/resource/DummyResource.java b/agent/src/com/cloud/agent/resource/DummyResource.java
index 73f8ef1..ea23f96 100755
--- a/agent/src/com/cloud/agent/resource/DummyResource.java
+++ b/agent/src/com/cloud/agent/resource/DummyResource.java
@@ -32,7 +32,6 @@ import com.cloud.agent.api.Command;
 import com.cloud.agent.api.PingCommand;
 import com.cloud.agent.api.StartupCommand;
 import com.cloud.agent.api.StartupRoutingCommand;
-import com.cloud.agent.api.StartupRoutingCommand.VmState;
 import com.cloud.agent.api.StartupStorageCommand;
 import com.cloud.agent.api.StoragePoolInfo;
 import com.cloud.host.Host;
@@ -147,13 +146,11 @@ public class DummyResource implements ServerResource {
 
     @Override
     public StartupCommand[] initialize() {
-        Map<String, VmState> changes = null;
-
         final List<Object> info = getHostInfo();
 
         final StartupRoutingCommand cmd =
             new StartupRoutingCommand((Integer)info.get(0), (Long)info.get(1), (Long)info.get(2), (Long)info.get(4), (String)info.get(3), HypervisorType.KVM,
-                RouterPrivateIpStrategy.HostLocal, changes, null);
+                RouterPrivateIpStrategy.HostLocal);
         fillNetworkInformation(cmd);
         cmd.getHostDetails().putAll(getVersionStrings());
         cmd.setCluster(getConfiguredProperty("cluster", "1"));

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/core/src/com/cloud/agent/api/CheckVirtualMachineAnswer.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/agent/api/CheckVirtualMachineAnswer.java b/core/src/com/cloud/agent/api/CheckVirtualMachineAnswer.java
index 539d18a..a6b8bd9 100644
--- a/core/src/com/cloud/agent/api/CheckVirtualMachineAnswer.java
+++ b/core/src/com/cloud/agent/api/CheckVirtualMachineAnswer.java
@@ -19,23 +19,23 @@
 
 package com.cloud.agent.api;
 
-import com.cloud.vm.VirtualMachine.State;
+import com.cloud.vm.VirtualMachine.PowerState;
 
 public class CheckVirtualMachineAnswer extends Answer {
 
     Integer vncPort;
-    State state;
+    PowerState state;
 
     protected CheckVirtualMachineAnswer() {
     }
 
-    public CheckVirtualMachineAnswer(CheckVirtualMachineCommand cmd, State state, Integer vncPort, String detail) {
+    public CheckVirtualMachineAnswer(CheckVirtualMachineCommand cmd, PowerState state, Integer vncPort, String detail) {
         super(cmd, true, detail);
         this.state = state;
         this.vncPort = vncPort;
     }
 
-    public CheckVirtualMachineAnswer(CheckVirtualMachineCommand cmd, State state, Integer vncPort) {
+    public CheckVirtualMachineAnswer(CheckVirtualMachineCommand cmd, PowerState state, Integer vncPort) {
         this(cmd, state, vncPort, null);
     }
 
@@ -47,7 +47,7 @@ public class CheckVirtualMachineAnswer extends Answer {
         return vncPort;
     }
 
-    public State getState() {
+    public PowerState getState() {
         return state;
     }
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/core/src/com/cloud/agent/api/CreateVMSnapshotCommand.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/agent/api/CreateVMSnapshotCommand.java b/core/src/com/cloud/agent/api/CreateVMSnapshotCommand.java
index c1d2561..ab4edaf 100644
--- a/core/src/com/cloud/agent/api/CreateVMSnapshotCommand.java
+++ b/core/src/com/cloud/agent/api/CreateVMSnapshotCommand.java
@@ -23,23 +23,10 @@ import java.util.List;
 
 import org.apache.cloudstack.storage.to.VolumeObjectTO;
 
-import com.cloud.vm.VirtualMachine;
 
 public class CreateVMSnapshotCommand extends VMSnapshotBaseCommand {
 
-    public CreateVMSnapshotCommand(String vmName, VMSnapshotTO snapshot, List<VolumeObjectTO> volumeTOs, String guestOSType, VirtualMachine.State vmState) {
+    public CreateVMSnapshotCommand(String vmName, VMSnapshotTO snapshot, List<VolumeObjectTO> volumeTOs, String guestOSType) {
         super(vmName, snapshot, volumeTOs, guestOSType);
-        this.vmState = vmState;
     }
-
-    private VirtualMachine.State vmState;
-
-    public VirtualMachine.State getVmState() {
-        return vmState;
-    }
-
-    public void setVmState(VirtualMachine.State vmState) {
-        this.vmState = vmState;
-    }
-
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/core/src/com/cloud/agent/api/PingRoutingCommand.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/agent/api/PingRoutingCommand.java b/core/src/com/cloud/agent/api/PingRoutingCommand.java
index 3e68ab4..d7733ee 100755
--- a/core/src/com/cloud/agent/api/PingRoutingCommand.java
+++ b/core/src/com/cloud/agent/api/PingRoutingCommand.java
@@ -22,14 +22,9 @@ package com.cloud.agent.api;
 import java.util.Map;
 
 import com.cloud.host.Host;
-import com.cloud.vm.VirtualMachine.State;
 
 public class PingRoutingCommand extends PingCommand {
 
-    // TODO vmsync {
-    Map<String, State> newStates;
-    // TODO vmsync }
-
     Map<String, HostVmStateReportEntry> _hostVmStateReport;
 
     boolean _gatewayAccessible = true;
@@ -38,16 +33,11 @@ public class PingRoutingCommand extends PingCommand {
     protected PingRoutingCommand() {
     }
 
-    public PingRoutingCommand(Host.Type type, long id, Map<String, State> states, Map<String, HostVmStateReportEntry> hostVmStateReport) {
+    public PingRoutingCommand(Host.Type type, long id, Map<String, HostVmStateReportEntry> hostVmStateReport) {
         super(type, id);
-        this.newStates = states;
         this._hostVmStateReport = hostVmStateReport;
     }
 
-    public Map<String, State> getNewStates() {
-        return newStates;
-    }
-
     public Map<String, HostVmStateReportEntry> getHostVmStateReport() {
         return this._hostVmStateReport;
     }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/core/src/com/cloud/agent/api/PingRoutingWithNwGroupsCommand.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/agent/api/PingRoutingWithNwGroupsCommand.java b/core/src/com/cloud/agent/api/PingRoutingWithNwGroupsCommand.java
index 6526748..c92407c 100644
--- a/core/src/com/cloud/agent/api/PingRoutingWithNwGroupsCommand.java
+++ b/core/src/com/cloud/agent/api/PingRoutingWithNwGroupsCommand.java
@@ -24,7 +24,6 @@ import java.util.Map;
 
 import com.cloud.host.Host;
 import com.cloud.utils.Pair;
-import com.cloud.vm.VirtualMachine.State;
 
 public class PingRoutingWithNwGroupsCommand extends PingRoutingCommand {
     HashMap<String, Pair<Long, Long>> newGroupStates;
@@ -33,9 +32,9 @@ public class PingRoutingWithNwGroupsCommand extends PingRoutingCommand {
         super();
     }
 
-    public PingRoutingWithNwGroupsCommand(Host.Type type, long id, Map<String, State> states, Map<String, HostVmStateReportEntry> hostVmStateReport,
+    public PingRoutingWithNwGroupsCommand(Host.Type type, long id, Map<String, HostVmStateReportEntry> hostVmStateReport,
             HashMap<String, Pair<Long, Long>> nwGrpStates) {
-        super(type, id, states, hostVmStateReport);
+        super(type, id, hostVmStateReport);
         newGroupStates = nwGrpStates;
     }
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/core/src/com/cloud/agent/api/PingRoutingWithOvsCommand.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/agent/api/PingRoutingWithOvsCommand.java b/core/src/com/cloud/agent/api/PingRoutingWithOvsCommand.java
index b415ac7..aecbc63 100644
--- a/core/src/com/cloud/agent/api/PingRoutingWithOvsCommand.java
+++ b/core/src/com/cloud/agent/api/PingRoutingWithOvsCommand.java
@@ -24,7 +24,6 @@ import java.util.Map;
 
 import com.cloud.host.Host;
 import com.cloud.utils.Pair;
-import com.cloud.vm.VirtualMachine.State;
 
 public class PingRoutingWithOvsCommand extends PingRoutingCommand {
     List<Pair<String, Long>> states;
@@ -33,9 +32,9 @@ public class PingRoutingWithOvsCommand extends PingRoutingCommand {
         super();
     }
 
-    public PingRoutingWithOvsCommand(Host.Type type, long id, Map<String, State> states, Map<String, HostVmStateReportEntry> hostVmStateReport,
+    public PingRoutingWithOvsCommand(Host.Type type, long id, Map<String, HostVmStateReportEntry> hostVmStateReport,
             List<Pair<String, Long>> ovsStates) {
-        super(type, id, states, hostVmStateReport);
+        super(type, id, hostVmStateReport);
 
         this.states = ovsStates;
     }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/core/src/com/cloud/agent/api/RevertToVMSnapshotAnswer.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/agent/api/RevertToVMSnapshotAnswer.java b/core/src/com/cloud/agent/api/RevertToVMSnapshotAnswer.java
index b67d9dd..572dff4 100644
--- a/core/src/com/cloud/agent/api/RevertToVMSnapshotAnswer.java
+++ b/core/src/com/cloud/agent/api/RevertToVMSnapshotAnswer.java
@@ -28,7 +28,7 @@ import com.cloud.vm.VirtualMachine;
 public class RevertToVMSnapshotAnswer extends Answer {
 
     private List<VolumeObjectTO> volumeTOs;
-    private VirtualMachine.State vmState;
+    private VirtualMachine.PowerState vmState;
 
     public RevertToVMSnapshotAnswer(RevertToVMSnapshotCommand cmd, boolean result, String message) {
         super(cmd, result, message);
@@ -38,13 +38,13 @@ public class RevertToVMSnapshotAnswer extends Answer {
         super();
     }
 
-    public RevertToVMSnapshotAnswer(RevertToVMSnapshotCommand cmd, List<VolumeObjectTO> volumeTOs, VirtualMachine.State vmState) {
+    public RevertToVMSnapshotAnswer(RevertToVMSnapshotCommand cmd, List<VolumeObjectTO> volumeTOs, VirtualMachine.PowerState vmState) {
         super(cmd, true, "");
         this.volumeTOs = volumeTOs;
         this.vmState = vmState;
     }
 
-    public VirtualMachine.State getVmState() {
+    public VirtualMachine.PowerState getVmState() {
         return vmState;
     }
 
@@ -56,7 +56,7 @@ public class RevertToVMSnapshotAnswer extends Answer {
         this.volumeTOs = volumeTOs;
     }
 
-    public void setVmState(VirtualMachine.State vmState) {
+    public void setVmState(VirtualMachine.PowerState vmState) {
         this.vmState = vmState;
     }
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/core/src/com/cloud/agent/api/StartupRoutingCommand.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/agent/api/StartupRoutingCommand.java b/core/src/com/cloud/agent/api/StartupRoutingCommand.java
index 8601e92..834d076 100755
--- a/core/src/com/cloud/agent/api/StartupRoutingCommand.java
+++ b/core/src/com/cloud/agent/api/StartupRoutingCommand.java
@@ -25,31 +25,8 @@ import java.util.Map;
 import com.cloud.host.Host;
 import com.cloud.hypervisor.Hypervisor.HypervisorType;
 import com.cloud.network.Networks.RouterPrivateIpStrategy;
-import com.cloud.utils.Pair;
-import com.cloud.vm.VirtualMachine.State;
 
 public class StartupRoutingCommand extends StartupCommand {
-    public static class VmState {
-        State state;
-        String host;
-
-        public VmState() {
-        }
-
-        public VmState(State state, String host) {
-            this.state = state;
-            this.host = host;
-        }
-
-        public State getState() {
-            return state;
-        }
-
-        public String getHost() {
-            return host;
-        }
-    }
-
     Integer cpuSockets;
     int cpus;
     long speed;
@@ -57,16 +34,6 @@ public class StartupRoutingCommand extends StartupCommand {
     long dom0MinMemory;
     boolean poolSync;
 
-    // VM power state report is added in a side-by-side way as old VM state report
-    // this is to allow a graceful migration from the old VM state sync model to the new model
-    //
-    // side-by-side addition of power state sync
-    Map<String, HostVmStateReportEntry> _hostVmStateReport;
-
-    // TODO vmsync
-    // deprecated, will delete after full replacement
-    Map<String, VmState> vms;
-    HashMap<String, Pair<String, State>> _clusterVMStates;
 
     String caps;
     String pool;
@@ -82,68 +49,30 @@ public class StartupRoutingCommand extends StartupCommand {
 
     }
 
-    public StartupRoutingCommand(int cpus, long speed, long memory, long dom0MinMemory, String caps, HypervisorType hypervisorType,
-            RouterPrivateIpStrategy privIpStrategy, Map<String, VmState> vms, Map<String, HostVmStateReportEntry> hostVmStateReport) {
-        this(cpus, speed, memory, dom0MinMemory, caps, hypervisorType, vms, hostVmStateReport);
-        getHostDetails().put(RouterPrivateIpStrategy.class.getCanonicalName(), privIpStrategy.toString());
-    }
-
-    public StartupRoutingCommand(int cpus, long speed, long memory, long dom0MinMemory, String caps, HypervisorType hypervisorType, RouterPrivateIpStrategy privIpStrategy) {
-        this(cpus,
-            speed,
-            memory,
-            dom0MinMemory,
-            caps,
-            hypervisorType,
-            new HashMap<String, String>(),
-            new HashMap<String, VmState>(),
-            new HashMap<String, HostVmStateReportEntry>());
-
-        getHostDetails().put(RouterPrivateIpStrategy.class.getCanonicalName(), privIpStrategy.toString());
-    }
-
     public StartupRoutingCommand(int cpus, long speed, long memory, long dom0MinMemory, final String caps, final HypervisorType hypervisorType,
-            final Map<String, String> hostDetails, Map<String, VmState> vms, Map<String, HostVmStateReportEntry> hostVmStateReport) {
+            final Map<String, String> hostDetails) {
         super(Host.Type.Routing);
         this.cpus = cpus;
         this.speed = speed;
         this.memory = memory;
         this.dom0MinMemory = dom0MinMemory;
-        this.vms = vms;
-        this._hostVmStateReport = hostVmStateReport;
         this.hypervisorType = hypervisorType;
         this.hostDetails = hostDetails;
         this.caps = caps;
         this.poolSync = false;
     }
 
-    public StartupRoutingCommand(int cpus2, long speed2, long memory2, long dom0MinMemory2, String caps2, HypervisorType hypervisorType2, Map<String, VmState> vms2,
-            Map<String, HostVmStateReportEntry> hostVmStateReport) {
-        this(cpus2, speed2, memory2, dom0MinMemory2, caps2, hypervisorType2, new HashMap<String, String>(), vms2, hostVmStateReport);
-    }
-
-    public StartupRoutingCommand(int cpus, long speed, long memory, long dom0MinMemory, final String caps, final HypervisorType hypervisorType,
-            final Map<String, String> hostDetails, Map<String, VmState> vms, Map<String, HostVmStateReportEntry> vmPowerStates, String hypervisorVersion) {
-        this(cpus, speed, memory, dom0MinMemory, caps, hypervisorType, hostDetails, vms, vmPowerStates);
-        this.hypervisorVersion = hypervisorVersion;
+    public StartupRoutingCommand(int cpus, long speed, long memory, long dom0MinMemory, String caps, HypervisorType hypervisorType,
+            RouterPrivateIpStrategy privIpStrategy) {
+        this(cpus, speed, memory, dom0MinMemory, caps, hypervisorType);
+        getHostDetails().put(RouterPrivateIpStrategy.class.getCanonicalName(), privIpStrategy.toString());
     }
 
-    public void setChanges(Map<String, VmState> vms) {
-        this.vms = vms;
-    }
 
-    public void setStateChanges(Map<String, State> vms) {
-        for (String vm_name : vms.keySet()) {
-            if (this.vms == null) {
-                this.vms = new HashMap<String, VmState>();
-            }
-            this.vms.put(vm_name, new VmState(vms.get(vm_name), null));
-        }
+    public StartupRoutingCommand(int cpus2, long speed2, long memory2, long dom0MinMemory2, String caps2, HypervisorType hypervisorType2) {
+        this(cpus2, speed2, memory2, dom0MinMemory2, caps2, hypervisorType2, new HashMap<String, String>());
     }
 
-    public void setClusterVMStateChanges(HashMap<String, Pair<String, State>> allStates) {
-        _clusterVMStates = allStates;
-    }
 
     public Integer getCpuSockets() {
         return cpuSockets;
@@ -169,14 +98,6 @@ public class StartupRoutingCommand extends StartupCommand {
         return dom0MinMemory;
     }
 
-    public Map<String, VmState> getVmStates() {
-        return vms;
-    }
-
-    public HashMap<String, Pair<String, State>> getClusterVMStateChanges() {
-        return _clusterVMStates;
-    }
-
     public void setSpeed(long speed) {
         this.speed = speed;
     }
@@ -241,14 +162,6 @@ public class StartupRoutingCommand extends StartupCommand {
         this.hypervisorVersion = hypervisorVersion;
     }
 
-    public Map<String, HostVmStateReportEntry> getHostVmStateReport() {
-        return this._hostVmStateReport;
-    }
-
-    public void setHostVmStateReport(Map<String, HostVmStateReportEntry> hostVmStateReport) {
-        this._hostVmStateReport = hostVmStateReport;
-    }
-
     public  HashMap<String, HashMap<String, VgpuTypesInfo>> getGpuGroupDetails() {
         return groupDetails;
     }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/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 fdb88d0..af2d1b9 100755
--- a/engine/orchestration/src/com/cloud/agent/manager/AgentManagerImpl.java
+++ b/engine/orchestration/src/com/cloud/agent/manager/AgentManagerImpl.java
@@ -1184,13 +1184,9 @@ public class AgentManagerImpl extends ManagerBase implements AgentManager, Handl
             if (s_logger.isDebugEnabled()) {
                 if (cmd instanceof PingRoutingCommand) {
                     final PingRoutingCommand ping = (PingRoutingCommand)cmd;
-                    if (ping.getNewStates().size() > 0) {
-                        s_logger.debug("SeqA " + hostId + "-" + request.getSequence() + ": Processing " + request);
-                    } else {
-                        logD = false;
-                        s_logger.debug("Ping from " + hostId);
-                        s_logger.trace("SeqA " + hostId + "-" + request.getSequence() + ": Processing " + request);
-                    }
+                    logD = false;
+                    s_logger.debug("Ping from " + hostId);
+                    s_logger.trace("SeqA " + hostId + "-" + request.getSequence() + ": Processing " + request);
                 } else if (cmd instanceof PingCommand) {
                     logD = false;
                     s_logger.debug("Ping from " + hostId);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
index 19f29ec..2943047 100755
--- a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
+++ b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
@@ -22,15 +22,12 @@ import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
-import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.TimeZone;
 import java.util.UUID;
 import java.util.concurrent.Executors;
@@ -96,7 +93,6 @@ import com.cloud.agent.api.StartAnswer;
 import com.cloud.agent.api.StartCommand;
 import com.cloud.agent.api.StartupCommand;
 import com.cloud.agent.api.StartupRoutingCommand;
-import com.cloud.agent.api.StartupRoutingCommand.VmState;
 import com.cloud.agent.api.StopAnswer;
 import com.cloud.agent.api.StopCommand;
 import com.cloud.agent.api.UnPlugNicAnswer;
@@ -206,9 +202,7 @@ import com.cloud.vm.dao.NicDao;
 import com.cloud.vm.dao.UserVmDao;
 import com.cloud.vm.dao.UserVmDetailsDao;
 import com.cloud.vm.dao.VMInstanceDao;
-import com.cloud.vm.snapshot.VMSnapshot;
 import com.cloud.vm.snapshot.VMSnapshotManager;
-import com.cloud.vm.snapshot.VMSnapshotVO;
 import com.cloud.vm.snapshot.dao.VMSnapshotDao;
 
 @Local(value = VirtualMachineManager.class)
@@ -350,9 +344,6 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
     static final ConfigKey<Integer> ClusterVMMetaDataSyncInterval = new ConfigKey<Integer>("Advanced", Integer.class, "vmmetadata.sync.interval", "180", "Cluster VM metadata sync interval in seconds",
             false);
 
-    static final ConfigKey<Boolean> VmJobEnabled = new ConfigKey<Boolean>("Advanced",
-            Boolean.class, "vm.job.enabled", "true",
-            "True to enable new VM sync model. false to use the old way", false);
     static final ConfigKey<Long> VmJobCheckInterval = new ConfigKey<Long>("Advanced",
             Long.class, "vm.job.check.interval", "3000",
             "Interval in milliseconds to check if the job is complete", false);
@@ -596,9 +587,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
 
         _agentMgr.registerForHostEvents(this, true, true, true);
 
-        if (VmJobEnabled.value()) {
-            _messageBus.subscribe(VirtualMachineManager.Topics.VM_POWER_STATE, MessageDispatcher.getDispatcher(this));
-        }
+        _messageBus.subscribe(VirtualMachineManager.Topics.VM_POWER_STATE, MessageDispatcher.getDispatcher(this));
 
         return true;
     }
@@ -766,13 +755,11 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
             throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException {
 
         AsyncJobExecutionContext jobContext = AsyncJobExecutionContext.getCurrentExecutionContext();
-        if (!VmJobEnabled.value() || jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
+        if ( jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
             // avoid re-entrance
             VmWorkJobVO placeHolder = null;
-            if (VmJobEnabled.value()) {
-                VirtualMachine vm = _vmDao.findByUuid(vmUuid);
-                placeHolder = createPlaceHolderWork(vm.getId());
-            }
+            VirtualMachine vm = _vmDao.findByUuid(vmUuid);
+            placeHolder = createPlaceHolderWork(vm.getId());
             try {
                 orchestrateStart(vmUuid, params, planToDeploy, planner);
             } finally {
@@ -1343,14 +1330,12 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
             throws AgentUnavailableException, OperationTimedoutException, ConcurrentOperationException {
 
         AsyncJobExecutionContext jobContext = AsyncJobExecutionContext.getCurrentExecutionContext();
-        if (!VmJobEnabled.value() || jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
+        if (jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
             // avoid re-entrance
 
             VmWorkJobVO placeHolder = null;
-            if (VmJobEnabled.value()) {
-                VirtualMachine vm = _vmDao.findByUuid(vmUuid);
-                placeHolder = createPlaceHolderWork(vm.getId());
-            }
+            VirtualMachine vm = _vmDao.findByUuid(vmUuid);
+            placeHolder = createPlaceHolderWork(vm.getId());
             try {
                 orchestrateStop(vmUuid, cleanUpEvenIfUnableToStop);
             } finally {
@@ -1662,7 +1647,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
 
     protected boolean checkVmOnHost(VirtualMachine vm, long hostId) throws AgentUnavailableException, OperationTimedoutException {
         CheckVirtualMachineAnswer answer = (CheckVirtualMachineAnswer)_agentMgr.send(hostId, new CheckVirtualMachineCommand(vm.getInstanceName()));
-        if (!answer.getResult() || answer.getState() == State.Stopped) {
+        if (!answer.getResult() ||  answer.getState() == PowerState.PowerOff) {
             return false;
         }
 
@@ -1672,13 +1657,11 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
     @Override
     public void storageMigration(String vmUuid, StoragePool destPool) {
         AsyncJobExecutionContext jobContext = AsyncJobExecutionContext.getCurrentExecutionContext();
-        if (!VmJobEnabled.value() || jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
+        if (jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
             // avoid re-entrance
             VmWorkJobVO placeHolder = null;
-            if (VmJobEnabled.value()) {
-                VirtualMachine vm = _vmDao.findByUuid(vmUuid);
-                placeHolder = createPlaceHolderWork(vm.getId());
-            }
+            VirtualMachine vm = _vmDao.findByUuid(vmUuid);
+            placeHolder = createPlaceHolderWork(vm.getId());
             try {
                 orchestrateStorageMigration(vmUuid, destPool);
             } finally {
@@ -1767,13 +1750,11 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
             throws ResourceUnavailableException, ConcurrentOperationException {
 
         AsyncJobExecutionContext jobContext = AsyncJobExecutionContext.getCurrentExecutionContext();
-        if (!VmJobEnabled.value() || jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
+        if (jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
             // avoid re-entrance
             VmWorkJobVO placeHolder = null;
-            if (VmJobEnabled.value()) {
-                VirtualMachine vm = _vmDao.findByUuid(vmUuid);
-                placeHolder = createPlaceHolderWork(vm.getId());
-            }
+            VirtualMachine vm = _vmDao.findByUuid(vmUuid);
+            placeHolder = createPlaceHolderWork(vm.getId());
             try {
                 orchestrateMigrate(vmUuid, srcHostId, dest);
             } finally {
@@ -2073,14 +2054,12 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
             throws ResourceUnavailableException, ConcurrentOperationException {
 
         AsyncJobExecutionContext jobContext = AsyncJobExecutionContext.getCurrentExecutionContext();
-        if (!VmJobEnabled.value() || jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
+        if (jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
             // avoid re-entrance
 
             VmWorkJobVO placeHolder = null;
-            if (VmJobEnabled.value()) {
-                VirtualMachine vm = _vmDao.findByUuid(vmUuid);
-                placeHolder = createPlaceHolderWork(vm.getId());
-            }
+            VirtualMachine vm = _vmDao.findByUuid(vmUuid);
+            placeHolder = createPlaceHolderWork(vm.getId());
             try {
                 orchestrateMigrateWithStorage(vmUuid, srcHostId, destHostId, volumeToPool);
             } finally {
@@ -2257,14 +2236,12 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
     @Override
     public void migrateAway(String vmUuid, long srcHostId) throws InsufficientServerCapacityException {
         AsyncJobExecutionContext jobContext = AsyncJobExecutionContext.getCurrentExecutionContext();
-        if (!VmJobEnabled.value() || jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
+        if (jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
             // avoid re-entrance
 
             VmWorkJobVO placeHolder = null;
-            if (VmJobEnabled.value()) {
-                VirtualMachine vm = _vmDao.findByUuid(vmUuid);
-                placeHolder = createPlaceHolderWork(vm.getId());
-            }
+            VirtualMachine vm = _vmDao.findByUuid(vmUuid);
+            placeHolder = createPlaceHolderWork(vm.getId());
             try {
                 try {
                     orchestrateMigrateAway(vmUuid, srcHostId, null);
@@ -2273,8 +2250,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
                     orchestrateMigrateAway(vmUuid, srcHostId, _haMgr.getHAPlanner());
                 }
             } finally {
-                if (VmJobEnabled.value())
-                    _workJobDao.expunge(placeHolder.getId());
+                _workJobDao.expunge(placeHolder.getId());
             }
         } else {
             Outcome<VirtualMachine> outcome = migrateVmAwayThroughJobQueue(vmUuid, srcHostId);
@@ -2421,13 +2397,11 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
             throws InsufficientCapacityException, ConcurrentOperationException, ResourceUnavailableException {
 
         AsyncJobExecutionContext jobContext = AsyncJobExecutionContext.getCurrentExecutionContext();
-        if (!VmJobEnabled.value() || jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
+        if ( jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
             // avoid re-entrance
             VmWorkJobVO placeHolder = null;
-            if (VmJobEnabled.value()) {
-                VirtualMachine vm = _vmDao.findByUuid(vmUuid);
-                placeHolder = createPlaceHolderWork(vm.getId());
-            }
+            VirtualMachine vm = _vmDao.findByUuid(vmUuid);
+            placeHolder = createPlaceHolderWork(vm.getId());
             try {
                 orchestrateReboot(vmUuid, params);
             } finally {
@@ -2502,92 +2476,6 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
 
     }
 
-    public Commands fullHostSync(final long hostId, StartupRoutingCommand startup) {
-        Commands commands = new Commands(Command.OnError.Continue);
-
-        Map<Long, AgentVmInfo> infos = convertToInfos(startup);
-
-        final List<? extends VMInstanceVO> vms = _vmDao.listByHostId(hostId);
-        s_logger.debug("Found " + vms.size() + " VMs for host " + hostId);
-        for (VMInstanceVO vm : vms) {
-            AgentVmInfo info = infos.remove(vm.getId());
-
-            // sync VM Snapshots related transient states
-            List<VMSnapshotVO> vmSnapshotsInTrasientStates =
-                    _vmSnapshotDao.listByInstanceId(vm.getId(), VMSnapshot.State.Expunging, VMSnapshot.State.Reverting, VMSnapshot.State.Creating);
-            if (vmSnapshotsInTrasientStates.size() > 1) {
-                s_logger.info("Found vm " + vm.getInstanceName() + " with VM snapshots in transient states, needs to sync VM snapshot state");
-                if (!_vmSnapshotMgr.syncVMSnapshot(vm, hostId)) {
-                    s_logger.warn("Failed to sync VM in a transient snapshot related state: " + vm.getInstanceName());
-                    continue;
-                } else {
-                    s_logger.info("Successfully sync VM with transient snapshot: " + vm.getInstanceName());
-                }
-            }
-
-            if (info == null) {
-                info = new AgentVmInfo(vm.getInstanceName(), vm, State.Stopped);
-            }
-
-            HypervisorGuru hvGuru = _hvGuruMgr.getGuru(vm.getHypervisorType());
-            Command command = compareState(hostId, vm, info, true, hvGuru.trackVmHostChange());
-            if (command != null) {
-                commands.addCommand(command);
-            }
-        }
-
-        for (final AgentVmInfo left : infos.values()) {
-            boolean found = false;
-            VMInstanceVO vm = _vmDao.findVMByInstanceName(left.name);
-            if (vm != null) {
-                found = true;
-                HypervisorGuru hvGuru = _hvGuruMgr.getGuru(vm.getHypervisorType());
-                if (hvGuru.trackVmHostChange()) {
-                    Command command = compareState(hostId, vm, left, true, true);
-                    if (command != null) {
-                        commands.addCommand(command);
-                    }
-                } else {
-                    s_logger.warn("Stopping a VM, VM " + left.name + " migrate from Host " + vm.getHostId() + " to Host " + hostId);
-                    commands.addCommand(cleanup(left.name));
-                }
-            }
-            if (!found) {
-                s_logger.warn("Stopping a VM that we have no record of <fullHostSync>: " + left.name);
-                commands.addCommand(cleanup(left.name));
-            }
-        }
-
-        return commands;
-    }
-
-    public Commands deltaHostSync(long hostId, Map<String, State> newStates) {
-        Map<Long, AgentVmInfo> states = convertDeltaToInfos(newStates);
-        Commands commands = new Commands(Command.OnError.Continue);
-
-        for (Map.Entry<Long, AgentVmInfo> entry : states.entrySet()) {
-            AgentVmInfo info = entry.getValue();
-
-            VMInstanceVO vm = info.vm;
-
-            Command command = null;
-            if (vm != null) {
-                HypervisorGuru hvGuru = _hvGuruMgr.getGuru(vm.getHypervisorType());
-                command = compareState(hostId, vm, info, false, hvGuru.trackVmHostChange());
-            } else {
-                if (s_logger.isDebugEnabled()) {
-                    s_logger.debug("Cleaning up a VM that is no longer found: " + info.name);
-                }
-                command = cleanup(info.name);
-            }
-
-            if (command != null) {
-                commands.addCommand(command);
-            }
-        }
-
-        return commands;
-    }
 
     // this is XenServer specific
     public void syncVMMetaData(Map<String, String> vmMetadatum) {
@@ -2628,376 +2516,6 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
         }
     }
 
-    public void fullSync(final long clusterId, Map<String, Pair<String, State>> newStates) {
-        if (newStates == null)
-            return;
-        Map<Long, AgentVmInfo> infos = convertToInfos(newStates);
-        Set<VMInstanceVO> set_vms = Collections.synchronizedSet(new HashSet<VMInstanceVO>());
-        set_vms.addAll(_vmDao.listByClusterId(clusterId));
-        set_vms.addAll(_vmDao.listLHByClusterId(clusterId));
-
-        for (VMInstanceVO vm : set_vms) {
-            AgentVmInfo info = infos.remove(vm.getId());
-
-            // sync VM Snapshots related transient states
-            List<VMSnapshotVO> vmSnapshotsInExpungingStates =
-                    _vmSnapshotDao.listByInstanceId(vm.getId(), VMSnapshot.State.Expunging, VMSnapshot.State.Creating, VMSnapshot.State.Reverting);
-            if (vmSnapshotsInExpungingStates.size() > 0) {
-                s_logger.info("Found vm " + vm.getInstanceName() + " in state. " + vm.getState() + ", needs to sync VM snapshot state");
-                Long hostId = null;
-                Host host = null;
-                if (info != null && info.getHostUuid() != null) {
-                    host = _hostDao.findByGuid(info.getHostUuid());
-                }
-                hostId = host == null ? (vm.getHostId() == null ? vm.getLastHostId() : vm.getHostId()) : host.getId();
-                if (!_vmSnapshotMgr.syncVMSnapshot(vm, hostId)) {
-                    s_logger.warn("Failed to sync VM with transient snapshot: " + vm.getInstanceName());
-                    continue;
-                } else {
-                    s_logger.info("Successfully sync VM with transient snapshot: " + vm.getInstanceName());
-                }
-            }
-
-            if ((info == null && (vm.getState() == State.Running || vm.getState() == State.Starting)) ||
-                    (info != null && (info.state == State.Running && vm.getState() == State.Starting))) {
-                s_logger.info("Found vm " + vm.getInstanceName() + " in inconsistent state. " + vm.getState() + " on CS while " + (info == null ? "Stopped" : "Running") +
-                        " on agent");
-                info = new AgentVmInfo(vm.getInstanceName(), vm, State.Stopped);
-
-                // Bug 13850- grab outstanding work item if any for this VM state so that we mark it as DONE after we change VM state, else it will remain pending
-                ItWorkVO work = _workDao.findByOutstandingWork(vm.getId(), vm.getState());
-                if (work != null) {
-                    if (s_logger.isDebugEnabled()) {
-                        s_logger.debug("Found an outstanding work item for this vm " + vm + " in state:" + vm.getState() + ", work id:" + work.getId());
-                    }
-                }
-                vm.setState(State.Running); // set it as running and let HA take care of it
-                _vmDao.persist(vm);
-
-                if (work != null) {
-                    if (s_logger.isDebugEnabled()) {
-                        s_logger.debug("Updating outstanding work item to Done, id:" + work.getId());
-                    }
-                    work.setStep(Step.Done);
-                    _workDao.update(work.getId(), work);
-                }
-
-                try {
-                    Host host = _hostDao.findByGuid(info.getHostUuid());
-                    long hostId = host == null ? (vm.getHostId() == null ? vm.getLastHostId() : vm.getHostId()) : host.getId();
-                    HypervisorGuru hvGuru = _hvGuruMgr.getGuru(vm.getHypervisorType());
-                    Command command = compareState(hostId, vm, info, true, hvGuru.trackVmHostChange());
-                    if (command != null) {
-                        Answer answer = _agentMgr.send(hostId, command);
-                        if (!answer.getResult()) {
-                            s_logger.warn("Failed to update state of the VM due to " + answer.getDetails());
-                        }
-                    }
-                } catch (Exception e) {
-                    s_logger.warn("Unable to update state of the VM due to exception " + e.getMessage());
-                    e.printStackTrace();
-                }
-            } else if (info != null &&
-                    (vm.getState() == State.Stopped || vm.getState() == State.Stopping || vm.isRemoved() || vm.getState() == State.Destroyed || vm.getState() == State.Expunging)) {
-                Host host = _hostDao.findByGuid(info.getHostUuid());
-                if (host != null) {
-                    s_logger.warn("Stopping a VM which is stopped/stopping/destroyed/expunging " + info.name);
-                    if (vm.getState() == State.Stopped || vm.getState() == State.Stopping) {
-                        vm.setState(State.Stopped); // set it as stop and clear it from host
-                        vm.setHostId(null);
-                        _vmDao.persist(vm);
-                    }
-                    try {
-                        Answer answer = _agentMgr.send(host.getId(), cleanup(info.name));
-                        if (!answer.getResult()) {
-                            s_logger.warn("Unable to stop a VM due to " + answer.getDetails());
-                        }
-                    } catch (Exception e) {
-                        s_logger.warn("Unable to stop a VM due to " + e.getMessage());
-                    }
-                }
-            } else
-                // host id can change
-                if (info != null && vm.getState() == State.Running) {
-                    // check for host id changes
-                    Host host = _hostDao.findByGuid(info.getHostUuid());
-                    if (host != null && (vm.getHostId() == null || host.getId() != vm.getHostId())) {
-                        s_logger.info("Found vm " + vm.getInstanceName() + " with inconsistent host in db, new host is " + host.getId());
-                        try {
-                            stateTransitTo(vm, VirtualMachine.Event.AgentReportMigrated, host.getId());
-                        } catch (NoTransitionException e) {
-                            s_logger.warn(e.getMessage());
-                        }
-                    }
-                }
-            /* else if(info == null && vm.getState() == State.Stopping) { //Handling CS-13376
-                        s_logger.warn("Marking the VM as Stopped as it was still stopping on the CS" +vm.getName());
-                        vm.setState(State.Stopped); // Setting the VM as stopped on the DB and clearing it from the host
-                        vm.setLastHostId(vm.getHostId());
-                        vm.setHostId(null);
-                        _vmDao.persist(vm);
-                 }*/
-        }
-
-        for (final AgentVmInfo left : infos.values()) {
-            if (!VirtualMachineName.isValidVmName(left.name))
-                continue;  // if the vm doesn't follow CS naming ignore it for stopping
-            try {
-                Host host = _hostDao.findByGuid(left.getHostUuid());
-                if (host != null) {
-                    s_logger.warn("Stopping a VM which we do not have any record of " + left.name);
-                    Answer answer = _agentMgr.send(host.getId(), cleanup(left.name));
-                    if (!answer.getResult()) {
-                        s_logger.warn("Unable to stop a VM due to " + answer.getDetails());
-                    }
-                }
-            } catch (Exception e) {
-                s_logger.warn("Unable to stop a VM due to " + e.getMessage());
-            }
-        }
-
-    }
-
-    protected Map<Long, AgentVmInfo> convertToInfos(final Map<String, Pair<String, State>> newStates) {
-        final HashMap<Long, AgentVmInfo> map = new HashMap<Long, AgentVmInfo>();
-        if (newStates == null) {
-            return map;
-        }
-        boolean is_alien_vm = true;
-        long alien_vm_count = -1;
-        for (Map.Entry<String, Pair<String, State>> entry : newStates.entrySet()) {
-            is_alien_vm = true;
-            String name = entry.getKey();
-            VMInstanceVO vm = _vmDao.findVMByInstanceName(name);
-            if (vm != null) {
-                map.put(vm.getId(), new AgentVmInfo(entry.getKey(), vm, entry.getValue().second(), entry.getValue().first()));
-                is_alien_vm = false;
-            }
-            // alien VMs
-            if (is_alien_vm) {
-                map.put(alien_vm_count--, new AgentVmInfo(entry.getKey(), null, entry.getValue().second(), entry.getValue().first()));
-                s_logger.warn("Found an alien VM " + entry.getKey());
-            }
-        }
-        return map;
-    }
-
-    protected Map<Long, AgentVmInfo> convertToInfos(StartupRoutingCommand cmd) {
-        final Map<String, VmState> states = cmd.getVmStates();
-        final HashMap<Long, AgentVmInfo> map = new HashMap<Long, AgentVmInfo>();
-        if (states == null) {
-            return map;
-        }
-
-        for (Map.Entry<String, VmState> entry : states.entrySet()) {
-            String name = entry.getKey();
-            VMInstanceVO vm = _vmDao.findVMByInstanceName(name);
-            if (vm != null) {
-                map.put(vm.getId(), new AgentVmInfo(entry.getKey(), vm, entry.getValue().getState(), entry.getValue().getHost()));
-            }
-        }
-
-        return map;
-    }
-
-    protected Map<Long, AgentVmInfo> convertDeltaToInfos(final Map<String, State> states) {
-        final HashMap<Long, AgentVmInfo> map = new HashMap<Long, AgentVmInfo>();
-
-        if (states == null) {
-            return map;
-        }
-
-        for (Map.Entry<String, State> entry : states.entrySet()) {
-            String name = entry.getKey();
-            VMInstanceVO vm = _vmDao.findVMByInstanceName(name);
-            if (vm != null) {
-                map.put(vm.getId(), new AgentVmInfo(entry.getKey(), vm, entry.getValue()));
-            }
-        }
-
-        return map;
-    }
-
-    /**
-     * compareState does as its name suggests and compares the states between
-     * management server and agent. It returns whether something should be
-     * cleaned up
-     *
-     */
-    protected Command compareState(long hostId, VMInstanceVO vm, final AgentVmInfo info, final boolean fullSync, boolean trackExternalChange) {
-        State agentState = info.state;
-        final State serverState = vm.getState();
-        final String serverName = vm.getInstanceName();
-
-        Command command = null;
-        s_logger.debug("VM " + serverName + ": cs state = " + serverState + " and realState = " + agentState);
-        if (s_logger.isDebugEnabled()) {
-            s_logger.debug("VM " + serverName + ": cs state = " + serverState + " and realState = " + agentState);
-        }
-
-        if (agentState == State.Error) {
-            agentState = State.Stopped;
-
-            AlertManager.AlertType alertType = AlertManager.AlertType.ALERT_TYPE_USERVM;
-            if (VirtualMachine.Type.DomainRouter.equals(vm.getType())) {
-                alertType = AlertManager.AlertType.ALERT_TYPE_DOMAIN_ROUTER;
-            } else if (VirtualMachine.Type.ConsoleProxy.equals(vm.getType())) {
-                alertType = AlertManager.AlertType.ALERT_TYPE_CONSOLE_PROXY;
-            } else if (VirtualMachine.Type.SecondaryStorageVm.equals(vm.getType())) {
-                alertType = AlertManager.AlertType.ALERT_TYPE_SSVM;
-            }
-
-            HostPodVO podVO = _podDao.findById(vm.getPodIdToDeployIn());
-            DataCenterVO dcVO = _dcDao.findById(vm.getDataCenterId());
-            HostVO hostVO = _hostDao.findById(vm.getHostId());
-
-            String hostDesc = "name: " + hostVO.getName() + " (id:" + hostVO.getId() + "), availability zone: " + dcVO.getName() + ", pod: " + podVO.getName();
-            _alertMgr.sendAlert(alertType, vm.getDataCenterId(), vm.getPodIdToDeployIn(), "VM (name: " + vm.getInstanceName() + ", id: " + vm.getId() +
-                    ") stopped on host " + hostDesc + " due to storage failure", "Virtual Machine " + vm.getInstanceName() + " (id: " + vm.getId() + ") running on host [" +
-                            vm.getHostId() + "] stopped due to storage failure.");
-        }
-
-        if (trackExternalChange) {
-            if (serverState == State.Starting) {
-                if (vm.getHostId() != null && vm.getHostId() != hostId) {
-                    s_logger.info("CloudStack is starting VM on host " + vm.getHostId() + ", but status report comes from a different host " + hostId +
-                            ", skip status sync for vm: " + vm.getInstanceName());
-                    return null;
-                }
-            }
-            if (vm.getHostId() == null || hostId != vm.getHostId()) {
-                try {
-                    ItWorkVO workItem = _workDao.findByOutstandingWork(vm.getId(), State.Migrating);
-                    if (workItem == null) {
-                        stateTransitTo(vm, VirtualMachine.Event.AgentReportMigrated, hostId);
-                    }
-                } catch (NoTransitionException e) {
-                }
-            }
-        }
-
-        // during VM migration time, don't sync state will agent status update
-        if (serverState == State.Migrating) {
-            s_logger.debug("Skipping vm in migrating state: " + vm);
-            return null;
-        }
-
-        if (trackExternalChange) {
-            if (serverState == State.Starting) {
-                if (vm.getHostId() != null && vm.getHostId() != hostId) {
-                    s_logger.info("CloudStack is starting VM on host " + vm.getHostId() + ", but status report comes from a different host " + hostId +
-                            ", skip status sync for vm: " + vm.getInstanceName());
-                    return null;
-                }
-            }
-
-            if (serverState == State.Running) {
-                try {
-                    //
-                    // we had a bug that sometimes VM may be at Running State
-                    // but host_id is null, we will cover it here.
-                    // means that when CloudStack DB lost of host information,
-                    // we will heal it with the info reported from host
-                    //
-                    if (vm.getHostId() == null || hostId != vm.getHostId()) {
-                        if (s_logger.isDebugEnabled()) {
-                            s_logger.debug("detected host change when VM " + vm + " is at running state, VM could be live-migrated externally from host " +
-                                    vm.getHostId() + " to host " + hostId);
-                        }
-
-                        stateTransitTo(vm, VirtualMachine.Event.AgentReportMigrated, hostId);
-                    }
-                } catch (NoTransitionException e) {
-                    s_logger.warn(e.getMessage());
-                }
-            }
-        }
-
-        if (agentState == serverState) {
-            if (s_logger.isDebugEnabled()) {
-                s_logger.debug("Both states are " + agentState + " for " + vm);
-            }
-            assert (agentState == State.Stopped || agentState == State.Running) : "If the states we send up is changed, this must be changed.";
-            if (agentState == State.Running) {
-                try {
-                    stateTransitTo(vm, VirtualMachine.Event.AgentReportRunning, hostId);
-                } catch (NoTransitionException e) {
-                    s_logger.warn(e.getMessage());
-                }
-                // FIXME: What if someone comes in and sets it to stopping? Then
-                // what?
-                return null;
-            }
-
-            s_logger.debug("State matches but the agent said stopped so let's send a cleanup command anyways.");
-            return cleanup(vm);
-        }
-
-        if (agentState == State.Shutdowned) {
-            if (serverState == State.Running || serverState == State.Starting || serverState == State.Stopping) {
-                try {
-                    advanceStop(vm.getUuid(), true);
-                } catch (AgentUnavailableException e) {
-                    assert (false) : "How do we hit this with forced on?";
-                    return null;
-                } catch (OperationTimedoutException e) {
-                    assert (false) : "How do we hit this with forced on?";
-                    return null;
-                } catch (ConcurrentOperationException e) {
-                    assert (false) : "How do we hit this with forced on?";
-                    return null;
-                }
-            } else {
-                s_logger.debug("Sending cleanup to a shutdowned vm: " + vm.getInstanceName());
-                command = cleanup(vm);
-            }
-        } else if (agentState == State.Stopped) {
-            // This state means the VM on the agent was detected previously
-            // and now is gone. This is slightly different than if the VM
-            // was never completed but we still send down a Stop Command
-            // to ensure there's cleanup.
-            if (serverState == State.Running) {
-                // Our records showed that it should be running so let's restart
-                // it.
-                _haMgr.scheduleRestart(vm, false);
-            } else if (serverState == State.Stopping) {
-                _haMgr.scheduleStop(vm, hostId, WorkType.ForceStop);
-                s_logger.debug("Scheduling a check stop for VM in stopping mode: " + vm);
-            } else if (serverState == State.Starting) {
-                s_logger.debug("Ignoring VM in starting mode: " + vm.getInstanceName());
-                _haMgr.scheduleRestart(vm, false);
-            }
-            command = cleanup(vm);
-        } else if (agentState == State.Running) {
-            if (serverState == State.Starting) {
-                if (fullSync) {
-                    try {
-                        ensureVmRunningContext(hostId, vm, Event.AgentReportRunning);
-                    } catch (OperationTimedoutException e) {
-                        s_logger.error("Exception during update for running vm: " + vm, e);
-                        return null;
-                    } catch (ResourceUnavailableException e) {
-                        s_logger.error("Exception during update for running vm: " + vm, e);
-                        return null;
-                    } catch (InsufficientAddressCapacityException e) {
-                        s_logger.error("Exception during update for running vm: " + vm, e);
-                        return null;
-                    } catch (NoTransitionException e) {
-                        s_logger.warn(e.getMessage());
-                    }
-                }
-            } else if (serverState == State.Stopped) {
-                s_logger.debug("Scheduling a stop command for " + vm);
-                _haMgr.scheduleStop(vm, hostId, WorkType.Stop);
-            } else {
-                s_logger.debug("server VM state " + serverState + " does not meet expectation of a running VM report from agent");
-
-                // just be careful not to stop VM for things we don't handle
-                // command = cleanup(vm);
-            }
-        }
-        return command;
-    }
 
     private void ensureVmRunningContext(long hostId, VMInstanceVO vm, Event cause) throws OperationTimedoutException, ResourceUnavailableException,
     NoTransitionException, InsufficientAddressCapacityException {
@@ -3095,22 +2613,8 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
         for (Command cmd : cmds) {
             if (cmd instanceof PingRoutingCommand) {
                 PingRoutingCommand ping = (PingRoutingCommand)cmd;
-                if (ping.getNewStates() != null && ping.getNewStates().size() > 0) {
-                    if (!VmJobEnabled.value()) {
-                        Commands commands = deltaHostSync(agentId, ping.getNewStates());
-                        if (commands.size() > 0) {
-                            try {
-                                _agentMgr.send(agentId, commands, this);
-                            } catch (final AgentUnavailableException e) {
-                                s_logger.warn("Agent is now unavailable", e);
-                            }
-                        }
-                    }
-                }
-                if(VmJobEnabled.value()) {
-                    if (ping.getHostVmStateReport() != null) {
-                        _syncMgr.processHostVmStatePingReport(agentId, ping.getHostVmStateReport());
-                    }
+                if (ping.getHostVmStateReport() != null) {
+                    _syncMgr.processHostVmStatePingReport(agentId, ping.getHostVmStateReport());
                 }
 
                 // take the chance to scan VMs that are stuck in transitional states
@@ -3141,9 +2645,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
         if(s_logger.isDebugEnabled())
             s_logger.debug("Received startup command from hypervisor host. host id: " + agent.getId());
 
-        if(VmJobEnabled.value()) {
-            _syncMgr.resetHostSyncState(agent.getId());
-        }
+        _syncMgr.resetHostSyncState(agent.getId());
 
         if (forRebalance) {
             s_logger.debug("Not processing listener " + this + " as connect happens on rebalance process");
@@ -3159,13 +2661,6 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
         long agentId = agent.getId();
 
         if (agent.getHypervisorType() == HypervisorType.XenServer) { // only for Xen
-            if (!VmJobEnabled.value()) {
-                StartupRoutingCommand startup = (StartupRoutingCommand)cmd;
-                HashMap<String, Pair<String, State>> allStates = startup.getClusterVMStateChanges();
-                if (allStates != null) {
-                    fullSync(clusterId, allStates);
-                }
-            }
             // initiate the cron job
             ClusterVMMetaDataSyncCommand syncVMMetaDataCmd = new ClusterVMMetaDataSyncCommand(ClusterVMMetaDataSyncInterval.value(), clusterId);
             try {
@@ -3174,35 +2669,6 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
             } catch (AgentUnavailableException e) {
                 s_logger.fatal("The Cluster VM metadata sync process failed for cluster id " + clusterId + " with ", e);
             }
-        } else { // for others KVM and VMWare
-            if (!VmJobEnabled.value()) {
-                StartupRoutingCommand startup = (StartupRoutingCommand)cmd;
-                Commands commands = fullHostSync(agentId, startup);
-
-                if (commands.size() > 0) {
-                    s_logger.debug("Sending clean commands to the agent");
-
-                    try {
-                        boolean error = false;
-                        Answer[] answers = _agentMgr.send(agentId, commands);
-                        for (Answer answer : answers) {
-                            if (!answer.getResult()) {
-                                s_logger.warn("Unable to stop a VM due to " + answer.getDetails());
-                                error = true;
-                            }
-                        }
-                        if (error) {
-                            throw new ConnectionException(true, "Unable to stop VMs");
-                        }
-                    } catch (final AgentUnavailableException e) {
-                        s_logger.warn("Agent is unavailable now", e);
-                        throw new ConnectionException(true, "Unable to sync", e);
-                    } catch (final OperationTimedoutException e) {
-                        s_logger.warn("Agent is unavailable now", e);
-                        throw new ConnectionException(true, "Unable to sync", e);
-                    }
-                }
-            }
         }
     }
 
@@ -3239,28 +2705,6 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
         }
     }
 
-    protected class AgentVmInfo {
-        public String name;
-        public State state;
-        public String hostUuid;
-        public VMInstanceVO vm;
-
-        public AgentVmInfo(String name, VMInstanceVO vm, State state, String host) {
-            this.name = name;
-            this.state = state;
-            this.vm = vm;
-            hostUuid = host;
-        }
-
-        public AgentVmInfo(String name, VMInstanceVO vm, State state) {
-            this(name, vm, state, null);
-        }
-
-        public String getHostUuid() {
-            return hostUuid;
-        }
-    }
-
     @Override
     public VMInstanceVO findById(long vmId) {
         return _vmDao.findById(vmId);
@@ -3345,12 +2789,10 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
             throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException {
 
         AsyncJobExecutionContext jobContext = AsyncJobExecutionContext.getCurrentExecutionContext();
-        if (!VmJobEnabled.value() || jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
+        if (jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
             // avoid re-entrance
             VmWorkJobVO placeHolder = null;
-            if (VmJobEnabled.value()) {
-                placeHolder = createPlaceHolderWork(vm.getId());
-            }
+            placeHolder = createPlaceHolderWork(vm.getId());
             try {
                 return orchestrateAddVmToNetwork(vm, network, requested);
             } finally {
@@ -3460,12 +2902,10 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
             throws ConcurrentOperationException, ResourceUnavailableException {
 
         AsyncJobExecutionContext jobContext = AsyncJobExecutionContext.getCurrentExecutionContext();
-        if (!VmJobEnabled.value() || jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
+        if (jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
             // avoid re-entrance
             VmWorkJobVO placeHolder = null;
-            if (VmJobEnabled.value()) {
-                placeHolder = createPlaceHolderWork(vm.getId());
-            }
+            placeHolder = createPlaceHolderWork(vm.getId());
             try {
                 return orchestrateRemoveNicFromVm(vm, nic);
             } finally {
@@ -3712,13 +3152,11 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
     public void migrateForScale(String vmUuid, long srcHostId, DeployDestination dest, Long oldSvcOfferingId)
             throws ResourceUnavailableException, ConcurrentOperationException {
         AsyncJobExecutionContext jobContext = AsyncJobExecutionContext.getCurrentExecutionContext();
-        if (!VmJobEnabled.value() || jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
+        if (jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
             // avoid re-entrance
             VmWorkJobVO placeHolder = null;
-            if (VmJobEnabled.value()) {
-                VirtualMachine vm = _vmDao.findByUuid(vmUuid);
-                placeHolder = createPlaceHolderWork(vm.getId());
-            }
+            VirtualMachine vm = _vmDao.findByUuid(vmUuid);
+            placeHolder = createPlaceHolderWork(vm.getId());
             try {
                 orchestrateMigrateForScale(vmUuid, srcHostId, dest, oldSvcOfferingId);
             } finally {
@@ -3977,13 +3415,11 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
             throws ResourceUnavailableException, InsufficientServerCapacityException, ConcurrentOperationException {
 
         AsyncJobExecutionContext jobContext = AsyncJobExecutionContext.getCurrentExecutionContext();
-        if (!VmJobEnabled.value() || jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
+        if (jobContext.isJobDispatchedBy(VmWorkConstants.VM_WORK_JOB_DISPATCHER)) {
             // avoid re-entrance
             VmWorkJobVO placeHolder = null;
-            if (VmJobEnabled.value()) {
-                VirtualMachine vm = _vmDao.findByUuid(vmUuid);
-                placeHolder = createPlaceHolderWork(vm.getId());
-            }
+            VirtualMachine vm = _vmDao.findByUuid(vmUuid);
+            placeHolder = createPlaceHolderWork(vm.getId());
             try {
                 return orchestrateReConfigureVm(vmUuid, oldServiceOffering, reconfiguringOnExistingHost);
             } finally {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/engine/orchestration/test/com/cloud/vm/VirtualMachineManagerImplTest.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/test/com/cloud/vm/VirtualMachineManagerImplTest.java b/engine/orchestration/test/com/cloud/vm/VirtualMachineManagerImplTest.java
index ae07455..865b066 100644
--- a/engine/orchestration/test/com/cloud/vm/VirtualMachineManagerImplTest.java
+++ b/engine/orchestration/test/com/cloud/vm/VirtualMachineManagerImplTest.java
@@ -102,6 +102,7 @@ import com.cloud.utils.db.EntityManager;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.vm.VirtualMachine.Event;
 import com.cloud.vm.VirtualMachine.State;
+import com.cloud.vm.VirtualMachine.PowerState;
 import com.cloud.vm.dao.UserVmDao;
 import com.cloud.vm.dao.UserVmDetailsDao;
 import com.cloud.vm.dao.VMInstanceDao;
@@ -397,7 +398,7 @@ public class VirtualMachineManagerImplTest {
 
         CheckVirtualMachineAnswer checkVmAnswerMock = mock(CheckVirtualMachineAnswer.class);
         when(checkVmAnswerMock.getResult()).thenReturn(true);
-        when(checkVmAnswerMock.getState()).thenReturn(State.Running);
+        when(checkVmAnswerMock.getState()).thenReturn(PowerState.PowerOn);
         when(_agentMgr.send(anyLong(), isA(CheckVirtualMachineCommand.class))).thenReturn(checkVmAnswerMock);
 
         // Mock the state transitions of vm.

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/engine/storage/snapshot/src/org/apache/cloudstack/storage/vmsnapshot/DefaultVMSnapshotStrategy.java
----------------------------------------------------------------------
diff --git a/engine/storage/snapshot/src/org/apache/cloudstack/storage/vmsnapshot/DefaultVMSnapshotStrategy.java b/engine/storage/snapshot/src/org/apache/cloudstack/storage/vmsnapshot/DefaultVMSnapshotStrategy.java
index 17a9f79..c204d29 100644
--- a/engine/storage/snapshot/src/org/apache/cloudstack/storage/vmsnapshot/DefaultVMSnapshotStrategy.java
+++ b/engine/storage/snapshot/src/org/apache/cloudstack/storage/vmsnapshot/DefaultVMSnapshotStrategy.java
@@ -137,7 +137,7 @@ public class DefaultVMSnapshotStrategy extends ManagerBase implements VMSnapshot
             HostVO host = hostDao.findById(hostId);
             GuestOSHypervisorVO guestOsMapping = guestOsHypervisorDao.findByOsIdAndHypervisor(guestOS.getId(), host.getHypervisorType().toString(), host.getHypervisorVersion());
 
-            CreateVMSnapshotCommand ccmd = new CreateVMSnapshotCommand(userVm.getInstanceName(), target, volumeTOs, guestOS.getDisplayName(), userVm.getState());
+            CreateVMSnapshotCommand ccmd = new CreateVMSnapshotCommand(userVm.getInstanceName(), target, volumeTOs, guestOS.getDisplayName());
             if (guestOsMapping == null) {
                 ccmd.setPlatformEmulator(null);
             } else {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/engine/storage/src/org/apache/cloudstack/storage/helper/HypervisorHelperImpl.java
----------------------------------------------------------------------
diff --git a/engine/storage/src/org/apache/cloudstack/storage/helper/HypervisorHelperImpl.java b/engine/storage/src/org/apache/cloudstack/storage/helper/HypervisorHelperImpl.java
index ff62fb8..e90770e 100644
--- a/engine/storage/src/org/apache/cloudstack/storage/helper/HypervisorHelperImpl.java
+++ b/engine/storage/src/org/apache/cloudstack/storage/helper/HypervisorHelperImpl.java
@@ -124,7 +124,7 @@ public class HypervisorHelperImpl implements HypervisorHelper {
         GuestOSVO guestOS = guestOSDao.findById(virtualMachine.getGuestOSId());
         List<VolumeObjectTO> volumeTOs = vmSnapshotHelper.getVolumeTOList(virtualMachine.getId());
         CreateVMSnapshotCommand ccmd =
-            new CreateVMSnapshotCommand(virtualMachine.getInstanceName(), vmSnapshotTO, volumeTOs, guestOS.getDisplayName(), virtualMachine.getState());
+            new CreateVMSnapshotCommand(virtualMachine.getInstanceName(), vmSnapshotTO, volumeTOs, guestOS.getDisplayName());
         HostVO host = hostDao.findById(hostId);
         GuestOSHypervisorVO guestOsMapping = guestOsHypervisorDao.findByOsIdAndHypervisor(guestOS.getId(), host.getHypervisorType().toString(), host.getHypervisorVersion());
         ccmd.setPlatformEmulator(guestOsMapping.getGuestOsName());

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BareMetalResourceBase.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BareMetalResourceBase.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BareMetalResourceBase.java
index 8285337..fedfb8b 100755
--- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BareMetalResourceBase.java
+++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BareMetalResourceBase.java
@@ -67,9 +67,7 @@ import com.cloud.utils.script.Script;
 import com.cloud.utils.script.Script2;
 import com.cloud.utils.script.Script2.ParamType;
 import com.cloud.vm.VMInstanceVO;
-import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.VirtualMachine.PowerState;
-import com.cloud.vm.VirtualMachine.State;
 import com.cloud.vm.dao.VMInstanceDao;
 import org.apache.cloudstack.api.ApiConstants;
 import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
@@ -85,7 +83,6 @@ import java.util.concurrent.TimeUnit;
 @Local(value = ServerResource.class)
 public class BareMetalResourceBase extends ManagerBase implements ServerResource {
     private static final Logger s_logger = Logger.getLogger(BareMetalResourceBase.class);
-    protected HashMap<String, State> _vms = new HashMap<String, State>(2);
     protected String _name;
     protected String _uuid;
     protected String _zone;
@@ -116,17 +113,6 @@ public class BareMetalResourceBase extends ManagerBase implements ServerResource
     protected ConfigurationDao configDao;
     protected VMInstanceDao vmDao;
 
-    private void changeVmState(String vmName, VirtualMachine.State state) {
-        synchronized (_vms) {
-            _vms.put(vmName, state);
-        }
-    }
-
-    private State removeVmState(String vmName) {
-        synchronized (_vms) {
-            return _vms.remove(vmName);
-        }
-    }
 
     @Override
     public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
@@ -341,37 +327,6 @@ public class BareMetalResourceBase extends ManagerBase implements ServerResource
         return com.cloud.host.Host.Type.Routing;
     }
 
-    protected State getVmState() {
-        OutputInterpreter.AllLinesParser interpreter = new OutputInterpreter.AllLinesParser();
-        if (!doScript(_getStatusCommand, interpreter)) {
-            s_logger.warn("Cannot get power status of " + _name + ", assume VM state was not changed");
-            return null;
-        }
-        if (isPowerOn(interpreter.getLines())) {
-            return State.Running;
-        } else {
-            return State.Stopped;
-        }
-    }
-
-    protected Map<String, State> fullSync() {
-        Map<String, State> states = new HashMap<String, State>();
-        if (hostId != null) {
-            final List<? extends VMInstanceVO> vms = vmDao.listByHostId(hostId);
-            for (VMInstanceVO vm : vms) {
-                states.put(vm.getInstanceName(), vm.getState());
-            }
-        }
-        /*
-         * Map<String, State> changes = new HashMap<String, State>();
-         *
-         * if (_vmName != null) { State state = getVmState(); if (state != null)
-         * { changes.put(_vmName, state); } }
-         */
-
-        return states;
-    }
-
     protected Map<String, HostVmStateReportEntry> getHostVmStateReport() {
         Map<String, HostVmStateReportEntry> states = new HashMap<String, HostVmStateReportEntry>();
         if (hostId != null) {
@@ -380,25 +335,18 @@ public class BareMetalResourceBase extends ManagerBase implements ServerResource
                 states.put(
                     vm.getInstanceName(),
                     new HostVmStateReportEntry(
-                        vm.getState() == State.Running ? PowerState.PowerOn : PowerState.PowerOff, "host-" + hostId
+                        vm.getPowerState(), "host-" + hostId
                     )
                 );
             }
         }
-        /*
-         * Map<String, State> changes = new HashMap<String, State>();
-         *
-         * if (_vmName != null) { State state = getVmState(); if (state != null)
-         * { changes.put(_vmName, state); } }
-         */
-
         return states;
     }
 
     @Override
     public StartupCommand[] initialize() {
         StartupRoutingCommand cmd = new StartupRoutingCommand(0, 0, 0, 0, null, Hypervisor.HypervisorType.BareMetal,
-            new HashMap<String, String>(), null, null);
+            new HashMap<String, String>());
 
         cmd.setDataCenter(_zone);
         cmd.setPod(_pod);
@@ -413,7 +361,6 @@ public class BareMetalResourceBase extends ManagerBase implements ServerResource
         cmd.setMemory(_memCapacity);
         cmd.setPrivateMacAddress(_mac);
         cmd.setPublicMacAddress(_mac);
-        cmd.setStateChanges(fullSync());
         return new StartupCommand[] { cmd };
     }
 
@@ -439,15 +386,15 @@ public class BareMetalResourceBase extends ManagerBase implements ServerResource
         if (hostId != null) {
             final List<? extends VMInstanceVO> vms = vmDao.listByHostId(hostId);
             if (vms.isEmpty()) {
-                return new PingRoutingCommand(getType(), id, deltaSync(), getHostVmStateReport());
+                return new PingRoutingCommand(getType(), id, getHostVmStateReport());
             } else {
                 VMInstanceVO vm = vms.get(0);
                 SecurityGroupHttpClient client = new SecurityGroupHttpClient();
                 HashMap<String, Pair<Long, Long>> nwGrpStates = client.sync(vm.getInstanceName(), vm.getId(), vm.getPrivateIpAddress());
-                return new PingRoutingWithNwGroupsCommand(getType(), id, null, getHostVmStateReport(), nwGrpStates);
+                return new PingRoutingWithNwGroupsCommand(getType(), id, getHostVmStateReport(), nwGrpStates);
             }
         } else {
-            return new PingRoutingCommand(getType(), id, deltaSync(), getHostVmStateReport());
+            return new PingRoutingCommand(getType(), id, getHostVmStateReport());
         }
     }
 
@@ -487,7 +434,7 @@ public class BareMetalResourceBase extends ManagerBase implements ServerResource
     }
 
     protected CheckVirtualMachineAnswer execute(final CheckVirtualMachineCommand cmd) {
-        return new CheckVirtualMachineAnswer(cmd, State.Stopped, null);
+        return new CheckVirtualMachineAnswer(cmd, PowerState.PowerOff, null);
     }
 
     protected Answer execute(IpmiBootorResetCommand cmd) {
@@ -608,85 +555,33 @@ public class BareMetalResourceBase extends ManagerBase implements ServerResource
 
     protected StartAnswer execute(StartCommand cmd) {
         VirtualMachineTO vm = cmd.getVirtualMachine();
-        State state = State.Stopped;
-
-        try {
-            changeVmState(vm.getName(), State.Starting);
 
-            OutputInterpreter.AllLinesParser interpreter = new OutputInterpreter.AllLinesParser();
-            if (!doScript(_getStatusCommand, interpreter)) {
-                return new StartAnswer(cmd, "Cannot get current power status of " + _name);
-            }
+        OutputInterpreter.AllLinesParser interpreter = new OutputInterpreter.AllLinesParser();
+        if (!doScript(_getStatusCommand, interpreter)) {
+            return new StartAnswer(cmd, "Cannot get current power status of " + _name);
+        }
 
-            if (isPowerOn(interpreter.getLines())) {
-                if (!doScript(_rebootCommand)) {
-                    return new StartAnswer(cmd, "IPMI reboot failed");
-                }
-            } else {
-                if (!doScript(_powerOnCommand)) {
-                    return new StartAnswer(cmd, "IPMI power on failed");
-                }
+        if (isPowerOn(interpreter.getLines())) {
+            if (!doScript(_rebootCommand)) {
+                return new StartAnswer(cmd, "IPMI reboot failed");
             }
-
-            if (_isEchoScAgent) {
-                SecurityGroupHttpClient hc = new SecurityGroupHttpClient();
-                boolean echoRet = hc.echo(vm.getNics()[0].getIp(), TimeUnit.MINUTES.toMillis(30), TimeUnit.MINUTES.toMillis(1));
-                if (!echoRet) {
-                    return new StartAnswer(cmd, String.format("Call security group agent on vm[%s] timeout", vm.getNics()[0].getIp()));
-                }
+        } else {
+            if (!doScript(_powerOnCommand)) {
+                return new StartAnswer(cmd, "IPMI power on failed");
             }
+        }
 
-            s_logger.debug("Start bare metal vm " + vm.getName() + "successfully");
-            state = State.Running;
-            _vmName = vm.getName();
-            return new StartAnswer(cmd);
-        } finally {
-            if (state != State.Stopped) {
-                changeVmState(vm.getName(), state);
-            } else {
-                removeVmState(vm.getName());
+        if (_isEchoScAgent) {
+            SecurityGroupHttpClient hc = new SecurityGroupHttpClient();
+            boolean echoRet = hc.echo(vm.getNics()[0].getIp(), TimeUnit.MINUTES.toMillis(30), TimeUnit.MINUTES.toMillis(1));
+            if (!echoRet) {
+                return new StartAnswer(cmd, String.format("Call security group agent on vm[%s] timeout", vm.getNics()[0].getIp()));
             }
         }
-    }
-
-    protected HashMap<String, State> deltaSync() {
-        final HashMap<String, State> changes = new HashMap<String, State>();
-        /*
-         * Disable sync until we find a way that only tracks status but not does
-         * action
-         *
-         * The scenario is: Baremetal will reboot host when creating template.
-         * Given most servers take a long time to boot up, there would be a
-         * period that mgmt server finds the host is stopped through fullsync.
-         * Then mgmt server updates database with marking the host as stopped,
-         * after that, the host comes up and full sync then indicates it's
-         * running. Because in database the host is already stopped, mgmt server
-         * sends out a stop command. As a result, creating image gets never
-         * happened.
-         *
-         * if (_vmName == null) { return null; }
-         *
-         * State newState = getVmState(); if (newState == null) {
-         * s_logger.warn("Cannot get power state of VM " + _vmName); return
-         * null; }
-         *
-         * final State oldState = removeVmState(_vmName); if (oldState == null)
-         * { changeVmState(_vmName, newState); changes.put(_vmName, newState); }
-         * else if (oldState == State.Starting) { if (newState == State.Running)
-         * { changeVmState(_vmName, newState); } else if (newState ==
-         * State.Stopped) { s_logger.debug("Ignoring vm " + _vmName +
-         * " because of a lag in starting the vm."); } } else if (oldState ==
-         * State.Migrating) {
-         * s_logger.warn("How can baremetal VM get into migrating state???"); }
-         * else if (oldState == State.Stopping) { if (newState == State.Stopped)
-         * { changeVmState(_vmName, newState); } else if (newState ==
-         * State.Running) { s_logger.debug("Ignoring vm " + _vmName +
-         * " because of a lag in stopping the vm. "); } } else if (oldState !=
-         * newState) { changeVmState(_vmName, newState); changes.put(_vmName,
-         * newState); }
-         */
-        return changes;
 
+        s_logger.debug("Start bare metal vm " + vm.getName() + "successfully");
+        _vmName = vm.getName();
+        return new StartAnswer(cmd);
     }
 
     protected ReadyAnswer execute(ReadyCommand cmd) {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpResourceBase.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpResourceBase.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpResourceBase.java
index 8e7acde..0d3cdce 100755
--- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpResourceBase.java
+++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpResourceBase.java
@@ -42,7 +42,6 @@ import com.cloud.agent.api.StartupExternalDhcpCommand;
 import com.cloud.host.Host.Type;
 import com.cloud.resource.ServerResource;
 import com.cloud.utils.component.ManagerBase;
-import com.cloud.vm.VirtualMachine.State;
 
 public class BaremetalDhcpResourceBase extends ManagerBase implements ServerResource {
     private static final Logger s_logger = Logger.getLogger(BaremetalDhcpResourceBase.class);
@@ -126,7 +125,7 @@ public class BaremetalDhcpResourceBase extends ManagerBase implements ServerReso
     @Override
     public PingCommand getCurrentStatus(long id) {
         //TODO: check server
-        return new PingRoutingCommand(getType(), id, new HashMap<String, State>(), new HashMap<String, HostVmStateReportEntry>());
+        return new PingRoutingCommand(getType(), id, new HashMap<String, HostVmStateReportEntry>());
     }
 
     protected ReadyAnswer execute(ReadyCommand cmd) {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpdResource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpdResource.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpdResource.java
index aab936c..8fd2c35 100755
--- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpdResource.java
+++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDhcpdResource.java
@@ -39,7 +39,6 @@ import com.cloud.agent.api.PingRoutingCommand;
 import com.cloud.agent.api.routing.DhcpEntryCommand;
 import com.cloud.utils.script.Script;
 import com.cloud.utils.ssh.SSHCmdHelper;
-import com.cloud.vm.VirtualMachine.State;
 
 public class BaremetalDhcpdResource extends BaremetalDhcpResourceBase {
     private static final Logger s_logger = Logger.getLogger(BaremetalDhcpdResource.class);
@@ -107,7 +106,7 @@ public class BaremetalDhcpdResource extends BaremetalDhcpResourceBase {
             return null;
         } else {
             SSHCmdHelper.releaseSshConnection(sshConnection);
-            return new PingRoutingCommand(getType(), id, new HashMap<String, State>(), new HashMap<String, HostVmStateReportEntry>());
+            return new PingRoutingCommand(getType(), id, new HashMap<String, HostVmStateReportEntry>());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDnsmasqResource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDnsmasqResource.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDnsmasqResource.java
index 19c1f19..79f23cc 100755
--- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDnsmasqResource.java
+++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalDnsmasqResource.java
@@ -39,7 +39,6 @@ import com.cloud.agent.api.PingRoutingCommand;
 import com.cloud.agent.api.routing.DhcpEntryCommand;
 import com.cloud.utils.script.Script;
 import com.cloud.utils.ssh.SSHCmdHelper;
-import com.cloud.vm.VirtualMachine.State;
 
 public class BaremetalDnsmasqResource extends BaremetalDhcpResourceBase {
     private static final Logger s_logger = Logger.getLogger(BaremetalDnsmasqResource.class);
@@ -99,7 +98,7 @@ public class BaremetalDnsmasqResource extends BaremetalDhcpResourceBase {
             return null;
         } else {
             SSHCmdHelper.releaseSshConnection(sshConnection);
-            return new PingRoutingCommand(getType(), id, new HashMap<String, State>(), new HashMap<String, HostVmStateReportEntry>());
+            return new PingRoutingCommand(getType(), id, new HashMap<String, HostVmStateReportEntry>());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartPxeResource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartPxeResource.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartPxeResource.java
index b677a63..260f4f1 100755
--- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartPxeResource.java
+++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalKickStartPxeResource.java
@@ -38,7 +38,6 @@ import com.cloud.agent.api.routing.VmDataCommand;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.script.Script;
 import com.cloud.utils.ssh.SSHCmdHelper;
-import com.cloud.vm.VirtualMachine.State;
 
 public class BaremetalKickStartPxeResource extends BaremetalPxeResourceBase {
     private static final Logger s_logger = Logger.getLogger(BaremetalKickStartPxeResource.class);
@@ -107,7 +106,7 @@ public class BaremetalKickStartPxeResource extends BaremetalPxeResourceBase {
             return null;
         } else {
             SSHCmdHelper.releaseSshConnection(sshConnection);
-            return new PingRoutingCommand(getType(), id, new HashMap<String, State>(), new HashMap<String, HostVmStateReportEntry>());
+            return new PingRoutingCommand(getType(), id, new HashMap<String, HostVmStateReportEntry>());
         }
     }
 


[2/3] completed the new vmsync TODOs in the code. removed old vmsync logic

Posted by an...@apache.org.
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPingPxeResource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPingPxeResource.java b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPingPxeResource.java
index a7fd77e..80827a2 100755
--- a/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPingPxeResource.java
+++ b/plugins/hypervisors/baremetal/src/com/cloud/baremetal/networkservice/BaremetalPingPxeResource.java
@@ -43,7 +43,6 @@ import com.cloud.agent.api.baremetal.PrepareCreateTemplateCommand;
 import com.cloud.agent.api.routing.VmDataCommand;
 import com.cloud.utils.script.Script;
 import com.cloud.utils.ssh.SSHCmdHelper;
-import com.cloud.vm.VirtualMachine.State;
 
 public class BaremetalPingPxeResource extends BaremetalPxeResourceBase {
     private static final Logger s_logger = Logger.getLogger(BaremetalPingPxeResource.class);
@@ -143,7 +142,7 @@ public class BaremetalPingPxeResource extends BaremetalPxeResourceBase {
             return null;
         } else {
             SSHCmdHelper.releaseSshConnection(sshConnection);
-            return new PingRoutingCommand(getType(), id, new HashMap<String, State>(), new HashMap<String, HostVmStateReportEntry>());
+            return new PingRoutingCommand(getType(), id, new HashMap<String, HostVmStateReportEntry>());
         }
     }
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/resource/HypervDirectConnectResource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/resource/HypervDirectConnectResource.java b/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/resource/HypervDirectConnectResource.java
index 1816baf..2671b20 100644
--- a/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/resource/HypervDirectConnectResource.java
+++ b/plugins/hypervisors/hyperv/src/com/cloud/hypervisor/hyperv/resource/HypervDirectConnectResource.java
@@ -90,7 +90,6 @@ import com.cloud.agent.api.SetupGuestNetworkCommand;
 import com.cloud.agent.api.StartCommand;
 import com.cloud.agent.api.StartupCommand;
 import com.cloud.agent.api.StartupRoutingCommand;
-import com.cloud.agent.api.StartupRoutingCommand.VmState;
 import com.cloud.agent.api.StartupStorageCommand;
 import com.cloud.agent.api.UnPlugNicAnswer;
 import com.cloud.agent.api.UnPlugNicCommand;
@@ -211,8 +210,7 @@ public class HypervDirectConnectResource extends ServerResourceBase implements S
 
         // Create default StartupRoutingCommand, then customise
         StartupRoutingCommand defaultStartRoutCmd =
-            new StartupRoutingCommand(0, 0, 0, 0, null, Hypervisor.HypervisorType.Hyperv, RouterPrivateIpStrategy.HostLocal, new HashMap<String, VmState>(),
-                new HashMap<String, HostVmStateReportEntry>());
+            new StartupRoutingCommand(0, 0, 0, 0, null, Hypervisor.HypervisorType.Hyperv, RouterPrivateIpStrategy.HostLocal);
 
         // Identity within the data centre is decided by CloudStack kernel,
         // and passed via ServerResource.configure()
@@ -224,7 +222,6 @@ public class HypervDirectConnectResource extends ServerResourceBase implements S
         defaultStartRoutCmd.setPrivateIpAddress(_agentIp);
         defaultStartRoutCmd.setStorageIpAddress(_agentIp);
         defaultStartRoutCmd.setPool(_clusterGuid);
-        defaultStartRoutCmd.setHostVmStateReport(getHostVmStateReport());
 
         s_logger.debug("Generated StartupRoutingCommand for _agentIp \"" + _agentIp + "\"");
 
@@ -316,7 +313,7 @@ public class HypervDirectConnectResource extends ServerResourceBase implements S
 
     @Override
     public final PingCommand getCurrentStatus(final long id) {
-        PingCommand pingCmd = new PingRoutingCommand(getType(), id, null, getHostVmStateReport());
+        PingCommand pingCmd = new PingRoutingCommand(getType(), id, getHostVmStateReport());
 
         if (s_logger.isDebugEnabled()) {
             s_logger.debug("Ping host " + _name + " (IP " + _agentIp + ")");

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/plugins/hypervisors/hyperv/test/com/cloud/hypervisor/hyperv/test/HypervDirectConnectResourceTest.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/hyperv/test/com/cloud/hypervisor/hyperv/test/HypervDirectConnectResourceTest.java b/plugins/hypervisors/hyperv/test/com/cloud/hypervisor/hyperv/test/HypervDirectConnectResourceTest.java
index d4f1c9f..75a864b 100644
--- a/plugins/hypervisors/hyperv/test/com/cloud/hypervisor/hyperv/test/HypervDirectConnectResourceTest.java
+++ b/plugins/hypervisors/hyperv/test/com/cloud/hypervisor/hyperv/test/HypervDirectConnectResourceTest.java
@@ -63,7 +63,6 @@ import com.cloud.agent.api.StartAnswer;
 import com.cloud.agent.api.StartCommand;
 import com.cloud.agent.api.StartupCommand;
 import com.cloud.agent.api.StartupRoutingCommand;
-import com.cloud.agent.api.StartupRoutingCommand.VmState;
 import com.cloud.agent.api.StartupStorageCommand;
 import com.cloud.agent.api.StopAnswer;
 import com.cloud.agent.api.StopCommand;
@@ -252,8 +251,7 @@ public class HypervDirectConnectResourceTest {
 
     public final void testStartupCommand() {
         StartupRoutingCommand defaultStartRoutCmd =
-            new StartupRoutingCommand(0, 0, 0, 0, null, Hypervisor.HypervisorType.Hyperv, RouterPrivateIpStrategy.HostLocal, new HashMap<String, VmState>(),
-                new HashMap<String, HostVmStateReportEntry>());
+            new StartupRoutingCommand(0, 0, 0, 0, null, Hypervisor.HypervisorType.Hyperv, RouterPrivateIpStrategy.HostLocal);
 
         // Identity within the data centre is decided by CloudStack kernel,
         // and passed via ServerResource.configure()

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
index 457e173..1be797c 100755
--- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
+++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
@@ -68,6 +68,7 @@ import org.libvirt.Connect;
 import org.libvirt.Domain;
 import org.libvirt.DomainBlockStats;
 import org.libvirt.DomainInfo;
+import org.libvirt.DomainInfo.DomainState;
 import org.libvirt.DomainInterfaceStats;
 import org.libvirt.DomainSnapshot;
 import org.libvirt.LibvirtException;
@@ -268,7 +269,6 @@ import com.cloud.utils.ssh.SshHelper;
 import com.cloud.vm.DiskProfile;
 import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.VirtualMachine.PowerState;
-import com.cloud.vm.VirtualMachine.State;
 
 /**
  * LibvirtComputingResource execute requests on the computing/routing host using
@@ -461,31 +461,17 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
     protected int _cmdsTimeout;
     protected int _stopTimeout;
 
-    // TODO vmsync {
-    protected static final HashMap<DomainInfo.DomainState, State> s_statesTable;
+    protected static final HashMap<DomainState, PowerState> s_powerStatesTable;
     static {
-        s_statesTable = new HashMap<DomainInfo.DomainState, State>();
-        s_statesTable.put(DomainInfo.DomainState.VIR_DOMAIN_SHUTOFF, State.Stopped);
-        s_statesTable.put(DomainInfo.DomainState.VIR_DOMAIN_PAUSED, State.Running);
-        s_statesTable.put(DomainInfo.DomainState.VIR_DOMAIN_RUNNING, State.Running);
-        s_statesTable.put(DomainInfo.DomainState.VIR_DOMAIN_BLOCKED, State.Running);
-        s_statesTable.put(DomainInfo.DomainState.VIR_DOMAIN_NOSTATE, State.Unknown);
-        s_statesTable.put(DomainInfo.DomainState.VIR_DOMAIN_SHUTDOWN, State.Stopping);
+        s_powerStatesTable = new HashMap<DomainState, PowerState>();
+        s_powerStatesTable.put(DomainState.VIR_DOMAIN_SHUTOFF, PowerState.PowerOff);
+        s_powerStatesTable.put(DomainState.VIR_DOMAIN_PAUSED, PowerState.PowerOn);
+        s_powerStatesTable.put(DomainState.VIR_DOMAIN_RUNNING, PowerState.PowerOn);
+        s_powerStatesTable.put(DomainState.VIR_DOMAIN_BLOCKED, PowerState.PowerOn);
+        s_powerStatesTable.put(DomainState.VIR_DOMAIN_NOSTATE, PowerState.PowerUnknown);
+        s_powerStatesTable.put(DomainState.VIR_DOMAIN_SHUTDOWN, PowerState.PowerOff);
     }
-    // TODO vmsync }
 
-    protected static final HashMap<DomainInfo.DomainState, PowerState> s_powerStatesTable;
-    static {
-        s_powerStatesTable = new HashMap<DomainInfo.DomainState, PowerState>();
-        s_powerStatesTable.put(DomainInfo.DomainState.VIR_DOMAIN_SHUTOFF, PowerState.PowerOff);
-        s_powerStatesTable.put(DomainInfo.DomainState.VIR_DOMAIN_PAUSED, PowerState.PowerOn);
-        s_powerStatesTable.put(DomainInfo.DomainState.VIR_DOMAIN_RUNNING, PowerState.PowerOn);
-        s_powerStatesTable.put(DomainInfo.DomainState.VIR_DOMAIN_BLOCKED, PowerState.PowerOn);
-        s_powerStatesTable.put(DomainInfo.DomainState.VIR_DOMAIN_NOSTATE, PowerState.PowerUnknown);
-        s_powerStatesTable.put(DomainInfo.DomainState.VIR_DOMAIN_SHUTDOWN, PowerState.PowerOff);
-    }
-
-    protected HashMap<String, State> _vms = new HashMap<String, State>(20);
     protected List<String> _vmsKilled = new ArrayList<String>();
 
     private VirtualRoutingResource _virtRouterResource;
@@ -2335,7 +2321,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
         String vmName = cmd.getVmName();
         try {
             Connect conn = LibvirtConnection.getConnectionByVmName(vmName);
-            DomainInfo.DomainState state = null;
+            DomainState state = null;
             Domain vm = null;
             if (vmName != null) {
                 try {
@@ -2349,7 +2335,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
             KVMStoragePool primaryPool = _storagePoolMgr.getStoragePool(cmd.getPool().getType(), cmd.getPool().getUuid());
 
             KVMPhysicalDisk disk = primaryPool.getPhysicalDisk(cmd.getVolumePath());
-            if (state == DomainInfo.DomainState.VIR_DOMAIN_RUNNING && !primaryPool.isExternalSnapshot()) {
+            if (state == DomainState.VIR_DOMAIN_RUNNING && !primaryPool.isExternalSnapshot()) {
                 String vmUuid = vm.getUUIDString();
                 Object[] args = new Object[] {snapshotName, vmUuid};
                 String snapshot = SnapshotXML.format(args);
@@ -2367,7 +2353,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
                  */
                 vm = getDomain(conn, cmd.getVmName());
                 state = vm.getInfo().state;
-                if (state == DomainInfo.DomainState.VIR_DOMAIN_PAUSED) {
+                if (state == DomainState.VIR_DOMAIN_PAUSED) {
                     vm.resume();
                 }
             } else {
@@ -2525,7 +2511,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
             }
             /* Delete the snapshot on primary */
 
-            DomainInfo.DomainState state = null;
+            DomainState state = null;
             Domain vm = null;
             if (vmName != null) {
                 try {
@@ -2537,7 +2523,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
             }
 
             KVMStoragePool primaryStorage = _storagePoolMgr.getStoragePool(cmd.getPool().getType(), cmd.getPool().getUuid());
-            if (state == DomainInfo.DomainState.VIR_DOMAIN_RUNNING && !primaryStorage.isExternalSnapshot()) {
+            if (state == DomainState.VIR_DOMAIN_RUNNING && !primaryStorage.isExternalSnapshot()) {
                 String vmUuid = vm.getUUIDString();
                 Object[] args = new Object[] {snapshotName, vmUuid};
                 String snapshot = SnapshotXML.format(args);
@@ -2551,7 +2537,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
                  */
                 vm = getDomain(conn, cmd.getVmName());
                 state = vm.getInfo().state;
-                if (state == DomainInfo.DomainState.VIR_DOMAIN_PAUSED) {
+                if (state == DomainState.VIR_DOMAIN_PAUSED) {
                     vm.resume();
                 }
             } else {
@@ -2965,23 +2951,18 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
         return new ReadyAnswer(cmd);
     }
 
-    protected State convertToState(DomainInfo.DomainState ps) {
-        final State state = s_statesTable.get(ps);
-        return state == null ? State.Unknown : state;
-    }
-
-    protected PowerState convertToPowerState(DomainInfo.DomainState ps) {
+    protected PowerState convertToPowerState(DomainState ps) {
         final PowerState state = s_powerStatesTable.get(ps);
         return state == null ? PowerState.PowerUnknown : state;
     }
 
-    protected State getVmState(Connect conn, final String vmName) {
+    protected PowerState getVmState(Connect conn, final String vmName) {
         int retry = 3;
         Domain vms = null;
         while (retry-- > 0) {
             try {
                 vms = conn.domainLookupByName(vmName);
-                State s = convertToState(vms.getInfo().state);
+                PowerState s = convertToPowerState(vms.getInfo().state);
                 return s;
             } catch (final LibvirtException e) {
                 s_logger.warn("Can't get vm state " + vmName + e.getMessage() + "retry:" + retry);
@@ -2995,20 +2976,16 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
                 }
             }
         }
-        return State.Stopped;
+        return PowerState.PowerOff;
     }
 
     private Answer execute(CheckVirtualMachineCommand cmd) {
         try {
             Connect conn = LibvirtConnection.getConnectionByVmName(cmd.getVmName());
-            final State state = getVmState(conn, cmd.getVmName());
+            final PowerState state = getVmState(conn, cmd.getVmName());
             Integer vncPort = null;
-            if (state == State.Running) {
+            if (state == PowerState.PowerOn) {
                 vncPort = getVncPort(conn, cmd.getVmName());
-
-                synchronized (_vms) {
-                    _vms.put(cmd.getVmName(), State.Running);
-                }
             }
 
             return new CheckVirtualMachineAnswer(cmd, state, vncPort);
@@ -3055,12 +3032,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
     private Answer execute(MigrateCommand cmd) {
         String vmName = cmd.getVmName();
 
-        State state = null;
         String result = null;
-        synchronized (_vms) {
-            state = _vms.get(vmName);
-            _vms.put(vmName, State.Stopping);
-        }
 
         List<InterfaceDef> ifaces = null;
         List<DiskDef> disks = null;
@@ -3119,7 +3091,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
                 }
 
                 // pause vm if we meet the vm.migrate.pauseafter threshold and not already paused
-                if (_migratePauseAfter > 0 && sleeptime > _migratePauseAfter && dm.getInfo().state == DomainInfo.DomainState.VIR_DOMAIN_RUNNING ) {
+                if (_migratePauseAfter > 0 && sleeptime > _migratePauseAfter && dm.getInfo().state == DomainState.VIR_DOMAIN_RUNNING ) {
                     s_logger.info("Pausing VM " + vmName + " due to property vm.migrate.pauseafter setting to " + _migratePauseAfter+ "ms to complete migration");
                     try {
                         dm.suspend();
@@ -3170,9 +3142,6 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
         }
 
         if (result != null) {
-            synchronized (_vms) {
-                _vms.put(vmName, state);
-            }
         } else {
             destroy_network_rules_for_vm(conn, vmName);
             for (InterfaceDef iface : ifaces) {
@@ -3243,10 +3212,6 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
                 return new PrepareForMigrationAnswer(cmd, "failed to connect physical disks to host");
             }
 
-            synchronized (_vms) {
-                _vms.put(vm.getName(), State.Migrating);
-            }
-
             skipDisconnect = true;
 
             return new PrepareForMigrationAnswer(cmd);
@@ -3419,10 +3384,6 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
 
     private Answer execute(RebootCommand cmd) {
 
-        synchronized (_vms) {
-            _vms.put(cmd.getVmName(), State.Starting);
-        }
-
         try {
             Connect conn = LibvirtConnection.getConnectionByVmName(cmd.getVmName());
             final String result = rebootVM(conn, cmd.getVmName());
@@ -3440,10 +3401,6 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
             }
         } catch (LibvirtException e) {
             return new RebootAnswer(cmd, e.getMessage(), false);
-        } finally {
-            synchronized (_vms) {
-                _vms.put(cmd.getVmName(), State.Running);
-            }
         }
     }
 
@@ -3504,7 +3461,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
             try {
                 Connect conn = LibvirtConnection.getConnectionByVmName(vmName);
                 Domain vm = conn.domainLookupByName(cmd.getVmName());
-                if (vm != null && vm.getInfo().state == DomainInfo.DomainState.VIR_DOMAIN_RUNNING) {
+                if (vm != null && vm.getInfo().state == DomainState.VIR_DOMAIN_RUNNING) {
                     return new StopAnswer(cmd, "vm is still running on host", false);
                 }
             } catch (Exception e) {
@@ -3512,11 +3469,6 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
             }
         }
 
-        State state = null;
-        synchronized (_vms) {
-            state = _vms.get(vmName);
-            _vms.put(vmName, State.Stopping);
-        }
         try {
             Connect conn = LibvirtConnection.getConnectionByVmName(vmName);
 
@@ -3538,18 +3490,9 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
                 }
             }
 
-            state = State.Stopped;
             return new StopAnswer(cmd, result, true);
         } catch (LibvirtException e) {
             return new StopAnswer(cmd, e.getMessage(), false);
-        } finally {
-            synchronized (_vms) {
-                if (state != null) {
-                    _vms.put(vmName, state);
-                } else {
-                    _vms.remove(vmName);
-                }
-            }
         }
     }
 
@@ -3799,13 +3742,9 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
         String vmName = vmSpec.getName();
         LibvirtVMDef vm = null;
 
-        State state = State.Stopped;
+        DomainState  state = DomainState.VIR_DOMAIN_SHUTOFF;
         Connect conn = null;
         try {
-            synchronized (_vms) {
-                _vms.put(vmName, State.Starting);
-            }
-
             NicTO[] nics = vmSpec.getNics();
 
             for (NicTO nic : nics) {
@@ -3874,7 +3813,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
                 }
             }
 
-            state = State.Running;
+            state = DomainState.VIR_DOMAIN_RUNNING;
             return new StartAnswer(cmd);
         } catch (LibvirtException e) {
             s_logger.warn("LibvirtException ", e);
@@ -3895,14 +3834,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
             }
             return new StartAnswer(cmd, e.getMessage());
         } finally {
-            synchronized (_vms) {
-                if (state != State.Stopped) {
-                    _vms.put(vmName, state);
-                } else {
-                    _vms.remove(vmName);
-                }
-            }
-            if (state != State.Running) {
+            if (state != DomainState.VIR_DOMAIN_RUNNING) {
                 _storagePoolMgr.disconnectPhysicalDisksViaVmSpec(vmSpec);
             }
         }
@@ -4221,13 +4153,12 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
 
     @Override
     public PingCommand getCurrentStatus(long id) {
-        final HashMap<String, State> newStates = sync();
 
         if (!_canBridgeFirewall) {
-            return new PingRoutingCommand(com.cloud.host.Host.Type.Routing, id, newStates, this.getHostVmStateReport());
+            return new PingRoutingCommand(com.cloud.host.Host.Type.Routing, id, this.getHostVmStateReport());
         } else {
             HashMap<String, Pair<Long, Long>> nwGrpStates = syncNetworkGroups(id);
-            return new PingRoutingWithNwGroupsCommand(getType(), id, newStates, this.getHostVmStateReport(), nwGrpStates);
+            return new PingRoutingWithNwGroupsCommand(getType(), id, this.getHostVmStateReport(), nwGrpStates);
         }
     }
 
@@ -4249,19 +4180,12 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
 
     @Override
     public StartupCommand[] initialize() {
-        Map<String, State> changes = null;
-
-        synchronized (_vms) {
-            _vms.clear();
-            changes = sync();
-        }
 
         final List<Object> info = getHostInfo();
 
         final StartupRoutingCommand cmd =
                 new StartupRoutingCommand((Integer)info.get(0), (Long)info.get(1), (Long)info.get(2), (Long)info.get(4), (String)info.get(3), _hypervisorType,
                         RouterPrivateIpStrategy.HostLocal);
-        cmd.setStateChanges(changes);
         cmd.setCpuSockets((Integer)info.get(5));
         fillNetworkInformation(cmd);
         _privateIp = cmd.getPrivateIpAddress();
@@ -4269,7 +4193,6 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
         cmd.setPool(_pool);
         cmd.setCluster(_clusterId);
         cmd.setGatewayIpAddress(_localGateway);
-        cmd.setHostVmStateReport(getHostVmStateReport());
         cmd.setIqn(getIqn());
 
         StartupStorageCommand sscmd = null;
@@ -4322,138 +4245,6 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
         }
     }
 
-    protected HashMap<String, State> sync() {
-        HashMap<String, State> newStates;
-        HashMap<String, State> oldStates = null;
-
-        final HashMap<String, State> changes = new HashMap<String, State>();
-
-        synchronized (_vms) {
-            newStates = getAllVms();
-            if (newStates == null) {
-                s_logger.debug("Unable to get the vm states so no state sync at this point.");
-                return changes;
-            }
-
-            oldStates = new HashMap<String, State>(_vms.size());
-            oldStates.putAll(_vms);
-
-            for (final Map.Entry<String, State> entry : newStates.entrySet()) {
-                final String vm = entry.getKey();
-
-                State newState = entry.getValue();
-                final State oldState = oldStates.remove(vm);
-
-                if (newState == State.Stopped && oldState != State.Stopping && oldState != null && oldState != State.Stopped) {
-                    newState = getRealPowerState(vm);
-                }
-
-                if (s_logger.isTraceEnabled()) {
-                    s_logger.trace("VM " + vm + ": libvirt has state " + newState + " and we have state " + (oldState != null ? oldState.toString() : "null"));
-                }
-
-                if (vm.startsWith("migrating")) {
-                    s_logger.debug("Migration detected.  Skipping");
-                    continue;
-                }
-                if (oldState == null) {
-                    _vms.put(vm, newState);
-                    s_logger.debug("Detecting a new state but couldn't find a old state so adding it to the changes: " + vm);
-                    changes.put(vm, newState);
-                } else if (oldState == State.Starting) {
-                    if (newState == State.Running) {
-                        _vms.put(vm, newState);
-                    } else if (newState == State.Stopped) {
-                        s_logger.debug("Ignoring vm " + vm + " because of a lag in starting the vm.");
-                    }
-                } else if (oldState == State.Migrating) {
-                    if (newState == State.Running) {
-                        s_logger.debug("Detected that an migrating VM is now running: " + vm);
-                        _vms.put(vm, newState);
-                    }
-                } else if (oldState == State.Stopping) {
-                    if (newState == State.Stopped) {
-                        _vms.put(vm, newState);
-                    } else if (newState == State.Running) {
-                        s_logger.debug("Ignoring vm " + vm + " because of a lag in stopping the vm. ");
-                    }
-                } else if (oldState != newState) {
-                    _vms.put(vm, newState);
-                    if (newState == State.Stopped) {
-                        if (_vmsKilled.remove(vm)) {
-                            s_logger.debug("VM " + vm + " has been killed for storage. ");
-                            newState = State.Error;
-                        }
-                    }
-                    changes.put(vm, newState);
-                }
-            }
-
-            for (final Map.Entry<String, State> entry : oldStates.entrySet()) {
-                final String vm = entry.getKey();
-                final State oldState = entry.getValue();
-
-                if (s_logger.isTraceEnabled()) {
-                    s_logger.trace("VM " + vm + " is now missing from libvirt so reporting stopped");
-                }
-
-                if (oldState == State.Stopping) {
-                    s_logger.debug("Ignoring VM " + vm + " in transition state stopping.");
-                    _vms.remove(vm);
-                } else if (oldState == State.Starting) {
-                    s_logger.debug("Ignoring VM " + vm + " in transition state starting.");
-                } else if (oldState == State.Stopped) {
-                    _vms.remove(vm);
-                } else if (oldState == State.Migrating) {
-                    s_logger.debug("Ignoring VM " + vm + " in migrating state.");
-                } else {
-                    _vms.remove(vm);
-                    State state = State.Stopped;
-                    if (_vmsKilled.remove(entry.getKey())) {
-                        s_logger.debug("VM " + vm + " has been killed by storage monitor");
-                        state = State.Error;
-                    }
-                    changes.put(entry.getKey(), state);
-                }
-            }
-        }
-
-        return changes;
-    }
-
-    protected State getRealPowerState(String vm) {
-        int i = 0;
-        s_logger.trace("Checking on the HALTED State");
-        Domain dm = null;
-        for (; i < 5; i++) {
-            try {
-                Connect conn = LibvirtConnection.getConnectionByVmName(vm);
-                dm = conn.domainLookupByName(vm);
-                DomainInfo.DomainState vps = dm.getInfo().state;
-                if (vps != null && vps != DomainInfo.DomainState.VIR_DOMAIN_SHUTOFF && vps != DomainInfo.DomainState.VIR_DOMAIN_NOSTATE) {
-                    return convertToState(vps);
-                }
-            } catch (final LibvirtException e) {
-                s_logger.trace("Ignoring libvirt error.", e);
-            } finally {
-                try {
-                    if (dm != null) {
-                        dm.free();
-                    }
-                } catch (final LibvirtException l) {
-                    s_logger.trace("Ignoring libvirt error.", l);
-                }
-            }
-
-            try {
-                Thread.sleep(1000);
-            } catch (InterruptedException e) {
-                s_logger.trace("Ignoring InterruptedException.", e);
-            }
-        }
-        return State.Stopped;
-    }
-
     protected List<String> getAllVmNames(Connect conn) {
         ArrayList<String> la = new ArrayList<String>();
         try {
@@ -4494,104 +4285,6 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
         return la;
     }
 
-    private HashMap<String, State> getAllVms() {
-        final HashMap<String, State> vmStates = new HashMap<String, State>();
-        Connect conn = null;
-
-        if (_hypervisorType == HypervisorType.LXC) {
-            try {
-                conn = LibvirtConnection.getConnectionByType(HypervisorType.LXC.toString());
-                vmStates.putAll(getAllVms(conn));
-                conn = LibvirtConnection.getConnectionByType(HypervisorType.KVM.toString());
-                vmStates.putAll(getAllVms(conn));
-            } catch (LibvirtException e) {
-                s_logger.debug("Failed to get connection: " + e.getMessage());
-            }
-        }
-
-        if (_hypervisorType == HypervisorType.KVM) {
-            try {
-                conn = LibvirtConnection.getConnectionByType(HypervisorType.KVM.toString());
-                vmStates.putAll(getAllVms(conn));
-            } catch (LibvirtException e) {
-                s_logger.debug("Failed to get connection: " + e.getMessage());
-            }
-        }
-
-        return vmStates;
-    }
-
-    private HashMap<String, State> getAllVms(Connect conn) {
-        final HashMap<String, State> vmStates = new HashMap<String, State>();
-
-        String[] vms = null;
-        int[] ids = null;
-
-        try {
-            ids = conn.listDomains();
-        } catch (final LibvirtException e) {
-            s_logger.warn("Unable to listDomains", e);
-            return null;
-        }
-        try {
-            vms = conn.listDefinedDomains();
-        } catch (final LibvirtException e) {
-            s_logger.warn("Unable to listDomains", e);
-            return null;
-        }
-
-        Domain dm = null;
-        for (int i = 0; i < ids.length; i++) {
-            try {
-                dm = conn.domainLookupByID(ids[i]);
-
-                DomainInfo.DomainState ps = dm.getInfo().state;
-
-                final State state = convertToState(ps);
-
-                s_logger.trace("VM " + dm.getName() + ": powerstate = " + ps + "; vm state=" + state.toString());
-                String vmName = dm.getName();
-                vmStates.put(vmName, state);
-            } catch (final LibvirtException e) {
-                s_logger.warn("Unable to get vms", e);
-            } finally {
-                try {
-                    if (dm != null) {
-                        dm.free();
-                    }
-                } catch (LibvirtException e) {
-                    s_logger.trace("Ignoring libvirt error.", e);
-                }
-            }
-        }
-
-        for (int i = 0; i < vms.length; i++) {
-            try {
-
-                dm = conn.domainLookupByName(vms[i]);
-
-                DomainInfo.DomainState ps = dm.getInfo().state;
-                final State state = convertToState(ps);
-                String vmName = dm.getName();
-                s_logger.trace("VM " + vmName + ": powerstate = " + ps + "; vm state=" + state.toString());
-
-                vmStates.put(vmName, state);
-            } catch (final LibvirtException e) {
-                s_logger.warn("Unable to get vms", e);
-            } finally {
-                try {
-                    if (dm != null) {
-                        dm.free();
-                    }
-                } catch (LibvirtException e) {
-                    s_logger.trace("Ignoring libvirt error.", e);
-                }
-            }
-        }
-
-        return vmStates;
-    }
-
     private HashMap<String, HostVmStateReportEntry> getHostVmStateReport() {
         final HashMap<String, HostVmStateReportEntry> vmStates = new HashMap<String, HostVmStateReportEntry>();
         Connect conn = null;
@@ -4643,7 +4336,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
             try {
                 dm = conn.domainLookupByID(ids[i]);
 
-                DomainInfo.DomainState ps = dm.getInfo().state;
+                DomainState ps = dm.getInfo().state;
 
                 final PowerState state = convertToPowerState(ps);
 
@@ -4674,7 +4367,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
 
                 dm = conn.domainLookupByName(vms[i]);
 
-                DomainInfo.DomainState ps = dm.getInfo().state;
+                DomainState ps = dm.getInfo().state;
                 final PowerState state = convertToPowerState(ps);
                 String vmName = dm.getName();
                 s_logger.trace("VM " + vmName + ": powerstate = " + ps + "; vm state=" + state.toString());
@@ -4807,7 +4500,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
     }
 
     protected String stopVM(Connect conn, String vmName) {
-        DomainInfo.DomainState state = null;
+        DomainState state = null;
         Domain dm = null;
 
         s_logger.debug("Try to stop the vm at first");
@@ -4844,7 +4537,7 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
                 return null;
             }
 
-            if (state != DomainInfo.DomainState.VIR_DOMAIN_SHUTOFF) {
+            if (state != DomainState.VIR_DOMAIN_SHUTOFF) {
                 s_logger.debug("Try to destroy the vm");
                 ret = stopVM(conn, vmName, true);
                 if (ret != null) {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/plugins/hypervisors/ovm/src/com/cloud/ovm/hypervisor/OvmResourceBase.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/ovm/src/com/cloud/ovm/hypervisor/OvmResourceBase.java b/plugins/hypervisors/ovm/src/com/cloud/ovm/hypervisor/OvmResourceBase.java
index 1414502..736f2ee 100755
--- a/plugins/hypervisors/ovm/src/com/cloud/ovm/hypervisor/OvmResourceBase.java
+++ b/plugins/hypervisors/ovm/src/com/cloud/ovm/hypervisor/OvmResourceBase.java
@@ -134,7 +134,6 @@ import com.cloud.utils.ssh.SSHCmdHelper;
 import com.cloud.vm.DiskProfile;
 import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.VirtualMachine.PowerState;
-import com.cloud.vm.VirtualMachine.State;
 
 public class OvmResourceBase implements ServerResource, HypervisorResource {
     private static final Logger s_logger = Logger.getLogger(OvmResourceBase.class);
@@ -158,17 +157,6 @@ public class OvmResourceBase implements ServerResource, HypervisorResource {
     private final Map<String, Pair<Long, Long>> _vmNetworkStats = new ConcurrentHashMap<String, Pair<Long, Long>>();
     private static String s_ovsAgentPath = "/opt/ovs-agent-latest";
 
-    // TODO vmsync {
-    static HashMap<String, State> s_stateMaps;
-    protected HashMap<String, State> _vms = new HashMap<String, State>(50);
-    static {
-        s_stateMaps = new HashMap<String, State>();
-        s_stateMaps.put("RUNNING", State.Running);
-        s_stateMaps.put("DOWN", State.Stopped);
-        s_stateMaps.put("ERROR", State.Error);
-        s_stateMaps.put("SUSPEND", State.Stopped);
-    }
-    // TODO vmsync }
 
     static HashMap<String, PowerState> s_powerStateMaps;
     static {
@@ -315,7 +303,6 @@ public class OvmResourceBase implements ServerResource, HypervisorResource {
             //TODO: introudce PIF
             cmd.setPrivateIpAddress(_ip);
             cmd.setStorageIpAddress(_ip);
-            cmd.setHostVmStateReport(getHostVmStateReport());
 
             String defaultBridge = OvmBridge.getBridgeByIp(_conn, _ip);
             if (_publicNetworkName == null) {
@@ -390,12 +377,6 @@ public class OvmResourceBase implements ServerResource, HypervisorResource {
         try {
             StartupRoutingCommand cmd = new StartupRoutingCommand();
             fillHostInfo(cmd);
-            Map<String, State> changes = null;
-            synchronized (_vms) {
-                _vms.clear();
-                changes = sync();
-            }
-            cmd.setStateChanges(changes);
             cmd.setCaps("hvm");
             return new StartupCommand[] {cmd};
         } catch (Exception e) {
@@ -408,8 +389,7 @@ public class OvmResourceBase implements ServerResource, HypervisorResource {
     public PingCommand getCurrentStatus(long id) {
         try {
             OvmHost.ping(_conn);
-            HashMap<String, State> newStates = sync();
-            return new PingRoutingCommand(getType(), id, newStates, getHostVmStateReport());
+            return new PingRoutingCommand(getType(), id, getHostVmStateReport());
         } catch (XmlRpcException e) {
             s_logger.debug("Check agent status failed", e);
             return null;
@@ -668,13 +648,8 @@ public class OvmResourceBase implements ServerResource, HypervisorResource {
     public synchronized StartAnswer execute(StartCommand cmd) {
         VirtualMachineTO vmSpec = cmd.getVirtualMachine();
         String vmName = vmSpec.getName();
-        State state = State.Stopped;
         OvmVm.Details vmDetails = null;
         try {
-            synchronized (_vms) {
-                _vms.put(vmName, State.Starting);
-            }
-
             vmDetails = new OvmVm.Details();
             applySpecToVm(vmDetails, vmSpec);
             createVbds(vmDetails, vmSpec);
@@ -691,21 +666,11 @@ public class OvmResourceBase implements ServerResource, HypervisorResource {
                 }
             }
 
-            state = State.Running;
             return new StartAnswer(cmd);
         } catch (Exception e) {
             s_logger.debug("Start vm " + vmName + " failed", e);
             cleanup(vmDetails);
             return new StartAnswer(cmd, e.getMessage());
-        } finally {
-            synchronized (_vms) {
-                //FIXME: where to come to Stopped???
-                if (state != State.Stopped) {
-                    _vms.put(vmName, state);
-                } else {
-                    _vms.remove(vmName);
-                }
-            }
         }
     }
 
@@ -729,12 +694,6 @@ public class OvmResourceBase implements ServerResource, HypervisorResource {
     @Override
     public StopAnswer execute(StopCommand cmd) {
         String vmName = cmd.getVmName();
-        State state = null;
-        synchronized (_vms) {
-            state = _vms.get(vmName);
-            _vms.put(vmName, State.Stopping);
-        }
-
         try {
             OvmVm.Details vm = null;
             try {
@@ -747,29 +706,16 @@ public class OvmResourceBase implements ServerResource, HypervisorResource {
             deleteAllNetworkRulesForVm(vmName);
             OvmVm.stop(_conn, vmName);
             cleanup(vm);
-
-            state = State.Stopped;
             return new StopAnswer(cmd, "success", true);
         } catch (Exception e) {
             s_logger.debug("Stop " + vmName + "failed", e);
             return new StopAnswer(cmd, e.getMessage(), false);
-        } finally {
-            synchronized (_vms) {
-                if (state != null) {
-                    _vms.put(vmName, state);
-                } else {
-                    _vms.remove(vmName);
-                }
-            }
         }
     }
 
     @Override
     public RebootAnswer execute(RebootCommand cmd) {
         String vmName = cmd.getVmName();
-        synchronized (_vms) {
-            _vms.put(vmName, State.Starting);
-        }
 
         try {
             Map<String, String> res = OvmVm.reboot(_conn, vmName);
@@ -778,22 +724,9 @@ public class OvmResourceBase implements ServerResource, HypervisorResource {
         } catch (Exception e) {
             s_logger.debug("Reboot " + vmName + " failed", e);
             return new RebootAnswer(cmd, e.getMessage(), false);
-        } finally {
-            synchronized (_vms) {
-                _vms.put(cmd.getVmName(), State.Running);
-            }
         }
     }
 
-    private State toState(String vmName, String s) {
-        State state = s_stateMaps.get(s);
-        if (state == null) {
-            s_logger.debug("Unkown state " + s + " for " + vmName);
-            state = State.Unknown;
-        }
-        return state;
-    }
-
     private PowerState toPowerState(String vmName, String s) {
         PowerState state = s_powerStateMaps.get(s);
         if (state == null) {
@@ -813,111 +746,16 @@ public class OvmResourceBase implements ServerResource, HypervisorResource {
         return vmStates;
     }
 
-    protected HashMap<String, State> getAllVms() throws XmlRpcException {
-        final HashMap<String, State> vmStates = new HashMap<String, State>();
+    protected HashMap<String, PowerState> getAllVms() throws XmlRpcException {
+        final HashMap<String, PowerState> vmStates = new HashMap<String, PowerState>();
         Map<String, String> vms = OvmHost.getAllVms(_conn);
         for (final Map.Entry<String, String> entry : vms.entrySet()) {
-            State state = toState(entry.getKey(), entry.getValue());
-            vmStates.put(entry.getKey(), state);
+            PowerState powerState = toPowerState(entry.getKey(), entry.getValue());
+            vmStates.put(entry.getKey(), powerState);
         }
         return vmStates;
     }
 
-    protected HashMap<String, State> sync() {
-        HashMap<String, State> newStates;
-        HashMap<String, State> oldStates = null;
-
-        try {
-            final HashMap<String, State> changes = new HashMap<String, State>();
-            newStates = getAllVms();
-            if (newStates == null) {
-                s_logger.debug("Unable to get the vm states so no state sync at this point.");
-                return null;
-            }
-
-            synchronized (_vms) {
-                oldStates = new HashMap<String, State>(_vms.size());
-                oldStates.putAll(_vms);
-
-                for (final Map.Entry<String, State> entry : newStates.entrySet()) {
-                    final String vm = entry.getKey();
-
-                    State newState = entry.getValue();
-                    final State oldState = oldStates.remove(vm);
-
-                    if (s_logger.isTraceEnabled()) {
-                        s_logger.trace("VM " + vm + ": ovm has state " + newState + " and we have state " + (oldState != null ? oldState.toString() : "null"));
-                    }
-
-                    /*
-                     * TODO: what is migrating ??? if
-                     * (vm.startsWith("migrating")) {
-                     * s_logger.debug("Migrating from xen detected.  Skipping");
-                     * continue; }
-                     */
-
-                    if (oldState == null) {
-                        _vms.put(vm, newState);
-                        s_logger.debug("Detecting a new state but couldn't find a old state so adding it to the changes: " + vm);
-                        changes.put(vm, newState);
-                    } else if (oldState == State.Starting) {
-                        if (newState == State.Running) {
-                            _vms.put(vm, newState);
-                        } else if (newState == State.Stopped) {
-                            s_logger.debug("Ignoring vm " + vm + " because of a lag in starting the vm.");
-                        }
-                    } else if (oldState == State.Migrating) {
-                        if (newState == State.Running) {
-                            s_logger.debug("Detected that an migrating VM is now running: " + vm);
-                            _vms.put(vm, newState);
-                        }
-                    } else if (oldState == State.Stopping) {
-                        if (newState == State.Stopped) {
-                            _vms.put(vm, newState);
-                        } else if (newState == State.Running) {
-                            s_logger.debug("Ignoring vm " + vm + " because of a lag in stopping the vm. ");
-                        }
-                    } else if (oldState != newState) {
-                        _vms.put(vm, newState);
-                        if (newState == State.Stopped) {
-                            //TODO: need anything here?
-                        }
-                        changes.put(vm, newState);
-                    }
-                }
-
-                for (final Map.Entry<String, State> entry : oldStates.entrySet()) {
-                    final String vm = entry.getKey();
-                    final State oldState = entry.getValue();
-
-                    if (s_logger.isTraceEnabled()) {
-                        s_logger.trace("VM " + vm + " is now missing from ovm server so reporting stopped");
-                    }
-
-                    if (oldState == State.Stopping) {
-                        s_logger.debug("Ignoring VM " + vm + " in transition state stopping.");
-                        _vms.remove(vm);
-                    } else if (oldState == State.Starting) {
-                        s_logger.debug("Ignoring VM " + vm + " in transition state starting.");
-                    } else if (oldState == State.Stopped) {
-                        _vms.remove(vm);
-                    } else if (oldState == State.Migrating) {
-                        s_logger.debug("Ignoring VM " + vm + " in migrating state.");
-                    } else {
-                        _vms.remove(vm);
-                        State state = State.Stopped;
-                        // TODO: need anything here???
-                        changes.put(entry.getKey(), state);
-                    }
-                }
-            }
-
-            return changes;
-        } catch (Exception e) {
-            s_logger.debug("Ovm full sync failed", e);
-            return null;
-        }
-    }
 
     protected GetStorageStatsAnswer execute(final GetStorageStatsCommand cmd) {
         try {
@@ -998,9 +836,6 @@ public class OvmResourceBase implements ServerResource, HypervisorResource {
                 getNetwork(nic);
             }
 
-            synchronized (_vms) {
-                _vms.put(vm.getName(), State.Migrating);
-            }
             return new PrepareForMigrationAnswer(cmd);
         } catch (Exception e) {
             s_logger.warn("Catch Exception " + e.getClass().getName() + " prepare for migration failed due to " + e.toString(), e);
@@ -1010,28 +845,16 @@ public class OvmResourceBase implements ServerResource, HypervisorResource {
 
     protected MigrateAnswer execute(final MigrateCommand cmd) {
         final String vmName = cmd.getVmName();
-        State state = null;
-
-        synchronized (_vms) {
-            state = _vms.get(vmName);
-            _vms.put(vmName, State.Stopping);
-        }
-
         try {
             OvmVm.Details vm = OvmVm.getDetails(_conn, vmName);
             String destIp = cmd.getDestinationIp();
             OvmVm.migrate(_conn, vmName, destIp);
-            state = State.Stopping;
             cleanup(vm);
             return new MigrateAnswer(cmd, true, "migration succeeded", null);
         } catch (Exception e) {
             String msg = "Catch Exception " + e.getClass().getName() + ": Migration failed due to " + e.toString();
             s_logger.debug(msg, e);
             return new MigrateAnswer(cmd, false, msg, null);
-        } finally {
-            synchronized (_vms) {
-                _vms.put(vmName, state);
-            }
         }
     }
 
@@ -1040,23 +863,17 @@ public class OvmResourceBase implements ServerResource, HypervisorResource {
         try {
             Map<String, String> res = OvmVm.register(_conn, vmName);
             Integer vncPort = Integer.parseInt(res.get("vncPort"));
-            HashMap<String, State> states = getAllVms();
-            State vmState = states.get(vmName);
-            if (vmState == null) {
+            HashMap<String, PowerState> states = getAllVms();
+            PowerState vmPowerState = states.get(vmName);
+            if (vmPowerState == null) {
                 s_logger.warn("Check state of " + vmName + " return null in CheckVirtualMachineCommand");
-                vmState = State.Stopped;
-            }
-
-            if (vmState == State.Running) {
-                synchronized (_vms) {
-                    _vms.put(vmName, State.Running);
-                }
+                vmPowerState = PowerState.PowerOff;
             }
 
-            return new CheckVirtualMachineAnswer(cmd, vmState, vncPort);
+            return new CheckVirtualMachineAnswer(cmd, vmPowerState, vncPort);
         } catch (Exception e) {
             s_logger.debug("Check migration for " + vmName + " failed", e);
-            return new CheckVirtualMachineAnswer(cmd, State.Stopped, null);
+            return new CheckVirtualMachineAnswer(cmd, PowerState.PowerOff, null);
         }
     }
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/plugins/hypervisors/simulator/src/com/cloud/resource/AgentRoutingResource.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/simulator/src/com/cloud/resource/AgentRoutingResource.java b/plugins/hypervisors/simulator/src/com/cloud/resource/AgentRoutingResource.java
index 2d75c6d..d99c742 100644
--- a/plugins/hypervisors/simulator/src/com/cloud/resource/AgentRoutingResource.java
+++ b/plugins/hypervisors/simulator/src/com/cloud/resource/AgentRoutingResource.java
@@ -67,7 +67,6 @@ public class AgentRoutingResource extends AgentStorageResource {
     private static final Logger s_logger = Logger.getLogger(AgentRoutingResource.class);
     private static final Gson s_gson = GsonHelper.getGson();
 
-    protected Map<String, State> _vms = new HashMap<String, State>();
     private Map<String, Pair<Long, Long>> _runningVms = new HashMap<String, Pair<Long, Long>>();
     long usedCpu = 0;
     long usedMem = 0;
@@ -159,23 +158,12 @@ public class AgentRoutingResource extends AgentStorageResource {
         if (isStopped()) {
             return null;
         }
-        synchronized (_vms) {
-            if (_vms.size() == 0) {
-                //load vms state from database
-                _vms.putAll(_simMgr.getVmStates(hostGuid));
-            }
-        }
-        final HashMap<String, State> newStates = sync();
         HashMap<String, Pair<Long, Long>> nwGrpStates = _simMgr.syncNetworkGroups(hostGuid);
-        return new PingRoutingWithNwGroupsCommand(getType(), id, newStates, getHostVmStateReport(), nwGrpStates);
+        return new PingRoutingWithNwGroupsCommand(getType(), id, getHostVmStateReport(), nwGrpStates);
     }
 
     @Override
     public StartupCommand[] initialize() {
-        synchronized (_vms) {
-            _vms.clear();
-        }
-        Map<String, State> changes = _simMgr.getVmStates(this.hostGuid);
         Map<String, MockVMVO> vmsMaps = _simMgr.getVms(this.hostGuid);
         totalCpu = agentHost.getCpuCount() * agentHost.getCpuSpeed();
         totalMem = agentHost.getMemorySize();
@@ -191,7 +179,6 @@ public class AgentRoutingResource extends AgentStorageResource {
         StartupRoutingCommand cmd =
             new StartupRoutingCommand((Integer)info.get(0), (Long)info.get(1), (Long)info.get(2), (Long)info.get(4), (String)info.get(3), HypervisorType.Simulator,
                 RouterPrivateIpStrategy.HostLocal);
-        cmd.setStateChanges(changes);
 
         Map<String, String> hostDetails = new HashMap<String, String>();
         hostDetails.put(RouterPrivateIpStrategy.class.getCanonicalName(), RouterPrivateIpStrategy.DcGlobal.toString());
@@ -240,11 +227,6 @@ public class AgentRoutingResource extends AgentStorageResource {
         if (this.totalCpu < (vmSpec.getCpus() * vmSpec.getMaxSpeed() + this.usedCpu) || this.totalMem < (vmSpec.getMaxRam() + this.usedMem)) {
             return new StartAnswer(cmd, "Not enough resource to start the vm");
         }
-        State state = State.Stopped;
-        synchronized (_vms) {
-            _vms.put(vmName, State.Starting);
-        }
-
         try {
             Answer result = _simMgr.simulate(cmd, hostGuid);
             if (!result.getResult()) {
@@ -254,12 +236,7 @@ public class AgentRoutingResource extends AgentStorageResource {
             this.usedCpu += vmSpec.getCpus() * vmSpec.getMaxSpeed();
             this.usedMem += vmSpec.getMaxRam();
             _runningVms.put(vmName, new Pair<Long, Long>(Long.valueOf(vmSpec.getCpus() * vmSpec.getMaxSpeed()), vmSpec.getMaxRam()));
-            state = State.Running;
 
-        } finally {
-            synchronized (_vms) {
-                _vms.put(vmName, state);
-            }
         }
 
         return new StartAnswer(cmd);
@@ -271,11 +248,6 @@ public class AgentRoutingResource extends AgentStorageResource {
         StopAnswer answer = null;
         String vmName = cmd.getVmName();
 
-        State state = null;
-        synchronized (_vms) {
-            state = _vms.get(vmName);
-            _vms.put(vmName, State.Stopping);
-        }
         try {
             Answer result = _simMgr.simulate(cmd, hostGuid);
 
@@ -289,12 +261,7 @@ public class AgentRoutingResource extends AgentStorageResource {
                 this.usedCpu -= data.first();
                 this.usedMem -= data.second();
             }
-            state = State.Stopped;
 
-        } finally {
-            synchronized (_vms) {
-                _vms.put(vmName, state);
-            }
         }
 
         return answer;
@@ -303,12 +270,6 @@ public class AgentRoutingResource extends AgentStorageResource {
     protected CheckVirtualMachineAnswer execute(final CheckVirtualMachineCommand cmd) {
         final String vmName = cmd.getVmName();
         CheckVirtualMachineAnswer result = (CheckVirtualMachineAnswer)_simMgr.simulate(cmd, hostGuid);
-        State state = result.getState();
-        if (state == State.Running) {
-            synchronized (_vms) {
-                _vms.put(vmName, State.Running);
-            }
-        }
         return result;
     }
 
@@ -346,73 +307,6 @@ public class AgentRoutingResource extends AgentStorageResource {
         return report;
     }
 
-    protected HashMap<String, State> sync() {
-        Map<String, State> newStates;
-        Map<String, State> oldStates = null;
-
-        HashMap<String, State> changes = new HashMap<String, State>();
-
-        synchronized (_vms) {
-            oldStates = new HashMap<String, State>(_vms.size());
-            oldStates.putAll(_vms);
-            newStates = new HashMap<String, State>(_vms.size());
-            newStates.putAll(_vms);
-
-            for (Map.Entry<String, State> entry : newStates.entrySet()) {
-                String vm = entry.getKey();
-
-                State newState = entry.getValue();
-                State oldState = oldStates.remove(vm);
-
-                if (s_logger.isTraceEnabled()) {
-                    s_logger.trace("VM " + vm + ": has state " + newState + " and we have state " + (oldState != null ? oldState.toString() : "null"));
-                }
-
-                if (oldState == null) {
-                    _vms.put(vm, newState);
-                    changes.put(vm, newState);
-                } else if (oldState == State.Starting) {
-                    if (newState == State.Running) {
-                        _vms.put(vm, newState);
-                    } else if (newState == State.Stopped) {
-                        s_logger.debug("Ignoring vm " + vm + " because of a lag in starting the vm.");
-                    }
-                } else if (oldState == State.Stopping) {
-                    if (newState == State.Stopped) {
-                        _vms.put(vm, newState);
-                    } else if (newState == State.Running) {
-                        s_logger.debug("Ignoring vm " + vm + " because of a lag in stopping the vm. ");
-                    }
-                } else if (oldState != newState) {
-                    _vms.put(vm, newState);
-                    changes.put(vm, newState);
-                }
-            }
-
-            for (Map.Entry<String, State> entry : oldStates.entrySet()) {
-                String vm = entry.getKey();
-                State oldState = entry.getValue();
-
-                if (s_logger.isTraceEnabled()) {
-                    s_logger.trace("VM " + vm + " is now missing from simulator agent so reporting stopped");
-                }
-
-                if (oldState == State.Stopping) {
-                    s_logger.debug("Ignoring VM " + vm + " in transition state stopping.");
-                    _vms.remove(vm);
-                } else if (oldState == State.Starting) {
-                    s_logger.debug("Ignoring VM " + vm + " in transition state starting.");
-                } else if (oldState == State.Stopped) {
-                    _vms.remove(vm);
-                } else {
-                    changes.put(entry.getKey(), State.Stopped);
-                }
-            }
-        }
-
-        return changes;
-    }
-
     private Answer execute(ShutdownCommand cmd) {
         this.stopped = true;
         return new Answer(cmd);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/330c4ba5/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 6a803af..b87e4ea 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
@@ -269,7 +269,6 @@ import com.cloud.utils.net.NetUtils;
 import com.cloud.utils.ssh.SshHelper;
 import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.VirtualMachine.PowerState;
-import com.cloud.vm.VirtualMachine.State;
 import com.cloud.vm.VirtualMachineName;
 import com.cloud.vm.VmDetailConstants;
 
@@ -333,19 +332,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
         s_powerStatesTable.put(VirtualMachinePowerState.SUSPENDED, PowerState.PowerOn);
     }
 
-    // TODO vmsync {
-    // deprecated, will delete after full replacement
-    //
-    protected static HashMap<VirtualMachinePowerState, State> s_statesTable;
-    static {
-        s_statesTable = new HashMap<VirtualMachinePowerState, State>();
-        s_statesTable.put(VirtualMachinePowerState.POWERED_ON, State.Running);
-        s_statesTable.put(VirtualMachinePowerState.POWERED_OFF, State.Stopped);
-        s_statesTable.put(VirtualMachinePowerState.SUSPENDED, State.Stopped);
-    }
-
-    // TODO vmsync }
-
     public Gson getGson() {
         return _gson;
     }
@@ -1314,11 +1300,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
         try {
             VmwareManager mgr = context.getStockObject(VmwareManager.CONTEXT_STOCK_NAME);
 
-            // mark VM as starting state so that sync can know not to report stopped too early
-            synchronized (_vms) {
-                _vms.put(vmInternalCSName, State.Starting);
-            }
-
             VmwareHypervisorHost hyperHost = getHyperHost(context);
             DiskTO[] disks = validateDisks(vmSpec.getDisks());
             assert (disks.length > 0);
@@ -1727,13 +1708,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
             s_logger.warn(msg, e);
             return new StartAnswer(cmd, msg);
         } finally {
-            synchronized (_vms) {
-                if (state != State.Stopped) {
-                    _vms.put(vmInternalCSName, state);
-                } else {
-                    _vms.remove(vmInternalCSName);
-                }
-            }
         }
     }
 
@@ -2570,7 +2544,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
         HashMap<String, VmStatsEntry> vmStatsMap = null;
 
         try {
-            HashMap<String, State> newStates = getVmStates();
+            HashMap<String, PowerState> vmPowerStates = getVmStates()
 
             // getVmNames should return all i-x-y values.
             List<String> requestedVmNames = cmd.getVmNames();
@@ -2578,7 +2552,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
 
             if (requestedVmNames != null) {
                 for (String vmName : requestedVmNames) {
-                    if (newStates.get(vmName) != null) {
+                    if (vmPowerStates.get(vmName) != null) {
                         vmNames.add(vmName);
                     }
                 }
@@ -2653,40 +2627,25 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
                     }
                 }
 
-                State state = null;
-                synchronized (_vms) {
-                    state = _vms.get(cmd.getVmName());
-                    _vms.put(cmd.getVmName(), State.Stopping);
-                }
-
                 try {
                     vmMo.setCustomFieldValue(CustomFieldConstants.CLOUD_NIC_MASK, "0");
 
                     if (getVmPowerState(vmMo) != PowerState.PowerOff) {
                         if (vmMo.safePowerOff(_shutdownWaitMs)) {
-                            state = State.Stopped;
                             return new StopAnswer(cmd, "Stop VM " + cmd.getVmName() + " Succeed", true);
                         } else {
                             String msg = "Have problem in powering off VM " + cmd.getVmName() + ", let the process continue";
                             s_logger.warn(msg);
                             return new StopAnswer(cmd, msg, true);
                         }
-                    } else {
-                        state = State.Stopped;
                     }
 
                     String msg = "VM " + cmd.getVmName() + " is already in stopped state";
                     s_logger.info(msg);
                     return new StopAnswer(cmd, msg, true);
                 } finally {
-                    synchronized (_vms) {
-                        _vms.put(cmd.getVmName(), state);
-                    }
                 }
             } else {
-                synchronized (_vms) {
-                    _vms.remove(cmd.getVmName());
-                }
 
                 String msg = "VM " + cmd.getVmName() + " is no longer in vSphere";
                 s_logger.info(msg);
@@ -2773,7 +2732,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
         }
 
         final String vmName = cmd.getVmName();
-        State state = State.Unknown;
+        PowerState powerState = PowerState.Unknown;
         Integer vncPort = null;
 
         VmwareContext context = getServiceContext();
@@ -2782,16 +2741,11 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
         try {
             VirtualMachineMO vmMo = hyperHost.findVmOnHyperHost(vmName);
             if (vmMo != null) {
-                state = getVmState(vmMo);
-                if (state == State.Running) {
-                    synchronized (_vms) {
-                        _vms.put(vmName, State.Running);
-                    }
-                }
-                return new CheckVirtualMachineAnswer(cmd, state, vncPort);
+                powerState = getVmPowerState(vmMo);
+                return new CheckVirtualMachineAnswer(cmd, powerState, vncPort);
             } else {
                 s_logger.warn("Can not find vm " + vmName + " to execute CheckVirtualMachineCommand");
-                return new CheckVirtualMachineAnswer(cmd, state, vncPort);
+                return new CheckVirtualMachineAnswer(cmd, powerState, vncPort);
             }
 
         } catch (Throwable e) {
@@ -2801,7 +2755,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
             }
             s_logger.error("Unexpected exception: " + VmwareHelper.getExceptionMessage(e), e);
 
-            return new CheckVirtualMachineAnswer(cmd, state, vncPort);
+            return new CheckVirtualMachineAnswer(cmd, powerState, vncPort);
         }
     }
 
@@ -2875,13 +2829,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
         }
 
         final String vmName = cmd.getVmName();
-
-        State state = null;
-        synchronized (_vms) {
-            state = _vms.get(vmName);
-            _vms.put(vmName, State.Stopping);
-        }
-
         try {
             VmwareHypervisorHost hyperHost = getHyperHost(getServiceContext());
             ManagedObjectReference morDc = hyperHost.getHyperHostDatacenter();
@@ -2905,7 +2852,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
                 throw new Exception("Migration failed");
             }
 
-            state = State.Stopping;
             return new MigrateAnswer(cmd, true, "migration succeeded", null);
         } catch (Throwable e) {
             if (e instanceof RemoteException) {
@@ -2916,10 +2862,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
             String msg = "MigrationCommand failed due to " + VmwareHelper.getExceptionMessage(e);
             s_logger.warn(msg, e);
             return new MigrateAnswer(cmd, false, msg, null);
-        } finally {
-            synchronized (_vms) {
-                _vms.put(vmName, state);
-            }
         }
     }
 
@@ -2932,12 +2874,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
         VirtualMachineTO vmTo = cmd.getVirtualMachine();
         final String vmName = vmTo.getName();
 
-        State state = null;
-        synchronized (_vms) {
-            state = _vms.get(vmName);
-            _vms.put(vmName, State.Stopping);
-        }
-
         VmwareHypervisorHost srcHyperHost = null;
         VmwareHypervisorHost tgtHyperHost = null;
         VirtualMachineMO vmMo = null;
@@ -3082,7 +3018,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
                 s_logger.debug("Successfully relocated VM " + vmName + " from " + _hostName + " to " + tgtHyperHost.getHyperHostName());
             }
 
-            state = State.Stopping;
             return new MigrateWithStorageAnswer(cmd, volumeToList);
         } catch (Throwable e) {
             if (e instanceof RemoteException) {
@@ -3105,9 +3040,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
                 }
                 s_logger.debug("Successfully unmounted datastore " + mountedDatastore + " at " + _hostName);
             }
-            synchronized (_vms) {
-                _vms.put(vmName, state);
-            }
         }
     }
 
@@ -3922,12 +3854,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
     @Override
     public PingCommand getCurrentStatus(long id) {
         gcAndKillHungWorkerVMs();
-
-        HashMap<String, State> newStates = sync();
-        if (newStates == null) {
-            return null;
-        }
-
         VmwareContext context = getServiceContext();
         VmwareHypervisorHost hyperHost = getHyperHost(context);
         try {
@@ -3938,7 +3864,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
             s_logger.error("Unexpected exception", e);
             return null;
         }
-        return new PingRoutingCommand(getType(), id, newStates, syncHostVmStates());
+        return new PingRoutingCommand(getType(), id, syncHostVmStates());
     }
 
     private void gcAndKillHungWorkerVMs() {
@@ -4043,22 +3969,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
 
             StartupRoutingCommand cmd = new StartupRoutingCommand();
             fillHostInfo(cmd);
-
-            Map<String, State> changes = null;
-            synchronized (_vms) {
-                _vms.clear();
-                changes = sync();
-            }
-
             cmd.setHypervisorType(HypervisorType.VMware);
-
-            // TODO vmsync {
-            // deprecated after full replacement
-            cmd.setStateChanges(changes);
-            // TODO vmsync}
-
-            cmd.setHostVmStateReport(syncHostVmStates());
-
             cmd.setCluster(_cluster);
             cmd.setHypervisorVersion(hostApiVersion);
 
@@ -4246,114 +4157,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
         }
     }
 
-    protected HashMap<String, State> sync() {
-        HashMap<String, State> changes = new HashMap<String, State>();
-        HashMap<String, State> oldStates = null;
-
-        try {
-            synchronized (_vms) {
-                HashMap<String, State> newStates = getVmStates();
-                oldStates = new HashMap<String, State>(_vms.size());
-                oldStates.putAll(_vms);
-
-                for (final Map.Entry<String, State> entry : newStates.entrySet()) {
-                    final String vm = entry.getKey();
-
-                    State newState = entry.getValue();
-                    final State oldState = oldStates.remove(vm);
-
-                    if (s_logger.isTraceEnabled()) {
-                        s_logger.trace("VM " + vm + ": vSphere has state " + newState + " and we have state " + (oldState != null ? oldState.toString() : "null"));
-                    }
-
-                    if (vm.startsWith("migrating")) {
-                        s_logger.debug("Migrating detected.  Skipping");
-                        continue;
-                    }
-
-                    if (oldState == null) {
-                        _vms.put(vm, newState);
-                        s_logger.debug("Detecting a new state but couldn't find a old state so adding it to the changes: " + vm);
-                        changes.put(vm, newState);
-                    } else if (oldState == State.Starting) {
-                        if (newState == State.Running) {
-                            _vms.put(vm, newState);
-                        } else if (newState == State.Stopped) {
-                            s_logger.debug("Ignoring vm " + vm + " because of a lag in starting the vm.");
-                        }
-                    } else if (oldState == State.Migrating) {
-                        if (newState == State.Running) {
-                            s_logger.debug("Detected that an migrating VM is now running: " + vm);
-                            _vms.put(vm, newState);
-                        }
-                    } else if (oldState == State.Stopping) {
-                        if (newState == State.Stopped) {
-                            _vms.put(vm, newState);
-                        } else if (newState == State.Running) {
-                            s_logger.debug("Ignoring vm " + vm + " because of a lag in stopping the vm. ");
-                        }
-                    } else if (oldState != newState) {
-                        _vms.put(vm, newState);
-                        if (newState == State.Stopped) {
-                            /*
-                             * if (_vmsKilled.remove(vm)) { s_logger.debug("VM " + vm + " has been killed for storage. ");
-                             * newState = State.Error; }
-                             */
-                        }
-                        changes.put(vm, newState);
-                    }
-                }
-
-                for (final Map.Entry<String, State> entry : oldStates.entrySet()) {
-                    final String vm = entry.getKey();
-                    final State oldState = entry.getValue();
-
-                    if (isVmInCluster(vm)) {
-                        if (s_logger.isDebugEnabled()) {
-                            s_logger.debug("VM " + vm + " is now missing from host report but we detected that it might be migrated to other host by vCenter");
-                        }
-
-                        if (oldState != State.Starting && oldState != State.Migrating) {
-                            s_logger.debug("VM " + vm +
-                                    " is now missing from host report and VM is not at starting/migrating state, remove it from host VM-sync map, oldState: " + oldState);
-                            _vms.remove(vm);
-                        } else {
-                            s_logger.debug("VM " + vm + " is missing from host report, but we will ignore VM " + vm + " in transition state " + oldState);
-                        }
-                        continue;
-                    }
-
-                    if (s_logger.isDebugEnabled()) {
-                        s_logger.debug("VM " + vm + " is now missing from host report");
-                    }
-
-                    if (oldState == State.Stopping) {
-                        s_logger.debug("Ignoring VM " + vm + " in transition state stopping.");
-                        _vms.remove(vm);
-                    } else if (oldState == State.Starting) {
-                        s_logger.debug("Ignoring VM " + vm + " in transition state starting.");
-                    } else if (oldState == State.Stopped) {
-                        _vms.remove(vm);
-                    } else if (oldState == State.Migrating) {
-                        s_logger.debug("Ignoring VM " + vm + " in migrating state.");
-                    } else {
-                        State state = State.Stopped;
-                        changes.put(entry.getKey(), state);
-                    }
-                }
-            }
-        } catch (Throwable e) {
-            if (e instanceof RemoteException) {
-                s_logger.warn("Encounter remote exception to vCenter, invalidate VMware session context");
-                invalidateServiceContext();
-            }
-
-            s_logger.error("Unable to perform sync information collection process at this point due to " + VmwareHelper.getExceptionMessage(e), e);
-            return null;
-        }
-        return changes;
-    }
-
     private boolean isVmInCluster(String vmName) throws Exception {
         VmwareHypervisorHost hyperHost = getHyperHost(getServiceContext());
 
@@ -4515,8 +4318,8 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
         return newStates;
     }
 
-    // TODO vmsync {
-    private HashMap<String, State> getVmStates() throws Exception {
+
+    private HashMap<String, PowerState> getVmStates() throws Exception {
         VmwareHypervisorHost hyperHost = getHyperHost(getServiceContext());
 
         int key = ((HostMO)hyperHost).getCustomFieldKey("VirtualMachine", CustomFieldConstants.CLOUD_VM_INTERNAL_NAME);
@@ -4560,7 +4363,7 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
                         name = VMInternalCSName;
 
                     if (!isTemplate) {
-                        newStates.put(name, convertState(powerState));
+                        newStates.put(name, convertPowerState(powerState));
                     }
                 }
             }
@@ -4568,6 +4371,8 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
         return newStates;
     }
 
+
+
     private HashMap<String, VmStatsEntry> getVmStats(List<String> vmNames) throws Exception {
         VmwareHypervisorHost hyperHost = getHyperHost(getServiceContext());
         HashMap<String, VmStatsEntry> vmResponseMap = new HashMap<String, VmStatsEntry>();
@@ -4690,7 +4495,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
         return vmResponseMap;
     }
 
-    // TODO vmsync }
 
     protected String networkUsage(final String privateIpAddress, final String option, final String ethName) {
         String args = null;
@@ -4788,19 +4592,6 @@ public class VmwareResource implements StoragePoolResource, ServerResource, Vmwa
         return connect(vmname, ipAddress, 3922);
     }
 
-    // TODO vmsync {
-    // deprecated after full replacement
-    private static State convertState(VirtualMachinePowerState powerState) {
-        return s_statesTable.get(powerState);
-    }
-
-    public static State getVmState(VirtualMachineMO vmMo) throws Exception {
-        VirtualMachineRuntimeInfo runtimeInfo = vmMo.getRuntimeInfo();
-        return convertState(runtimeInfo.getPowerState());
-    }
-
-    // TODO vmsync }
-
     private static PowerState convertPowerState(VirtualMachinePowerState powerState) {
         return s_powerStatesTable.get(powerState);
     }