merge with master

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

Branch: refs/heads/portablepublicip
Commit: f84b6abde022b4578acc432f03a81c53839282b4
Parents: 8d53b1e 052c24c
Author: Nitin Mehta <[email protected]>
Authored: Mon May 13 17:30:42 2013 +0530
Committer: Nitin Mehta <[email protected]>
Committed: Mon May 13 17:30:42 2013 +0530

----------------------------------------------------------------------
 api/src/com/cloud/agent/api/to/DnsmasqTO.java      |   53 +++
 .../exception/MissingParameterValueException.java  |   25 +
 .../cloud/network/element/DhcpServiceProvider.java |    2 +
 api/src/com/cloud/vm/NicIpAlias.java               |   45 ++
 client/tomcatconf/applicationContext.xml.in        |    1 +
 .../agent/api/routing/CreateIpAliasCommand.java    |   36 ++
 .../agent/api/routing/DeleteIpAliasCommand.java    |   50 +++
 .../agent/api/routing/DnsMasqConfigCommand.java    |   65 +++
 .../src/com/cloud/agent/api/routing/IpAliasTO.java |   42 ++
 .../virtualnetwork/VirtualRoutingResource.java     |  117 ++++-
 .../src/com/cloud/network/DnsMasqConfigurator.java |  118 +++++
 engine/schema/src/com/cloud/dc/dao/VlanDao.java    |    6 +-
 .../schema/src/com/cloud/dc/dao/VlanDaoImpl.java   |   38 +-
 .../src/com/cloud/network/dao/IPAddressDao.java    |    8 +-
 .../com/cloud/network/dao/IPAddressDaoImpl.java    |   39 +-
 engine/schema/src/com/cloud/vm/dao/NicDao.java     |    6 +-
 engine/schema/src/com/cloud/vm/dao/NicDaoImpl.java |   19 +-
 .../storage/volume/VolumeServiceImpl.java          |    5 +-
 .../systemvm/debian/config/root/createIpAlias.sh   |   35 ++
 .../systemvm/debian/config/root/deleteIpAlias.sh   |   43 ++
 patches/systemvm/debian/config/root/dnsmasq.sh     |   43 ++
 .../networkservice/BaremetalDhcpElement.java       |   41 +-
 .../hypervisor/vmware/resource/VmwareResource.java |  199 +++++++--
 .../xen/resource/CitrixResourceBase.java           |  166 +++++--
 .../com/cloud/network/element/MidoNetElement.java  |   59 ++-
 scripts/vm/hypervisor/xenserver/createipAlias.sh   |   26 ++
 scripts/vm/hypervisor/xenserver/deleteipAlias.sh   |   25 +
 scripts/vm/hypervisor/xenserver/vmops              |   45 ++-
 scripts/vm/hypervisor/xenserver/xcpserver/patch    |    2 +
 scripts/vm/hypervisor/xenserver/xenserver56/patch  |    2 +
 .../vm/hypervisor/xenserver/xenserver56fp1/patch   |    2 +
 scripts/vm/hypervisor/xenserver/xenserver60/patch  |    2 +
 .../cloud/configuration/ConfigurationManager.java  |    2 -
 .../configuration/ConfigurationManagerImpl.java    |  344 ++++++++++++---
 server/src/com/cloud/network/NetworkManager.java   |    4 +
 .../src/com/cloud/network/NetworkManagerImpl.java  |   30 ++-
 server/src/com/cloud/network/addr/PublicIp.java    |    4 +
 .../network/element/VirtualRouterElement.java      |   59 +++
 .../router/VirtualNetworkApplianceManager.java     |   13 +-
 .../router/VirtualNetworkApplianceManagerImpl.java |  273 ++++++++++--
 server/src/com/cloud/vm/dao/NicIpAliasDao.java     |   61 +++
 server/src/com/cloud/vm/dao/NicIpAliasDaoImpl.java |  186 ++++++++
 server/src/com/cloud/vm/dao/NicIpAliasVO.java      |  226 ++++++++++
 .../cloud/configuration/ValidateIpRangeTest.java   |   71 +++
 .../com/cloud/network/MockNetworkManagerImpl.java  |   11 +
 .../cloud/vpc/MockConfigurationManagerImpl.java    |   71 ++--
 .../test/com/cloud/vpc/MockNetworkManagerImpl.java |   25 +-
 .../vpc/MockVpcVirtualNetworkApplianceManager.java |   10 +
 .../networkoffering/CreateNetworkOfferingTest.java |   29 +-
 server/test/resources/createNetworkOffering.xml    |   21 +-
 setup/db/db/schema-410to420.sql                    |   20 +-
 51 files changed, 2456 insertions(+), 369 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f84b6abd/client/tomcatconf/applicationContext.xml.in
