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

git commit: updated refs/heads/master to 7ce3034

Repository: cloudstack
Updated Branches:
  refs/heads/master 021a60449 -> 7ce303429


CLOUDSTACK-6790: Disable PXE ROM for system vm nics


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

Branch: refs/heads/master
Commit: 7ce303429921e6a60a941c8476ba891baa80f04c
Parents: 021a604
Author: Marcus Sorensen <ma...@betterservers.com>
Authored: Tue May 27 16:47:16 2014 -0600
Committer: Marcus Sorensen <ma...@betterservers.com>
Committed: Tue May 27 16:52:26 2014 -0600

----------------------------------------------------------------------
 api/src/com/cloud/agent/api/to/NicTO.java                   | 9 +++++++++
 .../engine/orchestration/NetworkOrchestrator.java           | 3 +++
 .../com/cloud/hypervisor/kvm/resource/BridgeVifDriver.java  | 3 +++
 .../hypervisor/kvm/resource/LibvirtComputingResource.java   | 9 ++++++++-
 .../src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java | 8 ++++++++
 server/src/com/cloud/hypervisor/HypervisorGuruBase.java     | 4 ++++
 6 files changed, 35 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ce30342/api/src/com/cloud/agent/api/to/NicTO.java
----------------------------------------------------------------------
diff --git a/api/src/com/cloud/agent/api/to/NicTO.java b/api/src/com/cloud/agent/api/to/NicTO.java
index 67660c8..0cbc2d8 100644
--- a/api/src/com/cloud/agent/api/to/NicTO.java
+++ b/api/src/com/cloud/agent/api/to/NicTO.java
@@ -23,6 +23,7 @@ public class NicTO extends NetworkTO {
     Integer networkRateMbps;
     Integer networkRateMulticastMbps;
     boolean defaultNic;
+    boolean pxeDisable;
     String uuid;
     List<String> nicSecIps;
 
@@ -58,6 +59,14 @@ public class NicTO extends NetworkTO {
         this.defaultNic = defaultNic;
     }
 
+    public void setPxeDisable(boolean pxeDisable) {
+        this.pxeDisable = pxeDisable;
+    }
+
+    public boolean getPxeDisable() {
+        return pxeDisable;
+    }
+
     @Override
     public String getUuid() {
         return uuid;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ce30342/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
----------------------------------------------------------------------
diff --git a/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java b/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
index 0ad6d34..1e5a58c 100755
--- a/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
+++ b/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java
@@ -904,6 +904,9 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra
         } else {
             to.setGateway(config.getGateway());
         }
+        if (nic.getVmType() != VirtualMachine.Type.User) {
+            to.setPxeDisable(true);
+        }
         to.setDefaultNic(nic.isDefaultNic());
         to.setBroadcastUri(nic.getBroadcastUri());
         to.setIsolationuri(nic.getIsolationUri());

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ce30342/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/BridgeVifDriver.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/BridgeVifDriver.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/BridgeVifDriver.java
index c99de7a..e684b8d 100644
--- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/BridgeVifDriver.java
+++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/BridgeVifDriver.java
@@ -142,6 +142,9 @@ public class BridgeVifDriver extends VifDriverBase {
             String storageBrName = nic.getName() == null ? _bridges.get("private") : nic.getName();
             intf.defBridgeNet(storageBrName, null, nic.getMac(), getGuestNicModel(guestOsType, nicAdapter));
         }
+        if (nic.getPxeDisable() == true) {
+            intf.setPxeDisable(true);
+        }
         return intf;
     }
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ce30342/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 dba6806..4065188 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
@@ -3793,6 +3793,14 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
                 _vms.put(vmName, State.Starting);
             }
 
+            NicTO[] nics = vmSpec.getNics();
+
+            for (NicTO nic : nics) {
+                if (vmSpec.getType() != VirtualMachine.Type.User) {
+                    nic.setPxeDisable(true);
+                }
+            }
+
             vm = createVMFromSpec(vmSpec);
 
             conn = LibvirtConnection.getConnectionByType(vm.getHvsType());
@@ -3808,7 +3816,6 @@ public class LibvirtComputingResource extends ServerResourceBase implements Serv
             s_logger.debug("starting " + vmName + ": " + vm.toString());
             startVM(conn, vmName, vm.toString());
 
-            NicTO[] nics = vmSpec.getNics();
             for (NicTO nic : nics) {
                 if (nic.isSecurityGroupEnabled() || (nic.getIsolationUri() != null && nic.getIsolationUri().getScheme().equalsIgnoreCase(IsolationType.Ec2.toString()))) {
                     if (vmSpec.getType() != VirtualMachine.Type.User) {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ce30342/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
index cf9fec0..4ab794b 100644
--- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
+++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtVMDef.java
@@ -765,6 +765,7 @@ public class LibvirtVMDef {
         private String _virtualPortType;
         private String _virtualPortInterfaceId;
         private int _vlanTag = -1;
+        private boolean _pxeDisable = false;
 
         public void defBridgeNet(String brName, String targetBrName, String macAddr, nicModel model) {
             defBridgeNet(brName, targetBrName, macAddr, model, 0);
@@ -832,6 +833,10 @@ public class LibvirtVMDef {
             return _hostNetType;
         }
 
+        public void setPxeDisable(boolean pxeDisable) {
+            _pxeDisable = pxeDisable;
+        }
+
         public String getBrName() {
             return _sourceName;
         }
@@ -909,6 +914,9 @@ public class LibvirtVMDef {
             if (_scriptPath != null) {
                 netBuilder.append("<script path='" + _scriptPath + "'/>\n");
             }
+            if (_pxeDisable) {
+                netBuilder.append("<rom bar='off' file='dummy'/>");
+            }
             if (_virtualPortType != null) {
                 netBuilder.append("<virtualport type='" + _virtualPortType + "'>\n");
                 if (_virtualPortInterfaceId != null) {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/7ce30342/server/src/com/cloud/hypervisor/HypervisorGuruBase.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/hypervisor/HypervisorGuruBase.java b/server/src/com/cloud/hypervisor/HypervisorGuruBase.java
index e2520d2..30435d2 100644
--- a/server/src/com/cloud/hypervisor/HypervisorGuruBase.java
+++ b/server/src/com/cloud/hypervisor/HypervisorGuruBase.java
@@ -97,6 +97,10 @@ public abstract class HypervisorGuruBase extends AdapterBase implements Hypervis
         // Workaround to make sure the TO has the UUID we need for Niciri integration
         NicVO nicVO = _nicDao.findById(profile.getId());
         to.setUuid(nicVO.getUuid());
+        // disable pxe on system vm nics to speed up boot time
+        if(nicVO != null && nicVO.getVmType() != VirtualMachine.Type.User){
+            to.setPxeDisable(true);
+        }
         //check whether the this nic has secondary ip addresses set
         //set nic secondary ip address in NicTO which are used for security group
         // configuration. Use full when vm stop/start