You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by hu...@apache.org on 2013/01/23 08:15:58 UTC

[4/45] git commit: Summary: Add vlan configuration to the network inteface definition

Summary: Add vlan configuration to the network inteface definition

Add xml piece for defining vlans

Set vlan tag in the libvirt definition for the network inteface


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

Branch: refs/heads/master
Commit: c6916ff4e06a2b7d5c53b9ed48828a0eff400895
Parents: c9c40d0
Author: Hugo Trippaers <tr...@gmail.com>
Authored: Fri Jan 11 17:04:32 2013 +0100
Committer: Hugo Trippaers <tr...@gmail.com>
Committed: Mon Jan 14 08:38:22 2013 +0100

----------------------------------------------------------------------
 .../hypervisor/kvm/resource/LibvirtVMDef.java      |   14 +++++-
 .../hypervisor/kvm/resource/OvsVifDriver.java      |   38 +++-----------
 2 files changed, 21 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/c6916ff4/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 17f6eef..df27778 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
@@ -648,6 +648,7 @@ public class LibvirtVMDef {
         private nicModel _model;
         private String _virtualPortType;
         private String _virtualPortInterfaceId;
+        private int _vlanTag = -1;
 
         public void defBridgeNet(String brName, String targetBrName,
                 String macAddr, nicModel model) {
@@ -713,7 +714,15 @@ public class LibvirtVMDef {
         public String getVirtualPortInterfaceId() {
         	return _virtualPortInterfaceId;
         }
-
+        
+        public void setVlanTag(int vlanTag) {
+        	_vlanTag = vlanTag;
+        }
+        
+        public int getVlanTag() {
+        	return _vlanTag;
+        }
+        
         @Override
         public String toString() {
             StringBuilder netBuilder = new StringBuilder();
@@ -739,6 +748,9 @@ public class LibvirtVMDef {
             	}
             	netBuilder.append("</virtualport>\n");
             }
+            if (_vlanTag != -1) {
+            	netBuilder.append("<vlan trunk='no'>\n<tag id='" + _vlanTag + "'/>\n</vlan>");
+            }
             netBuilder.append("</interface>\n");
             return netBuilder.toString();
         }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/c6916ff4/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/OvsVifDriver.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/OvsVifDriver.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/OvsVifDriver.java
index 6c3e496..52fc29e 100644
--- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/OvsVifDriver.java
+++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/OvsVifDriver.java
@@ -84,11 +84,11 @@ public class OvsVifDriver extends VifDriverBase {
                     && !vlanId.equalsIgnoreCase("untagged")) {
                 if(trafficLabel != null && !trafficLabel.isEmpty()) {
                     s_logger.debug("creating a vlan dev and bridge for guest traffic per traffic label " + trafficLabel);
-                    String brName = createVlanBr(vlanId, _pifs.get(trafficLabel));
-                    intf.defBridgeNet(brName, null, nic.getMac(), getGuestNicModel(guestOsType));
+                    intf.defBridgeNet(_pifs.get(trafficLabel), null, nic.getMac(), getGuestNicModel(guestOsType));
+                    intf.setVlanTag(Integer.parseInt(vlanId));
                 } else {
-                    String brName = createVlanBr(vlanId, _pifs.get("private"));
-                    intf.defBridgeNet(brName, null, nic.getMac(), getGuestNicModel(guestOsType));
+                    intf.defBridgeNet(_pifs.get("private"), null, nic.getMac(), getGuestNicModel(guestOsType));
+                    intf.setVlanTag(Integer.parseInt(vlanId));
                 }
             } else if (nic.getBroadcastType() == Networks.BroadcastDomainType.Lswitch) {
             	s_logger.debug("nic " + nic + " needs to be connected to LogicalSwitch " + logicalSwitchUuid);
@@ -108,11 +108,11 @@ public class OvsVifDriver extends VifDriverBase {
                     && !vlanId.equalsIgnoreCase("untagged")) {
                 if(trafficLabel != null && !trafficLabel.isEmpty()){
                     s_logger.debug("creating a vlan dev and bridge for public traffic per traffic label " + trafficLabel);
-                    String brName = createVlanBr(vlanId, _pifs.get(trafficLabel));
-                    intf.defBridgeNet(brName, null, nic.getMac(), getGuestNicModel(guestOsType));
+                    intf.defBridgeNet(_pifs.get(trafficLabel), null, nic.getMac(), getGuestNicModel(guestOsType));
+                    intf.setVlanTag(Integer.parseInt(vlanId));
                 } else {
-                    String brName = createVlanBr(vlanId, _pifs.get("public"));
-                    intf.defBridgeNet(brName, null, nic.getMac(), getGuestNicModel(guestOsType));
+                    intf.defBridgeNet(_pifs.get("public"), null, nic.getMac(), getGuestNicModel(guestOsType));
+                    intf.setVlanTag(Integer.parseInt(vlanId));
                 }
             } else {
                 intf.defBridgeNet(_bridges.get("public"), null, nic.getMac(), getGuestNicModel(guestOsType));
@@ -143,28 +143,6 @@ public class OvsVifDriver extends VifDriverBase {
 
         return brName;
     }
-
-    private String createVlanBr(String vlanId, String nic)
-            throws InternalErrorException {
-        String brName = setVnetBrName(nic, vlanId);
-        createVnet(vlanId, nic, brName);
-        return brName;
-    }
-
-    private void createVnet(String vnetId, String pif, String brName)
-            throws InternalErrorException {
-        final Script command = new Script(_modifyVlanPath, _timeout, s_logger);
-        command.add("-v", vnetId);
-        command.add("-p", pif);
-        command.add("-b", brName);
-        command.add("-o", "add");
-
-        final String result = command.execute();
-        if (result != null) {
-            throw new InternalErrorException("Failed to create vnet " + vnetId
-                    + ": " + result);
-        }
-    }
     
 	private void deleteExitingLinkLocalRoutTable(String linkLocalBr) {
         Script command = new Script("/bin/bash", _timeout);