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/02/18 23:26:54 UTC

git commit: updated refs/heads/4.3 to 307ad15

Repository: cloudstack
Updated Branches:
  refs/heads/4.3 adf4dd592 -> 307ad15bb


check for BroadcastDomainTypes on sourceNatIp(cherry picked from commit
6d0dbf59683e1878533c8c985f26f18a1d69e1c1)

Conflicts:
	plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java
(cherry picked from commit d38a50343130f6f147e2c9c7b2e32a43f31c7e6b)

Signed-off-by: Animesh Chaturvedi <an...@apache.org>


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

Branch: refs/heads/4.3
Commit: 307ad15bb68179129b8eadeaed115f5d088adfd9
Parents: adf4dd5
Author: Daan Hoogland <da...@onecht.net>
Authored: Wed Jan 29 18:20:16 2014 +0100
Committer: Animesh Chaturvedi <an...@apache.org>
Committed: Tue Feb 18 14:12:50 2014 -0800

----------------------------------------------------------------------
 api/test/com/cloud/network/NetworksTest.java    | 15 +++++++
 .../cloud/network/element/NiciraNvpElement.java | 43 +++++++++++---------
 2 files changed, 39 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/307ad15b/api/test/com/cloud/network/NetworksTest.java
----------------------------------------------------------------------
diff --git a/api/test/com/cloud/network/NetworksTest.java b/api/test/com/cloud/network/NetworksTest.java
index 87f69d6..860cff5 100644
--- a/api/test/com/cloud/network/NetworksTest.java
+++ b/api/test/com/cloud/network/NetworksTest.java
@@ -23,6 +23,7 @@ import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
 
+import com.cloud.dc.Vlan;
 import com.cloud.network.Networks.BroadcastDomainType;
 import com.cloud.network.Networks.IsolationType;
 import com.cloud.utils.exception.CloudRuntimeException;
@@ -60,6 +61,20 @@ public class NetworksTest {
     }
 
     @Test
+    public void vlanValueTest() throws URISyntaxException {
+        String uri1 = "vlan://1";
+        String uri2 = "1";
+        String vtag = BroadcastDomainType.Vlan.getValueFrom(BroadcastDomainType.fromString(uri1));
+        Assert.assertEquals("vtag should be \"1\"", "1", vtag);
+        BroadcastDomainType tiep1 = BroadcastDomainType.getTypeOf(uri1);
+        Assert.assertEquals("the type of uri1 should be 'Vlan'", BroadcastDomainType.Vlan, tiep1);
+        BroadcastDomainType tiep2 = BroadcastDomainType.getTypeOf(uri2);
+        Assert.assertEquals("the type of uri1 should be 'Undecided'", BroadcastDomainType.UnDecided, tiep2);
+        BroadcastDomainType tiep3 = BroadcastDomainType.getTypeOf(Vlan.UNTAGGED);
+        Assert.assertEquals("the type of uri1 should be 'vlan'", BroadcastDomainType.Native, tiep3);
+    }
+
+    @Test
     public void vlanIsolationTypeTest() throws URISyntaxException {
         String uri1 = "vlan://1";
         Long value2 = 2L;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/307ad15b/plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java b/plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java
index 3e9e16a..bcbcc82 100644
--- a/plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java
+++ b/plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java
@@ -16,6 +16,7 @@
 // under the License.
 package com.cloud.network.element;
 
+import java.net.URISyntaxException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -253,25 +254,29 @@ NiciraNvpElementService, ResourceStateAdapter, IpDeployer {
                 network.getId(), Service.SourceNat, Provider.NiciraNvp)) {
             s_logger.debug("Apparently we are supposed to provide SourceNat on this network");
 
-            PublicIp sourceNatIp = _ipAddrMgr
-                    .assignSourceNatIpAddressToGuestNetwork(owner, network);
-            String publicCidr = sourceNatIp.getAddress().addr() + "/"
-                    + NetUtils.getCidrSize(sourceNatIp.getVlanNetmask());
-            String internalCidr = network.getGateway() + "/"
-                    + network.getCidr().split("/")[1];
-            long vlanid = (Vlan.UNTAGGED.equals(sourceNatIp.getVlanTag())) ? 0
-                    : Long.parseLong(sourceNatIp.getVlanTag());
-
-            CreateLogicalRouterCommand cmd = new CreateLogicalRouterCommand(
-                    niciraNvpHost.getDetail("l3gatewayserviceuuid"), vlanid,
-                    BroadcastDomainType.getValue(network.getBroadcastUri()),
-                    "router-" + network.getDisplayText(), publicCidr,
-                    sourceNatIp.getGateway(), internalCidr, context
-                    .getDomain().getName()
-                    + "-"
-                    + context.getAccount().getAccountName());
-            CreateLogicalRouterAnswer answer = (CreateLogicalRouterAnswer)_agentMgr
-                    .easySend(niciraNvpHost.getId(), cmd);
+            PublicIp sourceNatIp = _ipAddrMgr.assignSourceNatIpAddressToGuestNetwork(owner, network);
+            String publicCidr = sourceNatIp.getAddress().addr() + "/" + NetUtils.getCidrSize(sourceNatIp.getVlanNetmask());
+            String internalCidr = network.getGateway() + "/" + network.getCidr().split("/")[1];
+            // assuming a vlan:
+            String vtag = sourceNatIp.getVlanTag();
+            BroadcastDomainType tiep = null;
+            try {
+                tiep = BroadcastDomainType.getTypeOf(vtag);
+            } catch (URISyntaxException use) {
+                throw new CloudRuntimeException("vlantag for sourceNatIp is not valid: " + vtag, use);
+            }
+            if (tiep == BroadcastDomainType.Vlan) {
+                vtag = BroadcastDomainType.Vlan.getValueFrom(BroadcastDomainType.fromString(vtag));
+            } else if (!(tiep == BroadcastDomainType.UnDecided || tiep == BroadcastDomainType.Native)) {
+                throw new CloudRuntimeException("only vlans are supported for sourceNatIp, at this moment: " + vtag);
+            }
+            long vlanid = (Vlan.UNTAGGED.equals(vtag)) ? 0 : Long.parseLong(vtag);
+
+            CreateLogicalRouterCommand cmd =
+                new CreateLogicalRouterCommand(niciraNvpHost.getDetail("l3gatewayserviceuuid"), vlanid, BroadcastDomainType.getValue(network.getBroadcastUri()),
+                    "router-" + network.getDisplayText(), publicCidr, sourceNatIp.getGateway(), internalCidr, context.getDomain().getName() + "-" +
+                        context.getAccount().getAccountName());
+            CreateLogicalRouterAnswer answer = (CreateLogicalRouterAnswer)_agentMgr.easySend(niciraNvpHost.getId(), cmd);
             if (answer.getResult() == false) {
                 s_logger.error("Failed to create Logical Router for network "
                         + network.getDisplayText());