----------------------------------------------------------------------
diff --cc client/tomcatconf/applicationContext.xml.in
index d85839e,1bd2f82..6406660
--- a/client/tomcatconf/applicationContext.xml.in
+++ b/client/tomcatconf/applicationContext.xml.in
@@@ -258,8 -258,8 +258,9 @@@
    <bean id="networkRuleConfigDaoImpl" 
class="com.cloud.network.dao.NetworkRuleConfigDaoImpl" />
    <bean id="networkServiceMapDaoImpl" 
class="com.cloud.network.dao.NetworkServiceMapDaoImpl" />
    <bean id="nicDaoImpl" class="com.cloud.vm.dao.NicDaoImpl" />
 +  <bean id="nicDetailDaoImpl" class="com.cloud.vm.dao.NicDetailDaoImpl" />
    <bean id="nicSecondaryIpDaoImpl" 
class="com.cloud.vm.dao.NicSecondaryIpDaoImpl" />
+   <bean id="nicIpAliasDaoImpl" class="com.cloud.vm.dao.NicIpAliasDaoImpl" />
    <bean id="objectInDataStoreDaoImpl" 
class="org.apache.cloudstack.storage.db.ObjectInDataStoreDaoImpl" />
    <bean id="ovsTunnelInterfaceDaoImpl" 
class="com.cloud.network.ovs.dao.OvsTunnelInterfaceDaoImpl" />
    <bean id="ovsTunnelNetworkDaoImpl" 
class="com.cloud.network.ovs.dao.OvsTunnelNetworkDaoImpl" />

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f84b6abd/server/src/com/cloud/configuration/ConfigurationManager.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f84b6abd/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/configuration/ConfigurationManagerImpl.java
index 87fd8ff,ce2493c..55e7b7e
--- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
+++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
@@@ -2464,11 -2538,69 +2540,69 @@@ public class ConfigurationManagerImpl e
          return vlan;
      }
  
