You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by da...@apache.org on 2014/06/23 20:25:55 UTC
git commit: updated refs/heads/4.4 to f7dd172
Repository: cloudstack
Updated Branches:
refs/heads/4.4 0d23ad903 -> f7dd1720c
CLOUDSTACK-6854: Fix inconsistent IPv6 address formats
fc00:0003:1373::0002 should be treated the same as fc00:3:1373::2.
(cherry picked from commit dfe20f34f2e72335586b0e014ba1f91aa4ed473e)
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/f7dd1720
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/f7dd1720
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/f7dd1720
Branch: refs/heads/4.4
Commit: f7dd1720cb6217d4425e9a92268f6b716e88a18c
Parents: 0d23ad9
Author: Sheng Yang <sh...@citrix.com>
Authored: Fri Jun 20 17:36:49 2014 -0700
Committer: Daan Hoogland <da...@onecht.net>
Committed: Mon Jun 23 20:25:43 2014 +0200
----------------------------------------------------------------------
.../admin/vlan/CreateVlanIpRangeCmd.java | 9 +--
.../command/user/network/CreateNetworkCmd.java | 9 +--
.../api/command/user/vm/DeployVMCmd.java | 59 ++++++++++----------
utils/src/com/cloud/utils/net/NetUtils.java | 29 ++++++----
.../test/com/cloud/utils/net/NetUtilsTest.java | 23 +++++---
5 files changed, 71 insertions(+), 58 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f7dd1720/api/src/org/apache/cloudstack/api/command/admin/vlan/CreateVlanIpRangeCmd.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/command/admin/vlan/CreateVlanIpRangeCmd.java b/api/src/org/apache/cloudstack/api/command/admin/vlan/CreateVlanIpRangeCmd.java
index 75edfce..6032625 100644
--- a/api/src/org/apache/cloudstack/api/command/admin/vlan/CreateVlanIpRangeCmd.java
+++ b/api/src/org/apache/cloudstack/api/command/admin/vlan/CreateVlanIpRangeCmd.java
@@ -16,6 +16,7 @@
// under the License.
package org.apache.cloudstack.api.command.admin.vlan;
+import com.cloud.utils.net.NetUtils;
import org.apache.log4j.Logger;
import org.apache.cloudstack.api.APICommand;
@@ -166,28 +167,28 @@ public class CreateVlanIpRangeCmd extends BaseCmd {
if (startIpv6 == null) {
return null;
}
- return startIpv6.toLowerCase();
+ return NetUtils.standardizeIp6Address(startIpv6);
}
public String getEndIpv6() {
if (endIpv6 == null) {
return null;
}
- return endIpv6.toLowerCase();
+ return NetUtils.standardizeIp6Address(endIpv6);
}
public String getIp6Gateway() {
if (ip6Gateway == null) {
return null;
}
- return ip6Gateway.toLowerCase();
+ return NetUtils.standardizeIp6Address(ip6Gateway);
}
public String getIp6Cidr() {
if (ip6Cidr == null) {
return null;
}
- return ip6Cidr.toLowerCase();
+ return NetUtils.standardizeIp6Cidr(ip6Cidr);
}
/////////////////////////////////////////////////////
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f7dd1720/api/src/org/apache/cloudstack/api/command/user/network/CreateNetworkCmd.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/command/user/network/CreateNetworkCmd.java b/api/src/org/apache/cloudstack/api/command/user/network/CreateNetworkCmd.java
index 43c3d1b..364ba3a 100644
--- a/api/src/org/apache/cloudstack/api/command/user/network/CreateNetworkCmd.java
+++ b/api/src/org/apache/cloudstack/api/command/user/network/CreateNetworkCmd.java
@@ -16,6 +16,7 @@
// under the License.
package org.apache.cloudstack.api.command.user.network;
+import com.cloud.utils.net.NetUtils;
import org.apache.log4j.Logger;
import org.apache.cloudstack.acl.RoleType;
@@ -246,28 +247,28 @@ public class CreateNetworkCmd extends BaseCmd {
if (startIpv6 == null) {
return null;
}
- return startIpv6.toLowerCase();
+ return NetUtils.standardizeIp6Address(startIpv6);
}
public String getEndIpv6() {
if (endIpv6 == null) {
return null;
}
- return endIpv6.toLowerCase();
+ return NetUtils.standardizeIp6Address(endIpv6);
}
public String getIp6Gateway() {
if (ip6Gateway == null) {
return null;
}
- return ip6Gateway.toLowerCase();
+ return NetUtils.standardizeIp6Address(ip6Gateway);
}
public String getIp6Cidr() {
if (ip6Cidr == null) {
return null;
}
- return ip6Cidr.toLowerCase();
+ return NetUtils.standardizeIp6Cidr(ip6Cidr);
}
public Long getAclId() {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f7dd1720/api/src/org/apache/cloudstack/api/command/user/vm/DeployVMCmd.java
----------------------------------------------------------------------
diff --git a/api/src/org/apache/cloudstack/api/command/user/vm/DeployVMCmd.java b/api/src/org/apache/cloudstack/api/command/user/vm/DeployVMCmd.java
index 43983bd..1beb595 100755
--- a/api/src/org/apache/cloudstack/api/command/user/vm/DeployVMCmd.java
+++ b/api/src/org/apache/cloudstack/api/command/user/vm/DeployVMCmd.java
@@ -16,16 +16,25 @@
// under the License.
package org.apache.cloudstack.api.command.user.vm;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.log4j.Logger;
-
+import com.cloud.dc.DataCenter;
+import com.cloud.dc.DataCenter.NetworkType;
+import com.cloud.event.EventTypes;
+import com.cloud.exception.ConcurrentOperationException;
+import com.cloud.exception.InsufficientCapacityException;
+import com.cloud.exception.InsufficientServerCapacityException;
+import com.cloud.exception.InvalidParameterValueException;
+import com.cloud.exception.ResourceAllocationException;
+import com.cloud.exception.ResourceUnavailableException;
+import com.cloud.hypervisor.Hypervisor.HypervisorType;
+import com.cloud.network.Network;
+import com.cloud.network.Network.IpAddresses;
+import com.cloud.offering.DiskOffering;
+import com.cloud.offering.ServiceOffering;
+import com.cloud.template.VirtualMachineTemplate;
+import com.cloud.user.Account;
+import com.cloud.uservm.UserVm;
+import com.cloud.utils.net.NetUtils;
+import com.cloud.vm.VirtualMachine;
import org.apache.cloudstack.acl.RoleType;
import org.apache.cloudstack.affinity.AffinityGroupResponse;
import org.apache.cloudstack.api.ACL;
@@ -48,25 +57,15 @@ import org.apache.cloudstack.api.response.TemplateResponse;
import org.apache.cloudstack.api.response.UserVmResponse;
import org.apache.cloudstack.api.response.ZoneResponse;
import org.apache.cloudstack.context.CallContext;
+import org.apache.log4j.Logger;
-import com.cloud.dc.DataCenter;
-import com.cloud.dc.DataCenter.NetworkType;
-import com.cloud.event.EventTypes;
-import com.cloud.exception.ConcurrentOperationException;
-import com.cloud.exception.InsufficientCapacityException;
-import com.cloud.exception.InsufficientServerCapacityException;
-import com.cloud.exception.InvalidParameterValueException;
-import com.cloud.exception.ResourceAllocationException;
-import com.cloud.exception.ResourceUnavailableException;
-import com.cloud.hypervisor.Hypervisor.HypervisorType;
-import com.cloud.network.Network;
-import com.cloud.network.Network.IpAddresses;
-import com.cloud.offering.DiskOffering;
-import com.cloud.offering.ServiceOffering;
-import com.cloud.template.VirtualMachineTemplate;
-import com.cloud.user.Account;
-import com.cloud.uservm.UserVm;
-import com.cloud.vm.VirtualMachine;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
@APICommand(name = "deployVirtualMachine", description = "Creates and automatically starts a virtual machine based on a service offering, disk offering, and template.", responseObject = UserVmResponse.class, responseView = ResponseView.Restricted, entityType = {VirtualMachine.class},
requestHasSensitiveInfo = false, responseHasSensitiveInfo = true)
@@ -353,7 +352,7 @@ public class DeployVMCmd extends BaseAsyncCreateCustomIdCmd {
String requestedIp = ips.get("ip");
String requestedIpv6 = ips.get("ipv6");
if (requestedIpv6 != null) {
- requestedIpv6 = requestedIpv6.toLowerCase();
+ requestedIpv6 = NetUtils.standardizeIp6Address(requestedIpv6);
}
IpAddresses addrs = new IpAddresses(requestedIp, requestedIpv6);
ipToNetworkMap.put(networkId, addrs);
@@ -367,7 +366,7 @@ public class DeployVMCmd extends BaseAsyncCreateCustomIdCmd {
if (ip6Address == null) {
return null;
}
- return ip6Address.toLowerCase();
+ return NetUtils.standardizeIp6Address(ip6Address);
}
public List<Long> getAffinityGroupIdList() {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f7dd1720/utils/src/com/cloud/utils/net/NetUtils.java
----------------------------------------------------------------------
diff --git a/utils/src/com/cloud/utils/net/NetUtils.java b/utils/src/com/cloud/utils/net/NetUtils.java
index 8e3e916..97a66f1 100755
--- a/utils/src/com/cloud/utils/net/NetUtils.java
+++ b/utils/src/com/cloud/utils/net/NetUtils.java
@@ -19,6 +19,16 @@
package com.cloud.utils.net;
+import com.cloud.utils.IteratorUtil;
+import com.cloud.utils.Pair;
+import com.cloud.utils.script.Script;
+import com.googlecode.ipv6.IPv6Address;
+import com.googlecode.ipv6.IPv6AddressRange;
+import com.googlecode.ipv6.IPv6Network;
+import org.apache.commons.lang.SystemUtils;
+import org.apache.commons.net.util.SubnetUtils;
+import org.apache.log4j.Logger;
+
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.lang.reflect.Array;
@@ -40,17 +50,6 @@ import java.util.TreeSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.apache.commons.lang.SystemUtils;
-import org.apache.commons.net.util.SubnetUtils;
-import org.apache.log4j.Logger;
-
-import com.cloud.utils.IteratorUtil;
-import com.cloud.utils.Pair;
-import com.cloud.utils.script.Script;
-import com.googlecode.ipv6.IPv6Address;
-import com.googlecode.ipv6.IPv6AddressRange;
-import com.googlecode.ipv6.IPv6Network;
-
public class NetUtils {
protected final static Logger s_logger = Logger.getLogger(NetUtils.class);
public final static String HTTP_PORT = "80";
@@ -1372,6 +1371,14 @@ public class NetUtils {
return resultIp;
}
+ public static String standardizeIp6Address(String ip6Addr) {
+ return IPv6Address.fromString(ip6Addr).toString();
+ }
+
+ public static String standardizeIp6Cidr(String ip6Cidr){
+ return IPv6Network.fromString(ip6Cidr).toString();
+ }
+
static final String VLAN_PREFIX = "vlan://";
static final int VLAN_PREFIX_LENGTH = VLAN_PREFIX.length();
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f7dd1720/utils/test/com/cloud/utils/net/NetUtilsTest.java
----------------------------------------------------------------------
diff --git a/utils/test/com/cloud/utils/net/NetUtilsTest.java b/utils/test/com/cloud/utils/net/NetUtilsTest.java
index 3183826..cd5109c 100644
--- a/utils/test/com/cloud/utils/net/NetUtilsTest.java
+++ b/utils/test/com/cloud/utils/net/NetUtilsTest.java
@@ -19,6 +19,14 @@
package com.cloud.utils.net;
+import com.googlecode.ipv6.IPv6Address;
+import org.apache.log4j.Logger;
+import org.junit.Test;
+
+import java.math.BigInteger;
+import java.util.SortedSet;
+import java.util.TreeSet;
+
import static org.hamcrest.Matchers.anyOf;
import static org.hamcrest.Matchers.contains;
import static org.hamcrest.Matchers.equalTo;
@@ -31,15 +39,6 @@ import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
-import java.math.BigInteger;
-import java.util.SortedSet;
-import java.util.TreeSet;
-
-import org.apache.log4j.Logger;
-import org.junit.Test;
-
-import com.googlecode.ipv6.IPv6Address;
-
public class NetUtilsTest {
private static final Logger s_logger = Logger.getLogger(NetUtilsTest.class);
@@ -199,6 +198,12 @@ public class NetUtilsTest {
}
@Test
+ public void testStandardizeIp6Address() {
+ assertEquals(NetUtils.standardizeIp6Address("1234:0000:0000:5678:0000:000:ABCD:0001"), "1234::5678:0:0:abcd:1");
+ assertEquals(NetUtils.standardizeIp6Cidr("1234:0000:0000:5678:0000:000:ABCD:0001/64"), "1234::5678:0:0:0:0/64");
+ }
+
+ @Test
public void testGenerateUriForPvlan() {
assertEquals("pvlan://123-i456", NetUtils.generateUriForPvlan("123", "456").toString());
}