You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ed...@apache.org on 2014/01/18 00:39:36 UTC
git commit: updated refs/heads/4.3 to 7c2449d
Updated Branches:
refs/heads/4.3 c2902db0b -> 7c2449dab
CLOUDSTACK-5432:sync vm and storage commands on mgt server for kvm
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/7c2449da
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/7c2449da
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/7c2449da
Branch: refs/heads/4.3
Commit: 7c2449dabd75b4c88d8fa8aaf2477b3416b4747f
Parents: c2902db
Author: edison <su...@gmail.com>
Authored: Wed Jan 15 17:08:15 2014 -0800
Committer: edison <su...@gmail.com>
Committed: Fri Jan 17 15:23:43 2014 -0800
----------------------------------------------------------------------
.../storage/command/AttachCommand.java | 6 ++++++
.../command/AttachPrimaryDataStoreCmd.java | 5 +++++
.../cloudstack/storage/command/CopyCommand.java | 4 ++++
.../storage/command/CreateObjectCommand.java | 4 ++++
.../command/CreatePrimaryDataStoreCmd.java | 4 ++++
.../storage/command/DeleteCommand.java | 4 ++++
.../storage/command/DettachCommand.java | 5 +++++
.../storage/command/ForgetObjectCmd.java | 5 +++++
.../storage/command/IntroduceObjectCmd.java | 5 +++++
.../command/StorageSubSystemCommand.java | 2 +-
.../com/cloud/vm/VirtualMachineManagerImpl.java | 20 ++++++++++++--------
server/src/com/cloud/hypervisor/KVMGuru.java | 18 +++++++++++++++---
12 files changed, 70 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7c2449da/core/src/org/apache/cloudstack/storage/command/AttachCommand.java
----------------------------------------------------------------------
diff --git a/core/src/org/apache/cloudstack/storage/command/AttachCommand.java b/core/src/org/apache/cloudstack/storage/command/AttachCommand.java
index 7e47ba4..303457b 100644
--- a/core/src/org/apache/cloudstack/storage/command/AttachCommand.java
+++ b/core/src/org/apache/cloudstack/storage/command/AttachCommand.java
@@ -24,6 +24,7 @@ import com.cloud.agent.api.to.DiskTO;
public final class AttachCommand extends Command implements StorageSubSystemCommand {
private DiskTO disk;
private String vmName;
+ private boolean inSeq = false;
public AttachCommand(DiskTO disk, String vmName) {
super();
@@ -51,4 +52,9 @@ public final class AttachCommand extends Command implements StorageSubSystemComm
public void setVmName(String vmName) {
this.vmName = vmName;
}
+
+ @Override
+ public void setExecuteInSequence(boolean inSeq) {
+ this.inSeq = inSeq;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7c2449da/core/src/org/apache/cloudstack/storage/command/AttachPrimaryDataStoreCmd.java
----------------------------------------------------------------------
diff --git a/core/src/org/apache/cloudstack/storage/command/AttachPrimaryDataStoreCmd.java b/core/src/org/apache/cloudstack/storage/command/AttachPrimaryDataStoreCmd.java
index 2083876..25679ba 100644
--- a/core/src/org/apache/cloudstack/storage/command/AttachPrimaryDataStoreCmd.java
+++ b/core/src/org/apache/cloudstack/storage/command/AttachPrimaryDataStoreCmd.java
@@ -21,6 +21,11 @@ package org.apache.cloudstack.storage.command;
import com.cloud.agent.api.Command;
public final class AttachPrimaryDataStoreCmd extends Command implements StorageSubSystemCommand {
+ @Override
+ public void setExecuteInSequence(boolean inSeq) {
+
+ }
+
private final String dataStore;
public AttachPrimaryDataStoreCmd(String uri) {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7c2449da/core/src/org/apache/cloudstack/storage/command/CopyCommand.java
----------------------------------------------------------------------
diff --git a/core/src/org/apache/cloudstack/storage/command/CopyCommand.java b/core/src/org/apache/cloudstack/storage/command/CopyCommand.java
index a4ab070..e4681b8 100644
--- a/core/src/org/apache/cloudstack/storage/command/CopyCommand.java
+++ b/core/src/org/apache/cloudstack/storage/command/CopyCommand.java
@@ -79,4 +79,8 @@ public final class CopyCommand extends Command implements StorageSubSystemComman
return options;
}
+ @Override
+ public void setExecuteInSequence(boolean inSeq) {
+ this.executeInSequence = inSeq;
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7c2449da/core/src/org/apache/cloudstack/storage/command/CreateObjectCommand.java
----------------------------------------------------------------------
diff --git a/core/src/org/apache/cloudstack/storage/command/CreateObjectCommand.java b/core/src/org/apache/cloudstack/storage/command/CreateObjectCommand.java
index 121a7ee..8c239b5 100644
--- a/core/src/org/apache/cloudstack/storage/command/CreateObjectCommand.java
+++ b/core/src/org/apache/cloudstack/storage/command/CreateObjectCommand.java
@@ -42,4 +42,8 @@ public final class CreateObjectCommand extends Command implements StorageSubSyst
return this.data;
}
+ @Override
+ public void setExecuteInSequence(boolean inSeq) {
+
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7c2449da/core/src/org/apache/cloudstack/storage/command/CreatePrimaryDataStoreCmd.java
----------------------------------------------------------------------
diff --git a/core/src/org/apache/cloudstack/storage/command/CreatePrimaryDataStoreCmd.java b/core/src/org/apache/cloudstack/storage/command/CreatePrimaryDataStoreCmd.java
index b536028..21716cf 100644
--- a/core/src/org/apache/cloudstack/storage/command/CreatePrimaryDataStoreCmd.java
+++ b/core/src/org/apache/cloudstack/storage/command/CreatePrimaryDataStoreCmd.java
@@ -35,4 +35,8 @@ public final class CreatePrimaryDataStoreCmd extends Command implements StorageS
return false;
}
+ @Override
+ public void setExecuteInSequence(boolean inSeq) {
+
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7c2449da/core/src/org/apache/cloudstack/storage/command/DeleteCommand.java
----------------------------------------------------------------------
diff --git a/core/src/org/apache/cloudstack/storage/command/DeleteCommand.java b/core/src/org/apache/cloudstack/storage/command/DeleteCommand.java
index 76696da..7445050 100644
--- a/core/src/org/apache/cloudstack/storage/command/DeleteCommand.java
+++ b/core/src/org/apache/cloudstack/storage/command/DeleteCommand.java
@@ -42,4 +42,8 @@ public final class DeleteCommand extends Command implements StorageSubSystemComm
return this.data;
}
+ @Override
+ public void setExecuteInSequence(boolean inSeq) {
+
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7c2449da/core/src/org/apache/cloudstack/storage/command/DettachCommand.java
----------------------------------------------------------------------
diff --git a/core/src/org/apache/cloudstack/storage/command/DettachCommand.java b/core/src/org/apache/cloudstack/storage/command/DettachCommand.java
index 61cb88b..1e501d9 100644
--- a/core/src/org/apache/cloudstack/storage/command/DettachCommand.java
+++ b/core/src/org/apache/cloudstack/storage/command/DettachCommand.java
@@ -87,4 +87,9 @@ public class DettachCommand extends Command implements StorageSubSystemCommand {
public int getStoragePort() {
return _storagePort;
}
+
+ @Override
+ public void setExecuteInSequence(boolean inSeq) {
+
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7c2449da/core/src/org/apache/cloudstack/storage/command/ForgetObjectCmd.java
----------------------------------------------------------------------
diff --git a/core/src/org/apache/cloudstack/storage/command/ForgetObjectCmd.java b/core/src/org/apache/cloudstack/storage/command/ForgetObjectCmd.java
index 58fb780..919dc36 100644
--- a/core/src/org/apache/cloudstack/storage/command/ForgetObjectCmd.java
+++ b/core/src/org/apache/cloudstack/storage/command/ForgetObjectCmd.java
@@ -34,4 +34,9 @@ public class ForgetObjectCmd extends Command implements StorageSubSystemCommand
public boolean executeInSequence() {
return false;
}
+
+ @Override
+ public void setExecuteInSequence(boolean inSeq) {
+
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7c2449da/core/src/org/apache/cloudstack/storage/command/IntroduceObjectCmd.java
----------------------------------------------------------------------
diff --git a/core/src/org/apache/cloudstack/storage/command/IntroduceObjectCmd.java b/core/src/org/apache/cloudstack/storage/command/IntroduceObjectCmd.java
index 1aabed2..a2be64f 100644
--- a/core/src/org/apache/cloudstack/storage/command/IntroduceObjectCmd.java
+++ b/core/src/org/apache/cloudstack/storage/command/IntroduceObjectCmd.java
@@ -35,4 +35,9 @@ public class IntroduceObjectCmd extends Command implements StorageSubSystemComma
public boolean executeInSequence() {
return false;
}
+
+ @Override
+ public void setExecuteInSequence(boolean inSeq) {
+
+ }
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7c2449da/core/src/org/apache/cloudstack/storage/command/StorageSubSystemCommand.java
----------------------------------------------------------------------
diff --git a/core/src/org/apache/cloudstack/storage/command/StorageSubSystemCommand.java b/core/src/org/apache/cloudstack/storage/command/StorageSubSystemCommand.java
index d14161a..fb7b373 100644
--- a/core/src/org/apache/cloudstack/storage/command/StorageSubSystemCommand.java
+++ b/core/src/org/apache/cloudstack/storage/command/StorageSubSystemCommand.java
@@ -19,5 +19,5 @@
package org.apache.cloudstack.storage.command;
public interface StorageSubSystemCommand {
-
+ void setExecuteInSequence(boolean inSeq);
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7c2449da/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 67858b4..e8422d5 100755
--- a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
+++ b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
@@ -974,7 +974,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
handlePath(vmTO.getDisks(), vm.getHypervisorType());
cmds = new Commands(Command.OnError.Stop);
- cmds.addCommand(new StartCommand(vmTO, dest.getHost(), getExecuteInSequence()));
+ cmds.addCommand(new StartCommand(vmTO, dest.getHost(), getExecuteInSequence(vm.getHypervisorType())));
vmGuru.finalizeDeployment(cmds, vmProfile, dest, ctx);
@@ -1017,7 +1017,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
s_logger.info("The guru did not like the answers so stopping " + vm);
}
- StopCommand cmd = new StopCommand(vm, getExecuteInSequence());
+ StopCommand cmd = new StopCommand(vm, getExecuteInSequence(vm.getHypervisorType()));
StopAnswer answer = (StopAnswer) _agentMgr.easySend(destHostId, cmd);
if ( answer != null ) {
if (vm.getType() == VirtualMachine.Type.User) {
@@ -1179,13 +1179,17 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
}
- protected boolean getExecuteInSequence() {
- return ExecuteInSequence.value();
+ protected boolean getExecuteInSequence(HypervisorType hypervisorType) {
+ if (HypervisorType.KVM == hypervisorType) {
+ return false;
+ } else {
+ return ExecuteInSequence.value();
+ }
}
protected boolean sendStop(VirtualMachineGuru guru, VirtualMachineProfile profile, boolean force) {
VirtualMachine vm = profile.getVirtualMachine();
- StopCommand stop = new StopCommand(vm, getExecuteInSequence());
+ StopCommand stop = new StopCommand(vm, getExecuteInSequence(vm.getHypervisorType()));
try {
StopAnswer answer = (StopAnswer) _agentMgr.send(vm.getHostId(), stop);
if ( answer != null ) {
@@ -1431,7 +1435,7 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
vmGuru.prepareStop(profile);
- StopCommand stop = new StopCommand(vm, getExecuteInSequence());
+ StopCommand stop = new StopCommand(vm, getExecuteInSequence(vm.getHypervisorType()));
boolean stopped = false;
StopAnswer answer = null;
try {
@@ -2325,11 +2329,11 @@ public class VirtualMachineManagerImpl extends ManagerBase implements VirtualMac
}
public Command cleanup(VirtualMachine vm) {
- return new StopCommand(vm, getExecuteInSequence());
+ return new StopCommand(vm, getExecuteInSequence(vm.getHypervisorType()));
}
public Command cleanup(String vmName) {
- return new StopCommand(vmName, getExecuteInSequence());
+ return new StopCommand(vmName, getExecuteInSequence(null));
}
public Commands fullHostSync(final long hostId, StartupRoutingCommand startup) {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7c2449da/server/src/com/cloud/hypervisor/KVMGuru.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/hypervisor/KVMGuru.java b/server/src/com/cloud/hypervisor/KVMGuru.java
index 58e46e1..5497224 100644
--- a/server/src/com/cloud/hypervisor/KVMGuru.java
+++ b/server/src/com/cloud/hypervisor/KVMGuru.java
@@ -19,16 +19,19 @@ package com.cloud.hypervisor;
import javax.ejb.Local;
import javax.inject.Inject;
+import com.cloud.agent.api.Command;
import com.cloud.agent.api.to.VirtualMachineTO;
import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.storage.GuestOSVO;
import com.cloud.storage.dao.GuestOSDao;
+import com.cloud.utils.Pair;
import com.cloud.vm.VirtualMachineProfile;
+import org.apache.cloudstack.storage.command.StorageSubSystemCommand;
@Local(value=HypervisorGuru.class)
public class KVMGuru extends HypervisorGuruBase implements HypervisorGuru {
@Inject GuestOSDao _guestOsDao;
-
+
@Override
public HypervisorType getHypervisorType() {
return HypervisorType.KVM;
@@ -48,8 +51,17 @@ public class KVMGuru extends HypervisorGuruBase implements HypervisorGuru {
return to;
}
-
- @Override
+
+ @Override
+ public Pair<Boolean, Long> getCommandHostDelegation(long hostId, Command cmd) {
+ if (cmd instanceof StorageSubSystemCommand) {
+ StorageSubSystemCommand c = (StorageSubSystemCommand)cmd;
+ c.setExecuteInSequence(false);
+ }
+ return new Pair<Boolean, Long>(false, new Long(hostId));
+ }
+
+ @Override
public boolean trackVmHostChange() {
return false;
}