+     public boolean validateIpRange(String startIP, String endIP, String 
newVlanGateway, String newVlanNetmask, List<VlanVO> vlans, boolean ipv4, 
boolean ipv6, String ip6Gateway, String ip6Cidr, String startIPv6, String 
endIPv6, Network network) {
+         String vlanGateway;
+         String vlanNetmask;
+         boolean sameSubnet = false;
+         if ( vlans != null && vlans.size() > 0 ) {
+ 
+             for (VlanVO vlan : vlans) {
+                 if (ipv4) {
+                     vlanGateway = vlan.getVlanGateway();
+                     vlanNetmask = vlan.getVlanNetmask();
+                     // Check if ip addresses are in network range
+                     if (!NetUtils.sameSubnet(startIP, vlanGateway, 
vlanNetmask)) {
+                         if (!NetUtils.sameSubnet(endIP, vlanGateway, 
vlanNetmask)) {
+                                 // check if the the new subnet is not a 
superset of the existing subnets.
+                                 if 
(NetUtils.isNetworkAWithinNetworkB(NetUtils.getCidrFromGatewayAndNetmask(vlanGateway,vlanNetmask),
 NetUtils.ipAndNetMaskToCidr(startIP, newVlanNetmask))){
+                                     throw new InvalidParameterValueException 
("The new subnet is a superset of the existing subnet");
+                                 }
+                                 // check if the new subnet is not a subset of 
the existing subnet.
+                                 if 
(NetUtils.isNetworkAWithinNetworkB(NetUtils.ipAndNetMaskToCidr(startIP, 
newVlanNetmask), 
NetUtils.getCidrFromGatewayAndNetmask(vlanGateway,vlanNetmask))){
+                                     throw  new 
InvalidParameterValueException("The new subnet is a subset of the existing 
subnet");
+                                 }
+                         }
+                     } else if (NetUtils.sameSubnet(endIP, vlanGateway, 
vlanNetmask)){
+                         // trying to add to the same subnet.
+                         sameSubnet = true;
+                         if (newVlanGateway == null) {
+                             newVlanGateway = vlanGateway;
+                         }
+                         if (!newVlanGateway.equals(vlanGateway)){
+                             throw new InvalidParameterValueException("The 
gateway of the ip range is not same as the gateway of the subnet.");
+                         }
+                         break;
+                     }
+                     else {
+                         throw new InvalidParameterValueException("Start ip 
and End ip is not in vlan range!");
+                     }
+                 }
+                 if (ipv6) {
+                     if (ip6Gateway != null && 
!ip6Gateway.equals(network.getIp6Gateway())) {
+                        throw new InvalidParameterValueException("The input 
gateway " + ip6Gateway + " is not same as network gateway " + 
network.getIp6Gateway());
+                     }
+                     if (ip6Cidr != null && 
!ip6Cidr.equals(network.getIp6Cidr())) {
+                        throw new InvalidParameterValueException("The input 
cidr " + ip6Cidr + " is not same as network ciddr " + network.getIp6Cidr());
+                     }
+                     ip6Gateway = network.getIp6Gateway();
+                     ip6Cidr = network.getIp6Cidr();
+                     _networkModel.checkIp6Parameters(startIPv6, endIPv6, 
ip6Gateway, ip6Cidr);
+                 }
+             }
+             if (sameSubnet == false) {
+                 if (newVlanGateway ==null)  {
+                     throw  new MissingParameterValueException("The gateway 
for the new subnet is not specified.");
+                 }
+             }
+         }
+         return  sameSubnet;
+     }
+ 
      @Override
      @DB
 -    public Vlan createVlanAndPublicIpRange(long zoneId, long networkId, long 
physicalNetworkId, boolean forVirtualNetwork, Long podId, 
 -            String startIP, String endIP, String vlanGateway, String 
vlanNetmask,
 -            String vlanId, Account vlanOwner, String startIPv6, String 
endIPv6, String vlanIp6Gateway, String vlanIp6Cidr) {
 +    public Vlan createVlanAndPublicIpRange(long zoneId, long networkId, long 
physicalNetworkId, boolean forVirtualNetwork, Long podId,
 +                                           String startIP, String endIP, 
String vlanGateway, String vlanNetmask,
 +                                           String vlanId, Account vlanOwner, 
String startIPv6, String endIPv6, String vlanIp6Gateway, String vlanIp6Cidr) {
          Network network = _networkModel.getNetwork(networkId);
          
          boolean ipv4 = false, ipv6 = false;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f84b6abd/server/src/com/cloud/network/NetworkManager.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f84b6abd/server/src/com/cloud/network/NetworkManagerImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f84b6abd/server/test/com/cloud/network/MockNetworkManagerImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f84b6abd/server/test/com/cloud/vpc/MockConfigurationManagerImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f84b6abd/server/test/com/cloud/vpc/MockNetworkManagerImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/f84b6abd/setup/db/db/schema-410to420.sql
----------------------------------------------------------------------

Reply via email to