You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ah...@apache.org on 2013/01/19 01:00:14 UTC

[3/51] [abbrv] Merge branch 'master' into network-refactor-merge2

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cadca5fc/api/src/com/cloud/network/NetworkService.java
----------------------------------------------------------------------
diff --cc api/src/com/cloud/network/NetworkService.java
index b93be6f,b3332a3..786afb1
--- a/api/src/com/cloud/network/NetworkService.java
+++ b/api/src/com/cloud/network/NetworkService.java
@@@ -17,11 -17,13 +17,11 @@@
  package com.cloud.network;
  
  import java.util.List;
 -import java.util.Map;
 -import java.util.Set;
  
- import com.cloud.api.commands.CreateNetworkCmd;
- import com.cloud.api.commands.ListNetworksCmd;
- import com.cloud.api.commands.ListTrafficTypeImplementorsCmd;
- import com.cloud.api.commands.RestartNetworkCmd;
+ import org.apache.cloudstack.api.command.admin.usage.ListTrafficTypeImplementorsCmd;
+ import org.apache.cloudstack.api.command.user.network.RestartNetworkCmd;
+ import org.apache.cloudstack.api.command.user.network.CreateNetworkCmd;
+ import org.apache.cloudstack.api.command.user.network.ListNetworksCmd;
  import com.cloud.exception.ConcurrentOperationException;
  import com.cloud.exception.InsufficientAddressCapacityException;
  import com.cloud.exception.InsufficientCapacityException;
@@@ -62,20 -60,34 +61,22 @@@ public interface NetworkService 
  
      Network getNetwork(long networkId);
  
