rhtyd closed pull request #2028: CLOUDSTACK-9853: Add support for Secondary IPv6 Addresses and Subnets URL: https://github.com/apache/cloudstack/pull/2028
This is a PR merged from a forked repository. As GitHub hides the original diff on merge, it is displayed below for the sake of provenance: As this is a foreign pull request (from a fork), the diff is supplied below (as it won't show otherwise due to GitHub magic): diff --git a/api/src/com/cloud/vm/NicSecondaryIp.java b/api/src/com/cloud/vm/NicSecondaryIp.java index fb90dd351f6..b7d3668c3e2 100644 --- a/api/src/com/cloud/vm/NicSecondaryIp.java +++ b/api/src/com/cloud/vm/NicSecondaryIp.java @@ -34,6 +34,8 @@ String getIp4Address(); + String getIp6Address(); + long getNetworkId(); long getVmId(); diff --git a/core/src/com/cloud/agent/api/SecurityGroupRulesCmd.java b/core/src/com/cloud/agent/api/SecurityGroupRulesCmd.java index fe4ac1cdc2e..47da7f816bb 100644 --- a/core/src/com/cloud/agent/api/SecurityGroupRulesCmd.java +++ b/core/src/com/cloud/agent/api/SecurityGroupRulesCmd.java @@ -35,7 +35,7 @@ public class SecurityGroupRulesCmd extends Command { private static final String CIDR_LENGTH_SEPARATOR = "/"; private static final char RULE_TARGET_SEPARATOR = ','; - private static final char RULE_COMMAND_SEPARATOR = ':'; + private static final char RULE_COMMAND_SEPARATOR = ';'; protected static final String EGRESS_RULE = "E:"; protected static final String INGRESS_RULE = "I:"; private static final Logger LOGGER = Logger.getLogger(SecurityGroupRulesCmd.class); diff --git a/core/test/com/cloud/agent/api/SecurityGroupRulesCmdTest.java b/core/test/com/cloud/agent/api/SecurityGroupRulesCmdTest.java index aba24608241..50c82a76455 100644 --- a/core/test/com/cloud/agent/api/SecurityGroupRulesCmdTest.java +++ b/core/test/com/cloud/agent/api/SecurityGroupRulesCmdTest.java @@ -86,7 +86,7 @@ public void testStringifyCompressedRules() throws Exception { */ @Test public void testCompressStringifiedRules() throws Exception { - final String compressed = "eJzztEpMSrYytDKyMtQz0jPWM9E31THTM9ez0LPUN9Dxc40IUXAlrAQAPdoP3Q=="; + final String compressed = "eJzztEpMSrY2tDayNtQz0jPWM9E31THTM9ez0LPUN9Dxc40IUXAlrAQAPusP4w=="; final String a = securityGroupRulesCmd.compressStringifiedRules(); assertTrue(compressed.equals(a)); } diff --git a/engine/schema/src/com/cloud/vm/dao/NicSecondaryIpDaoImpl.java b/engine/schema/src/com/cloud/vm/dao/NicSecondaryIpDaoImpl.java index 8cd61953a73..6ae9b1534cd 100644 --- a/engine/schema/src/com/cloud/vm/dao/NicSecondaryIpDaoImpl.java +++ b/engine/schema/src/com/cloud/vm/dao/NicSecondaryIpDaoImpl.java @@ -20,6 +20,7 @@ import java.util.List; +import com.cloud.utils.StringUtils; import org.springframework.stereotype.Component; import com.cloud.utils.db.GenericDaoBase; @@ -106,7 +107,13 @@ protected NicSecondaryIpDaoImpl() { List<NicSecondaryIpVO> results = search(sc, null); List<String> ips = new ArrayList<String>(results.size()); for (NicSecondaryIpVO result : results) { - ips.add(result.getIp4Address()); + if (StringUtils.isNotBlank(result.getIp4Address())) { + ips.add(result.getIp4Address()); + } + + if (StringUtils.isNotBlank(result.getIp6Address())) { + ips.add(result.getIp6Address()); + } } return ips; } diff --git a/engine/schema/src/com/cloud/vm/dao/NicSecondaryIpVO.java b/engine/schema/src/com/cloud/vm/dao/NicSecondaryIpVO.java index f8730aac5d2..23e45e8a235 100644 --- a/engine/schema/src/com/cloud/vm/dao/NicSecondaryIpVO.java +++ b/engine/schema/src/com/cloud/vm/dao/NicSecondaryIpVO.java @@ -42,6 +42,16 @@ public NicSecondaryIpVO(long nicId, String ipaddr, long vmId, long accountId, lo this.networkId = networkId; } + public NicSecondaryIpVO(long nicId, String ip4Address, String ip6Address, long vmId, long accountId, long domainId, long networkId) { + this.nicId = nicId; + this.vmId = vmId; + this.ip4Address = ip4Address; + this.ip6Address = ip6Address; + this.accountId = accountId; + this.domainId = domainId; + this.networkId = networkId; + } + protected NicSecondaryIpVO() { } diff --git a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtStartCommandWrapper.java b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtStartCommandWrapper.java index 198b95dd237..5a75f078f9e 100644 --- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtStartCommandWrapper.java +++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/wrapper/LibvirtStartCommandWrapper.java @@ -102,11 +102,11 @@ public Answer execute(final StartCommand command, final LibvirtComputingResource final StringBuilder sb = new StringBuilder(); if (nicSecIps != null) { for (final String ip : nicSecIps) { - sb.append(ip).append(":"); + sb.append(ip).append(";"); } secIpsStr = sb.toString(); } else { - secIpsStr = "0:"; + secIpsStr = "0;"; } libvirtComputingResource.defaultNetworkRules(conn, vmName, nic, vmSpec.getId(), secIpsStr); } diff --git a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/xenbase/CitrixStartCommandWrapper.java b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/xenbase/CitrixStartCommandWrapper.java index 073f00096b0..0c4a354d1f0 100644 --- a/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/xenbase/CitrixStartCommandWrapper.java +++ b/plugins/hypervisors/xenserver/src/com/cloud/hypervisor/xenserver/resource/wrapper/xenbase/CitrixStartCommandWrapper.java @@ -179,11 +179,11 @@ public Answer execute(final StartCommand command, final CitrixResourceBase citri final StringBuilder sb = new StringBuilder(); if (nicSecIps != null) { for (final String ip : nicSecIps) { - sb.append(ip).append(":"); + sb.append(ip).append(";"); } secIpsStr = sb.toString(); } else { - secIpsStr = "0:"; + secIpsStr = "0;"; } result = citrixResourceBase.callHostPlugin(conn, "vmops", "default_network_rules", "vmName", vmName, "vmIP", nic.getIp(), "vmMAC", nic.getMac(), "vmID", Long.toString(vmSpec.getId()), "secIps", secIpsStr); @@ -222,4 +222,4 @@ public Answer execute(final StartCommand command, final CitrixResourceBase citri } } } -} \ No newline at end of file +} diff --git a/scripts/vm/hypervisor/xenserver/vmops b/scripts/vm/hypervisor/xenserver/vmops index 93d2af21d87..58ee03097be 100755 --- a/scripts/vm/hypervisor/xenserver/vmops +++ b/scripts/vm/hypervisor/xenserver/vmops @@ -802,7 +802,7 @@ def default_network_rules(session, args): #add secodnary nic ips to ipset secIpSet = "1" - ips = sec_ips.split(':') + ips = sec_ips.split(';') ips.pop() if ips[0] == "0": secIpSet = "0"; diff --git a/scripts/vm/network/security_group.py b/scripts/vm/network/security_group.py index 0e815650bd6..c53fab8f142 100755 --- a/scripts/vm/network/security_group.py +++ b/scripts/vm/network/security_group.py @@ -481,7 +481,7 @@ def default_network_rules(vm_name, vm_id, vm_ip, vm_ip6, vm_mac, vif, brname, se #add secodnary nic ips to ipset secIpSet = "1" - ips = sec_ips.split(':') + ips = sec_ips.split(';') ips.pop() if ips[0] == "0": secIpSet = "0"; ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services