Repository: cloudstack
Updated Branches:
  refs/heads/master c158cff68 -> 7949d2922


CLOUDSTACK-7593: allow nic type to be fetched from vm's details

(cherry picked from commit 43db75c319b425f3b39770d556df59333921bf92)
Signed-off-by: Rohit Yadav <[email protected]>

Conflicts:
        engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java


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

Branch: refs/heads/master
Commit: 37820e15f2ac5bb4222cd2f7ef5da63e97d5de8a
Parents: c158cff
Author: Rohit Yadav <[email protected]>
Authored: Mon Apr 13 14:25:34 2015 +0530
Committer: Rohit Yadav <[email protected]>
Committed: Mon Apr 13 15:47:03 2015 +0530

----------------------------------------------------------------------
 core/src/com/cloud/agent/api/PlugNicCommand.java      | 14 ++++++++++++++
 .../src/com/cloud/vm/VirtualMachineManagerImpl.java   |  3 +--
 .../hypervisor/vmware/resource/VmwareResource.java    |  6 +++++-
 3 files changed, 20 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/37820e15/core/src/com/cloud/agent/api/PlugNicCommand.java
----------------------------------------------------------------------
diff --git a/core/src/com/cloud/agent/api/PlugNicCommand.java 
b/core/src/com/cloud/agent/api/PlugNicCommand.java
index e68931d..322b755 100644
--- a/core/src/com/cloud/agent/api/PlugNicCommand.java
+++ b/core/src/com/cloud/agent/api/PlugNicCommand.java
@@ -22,11 +22,14 @@ package com.cloud.agent.api;
 import com.cloud.agent.api.to.NicTO;
 import com.cloud.vm.VirtualMachine;
 
+import java.util.Map;
+
 public class PlugNicCommand extends Command {
 
     NicTO nic;
     String instanceName;
     VirtualMachine.Type vmType;
+    Map<String, String> details;
 
     public NicTO getNic() {
         return nic;
@@ -46,6 +49,13 @@ public class PlugNicCommand extends Command {
         this.vmType = vmtype;
     }
 
+    public PlugNicCommand(NicTO nic, String instanceName, VirtualMachine.Type 
vmtype, Map<String, String> details) {
+        this.nic = nic;
+        this.instanceName = instanceName;
+        this.vmType = vmtype;
+        this.details = details;
+    }
+
     public String getVmName() {
         return instanceName;
     }
@@ -53,4 +63,8 @@ public class PlugNicCommand extends Command {
     public VirtualMachine.Type getVMType() {
         return vmType;
     }
+
+    public Map<String, String> getDetails() {
+        return this.details;
+    }
 }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/37820e15/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 3426a0a..f6280c2 100644
--- a/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
+++ b/engine/orchestration/src/com/cloud/vm/VirtualMachineManagerImpl.java
@@ -3422,8 +3422,7 @@ public class VirtualMachineManagerImpl extends 
ManagerBase implements VirtualMac
         final VMInstanceVO router = _vmDao.findById(vm.getId());
         if (router.getState() == State.Running) {
             try {
-                final PlugNicCommand plugNicCmd = new PlugNicCommand(nic, 
vm.getName(), vm.getType());
-
+                final PlugNicCommand plugNicCmd = new PlugNicCommand(nic, 
vm.getName(), vm.getType(), vm.getDetails());
                 final Commands cmds = new Commands(Command.OnError.Stop);
                 cmds.addCommand("plugnic", plugNicCmd);
                 _agentMgr.send(dest.getHost().getId(), cmds);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/37820e15/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 f90a666..07815ee 100644
--- 
a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
+++ 
b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/resource/VmwareResource.java
@@ -916,8 +916,12 @@ public class VmwareResource implements 
StoragePoolResource, ServerResource, Vmwa
                 return new PlugNicAnswer(cmd, false, "Unable to execute 
PlugNicCommand due to " + errMsg);
             }
              */
-            // TODO need a way to specify the control of NIC device type
+            // Fallback to E1000 if no specific nicAdapter is passed
             VirtualEthernetCardType nicDeviceType = 
VirtualEthernetCardType.E1000;
+            Map details = cmd.getDetails();
+            if (details != null) {
+                nicDeviceType = VirtualEthernetCardType.valueOf((String) 
details.get("nicAdapter"));
+            }
 
             // find a usable device number in VMware environment
             VirtualDevice[] nicDevices = vmMo.getNicDevices();

Reply via email to