+     Network getNetwork(String networkUuid);
+ 
      IpAddress getIp(long id);
  
 -    NetworkProfile convertNetworkToNetworkProfile(long networkId);
 -
 -    Map<Service, Map<Capability, String>> getNetworkCapabilities(long networkId);
 -
 -    boolean isNetworkAvailableInDomain(long networkId, long domainId);
 -
 -    Long getDedicatedNetworkDomain(long networkId);
  
      Network updateGuestNetwork(long networkId, String name, String displayText, Account callerAccount, User callerUser,
              String domainSuffix, Long networkOfferingId, Boolean changeCidr);
  
 -    Integer getNetworkRate(long networkId, Long vmId);
  
 -    Network getSystemNetworkByZoneAndTrafficType(long zoneId, TrafficType trafficType);
 -
 -    Map<Service, Set<Provider>> getNetworkOfferingServiceProvidersMap(long networkOfferingId);
 -
 -    PhysicalNetwork createPhysicalNetwork(Long zoneId, String vnetRange, String networkSpeed,
 +    PhysicalNetwork createPhysicalNetwork(Long zoneId, String vnetRange, String networkSpeed, 
              List<String> isolationMethods, String broadcastDomainRange, Long domainId, List<String> tags, String name);
  
-     Pair<List<? extends PhysicalNetwork>, Integer> searchPhysicalNetworks(Long id, Long zoneId, String keyword, 
+     Pair<List<? extends PhysicalNetwork>, Integer> searchPhysicalNetworks(Long id, Long zoneId, String keyword,
              Long startIndex, Long pageSize, String name);
  
-     PhysicalNetwork updatePhysicalNetwork(Long id, String networkSpeed, List<String> tags, 
+     PhysicalNetwork updatePhysicalNetwork(Long id, String networkSpeed, List<String> tags,
              String newVnetRangeString, String state);
  
      boolean deletePhysicalNetwork(Long id);
@@@ -146,12 -163,16 +147,12 @@@
       * @param networkOwnerId
       * @param vpcId TODO
       * @return
-      * @throws InsufficientCapacityException 
-      * @throws ConcurrentOperationException 
-      * @throws ResourceAllocationException 
+      * @throws InsufficientCapacityException
+      * @throws ConcurrentOperationException
+      * @throws ResourceAllocationException
       */
      Network createPrivateNetwork(String networkName, String displayText, long physicalNetworkId, String vlan,
-             String startIp, String endIP, String gateway, String netmask, long networkOwnerId, Long vpcId) 
+             String startIp, String endIP, String gateway, String netmask, long networkOwnerId, Long vpcId)
                      throws ResourceAllocationException, ConcurrentOperationException, InsufficientCapacityException;
 -    /**
 -     * @param network
 -     * @return
 -     */
 -    boolean canUseForDeploy(Network network);
 + 
  }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cadca5fc/api/src/com/cloud/network/element/IpDeployer.java
----------------------------------------------------------------------
diff --cc api/src/com/cloud/network/element/IpDeployer.java
index 8036d4b,55b21ab..c92d3e3
--- a/api/src/com/cloud/network/element/IpDeployer.java
+++ b/api/src/com/cloud/network/element/IpDeployer.java
@@@ -21,11 -21,11 +21,12 @@@ import java.util.Set
  
  import com.cloud.exception.ResourceUnavailableException;
  import com.cloud.network.Network;
+ import com.cloud.network.Network.Provider;
  import com.cloud.network.Network.Service;
  import com.cloud.network.PublicIpAddress;
 +import com.cloud.utils.component.Adapter;
  
 -public interface IpDeployer {
 +public interface IpDeployer extends Adapter{
      /**
       * Apply ip addresses to this network
       * @param network

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cadca5fc/api/src/com/cloud/network/element/RemoteAccessVPNServiceProvider.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cadca5fc/api/src/com/cloud/network/element/Site2SiteVpnServiceProvider.java
----------------------------------------------------------------------
diff --cc api/src/com/cloud/network/element/Site2SiteVpnServiceProvider.java
index eadf801,a61273a..dd45132
--- a/api/src/com/cloud/network/element/Site2SiteVpnServiceProvider.java
+++ b/api/src/com/cloud/network/element/Site2SiteVpnServiceProvider.java
@@@ -17,11 -17,11 +17,11 @@@
  package com.cloud.network.element;
  
  import com.cloud.exception.ResourceUnavailableException;
 -import com.cloud.network.Network;
  import com.cloud.network.Site2SiteVpnConnection;
 +import com.cloud.utils.component.Adapter;
  
 -public interface Site2SiteVpnServiceProvider extends NetworkElement {
 +public interface Site2SiteVpnServiceProvider extends Adapter {
      boolean startSite2SiteVpn(Site2SiteVpnConnection conn) throws ResourceUnavailableException;
-     
+ 
      boolean stopSite2SiteVpn(Site2SiteVpnConnection conn) throws ResourceUnavailableException;
  }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cadca5fc/client/tomcatconf/components.xml.in
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cadca5fc/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cadca5fc/plugins/network-elements/f5/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java
----------------------------------------------------------------------
diff --cc plugins/network-elements/f5/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java
index 4c557cc,70faacc..2e6f6e7
--- a/plugins/network-elements/f5/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java
+++ b/plugins/network-elements/f5/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java
@@@ -61,9 -65,10 +65,10 @@@ import com.cloud.network.Network.Capabi
  import com.cloud.network.Network.Provider;
  import com.cloud.network.Network.Service;
  import com.cloud.network.NetworkExternalLoadBalancerVO;
 -import com.cloud.network.NetworkManager;
 +import com.cloud.network.NetworkModel;
  import com.cloud.network.NetworkVO;
  import com.cloud.network.Networks.TrafficType;
+ import com.cloud.network.PhysicalNetwork;
  import com.cloud.network.PhysicalNetworkServiceProvider;
  import com.cloud.network.PhysicalNetworkVO;
  import com.cloud.network.PublicIpAddress;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cadca5fc/plugins/network-elements/juniper-srx/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java
----------------------------------------------------------------------
diff --cc plugins/network-elements/juniper-srx/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java
index c6cac55,ead2af9..5038cc8
--- a/plugins/network-elements/juniper-srx/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java
+++ b/plugins/network-elements/juniper-srx/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java
@@@ -61,8 -64,9 +64,9 @@@ import com.cloud.network.Network.Capabi
  import com.cloud.network.Network.Provider;
  import com.cloud.network.Network.Service;
  import com.cloud.network.NetworkExternalFirewallVO;
 -import com.cloud.network.NetworkManager;
 +import com.cloud.network.NetworkModel;
  import com.cloud.network.NetworkVO;
+ import com.cloud.network.PhysicalNetwork;
  import com.cloud.network.PhysicalNetworkServiceProvider;
  import com.cloud.network.PhysicalNetworkVO;
  import com.cloud.network.PublicIpAddress;
@@@ -88,11 -93,9 +93,11 @@@ import com.cloud.vm.ReservationContext
  import com.cloud.vm.VirtualMachine;
  import com.cloud.vm.VirtualMachineProfile;
  
 -@Local(value = NetworkElement.class)
 +@Local(value = {NetworkElement.class, FirewallServiceProvider.class, 
 +		PortForwardingServiceProvider.class, IpDeployer.class, 
 +		SourceNatServiceProvider.class, RemoteAccessVPNServiceProvider.class})
  public class JuniperSRXExternalFirewallElement extends ExternalFirewallDeviceManagerImpl implements SourceNatServiceProvider, FirewallServiceProvider,
-         PortForwardingServiceProvider, RemoteAccessVPNServiceProvider, IpDeployer, JuniperSRXFirewallElementService {
+         PortForwardingServiceProvider, RemoteAccessVPNServiceProvider, IpDeployer, JuniperSRXFirewallElementService, StaticNatServiceProvider {
  
      private static final Logger s_logger = Logger.getLogger(JuniperSRXExternalFirewallElement.class);
  

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cadca5fc/plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java
----------------------------------------------------------------------
diff --cc plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java
index 18bee32,c0f91bb..c2dc1e0
--- a/plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java
+++ b/plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java
@@@ -73,9 -77,10 +77,10 @@@ import com.cloud.network.Network.Capabi
  import com.cloud.network.Network.Provider;
  import com.cloud.network.Network.Service;
  import com.cloud.network.NetworkExternalLoadBalancerVO;
 -import com.cloud.network.NetworkManager;
 +import com.cloud.network.NetworkModel;
  import com.cloud.network.NetworkVO;
  import com.cloud.network.Networks.TrafficType;
+ import com.cloud.network.PhysicalNetwork;
  import com.cloud.network.PhysicalNetworkServiceProvider;
  import com.cloud.network.PhysicalNetworkVO;
  import com.cloud.network.PublicIpAddress;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cadca5fc/plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java
----------------------------------------------------------------------
diff --cc plugins/network-elements/nicira-nvp/src/com/cloud/network/element/NiciraNvpElement.java
index de6a629,6bcaeee..de03fa2
--- 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
@@@ -881,9 -890,9 +887,9 @@@ public class NiciraNvpElement extends A
  			return false;
  		}
  
- 		List<StaticNatRuleTO> staticNatRules = new ArrayList<StaticNatRuleTO>(); 
+ 		List<StaticNatRuleTO> staticNatRules = new ArrayList<StaticNatRuleTO>();
          for (StaticNat rule : rules) {
 -            IpAddress sourceIp = _networkManager.getIp(rule.getSourceIpAddressId());
 +            IpAddress sourceIp = _networkModel.getIp(rule.getSourceIpAddressId());
              // Force the nat rule into the StaticNatRuleTO, no use making a new TO object
              // we only need the source and destination ip. Unfortunately no mention if a rule
              // is new.
@@@ -928,10 -937,10 +934,10 @@@
  					+ network.getDisplayText());
  			return false;
  		}
- 		
- 		List<PortForwardingRuleTO> portForwardingRules = new ArrayList<PortForwardingRuleTO>(); 
+ 
+ 		List<PortForwardingRuleTO> portForwardingRules = new ArrayList<PortForwardingRuleTO>();
          for (PortForwardingRule rule : rules) {
 -            IpAddress sourceIp = _networkManager.getIp(rule.getSourceIpAddressId());
 +            IpAddress sourceIp = _networkModel.getIp(rule.getSourceIpAddressId());
              Vlan vlan = _vlanDao.findById(sourceIp.getVlanId());
              PortForwardingRuleTO ruleTO = new PortForwardingRuleTO((PortForwardingRule) rule, vlan.getVlanTag(), sourceIp.getAddress().addr());
              portForwardingRules.add(ruleTO);

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cadca5fc/server/src/com/cloud/acl/DomainChecker.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/acl/DomainChecker.java
index ca7be92,9bb1cce..24f632b
--- a/server/src/com/cloud/acl/DomainChecker.java
+++ b/server/src/com/cloud/acl/DomainChecker.java
@@@ -39,16 -40,22 +40,16 @@@ import com.cloud.user.dao.AccountDao
  import com.cloud.utils.component.AdapterBase;
  import com.cloud.utils.component.Inject;
  
- @Local(value=SecurityChecker.class)
+ @Local(value = SecurityChecker.class)
  public class DomainChecker extends AdapterBase implements SecurityChecker {
 -
 -    @Inject
 -    DomainDao _domainDao;
 -    @Inject
 -    AccountDao _accountDao;
 -    @Inject
 -    LaunchPermissionDao _launchPermissionDao;
 -    @Inject
 -    ProjectManager _projectMgr;
 -    @Inject
 -    ProjectAccountDao _projecAccountDao;
 -    @Inject
 -    NetworkManager _networkMgr;
 -
 +    
 +    @Inject DomainDao _domainDao;
 +    @Inject AccountDao _accountDao;
 +    @Inject LaunchPermissionDao _launchPermissionDao;
 +    @Inject ProjectManager _projectMgr;
 +    @Inject ProjectAccountDao _projecAccountDao;
 +    @Inject NetworkModel _networkMgr;
 +    
      protected DomainChecker() {
          super();
      }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cadca5fc/server/src/com/cloud/api/ApiDBUtils.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/api/ApiDBUtils.java
index d2abc29,5e8a044..dfdeb9c
--- a/server/src/com/cloud/api/ApiDBUtils.java
+++ b/server/src/com/cloud/api/ApiDBUtils.java
@@@ -833,13 -974,13 +977,13 @@@ public class ApiDBUtils 
      public static Map<Service, Set<Provider>> listVpcOffServices(long vpcOffId) {
          return _vpcMgr.getVpcOffSvcProvidersMap(vpcOffId);
      }
-     
+ 
      public static List<? extends Network> listVpcNetworks(long vpcId) {
 -        return _networkMgr.listNetworksByVpc(vpcId);
 +        return _networkModel.listNetworksByVpc(vpcId);
      }
-     
+ 
      public static boolean canUseForDeploy(Network network) {
 -        return _networkMgr.canUseForDeploy(network);
 +        return _networkModel.canUseForDeploy(network);
      }
  
      public static String getUuid(String resourceId, TaggedResourceType resourceType) {

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cadca5fc/server/src/com/cloud/baremetal/BareMetalVmManagerImpl.java
----------------------------------------------------------------------

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

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

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cadca5fc/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cadca5fc/server/src/com/cloud/network/ExternalFirewallDeviceManagerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/network/ExternalFirewallDeviceManagerImpl.java
index 6b05e25,42cdc74..582e86b
--- a/server/src/com/cloud/network/ExternalFirewallDeviceManagerImpl.java
+++ b/server/src/com/cloud/network/ExternalFirewallDeviceManagerImpl.java
@@@ -377,14 -414,14 +414,14 @@@ public abstract class ExternalFirewallD
          }
  
          Account account = _accountDao.findByIdIncludingRemoved(network.getAccountId());
-         
-         NetworkOffering offering = _networkOfferingDao.findById(network.getNetworkOfferingId());      
+ 
+         NetworkOffering offering = _networkOfferingDao.findById(network.getNetworkOfferingId());
          boolean sharedSourceNat = offering.getSharedSourceNat();
-         
+ 
          IPAddressVO sourceNatIp = null;
          if (!sharedSourceNat) {
 -            // Get the source NAT IP address for this account
 -            List<IPAddressVO> sourceNatIps = _networkMgr.listPublicIpsAssignedToAccount(network.getAccountId(),
 +            // Get the source NAT IP address for this account          
 +            List<? extends IpAddress> sourceNatIps = _networkMgr.listPublicIpsAssignedToAccount(network.getAccountId(), 
                      zoneId, true);
  
              if (sourceNatIps.size() != 1) {

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cadca5fc/server/src/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java
index 97c6306,4f9404e..718f130
--- a/server/src/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java
+++ b/server/src/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java
@@@ -803,65 -861,16 +863,16 @@@ public abstract class ExternalLoadBalan
              String protocol = rule.getProtocol();
              String algorithm = rule.getAlgorithm();
              String uuid = rule.getUuid();
 -            String srcIp = _networkMgr.getIp(rule.getSourceIpAddressId()).getAddress().addr();
 +            String srcIp = _networkModel.getIp(rule.getSourceIpAddressId()).getAddress().addr();
              int srcPort = rule.getSourcePortStart();
              List<LbDestination> destinations = rule.getDestinations();
-             List<String> sourceCidrs = rule.getSourceCidrList();
  
              if (externalLoadBalancerIsInline) {
-                 InlineLoadBalancerNicMapVO mapping = _inlineLoadBalancerNicMapDao.findByPublicIpAddress(srcIp);
-                 NicVO loadBalancingIpNic = null;
-                 HostVO firewallProviderHost = null;
- 
-                 if (externalLoadBalancerIsInline) {
-                     firewallProviderHost = getFirewallProviderForNetwork(network);
-                 }
- 
-                 if (!revoked) {
-                     if (mapping == null) {
-                         // Acquire a new guest IP address and save it as the load balancing IP address
-                         String loadBalancingIpAddress = _networkMgr.acquireGuestIpAddress(network, null);
- 
-                         if (loadBalancingIpAddress == null) {
-                             String msg = "Ran out of guest IP addresses.";
-                             s_logger.error(msg);
-                             throw new ResourceUnavailableException(msg, DataCenter.class, network.getDataCenterId());
-                         }
- 
-                         // If a NIC doesn't exist for the load balancing IP address, create one
-                         loadBalancingIpNic = _nicDao.findByIp4AddressAndNetworkId(loadBalancingIpAddress, network.getId());
-                         if (loadBalancingIpNic == null) {
-                             loadBalancingIpNic = savePlaceholderNic(network, loadBalancingIpAddress);
-                         }
- 
-                         // Save a mapping between the source IP address and the load balancing IP address NIC
-                         mapping = new InlineLoadBalancerNicMapVO(rule.getId(), srcIp, loadBalancingIpNic.getId());
-                         _inlineLoadBalancerNicMapDao.persist(mapping);
- 
-                         // On the firewall provider for the network, create a static NAT rule between the source IP
- // address and the load balancing IP address
-                         applyStaticNatRuleForInlineLBRule(zone, network, firewallProviderHost, revoked, srcIp, loadBalancingIpNic.getIp4Address());
-                     } else {
-                         loadBalancingIpNic = _nicDao.findById(mapping.getNicId());
-                     }
-                 } else {
-                     if (mapping != null) {
-                         // Find the NIC that the mapping refers to
-                         loadBalancingIpNic = _nicDao.findById(mapping.getNicId());
- 
-                         // On the firewall provider for the network, delete the static NAT rule between the source IP
- // address and the load balancing IP address
-                         applyStaticNatRuleForInlineLBRule(zone, network, firewallProviderHost, revoked, srcIp, loadBalancingIpNic.getIp4Address());
- 
-                         // Delete the mapping between the source IP address and the load balancing IP address
-                         _inlineLoadBalancerNicMapDao.expunge(mapping.getId());
- 
-                         // Delete the NIC
-                         _nicDao.expunge(loadBalancingIpNic.getId());
-                     } else {
-                         s_logger.debug("Revoking a rule for an inline load balancer that has not been programmed yet.");
-                         continue;
-                     }
+                 MappingNic nic = getLoadBalancingIpNic(zone, network, rule.getSourceIpAddressId(), revoked, null);
+                 mappingStates.add(nic.getState());
+                 NicVO loadBalancingIpNic = nic.getNic();
+                 if (loadBalancingIpNic == null) {
+                     continue;
                  }
  
                  // Change the source IP address for the load balancing rule to be the load balancing IP address
@@@ -932,9 -970,15 +972,15 @@@
          long guestVlanTag = Long.parseLong(guestConfig.getBroadcastUri().getHost());
          String selfIp = null;
          String guestVlanNetmask = NetUtils.cidr2Netmask(guestConfig.getCidr());
 -        Integer networkRate = _networkMgr.getNetworkRate(guestConfig.getId(), null);
 +        Integer networkRate = _networkModel.getNetworkRate(guestConfig.getId(), null);
  
          if (add) {
+ 		    // on restart network, network could have already been implemented. If already implemented then return
+             NicVO selfipNic = getPlaceholderNic(guestConfig);
+             if (selfipNic != null) {
+ 		    return true;
+             }
+ 
              // Acquire a self-ip address from the guest network IP address range
              selfIp = _networkMgr.acquireGuestIpAddress(guestConfig, null);
              if (selfIp == null) {

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

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/cadca5fc/server/src/com/cloud/network/NetworkManager.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/network/NetworkManager.java
index d4a9b5c,0ca28f8..546f1bf
--- a/server/src/com/cloud/network/NetworkManager.java
+++ b/server/src/com/cloud/network/NetworkManager.java
@@@ -16,11 -16,14 +16,11 @@@
  // under the License.
  package com.cloud.network;
  
 -import java.util.ArrayList;
  import java.util.List;
  import java.util.Map;
 -import java.util.Set;
  
- import com.cloud.acl.ControlledEntity.ACLType;
+ import org.apache.cloudstack.acl.ControlledEntity.ACLType;
  import com.cloud.dc.DataCenter;
 -import com.cloud.dc.Vlan;
  import com.cloud.dc.Vlan.VlanType;
  import com.cloud.deploy.DataCenterDeployment;
  import com.cloud.deploy.DeployDestination;
@@@ -31,8 -34,17 +31,11 @@@ import com.cloud.exception.Insufficient
  import com.cloud.exception.InsufficientVirtualNetworkCapcityException;
  import com.cloud.exception.ResourceAllocationException;
  import com.cloud.exception.ResourceUnavailableException;
 -import com.cloud.hypervisor.Hypervisor.HypervisorType;
 -import com.cloud.network.Network.Capability;
  import com.cloud.network.Network.Provider;
+ import com.cloud.network.Network.Service;
 -import com.cloud.network.Networks.TrafficType;
  import com.cloud.network.addr.PublicIp;
+ import com.cloud.network.element.LoadBalancingServiceProvider;
 -import com.cloud.network.element.NetworkElement;
 -import com.cloud.network.element.RemoteAccessVPNServiceProvider;
 -import com.cloud.network.element.Site2SiteVpnServiceProvider;
+ import com.cloud.network.element.StaticNatServiceProvider;
  import com.cloud.network.element.UserDataServiceProvider;
  import com.cloud.network.guru.NetworkGuru;
  import com.cloud.network.rules.FirewallRule;
@@@ -291,29 -484,12 +294,37 @@@ public interface NetworkManager  
       */
      int getNetworkLockTimeout();
  
 +
 +    boolean cleanupIpResources(long addrId, long userId, Account caller);
 +
 +
 +    boolean restartNetwork(Long networkId, Account callerAccount,
 +            User callerUser, boolean cleanup) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException;
 +
 +
 +    boolean shutdownNetworkElementsAndResources(ReservationContext context,
 +            boolean b, NetworkVO network);
 +
 +
 +	void implementNetworkElementsAndResources(DeployDestination dest,
 +			ReservationContext context, NetworkVO network,
 +			NetworkOfferingVO findById) throws ConcurrentOperationException, InsufficientAddressCapacityException, ResourceUnavailableException, InsufficientCapacityException;
 +
 +
- 	IpAddress allocateIp(Account ipOwner, boolean isSystem, Account caller,
++	IpAddress allocateIp(Account ipOwner, boolean isSystem, Account caller, long callerId,
 +			DataCenter zone) throws ConcurrentOperationException, ResourceAllocationException, InsufficientAddressCapacityException;
 +
 +
 +	Map<String, String> finalizeServicesAndProvidersForNetwork(NetworkOffering offering,
 +			Long physicalNetworkId);
 +
 +
+     List<Provider> getProvidersForServiceInNetwork(Network network, Service service);
+ 
+     StaticNatServiceProvider getStaticNatProviderForNetwork(Network network);
+     boolean isNetworkInlineMode(Network network);
+ 
+     int getRuleCountForIp(Long addressId, FirewallRule.Purpose purpose, FirewallRule.State state);
+ 
+     LoadBalancingServiceProvider getLoadBalancingProviderForNetwork(Network network);
  }