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

[19/39] git commit: Network-refactor: Refactor NetworkManager into NetworkModel and NetworkManager. NetworkManager's exclusive focus is now - handling plugins during orchestration, and - to deal with ip address allocation. Those classes that used to re

Network-refactor: Refactor NetworkManager into NetworkModel and NetworkManager.
NetworkManager's exclusive focus is now
 - handling plugins during orchestration, and
 - to deal with ip address allocation.
Those classes that used to refer to NetworkManager to get access to the datamodel now refer to NetworkModel

Signed-off-by: Chiradeep Vittal <ch...@apache.org>


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

Branch: refs/heads/master
Commit: 5a830c4db048f33296d3f4b6df40c54c739aab04
Parents: af1abe4
Author: Chiradeep Vittal <ch...@apache.org>
Authored: Mon Jan 7 18:30:35 2013 -0800
Committer: Chiradeep Vittal <ch...@apache.org>
Committed: Wed Jan 9 15:49:01 2013 -0800

----------------------------------------------------------------------
 .../src/com/cloud/hypervisor/guru/VMwareGuru.java  |    4 +-
 .../hypervisor/vmware/VmwareServerDiscoverer.java  |    4 +-
 .../vmware/manager/VmwareManagerImpl.java          |    4 +-
 .../element/ElasticLoadBalancerElement.java        |    4 +-
 .../network/lb/ElasticLoadBalancerManagerImpl.java |   17 +-
 .../element/F5ExternalLoadBalancerElement.java     |    4 +-
 .../element/JuniperSRXExternalFirewallElement.java |    4 +-
 .../cloud/network/element/NetscalerElement.java    |    6 +-
 .../cloud/network/element/NiciraNvpElement.java    |  105 +-
 .../network/guru/NiciraNvpGuestNetworkGuru.java    |    8 +-
 .../network/element/NiciraNvpElementTest.java      |    9 +-
 .../guru/NiciraNvpGuestNetworkGuruTest.java        |   13 +-
 .../cloud/network/guru/OvsGuestNetworkGuru.java    |   19 +-
 server/src/com/cloud/acl/DomainChecker.java        |    4 +-
 server/src/com/cloud/api/ApiDBUtils.java           |   25 +-
 .../com/cloud/async/AsyncJobExecutorContext.java   |    4 +-
 .../cloud/async/AsyncJobExecutorContextImpl.java   |    9 +-
 .../cloud/baremetal/BareMetalVmManagerImpl.java    |    2 +-
 .../configuration/ConfigurationManagerImpl.java    |   57 +-
 .../consoleproxy/ConsoleProxyManagerImpl.java      |    5 +-
 .../cloud/ha/ManagementIPSystemVMInvestigator.java |    4 +-
 .../src/com/cloud/ha/UserVmDomRInvestigator.java   |    4 +-
 .../kvm/discoverer/KvmServerDiscoverer.java        |    4 +-
 .../network/ExternalFirewallDeviceManagerImpl.java |    2 +-
 .../ExternalLoadBalancerDeviceManagerImpl.java     |    6 +-
 .../ExternalLoadBalancerUsageManagerImpl.java      |    2 +-
 .../network/ExternalNetworkDeviceManagerImpl.java  |    2 +-
 server/src/com/cloud/network/NetworkManager.java   |  227 +--
 .../src/com/cloud/network/NetworkManagerImpl.java  | 1960 ++-------------
 server/src/com/cloud/network/NetworkModel.java     |  250 ++
 server/src/com/cloud/network/NetworkModelImpl.java | 1734 +++++++++++++
 .../src/com/cloud/network/NetworkServiceImpl.java  |   20 +-
 .../network/element/CloudZonesNetworkElement.java  |    4 +-
 .../network/element/VirtualRouterElement.java      |    4 +-
 .../network/firewall/FirewallManagerImpl.java      |   11 +-
 .../com/cloud/network/guru/ControlNetworkGuru.java |    4 +-
 .../com/cloud/network/guru/DirectNetworkGuru.java  |    5 +-
 .../network/guru/DirectPodBasedNetworkGuru.java    |    2 +-
 .../network/guru/ExternalGuestNetworkGuru.java     |   14 +-
 .../com/cloud/network/guru/GuestNetworkGuru.java   |   11 +-
 .../com/cloud/network/guru/PrivateNetworkGuru.java |    4 +-
 .../network/lb/LoadBalancingRulesManagerImpl.java  |   19 +-
 .../router/VirtualNetworkApplianceManagerImpl.java |   87 +-
 .../VpcVirtualNetworkApplianceManagerImpl.java     |   56 +-
 .../com/cloud/network/rules/RulesManagerImpl.java  |   45 +-
 .../network/security/SecurityGroupManagerImpl.java |    9 +-
 .../cloud/network/vpc/NetworkACLManagerImpl.java   |    4 +-
 .../src/com/cloud/network/vpc/VpcManagerImpl.java  |   27 +-
 .../network/vpn/RemoteAccessVpnManagerImpl.java    |    4 +-
 server/src/com/cloud/resource/DiscovererBase.java  |    4 +-
 .../src/com/cloud/storage/StorageManagerImpl.java  |    4 +-
 .../secondary/SecondaryStorageManagerImpl.java     |    9 +-
 server/src/com/cloud/vm/UserVmManagerImpl.java     |   50 +-
 .../com/cloud/vm/VirtualMachineManagerImpl.java    |   15 +-
 .../com/cloud/network/MockFirewallManagerImpl.java |  183 ++
 .../com/cloud/network/MockNetworkManagerImpl.java  |  680 +----
 .../com/cloud/network/MockRulesManagerImpl.java    |  295 +++
 .../vpn/MockRemoteAccessVPNServiceProvider.java    |   62 +
 .../com/cloud/network/vpn/RemoteAccessVpnTest.java |   91 +
 .../test/com/cloud/vpc/MockNetworkManagerImpl.java | 1230 ++++------
 60 files changed, 3819 insertions(+), 3636 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5a830c4d/plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java
index 546df5f..ca03866 100644
--- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/guru/VMwareGuru.java
@@ -48,7 +48,7 @@ import com.cloud.hypervisor.HypervisorGuruBase;
 import com.cloud.hypervisor.vmware.VmwareCleanupMaid;
 import com.cloud.hypervisor.vmware.manager.VmwareManager;
 import com.cloud.hypervisor.vmware.mo.VirtualEthernetCardType;
-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.dao.NetworkDao;
@@ -84,7 +84,7 @@ public class VMwareGuru extends HypervisorGuruBase implements HypervisorGuru {
     @Inject VmwareManager _vmwareMgr;
     @Inject SecondaryStorageVmManager _secStorageMgr;
     @Inject CheckPointManager _checkPointMgr;
-    @Inject NetworkManager _networkMgr;
+    @Inject NetworkModel _networkMgr;
 
     protected VMwareGuru() {
     	super();

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5a830c4d/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/VmwareServerDiscoverer.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/VmwareServerDiscoverer.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/VmwareServerDiscoverer.java
index a75640b..684df54 100755
--- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/VmwareServerDiscoverer.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/VmwareServerDiscoverer.java
@@ -50,7 +50,7 @@ import com.cloud.hypervisor.vmware.mo.HostMO;
 import com.cloud.hypervisor.vmware.resource.VmwareContextFactory;
 import com.cloud.hypervisor.vmware.resource.VmwareResource;
 import com.cloud.hypervisor.vmware.util.VmwareContext;
-import com.cloud.network.NetworkManager;
+import com.cloud.network.NetworkModel;
 import com.cloud.network.dao.CiscoNexusVSMDeviceDao;
 import com.cloud.resource.Discoverer;
 import com.cloud.resource.DiscovererBase;
@@ -84,7 +84,7 @@ public class VmwareServerDiscoverer extends DiscovererBase implements Discoverer
     @Inject ResourceManager _resourceMgr;
     @Inject CiscoNexusVSMDeviceDao _nexusDao;
     @Inject
-    NetworkManager _netmgr;
+    NetworkModel _netmgr;
     
     @Override
     public Map<? extends ServerResource, Map<String, String>> find(long dcId, Long podId, Long clusterId, URI url, 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5a830c4d/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
----------------------------------------------------------------------
diff --git a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
index 64ded51..c450312 100755
--- a/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
+++ b/plugins/hypervisors/vmware/src/com/cloud/hypervisor/vmware/manager/VmwareManagerImpl.java
@@ -73,7 +73,7 @@ import com.cloud.hypervisor.vmware.mo.VmwareHostType;
 import com.cloud.utils.ssh.SshHelper;
 import com.cloud.hypervisor.vmware.util.VmwareContext;
 import com.cloud.network.CiscoNexusVSMDeviceVO;
-import com.cloud.network.NetworkManager;
+import com.cloud.network.NetworkModel;
 import com.cloud.network.dao.CiscoNexusVSMDeviceDao;
 import com.cloud.org.Cluster.ClusterType;
 import com.cloud.secstorage.CommandExecLogDao;
@@ -113,7 +113,7 @@ public class VmwareManagerImpl implements VmwareManager, VmwareStorageMount, Lis
 
     @Inject AgentManager _agentMgr;
     @Inject
-    protected NetworkManager _netMgr;
+    protected NetworkModel _netMgr;
     @Inject HostDao _hostDao;
     @Inject ClusterDao _clusterDao;
     @Inject ClusterDetailsDao _clusterDetailsDao;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5a830c4d/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/element/ElasticLoadBalancerElement.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/element/ElasticLoadBalancerElement.java b/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/element/ElasticLoadBalancerElement.java
index 34cbe08..201b397 100644
--- a/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/element/ElasticLoadBalancerElement.java
+++ b/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/element/ElasticLoadBalancerElement.java
@@ -36,7 +36,7 @@ import com.cloud.network.Network;
 import com.cloud.network.Network.Capability;
 import com.cloud.network.Network.Provider;
 import com.cloud.network.Network.Service;
-import com.cloud.network.NetworkManager;
+import com.cloud.network.NetworkModel;
 import com.cloud.network.Networks.TrafficType;
 import com.cloud.network.PhysicalNetworkServiceProvider;
 import com.cloud.network.PublicIpAddress;
@@ -57,7 +57,7 @@ import com.cloud.vm.VirtualMachineProfile;
 public class ElasticLoadBalancerElement extends AdapterBase implements LoadBalancingServiceProvider, IpDeployer {
     private static final Logger s_logger = Logger.getLogger(ElasticLoadBalancerElement.class);
     private static final Map<Service, Map<Capability, String>> capabilities = setCapabilities();
-    @Inject NetworkManager _networkManager;
+    @Inject NetworkModel _networkManager;
     @Inject ElasticLoadBalancerManager _lbMgr;
     @Inject ConfigurationDao _configDao;
     @Inject NetworkOfferingDao _networkOfferingDao;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5a830c4d/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java b/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
index 366070a..3d3ba9c 100644
--- a/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
+++ b/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
@@ -79,6 +79,7 @@ import com.cloud.network.Network;
 import com.cloud.network.Network.Provider;
 import com.cloud.network.Network.Service;
 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.PhysicalNetworkServiceProvider;
@@ -147,6 +148,8 @@ ElasticLoadBalancerManager, Manager,  VirtualMachineGuru<DomainRouterVO> {
     @Inject
     AgentManager _agentMgr;
     @Inject
+    NetworkModel _networkModel;
+    @Inject
     NetworkManager _networkMgr;
     @Inject
     LoadBalancerDao _loadBalancerDao = null;
@@ -291,7 +294,7 @@ ElasticLoadBalancerManager, Manager,  VirtualMachineGuru<DomainRouterVO> {
             String protocol = rule.getProtocol();
             String algorithm = rule.getAlgorithm();
 
-            String elbIp = _networkMgr.getIp(rule.getSourceIpAddressId()).getAddress()
+            String elbIp = _networkModel.getIp(rule.getSourceIpAddressId()).getAddress()
                     .addr();
             int srcPort = rule.getSourcePortStart();
             String uuid = rule.getUuid();
@@ -472,7 +475,7 @@ ElasticLoadBalancerManager, Manager,  VirtualMachineGuru<DomainRouterVO> {
 
         try {
 
-            if (_networkMgr.isNetworkSystem(guestNetwork) || guestNetwork.getGuestType() == Network.GuestType.Shared) {
+            if (_networkModel.isNetworkSystem(guestNetwork) || guestNetwork.getGuestType() == Network.GuestType.Shared) {
                 owner = _accountService.getSystemAccount();
             }
 
@@ -494,7 +497,7 @@ ElasticLoadBalancerManager, Manager,  VirtualMachineGuru<DomainRouterVO> {
                     s_logger.debug("Creating the ELB vm " + id);
                 }
 
-                List<NetworkOfferingVO> offerings = _networkMgr.getSystemAccountNetworkOfferings(NetworkOfferingVO.SystemControlNetwork);
+                List<NetworkOfferingVO> offerings = _networkModel.getSystemAccountNetworkOfferings(NetworkOfferingVO.SystemControlNetwork);
                 NetworkOfferingVO controlOffering = offerings.get(0);
                 NetworkVO controlConfig = _networkMgr.setupNetwork(_systemAcct, controlOffering, plan, null, null, false).get(0);
 
@@ -507,7 +510,7 @@ ElasticLoadBalancerManager, Manager,  VirtualMachineGuru<DomainRouterVO> {
                 VMTemplateVO template = _templateDao.findSystemVMTemplate(dcId);
 
                 String typeString = "ElasticLoadBalancerVm";
-                Long physicalNetworkId = _networkMgr.getPhysicalNetworkId(guestNetwork);
+                Long physicalNetworkId = _networkModel.getPhysicalNetworkId(guestNetwork);
                 PhysicalNetworkServiceProvider provider = _physicalProviderDao.findByServiceProvider(physicalNetworkId, typeString);
                 if (provider == null) {
                     throw new CloudRuntimeException("Cannot find service provider " + typeString + " in physical network " + physicalNetworkId);
@@ -593,7 +596,7 @@ ElasticLoadBalancerManager, Manager,  VirtualMachineGuru<DomainRouterVO> {
 
     @DB
     public PublicIp allocDirectIp(Account account, long guestNetworkId) throws InsufficientAddressCapacityException {
-        Network frontEndNetwork = _networkMgr.getNetwork(guestNetworkId);
+        Network frontEndNetwork = _networkModel.getNetwork(guestNetworkId);
         Transaction txn = Transaction.currentTxn();
         txn.start();
 
@@ -620,7 +623,7 @@ ElasticLoadBalancerManager, Manager,  VirtualMachineGuru<DomainRouterVO> {
     @DB
     public LoadBalancer handleCreateLoadBalancerRule(CreateLoadBalancerRuleCmd lb, Account account, long networkId) throws InsufficientAddressCapacityException, NetworkRuleConflictException  {
         //this part of code is executed when the LB provider is Elastic Load Balancer vm
-        if (!_networkMgr.isProviderSupportServiceInNetwork(lb.getNetworkId(), Service.Lb, Provider.ElasticLoadBalancerVm)) {
+        if (!_networkModel.isProviderSupportServiceInNetwork(lb.getNetworkId(), Service.Lb, Provider.ElasticLoadBalancerVm)) {
             return null;
         }
 
@@ -659,7 +662,7 @@ ElasticLoadBalancerManager, Manager,  VirtualMachineGuru<DomainRouterVO> {
                 throw new NetworkRuleConflictException("ELB: Found existing load balancers matching requested new LB");
             }
 
-            Network network = _networkMgr.getNetwork(networkId);
+            Network network = _networkModel.getNetwork(networkId);
             IPAddressVO ipAddr = _ipAddressDao.findById(ipId);
 
             LoadBalancer result = null;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5a830c4d/plugins/network-elements/f5/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/f5/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java b/plugins/network-elements/f5/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java
index b5f6248..4c557cc 100644
--- 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,7 +61,7 @@ import com.cloud.network.Network.Capability;
 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.PhysicalNetworkServiceProvider;
@@ -95,7 +95,7 @@ public class F5ExternalLoadBalancerElement extends ExternalLoadBalancerDeviceMan
     private static final Logger s_logger = Logger.getLogger(F5ExternalLoadBalancerElement.class);
 
     @Inject
-    NetworkManager _networkManager;
+    NetworkModel _networkManager;
     @Inject
     ConfigurationManager _configMgr;
     @Inject

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5a830c4d/plugins/network-elements/juniper-srx/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java
----------------------------------------------------------------------
diff --git 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
index 29daf3a..c6cac55 100644
--- 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,7 +61,7 @@ import com.cloud.network.Network.Capability;
 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.PhysicalNetworkServiceProvider;
 import com.cloud.network.PhysicalNetworkVO;
@@ -99,7 +99,7 @@ public class JuniperSRXExternalFirewallElement extends ExternalFirewallDeviceMan
     private static final Map<Service, Map<Capability, String>> capabilities = setCapabilities();
 
     @Inject
-    NetworkManager _networkManager;
+    NetworkModel _networkManager;
     @Inject
     HostDao _hostDao;
     @Inject

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5a830c4d/plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java b/plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java
index a1528ce..18bee32 100644
--- 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,7 +73,7 @@ import com.cloud.network.Network.Capability;
 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.PhysicalNetworkServiceProvider;
@@ -117,7 +117,7 @@ StaticNatServiceProvider {
     public static final AutoScaleCounterType AutoScaleCounterNetscaler = new AutoScaleCounterType("netscaler");
 
     @Inject
-    NetworkManager _networkManager;
+    NetworkModel _networkManager;
     @Inject
     ConfigurationManager _configMgr;
     @Inject
@@ -125,7 +125,7 @@ StaticNatServiceProvider {
     @Inject
     AgentManager _agentMgr;
     @Inject
-    NetworkManager _networkMgr;
+    NetworkModel _networkMgr;
     @Inject
     HostDao _hostDao;
     @Inject

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5a830c4d/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 90866ed..de6a629 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
@@ -75,6 +75,7 @@ import com.cloud.network.ExternalNetworkDeviceManager.NetworkDevice;
 import com.cloud.network.Network.Capability;
 import com.cloud.network.Network.Provider;
 import com.cloud.network.Network.Service;
+import com.cloud.network.NetworkModel;
 import com.cloud.network.NetworkVO;
 import com.cloud.network.Networks;
 import com.cloud.network.Networks.BroadcastDomainType;
@@ -159,6 +160,8 @@ public class NiciraNvpElement extends AdapterBase implements
 	@Inject
 	NetworkManager _networkManager;
 	@Inject
+    NetworkModel _networkModel;
+	@Inject
 	ConfigurationManager _configMgr;
 	@Inject
 	NetworkServiceMapDao _ntwkSrvcDao;
@@ -182,7 +185,7 @@ public class NiciraNvpElement extends AdapterBase implements
 			return false;
 		}
 
-		if (!_networkManager.isProviderForNetwork(getProvider(),
+		if (!_networkModel.isProviderForNetwork(getProvider(),
 				network.getId())) {
 			s_logger.debug("NiciraNvpElement is not a provider for network "
 					+ network.getDisplayText());
@@ -246,58 +249,50 @@ public class NiciraNvpElement extends AdapterBase implements
 		 * Lock the network as we might need to do multiple operations that
 		 * should be done only once.
 		 */
-		Network lock = _networkDao.acquireInLockTable(network.getId(),
-				_networkManager.getNetworkLockTimeout());
-		if (lock == null) {
-			throw new ConcurrentOperationException("Unable to lock network "
-					+ network.getId());
-		}
-		try {
-			// Implement SourceNat immediately as we have al the info already
-			if (_networkManager.isProviderSupportServiceInNetwork(
-					network.getId(), Service.SourceNat, Provider.NiciraNvp)) {
-				s_logger.debug("Apparently we are supposed to provide SourceNat on this network");
-
-				PublicIp sourceNatIp = _networkManager
-						.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,
-						network.getBroadcastUri().getSchemeSpecificPart(),
-						"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());
-					return false;
-				}
-				
-				// Store the uuid so we can easily find it during cleanup
-				NiciraNvpRouterMappingVO routermapping = 
-						new NiciraNvpRouterMappingVO(answer.getLogicalRouterUuid(), network.getId());
-				_niciraNvpRouterMappingDao.persist(routermapping);
-			}
-		} finally {
-			if (lock != null) {
-				_networkDao.releaseFromLockTable(lock.getId());
-				if (s_logger.isDebugEnabled()) {
-					s_logger.debug("Lock is released for network id "
-							+ lock.getId() + " as a part of router startup in "
-							+ dest);
-				}
-			}
+//		Network lock = _networkDao.acquireInLockTable(network.getId(),
+//				_networkModel.getNetworkLockTimeout());
+//		if (lock == null) {
+//			throw new ConcurrentOperationException("Unable to lock network "
+//					+ network.getId());
+//		}
+
+		// Implement SourceNat immediately as we have al the info already
+		if (_networkModel.isProviderSupportServiceInNetwork(
+		        network.getId(), Service.SourceNat, Provider.NiciraNvp)) {
+		    s_logger.debug("Apparently we are supposed to provide SourceNat on this network");
+
+		    PublicIp sourceNatIp = _networkManager
+		            .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,
+		            network.getBroadcastUri().getSchemeSpecificPart(),
+		            "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());
+		        return false;
+		    }
+
+		    // Store the uuid so we can easily find it during cleanup
+		    NiciraNvpRouterMappingVO routermapping = 
+		            new NiciraNvpRouterMappingVO(answer.getLogicalRouterUuid(), network.getId());
+		    _niciraNvpRouterMappingDao.persist(routermapping);
 		}
+
+		
 		return true;
 	}
 
@@ -446,7 +441,7 @@ public class NiciraNvpElement extends AdapterBase implements
 		NiciraNvpDeviceVO niciraNvpDevice = devices.get(0);
 		HostVO niciraNvpHost = _hostDao.findById(niciraNvpDevice.getHostId());
 
-		if (_networkManager.isProviderSupportServiceInNetwork(network.getId(),
+		if (_networkModel.isProviderSupportServiceInNetwork(network.getId(),
 				Service.SourceNat, Provider.NiciraNvp)) {
 			s_logger.debug("Apparently we were providing SourceNat on this network");
 
@@ -888,7 +883,7 @@ public class NiciraNvpElement extends AdapterBase implements
 
 		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.
@@ -936,7 +931,7 @@ public class NiciraNvpElement extends AdapterBase implements
 		
 		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/5a830c4d/plugins/network-elements/nicira-nvp/src/com/cloud/network/guru/NiciraNvpGuestNetworkGuru.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/com/cloud/network/guru/NiciraNvpGuestNetworkGuru.java b/plugins/network-elements/nicira-nvp/src/com/cloud/network/guru/NiciraNvpGuestNetworkGuru.java
index 99be680..02916f9 100644
--- a/plugins/network-elements/nicira-nvp/src/com/cloud/network/guru/NiciraNvpGuestNetworkGuru.java
+++ b/plugins/network-elements/nicira-nvp/src/com/cloud/network/guru/NiciraNvpGuestNetworkGuru.java
@@ -41,7 +41,7 @@ import com.cloud.host.dao.HostDao;
 import com.cloud.host.dao.HostDetailsDao;
 import com.cloud.network.Network;
 import com.cloud.network.Network.Service;
-import com.cloud.network.NetworkManager;
+import com.cloud.network.NetworkModel;
 import com.cloud.network.NetworkProfile;
 import com.cloud.network.NetworkVO;
 import com.cloud.network.Network.GuestType;
@@ -71,9 +71,9 @@ public class NiciraNvpGuestNetworkGuru extends GuestNetworkGuru {
     private static final Logger s_logger = Logger.getLogger(NiciraNvpGuestNetworkGuru.class);
     
     @Inject 
-    NetworkManager _externalNetworkManager;
+    NetworkModel _externalNetworkManager;
     @Inject
-    NetworkManager _networkMgr;
+    NetworkModel _networkModel;
     @Inject
     NetworkDao _networkDao;
     @Inject
@@ -153,7 +153,7 @@ public class NiciraNvpGuestNetworkGuru extends GuestNetworkGuru {
         long dcId = dest.getDataCenter().getId();
 
         //get physical network id
-        long physicalNetworkId = _networkMgr.findPhysicalNetworkId(dcId, offering.getTags(), offering.getTrafficType());
+        long physicalNetworkId = _networkModel.findPhysicalNetworkId(dcId, offering.getTags(), offering.getTrafficType());
 
         NetworkVO implemented = new NetworkVO(network.getTrafficType(), network.getMode(), network.getBroadcastDomainType(), network.getNetworkOfferingId(), State.Allocated,
                 network.getDataCenterId(), physicalNetworkId);

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5a830c4d/plugins/network-elements/nicira-nvp/test/com/cloud/network/element/NiciraNvpElementTest.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/test/com/cloud/network/element/NiciraNvpElementTest.java b/plugins/network-elements/nicira-nvp/test/com/cloud/network/element/NiciraNvpElementTest.java
index acfd3bc..09d50a3 100644
--- a/plugins/network-elements/nicira-nvp/test/com/cloud/network/element/NiciraNvpElementTest.java
+++ b/plugins/network-elements/nicira-nvp/test/com/cloud/network/element/NiciraNvpElementTest.java
@@ -33,6 +33,7 @@ import com.cloud.network.Network.GuestType;
 import com.cloud.network.Network.Provider;
 import com.cloud.network.Network.Service;
 import com.cloud.network.NetworkManager;
+import com.cloud.network.NetworkModel;
 import com.cloud.network.Networks.BroadcastDomainType;
 import com.cloud.network.Networks.TrafficType;
 import com.cloud.network.dao.NetworkServiceMapDao;
@@ -48,6 +49,7 @@ public class NiciraNvpElementTest {
 	
 	NiciraNvpElement _element = new NiciraNvpElement();
 	NetworkManager _networkManager = mock(NetworkManager.class);
+	NetworkModel _networkModel = mock(NetworkModel.class);
 	NetworkServiceMapDao _ntwkSrvcDao = mock (NetworkServiceMapDao.class);
 	
 	@Before
@@ -55,9 +57,10 @@ public class NiciraNvpElementTest {
 		_element._resourceMgr = mock(ResourceManager.class);
 		_element._networkManager = _networkManager;
 		_element._ntwkSrvcDao = _ntwkSrvcDao;
+		_element._networkModel = _networkModel;
 		
 		// Standard responses
-		when(_networkManager.isProviderForNetwork(Provider.NiciraNvp, 42L)).thenReturn(true);
+		when(_networkModel.isProviderForNetwork(Provider.NiciraNvp, 42L)).thenReturn(true);
 		
 		_element.configure("NiciraNvpTestElement", Collections.<String, Object> emptyMap());
 	}
@@ -81,12 +84,12 @@ public class NiciraNvpElementTest {
 		// No nvp provider in the network
 		assertFalse(_element.canHandle(net, Service.Connectivity));
 		
-		when(_networkManager.isProviderForNetwork(Provider.NiciraNvp, 42L)).thenReturn(false);
+		when(_networkModel.isProviderForNetwork(Provider.NiciraNvp, 42L)).thenReturn(false);
 		when(_ntwkSrvcDao.canProviderSupportServiceInNetwork(42L, Service.Connectivity, Provider.NiciraNvp)).thenReturn(true);
 		// NVP provider does not provide Connectivity for this network
 		assertFalse(_element.canHandle(net, Service.Connectivity));
 		
-		when(_networkManager.isProviderForNetwork(Provider.NiciraNvp, 42L)).thenReturn(true);
+		when(_networkModel.isProviderForNetwork(Provider.NiciraNvp, 42L)).thenReturn(true);
 		// Only service Connectivity is supported
 		assertFalse(_element.canHandle(net, Service.Dhcp));
 		

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5a830c4d/plugins/network-elements/nicira-nvp/test/com/cloud/network/guru/NiciraNvpGuestNetworkGuruTest.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/test/com/cloud/network/guru/NiciraNvpGuestNetworkGuruTest.java b/plugins/network-elements/nicira-nvp/test/com/cloud/network/guru/NiciraNvpGuestNetworkGuruTest.java
index e37b2f4..124e28f 100644
--- a/plugins/network-elements/nicira-nvp/test/com/cloud/network/guru/NiciraNvpGuestNetworkGuruTest.java
+++ b/plugins/network-elements/nicira-nvp/test/com/cloud/network/guru/NiciraNvpGuestNetworkGuruTest.java
@@ -44,6 +44,7 @@ import com.cloud.network.Network.GuestType;
 import com.cloud.network.Network.Service;
 import com.cloud.network.Network.State;
 import com.cloud.network.NetworkManager;
+import com.cloud.network.NetworkModel;
 import com.cloud.network.NetworkProfile;
 import com.cloud.network.NetworkVO;
 import com.cloud.network.Networks.BroadcastDomainType;
@@ -67,6 +68,8 @@ public class NiciraNvpGuestNetworkGuruTest {
 	NetworkOfferingServiceMapDao nosd = mock(NetworkOfferingServiceMapDao.class);
 	AgentManager agentmgr = mock (AgentManager.class);
 	NetworkManager netmgr = mock (NetworkManager.class);
+	NetworkModel netmodel = mock (NetworkModel.class);
+
 	HostDao hostdao = mock (HostDao.class);
 	NetworkDao netdao = mock(NetworkDao.class);
 	NiciraNvpGuestNetworkGuru guru;
@@ -80,7 +83,7 @@ public class NiciraNvpGuestNetworkGuruTest {
 		guru._niciraNvpDao = nvpdao;
 		guru._dcDao = dcdao;
 		guru._ntwkOfferingSrvcDao = nosd;
-		guru._networkMgr = netmgr;
+		guru._networkModel = netmodel;
 		guru._hostDao = hostdao;
 		guru._agentMgr = agentmgr;
 		guru._networkDao = netdao;
@@ -261,7 +264,7 @@ public class NiciraNvpGuestNetworkGuruTest {
 		when(niciraHost.getDetail("transportzoneisotype")).thenReturn("stt");
 		when(niciraHost.getId()).thenReturn(42L);
 		
-		when(netmgr.findPhysicalNetworkId(anyLong(), (String) any(), (TrafficType) any())).thenReturn(42L);
+		when(netmodel.findPhysicalNetworkId(anyLong(), (String) any(), (TrafficType) any())).thenReturn(42L);
 		Domain dom = mock(Domain.class);
 		when(dom.getName()).thenReturn("domain");
 		Account acc = mock(Account.class);
@@ -318,7 +321,7 @@ public class NiciraNvpGuestNetworkGuruTest {
 		when(niciraHost.getDetail("transportzoneisotype")).thenReturn("stt");
 		when(niciraHost.getId()).thenReturn(42L);
 		
-		when(netmgr.findPhysicalNetworkId(anyLong(), (String) any(), (TrafficType) any())).thenReturn(42L);
+		when(netmodel.findPhysicalNetworkId(anyLong(), (String) any(), (TrafficType) any())).thenReturn(42L);
 		Domain dom = mock(Domain.class);
 		when(dom.getName()).thenReturn("domain");
 		Account acc = mock(Account.class);
@@ -374,7 +377,7 @@ public class NiciraNvpGuestNetworkGuruTest {
 		when(niciraHost.getDetail("transportzoneisotype")).thenReturn("stt");
 		when(niciraHost.getId()).thenReturn(42L);
 		
-		when(netmgr.findPhysicalNetworkId(anyLong(), (String) any(), (TrafficType) any())).thenReturn(42L);
+		when(netmodel.findPhysicalNetworkId(anyLong(), (String) any(), (TrafficType) any())).thenReturn(42L);
 		Domain dom = mock(Domain.class);
 		when(dom.getName()).thenReturn("domain");
 		Account acc = mock(Account.class);
@@ -432,7 +435,7 @@ public class NiciraNvpGuestNetworkGuruTest {
 		when(niciraHost.getDetail("transportzoneisotype")).thenReturn("stt");
 		when(niciraHost.getId()).thenReturn(42L);
 		
-		when(netmgr.findPhysicalNetworkId(anyLong(), (String) any(), (TrafficType) any())).thenReturn(42L);
+		when(netmodel.findPhysicalNetworkId(anyLong(), (String) any(), (TrafficType) any())).thenReturn(42L);
 		Domain dom = mock(Domain.class);
 		when(dom.getName()).thenReturn("domain");
 		Account acc = mock(Account.class);

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5a830c4d/plugins/network-elements/ovs/src/com/cloud/network/guru/OvsGuestNetworkGuru.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/ovs/src/com/cloud/network/guru/OvsGuestNetworkGuru.java b/plugins/network-elements/ovs/src/com/cloud/network/guru/OvsGuestNetworkGuru.java
index 16e1ecc..30a1129 100644
--- a/plugins/network-elements/ovs/src/com/cloud/network/guru/OvsGuestNetworkGuru.java
+++ b/plugins/network-elements/ovs/src/com/cloud/network/guru/OvsGuestNetworkGuru.java
@@ -16,8 +16,6 @@
 // under the License.
 package com.cloud.network.guru;
 
-import java.util.List;
-
 import javax.ejb.Local;
 
 import org.apache.log4j.Logger;
@@ -29,32 +27,25 @@ import com.cloud.deploy.DeploymentPlan;
 import com.cloud.event.EventTypes;
 import com.cloud.event.EventUtils;
 import com.cloud.event.EventVO;
-import com.cloud.exception.InsufficientAddressCapacityException;
 import com.cloud.exception.InsufficientVirtualNetworkCapcityException;
 import com.cloud.network.Network;
-import com.cloud.network.NetworkManager;
+import com.cloud.network.Network.GuestType;
+import com.cloud.network.Network.State;
 import com.cloud.network.NetworkVO;
+import com.cloud.network.Networks.BroadcastDomainType;
+import com.cloud.network.PhysicalNetwork;
+import com.cloud.network.PhysicalNetwork.IsolationMethod;
 import com.cloud.network.ovs.OvsTunnelManager;
 import com.cloud.offering.NetworkOffering;
 import com.cloud.user.Account;
 import com.cloud.user.UserContext;
 import com.cloud.utils.component.Inject;
-import com.cloud.vm.Nic.ReservationStrategy;
-import com.cloud.vm.NicProfile;
 import com.cloud.vm.ReservationContext;
-import com.cloud.vm.VirtualMachine;
-import com.cloud.vm.VirtualMachineProfile;
-import com.cloud.network.Networks.BroadcastDomainType;
-import com.cloud.network.Network.GuestType;
-import com.cloud.network.Network.State;
-import com.cloud.network.PhysicalNetwork;
-import com.cloud.network.PhysicalNetwork.IsolationMethod;
 
 @Local(value=NetworkGuru.class)
 public class OvsGuestNetworkGuru extends GuestNetworkGuru {
 	private static final Logger s_logger = Logger.getLogger(OvsGuestNetworkGuru.class);
 	
-	@Inject NetworkManager _externalNetworkManager;
 	@Inject OvsTunnelManager _ovsTunnelMgr;
 
     OvsGuestNetworkGuru() {

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5a830c4d/server/src/com/cloud/acl/DomainChecker.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/acl/DomainChecker.java b/server/src/com/cloud/acl/DomainChecker.java
index 6bc2cd3..ca7be92 100755
--- a/server/src/com/cloud/acl/DomainChecker.java
+++ b/server/src/com/cloud/acl/DomainChecker.java
@@ -25,7 +25,7 @@ import com.cloud.domain.DomainVO;
 import com.cloud.domain.dao.DomainDao;
 import com.cloud.exception.PermissionDeniedException;
 import com.cloud.network.Network;
-import com.cloud.network.NetworkManager;
+import com.cloud.network.NetworkModel;
 import com.cloud.offering.DiskOffering;
 import com.cloud.offering.ServiceOffering;
 import com.cloud.projects.ProjectManager;
@@ -47,7 +47,7 @@ public class DomainChecker extends AdapterBase implements SecurityChecker {
     @Inject LaunchPermissionDao _launchPermissionDao;
     @Inject ProjectManager _projectMgr;
     @Inject ProjectAccountDao _projecAccountDao;
-    @Inject NetworkManager _networkMgr;
+    @Inject NetworkModel _networkMgr;
     
     protected DomainChecker() {
         super();

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5a830c4d/server/src/com/cloud/api/ApiDBUtils.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/ApiDBUtils.java b/server/src/com/cloud/api/ApiDBUtils.java
index 012075c..d2abc29 100755
--- a/server/src/com/cloud/api/ApiDBUtils.java
+++ b/server/src/com/cloud/api/ApiDBUtils.java
@@ -60,6 +60,7 @@ import com.cloud.network.Network.Provider;
 import com.cloud.network.Network.Service;
 import com.cloud.network.NetworkDomainVO;
 import com.cloud.network.NetworkManager;
+import com.cloud.network.NetworkModel;
 import com.cloud.network.NetworkProfile;
 import com.cloud.network.NetworkRuleConfigVO;
 import com.cloud.network.NetworkVO;
@@ -174,6 +175,7 @@ public class ApiDBUtils {
     private static StorageManager _storageMgr;
     private static UserVmManager _userVmMgr;
     private static NetworkManager _networkMgr;
+    private static NetworkModel _networkModel;
     private static StatsCollector _statsCollector;
 
     private static AccountDao _accountDao;
@@ -240,6 +242,7 @@ public class ApiDBUtils {
         _storageMgr = locator.getManager(StorageManager.class);
         _userVmMgr = locator.getManager(UserVmManager.class);
         _networkMgr = locator.getManager(NetworkManager.class);
+        _networkModel = locator.getManager(NetworkModel.class);
         _configMgr = locator.getManager(ConfigurationService.class);
 
         _accountDao = locator.getDao(AccountDao.class);
@@ -341,7 +344,7 @@ public class ApiDBUtils {
     }
 
     public static Long getPodIdForVlan(long vlanDbId) {
-        return _networkMgr.getPodIdForVlan(vlanDbId);
+        return _networkModel.getPodIdForVlan(vlanDbId);
     }
 
     public static String getVersion() {
@@ -696,11 +699,11 @@ public class ApiDBUtils {
     }
 
     public static Map<Service, Map<Capability, String>> getNetworkCapabilities(long networkId, long zoneId) {
-        return _networkMgr.getNetworkCapabilities(networkId);
+        return _networkModel.getNetworkCapabilities(networkId);
     }
 
     public static long getPublicNetworkIdByZone(long zoneId) {
-        return _networkMgr.getSystemNetworkByZoneAndTrafficType(zoneId, TrafficType.Public).getId();
+        return _networkModel.getSystemNetworkByZoneAndTrafficType(zoneId, TrafficType.Public).getId();
     }
 
     public static Long getVlanNetworkId(long vlanId) {
@@ -730,7 +733,7 @@ public class ApiDBUtils {
     }
 
     public static Long getDedicatedNetworkDomain(long networkId) {
-        return _networkMgr.getDedicatedNetworkDomain(networkId);
+        return _networkModel.getDedicatedNetworkDomain(networkId);
     }
 
     public static float getCpuOverprovisioningFactor() {
@@ -787,25 +790,25 @@ public class ApiDBUtils {
     }
 
     public static Map<Service, Set<Provider>> listNetworkOfferingServices(long networkOfferingId) {
-        return _networkMgr.getNetworkOfferingServiceProvidersMap(networkOfferingId);
+        return _networkModel.getNetworkOfferingServiceProvidersMap(networkOfferingId);
     }
 
     public static List<Service> getElementServices(Provider provider) {
-        return _networkMgr.getElementServices(provider);
+        return _networkModel.getElementServices(provider);
     }
 
     public static List<? extends Provider> getProvidersForService(Service service) {
-        return _networkMgr.listSupportedNetworkServiceProviders(service.getName());
+        return _networkModel.listSupportedNetworkServiceProviders(service.getName());
     }
 
     public static boolean canElementEnableIndividualServices(Provider serviceProvider) {
-        return _networkMgr.canElementEnableIndividualServices(serviceProvider);
+        return _networkModel.canElementEnableIndividualServices(serviceProvider);
     }
 
     public static Pair<Long, Boolean> getDomainNetworkDetails(long networkId) {
         NetworkDomainVO map = _networkDomainDao.getDomainNetworkMapByNetworkId(networkId);
 
-        boolean subdomainAccess = (map.isSubdomainAccess() != null) ? map.isSubdomainAccess() : _networkMgr.getAllowSubdomainAccessGlobal();
+        boolean subdomainAccess = (map.isSubdomainAccess() != null) ? map.isSubdomainAccess() : _networkModel.getAllowSubdomainAccessGlobal();
 
         return new Pair<Long, Boolean>(map.getDomainId(), subdomainAccess);
     }
@@ -832,11 +835,11 @@ public class ApiDBUtils {
     }
     
     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/5a830c4d/server/src/com/cloud/async/AsyncJobExecutorContext.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/async/AsyncJobExecutorContext.java b/server/src/com/cloud/async/AsyncJobExecutorContext.java
index 109fb53..390a410 100644
--- a/server/src/com/cloud/async/AsyncJobExecutorContext.java
+++ b/server/src/com/cloud/async/AsyncJobExecutorContext.java
@@ -19,7 +19,7 @@ package com.cloud.async;
 import com.cloud.agent.AgentManager;
 import com.cloud.async.dao.AsyncJobDao;
 import com.cloud.event.dao.EventDao;
-import com.cloud.network.NetworkManager;
+import com.cloud.network.NetworkModel;
 import com.cloud.network.dao.IPAddressDao;
 import com.cloud.server.ManagementServer;
 import com.cloud.storage.StorageManager;
@@ -37,7 +37,7 @@ import com.cloud.vm.dao.UserVmDao;
 public interface AsyncJobExecutorContext extends Manager {
 	public ManagementServer getManagementServer();
 	public AgentManager getAgentMgr();
-	public NetworkManager getNetworkMgr();
+	public NetworkModel getNetworkMgr();
 	public UserVmManager getVmMgr();
 	public SnapshotManager getSnapshotMgr();
 	public AccountManager getAccountMgr();

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5a830c4d/server/src/com/cloud/async/AsyncJobExecutorContextImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/async/AsyncJobExecutorContextImpl.java b/server/src/com/cloud/async/AsyncJobExecutorContextImpl.java
index 5676b7c..dee1f58 100644
--- a/server/src/com/cloud/async/AsyncJobExecutorContextImpl.java
+++ b/server/src/com/cloud/async/AsyncJobExecutorContextImpl.java
@@ -25,6 +25,7 @@ import com.cloud.agent.AgentManager;
 import com.cloud.async.dao.AsyncJobDao;
 import com.cloud.event.dao.EventDao;
 import com.cloud.network.NetworkManager;
+import com.cloud.network.NetworkModel;
 import com.cloud.network.dao.IPAddressDao;
 import com.cloud.server.ManagementServer;
 import com.cloud.storage.StorageManager;
@@ -44,7 +45,7 @@ public class AsyncJobExecutorContextImpl implements AsyncJobExecutorContext {
 	private String _name;
 	
     private AgentManager _agentMgr;
-	private NetworkManager _networkMgr;
+	private NetworkModel _networkMgr;
 	private UserVmManager _vmMgr;
     private SnapshotManager _snapMgr;
 	private AccountManager _accountMgr;
@@ -72,7 +73,7 @@ public class AsyncJobExecutorContextImpl implements AsyncJobExecutorContext {
 	}
 	
 	@Override
-	public NetworkManager getNetworkMgr() {
+	public NetworkModel getNetworkMgr() {
 		return _networkMgr;
 	}
 	
@@ -159,9 +160,9 @@ public class AsyncJobExecutorContextImpl implements AsyncJobExecutorContext {
             throw new ConfigurationException("unable to get " + AgentManager.class.getName());
         }
         
-        _networkMgr = locator.getManager(NetworkManager.class);
+        _networkMgr = locator.getManager(NetworkModel.class);
         if (_networkMgr == null) {
-            throw new ConfigurationException("unable to get " + NetworkManager.class.getName());
+            throw new ConfigurationException("unable to get " + NetworkModel.class.getName());
         }
         
         _vmMgr = locator.getManager(UserVmManager.class);

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5a830c4d/server/src/com/cloud/baremetal/BareMetalVmManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/baremetal/BareMetalVmManagerImpl.java b/server/src/com/cloud/baremetal/BareMetalVmManagerImpl.java
index 3972728..31639a6 100755
--- a/server/src/com/cloud/baremetal/BareMetalVmManagerImpl.java
+++ b/server/src/com/cloud/baremetal/BareMetalVmManagerImpl.java
@@ -307,7 +307,7 @@ public class BareMetalVmManagerImpl extends UserVmManagerImpl implements BareMet
 			s_logger.warn("Bare Metal only supports basical network mode now, switch to baisc network automatically");
 		}
 		
-		Network defaultNetwork = _networkMgr.getExclusiveGuestNetwork(dc.getId());
+		Network defaultNetwork = _networkModel.getExclusiveGuestNetwork(dc.getId());
 		if (defaultNetwork == null) {
 			throw new InvalidParameterValueException("Unable to find a default network to start a vm");
 		}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5a830c4d/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
index 3bce619..e851525 100755
--- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
+++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
@@ -109,6 +109,7 @@ import com.cloud.network.Network.GuestType;
 import com.cloud.network.Network.Provider;
 import com.cloud.network.Network.Service;
 import com.cloud.network.NetworkManager;
+import com.cloud.network.NetworkModel;
 import com.cloud.network.NetworkService;
 import com.cloud.network.NetworkVO;
 import com.cloud.network.Networks.BroadcastDomainType;
@@ -213,6 +214,8 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
     @Inject
     NetworkService _networkSvc;
     @Inject
+    NetworkModel _networkModel;
+    @Inject
     ClusterDao _clusterDao;
     @Inject
     AlertManager _alertMgr;
@@ -758,7 +761,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
         }
 
         // Delete vlans associated with the pod
-        List<? extends Vlan> vlans = _networkMgr.listPodVlans(podId);
+        List<? extends Vlan> vlans = _networkModel.listPodVlans(podId);
         if (vlans != null && !vlans.isEmpty()) {
             for (Vlan vlan : vlans) {
                 _vlanDao.remove(vlan.getId());
@@ -1527,15 +1530,15 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
                     PhysicalNetwork mgmtPhyNetwork;
                     if (NetworkType.Advanced == zone.getNetworkType()) {
                         // zone should have a physical network with public and management traffiType
-                        _networkMgr.getDefaultPhysicalNetworkByZoneAndTrafficType(zoneId, TrafficType.Public);
-                        mgmtPhyNetwork = _networkMgr.getDefaultPhysicalNetworkByZoneAndTrafficType(zoneId, TrafficType.Management);
+                        _networkModel.getDefaultPhysicalNetworkByZoneAndTrafficType(zoneId, TrafficType.Public);
+                        mgmtPhyNetwork = _networkModel.getDefaultPhysicalNetworkByZoneAndTrafficType(zoneId, TrafficType.Management);
                     } else {
                         // zone should have a physical network with management traffiType
-                        mgmtPhyNetwork = _networkMgr.getDefaultPhysicalNetworkByZoneAndTrafficType(zoneId, TrafficType.Management);
+                        mgmtPhyNetwork = _networkModel.getDefaultPhysicalNetworkByZoneAndTrafficType(zoneId, TrafficType.Management);
                     }
 
                     try {
-                        _networkMgr.getDefaultPhysicalNetworkByZoneAndTrafficType(zoneId, TrafficType.Storage);
+                        _networkModel.getDefaultPhysicalNetworkByZoneAndTrafficType(zoneId, TrafficType.Storage);
                     } catch (InvalidParameterValueException noStorage) {
                         PhysicalNetworkTrafficTypeVO mgmtTraffic = _trafficTypeDao.findBy(mgmtPhyNetwork.getId(), TrafficType.Management);
                         _networkSvc.addTrafficTypeToPhysicalNetwork(mgmtPhyNetwork.getId(), TrafficType.Storage.toString(), mgmtTraffic.getXenNetworkLabel(), mgmtTraffic.getKvmNetworkLabel(),
@@ -2134,14 +2137,14 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
             } else {
                 if (forVirtualNetwork) {
                     // default physical network with public traffic in the zone
-                    physicalNetworkId = _networkMgr.getDefaultPhysicalNetworkByZoneAndTrafficType(zoneId, TrafficType.Public).getId();
+                    physicalNetworkId = _networkModel.getDefaultPhysicalNetworkByZoneAndTrafficType(zoneId, TrafficType.Public).getId();
                 } else {
                     if (zone.getNetworkType() == DataCenter.NetworkType.Basic) {
                         // default physical network with guest traffic in the zone
-                        physicalNetworkId = _networkMgr.getDefaultPhysicalNetworkByZoneAndTrafficType(zoneId, TrafficType.Guest).getId();
+                        physicalNetworkId = _networkModel.getDefaultPhysicalNetworkByZoneAndTrafficType(zoneId, TrafficType.Guest).getId();
                     } else if (zone.getNetworkType() == DataCenter.NetworkType.Advanced) {
                         if (zone.isSecurityGroupEnabled()) {
-                            physicalNetworkId = _networkMgr.getDefaultPhysicalNetworkByZoneAndTrafficType(zoneId, TrafficType.Guest).getId();
+                            physicalNetworkId = _networkModel.getDefaultPhysicalNetworkByZoneAndTrafficType(zoneId, TrafficType.Guest).getId();
                         } else {
                             throw new InvalidParameterValueException("Physical Network Id is null, please provide the Network id for Direct vlan creation ");
                         }
@@ -2165,18 +2168,18 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
         if (forVirtualNetwork) {
             if (network == null) {
                 // find default public network in the zone
-                networkId = _networkMgr.getSystemNetworkByZoneAndTrafficType(zoneId, TrafficType.Public).getId();
-                network = _networkMgr.getNetwork(networkId);
+                networkId = _networkModel.getSystemNetworkByZoneAndTrafficType(zoneId, TrafficType.Public).getId();
+                network = _networkModel.getNetwork(networkId);
             } else if (network.getGuestType() != null || network.getTrafficType() != TrafficType.Public) {
                 throw new InvalidParameterValueException("Can't find Public network by id=" + networkId);
             }
         } else {
             if (network == null) {
                 if (zone.getNetworkType() == DataCenter.NetworkType.Basic) {
-                    networkId = _networkMgr.getExclusiveGuestNetwork(zoneId).getId();
-                    network = _networkMgr.getNetwork(networkId);
+                    networkId = _networkModel.getExclusiveGuestNetwork(zoneId).getId();
+                    network = _networkModel.getNetwork(networkId);
                 } else {
-                    network = _networkMgr.getNetworkWithSecurityGroupEnabled(zoneId);
+                    network = _networkModel.getNetworkWithSecurityGroupEnabled(zoneId);
                     if (network == null) {
                         throw new InvalidParameterValueException("Nework id is required for Direct vlan creation ");
                     }
@@ -2275,7 +2278,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
             String vlanId, Account vlanOwner) {
         
         
-        Network network = _networkMgr.getNetwork(networkId);
+        Network network = _networkModel.getNetwork(networkId);
         
         //Validate the zone
         DataCenterVO zone = _zoneDao.findById(zoneId);
@@ -2516,7 +2519,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
                                     " as ip " + ip + " belonging to the range is used for static nat purposes. Cleanup the rules first");
                         }
                         
-                        if (ip.isSourceNat() && _networkMgr.getNetwork(ip.getAssociatedWithNetworkId()) != null) {
+                        if (ip.isSourceNat() && _networkModel.getNetwork(ip.getAssociatedWithNetworkId()) != null) {
                             throw new InvalidParameterValueException("Can't delete account specific vlan " + vlanDbId + 
                                     " as ip " + ip + " belonging to the range is a source nat ip for the network id=" + ip.getSourceNetworkId() + 
                                     ". IP range with the source nat ip address can be removed either as a part of Network, or account removal");
@@ -3060,7 +3063,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
         }
 
         // validate providers combination here
-        _networkMgr.canProviderSupportServices(providerCombinationToVerify);
+        _networkModel.canProviderSupportServices(providerCombinationToVerify);
 
         // validate the LB service capabilities specified in the network offering
         Map<Capability, String> lbServiceCapabilityMap = cmd.getServiceCapabilities(Service.Lb);
@@ -3243,7 +3246,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
             if ((lbServiceCapabilityMap != null) && (!lbServiceCapabilityMap.isEmpty())) {
                 String isolationCapability = lbServiceCapabilityMap.get(Capability.SupportedLBIsolation);
                 if (isolationCapability != null) {
-                    _networkMgr.checkCapabilityForProvider(serviceProviderMap.get(Service.Lb), Service.Lb, Capability.SupportedLBIsolation, isolationCapability);
+                    _networkModel.checkCapabilityForProvider(serviceProviderMap.get(Service.Lb), Service.Lb, Capability.SupportedLBIsolation, isolationCapability);
                     dedicatedLb = isolationCapability.contains("dedicated");
                 } else {
                     dedicatedLb = true;
@@ -3259,14 +3262,14 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
             if ((sourceNatServiceCapabilityMap != null) && (!sourceNatServiceCapabilityMap.isEmpty())) {
                 String sourceNatType = sourceNatServiceCapabilityMap.get(Capability.SupportedSourceNatTypes);
                 if (sourceNatType != null) {
-                    _networkMgr.checkCapabilityForProvider(serviceProviderMap.get(Service.SourceNat), Service.SourceNat, 
+                    _networkModel.checkCapabilityForProvider(serviceProviderMap.get(Service.SourceNat), Service.SourceNat, 
                             Capability.SupportedSourceNatTypes, sourceNatType);
                     sharedSourceNat = sourceNatType.contains("perzone");
                 }
 
                 String param = sourceNatServiceCapabilityMap.get(Capability.RedundantRouter);
                 if (param != null) {
-                    _networkMgr.checkCapabilityForProvider(serviceProviderMap.get(Service.SourceNat), Service.SourceNat, 
+                    _networkModel.checkCapabilityForProvider(serviceProviderMap.get(Service.SourceNat), Service.SourceNat, 
                             Capability.RedundantRouter, param);
                     redundantRouter = param.contains("true");
                 }
@@ -3426,7 +3429,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
         Network network = null;
         if (networkId != null) {
             // check if network exists and the caller can operate with it
-            network = _networkMgr.getNetwork(networkId);
+            network = _networkModel.getNetwork(networkId);
             if (network == null) {
                 throw new InvalidParameterValueException("Unable to find the network by id=" + networkId);
             }
@@ -3438,7 +3441,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
 
             _accountMgr.checkAccess(caller, null, true, network);
 
-            List<Long> offeringIds = _networkMgr.listNetworkOfferingsForUpgrade(networkId);
+            List<Long> offeringIds = _networkModel.listNetworkOfferingsForUpgrade(networkId);
 
             if (!offeringIds.isEmpty()) {
                 sc.addAnd("id", SearchCriteria.Op.IN, offeringIds.toArray());
@@ -3517,21 +3520,21 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
                 }
 
                 if (listBySupportedServices) {
-                    addOffering = addOffering && _networkMgr.areServicesSupportedByNetworkOffering(offering.getId(), supportedServices);
+                    addOffering = addOffering && _networkModel.areServicesSupportedByNetworkOffering(offering.getId(), supportedServices);
                 }
 
                 if (checkIfProvidersAreEnabled) {
                     if (supportedServices != null && supportedServices.length > 0) {
                         checkForProviders = Arrays.asList(supportedServices);
                     } else {
-                        checkForProviders = _networkMgr.listNetworkOfferingServices(offering.getId());
+                        checkForProviders = _networkModel.listNetworkOfferingServices(offering.getId());
                     }
 
-                    addOffering = addOffering && _networkMgr.areServicesEnabledInZone(zoneId, offering, checkForProviders);
+                    addOffering = addOffering && _networkModel.areServicesEnabledInZone(zoneId, offering, checkForProviders);
                 }
 
                 if (sourceNatSupported != null) {
-                    addOffering = addOffering && (_networkMgr.areServicesSupportedByNetworkOffering(offering.getId(), Network.Service.SourceNat) == sourceNatSupported);
+                    addOffering = addOffering && (_networkModel.areServicesSupportedByNetworkOffering(offering.getId(), Network.Service.SourceNat) == sourceNatSupported);
                 }
                 
                 if (forVpc != null) {
@@ -3656,7 +3659,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
             } else {
                 if (availability == NetworkOffering.Availability.Required) {
                     boolean canOffBeRequired = (offeringToUpdate.getGuestType() == GuestType.Isolated 
-                            && _networkMgr.areServicesSupportedByNetworkOffering(offeringToUpdate.getId(), Service.SourceNat));
+                            && _networkModel.areServicesSupportedByNetworkOffering(offeringToUpdate.getId(), Service.SourceNat));
                     if (!canOffBeRequired) {
                         throw new InvalidParameterValueException("Availability can be " + 
                     NetworkOffering.Availability.Required + " only for networkOfferings of type " + GuestType.Isolated + " and with "
@@ -3782,7 +3785,7 @@ public class ConfigurationManagerImpl implements ConfigurationManager, Configura
 
         Long networkId = vlan.getNetworkId();
         if (networkId != null) {
-            Network network = _networkMgr.getNetwork(networkId);
+            Network network = _networkModel.getNetwork(networkId);
             if (network != null) {
                 accountId = network.getAccountId();
             }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5a830c4d/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
index d7875f7..9161e60 100755
--- a/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
+++ b/server/src/com/cloud/consoleproxy/ConsoleProxyManagerImpl.java
@@ -92,6 +92,7 @@ import com.cloud.keystore.KeystoreVO;
 import com.cloud.network.IPAddressVO;
 import com.cloud.network.Network;
 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.dao.IPAddressDao;
@@ -212,6 +213,8 @@ public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProx
     @Inject
     NetworkManager _networkMgr;
     @Inject
+    NetworkModel _networkModel;
+    @Inject
     AccountManager _accountMgr;
     @Inject
     ServiceOfferingDao _offeringDao;
@@ -766,7 +769,7 @@ public class ConsoleProxyManagerImpl implements ConsoleProxyManager, ConsoleProx
 
         NetworkVO defaultNetwork = defaultNetworks.get(0);
 
-        List<NetworkOfferingVO> offerings = _networkMgr.getSystemAccountNetworkOfferings(NetworkOfferingVO.SystemControlNetwork, NetworkOfferingVO.SystemManagementNetwork);
+        List<NetworkOfferingVO> offerings = _networkModel.getSystemAccountNetworkOfferings(NetworkOfferingVO.SystemControlNetwork, NetworkOfferingVO.SystemManagementNetwork);
         List<Pair<NetworkVO, NicProfile>> networks = new ArrayList<Pair<NetworkVO, NicProfile>>(offerings.size() + 1);
         NicProfile defaultNic = new NicProfile();
         defaultNic.setDefaultNic(true);

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5a830c4d/server/src/com/cloud/ha/ManagementIPSystemVMInvestigator.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/ha/ManagementIPSystemVMInvestigator.java b/server/src/com/cloud/ha/ManagementIPSystemVMInvestigator.java
index 8a5b02a..ea96202 100644
--- a/server/src/com/cloud/ha/ManagementIPSystemVMInvestigator.java
+++ b/server/src/com/cloud/ha/ManagementIPSystemVMInvestigator.java
@@ -27,7 +27,7 @@ import org.apache.log4j.Logger;
 import com.cloud.host.HostVO;
 import com.cloud.host.Status;
 import com.cloud.host.dao.HostDao;
-import com.cloud.network.NetworkManager;
+import com.cloud.network.NetworkModel;
 import com.cloud.network.Networks.TrafficType;
 import com.cloud.utils.component.Inject;
 import com.cloud.vm.Nic;
@@ -40,7 +40,7 @@ public class ManagementIPSystemVMInvestigator extends AbstractInvestigatorImpl {
 
     private String _name = null;
     @Inject private HostDao _hostDao = null;
-    @Inject private NetworkManager _networkMgr = null;
+    @Inject private NetworkModel _networkMgr = null;
 
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5a830c4d/server/src/com/cloud/ha/UserVmDomRInvestigator.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/ha/UserVmDomRInvestigator.java b/server/src/com/cloud/ha/UserVmDomRInvestigator.java
index 5a3e550..e058a6f 100644
--- a/server/src/com/cloud/ha/UserVmDomRInvestigator.java
+++ b/server/src/com/cloud/ha/UserVmDomRInvestigator.java
@@ -31,7 +31,7 @@ import com.cloud.agent.api.PingTestCommand;
 import com.cloud.host.HostVO;
 import com.cloud.host.Status;
 import com.cloud.hypervisor.Hypervisor.HypervisorType;
-import com.cloud.network.NetworkManager;
+import com.cloud.network.NetworkModel;
 import com.cloud.network.Networks.TrafficType;
 import com.cloud.network.router.VirtualRouter;
 import com.cloud.network.router.VpcVirtualNetworkApplianceManager;
@@ -49,7 +49,7 @@ public class UserVmDomRInvestigator extends AbstractInvestigatorImpl {
     private String _name = null;
     @Inject private final UserVmDao _userVmDao = null;
     @Inject private final AgentManager _agentMgr = null;
-    @Inject private final NetworkManager _networkMgr = null;
+    @Inject private final NetworkModel _networkMgr = null;
     @Inject private final VpcVirtualNetworkApplianceManager _vnaMgr = null;
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5a830c4d/server/src/com/cloud/hypervisor/kvm/discoverer/KvmServerDiscoverer.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/hypervisor/kvm/discoverer/KvmServerDiscoverer.java b/server/src/com/cloud/hypervisor/kvm/discoverer/KvmServerDiscoverer.java
index 8ce6b8a..60b6e7f 100644
--- a/server/src/com/cloud/hypervisor/kvm/discoverer/KvmServerDiscoverer.java
+++ b/server/src/com/cloud/hypervisor/kvm/discoverer/KvmServerDiscoverer.java
@@ -52,7 +52,7 @@ import com.cloud.host.dao.HostDao;
 import com.cloud.hypervisor.Hypervisor;
 import com.cloud.hypervisor.Hypervisor.HypervisorType;
 import com.cloud.hypervisor.kvm.discoverer.KvmDummyResourceBase;
-import com.cloud.network.NetworkManager;
+import com.cloud.network.NetworkModel;
 import com.cloud.network.PhysicalNetworkSetupInfo;
 import com.cloud.resource.Discoverer;
 import com.cloud.resource.DiscovererBase;
@@ -79,7 +79,7 @@ public class KvmServerDiscoverer extends DiscovererBase implements Discoverer,
 	 @Inject ClusterDao _clusterDao;
 	 @Inject ResourceManager _resourceMgr;
 	 @Inject AgentManager _agentMgr;
-	 @Inject NetworkManager _networkMgr;
+	 @Inject NetworkModel _networkMgr;
 	 
 	@Override
 	public boolean processAnswers(long agentId, long seq, Answer[] answers) {

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5a830c4d/server/src/com/cloud/network/ExternalFirewallDeviceManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/ExternalFirewallDeviceManagerImpl.java b/server/src/com/cloud/network/ExternalFirewallDeviceManagerImpl.java
index 1629dd5..8431e03 100644
--- a/server/src/com/cloud/network/ExternalFirewallDeviceManagerImpl.java
+++ b/server/src/com/cloud/network/ExternalFirewallDeviceManagerImpl.java
@@ -111,7 +111,7 @@ public abstract class ExternalFirewallDeviceManagerImpl extends AdapterBase impl
     @Inject HostDao _hostDao;
     @Inject NetworkServiceMapDao _ntwkSrvcProviderDao;
     @Inject DataCenterDao _dcDao;
-    @Inject NetworkManager _networkMgr;
+    @Inject NetworkModel _networkMgr;
     @Inject InlineLoadBalancerNicMapDao _inlineLoadBalancerNicMapDao;
     @Inject NicDao _nicDao;
     @Inject AgentManager _agentMgr;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5a830c4d/server/src/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java b/server/src/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java
index 8c69bf6..97c6306 100644
--- a/server/src/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java
+++ b/server/src/com/cloud/network/ExternalLoadBalancerDeviceManagerImpl.java
@@ -127,6 +127,8 @@ public abstract class ExternalLoadBalancerDeviceManagerImpl extends AdapterBase
     @Inject
     DataCenterDao _dcDao;
     @Inject
+    NetworkModel _networkModel;
+    @Inject
     NetworkManager _networkMgr;
     @Inject
     InlineLoadBalancerNicMapDao _inlineLoadBalancerNicMapDao;
@@ -801,7 +803,7 @@ public abstract class ExternalLoadBalancerDeviceManagerImpl extends AdapterBase
             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();
@@ -930,7 +932,7 @@ public abstract class ExternalLoadBalancerDeviceManagerImpl extends AdapterBase
         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) {
             // Acquire a self-ip address from the guest network IP address range

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5a830c4d/server/src/com/cloud/network/ExternalLoadBalancerUsageManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/ExternalLoadBalancerUsageManagerImpl.java b/server/src/com/cloud/network/ExternalLoadBalancerUsageManagerImpl.java
index 6749496..5a15a9b 100644
--- a/server/src/com/cloud/network/ExternalLoadBalancerUsageManagerImpl.java
+++ b/server/src/com/cloud/network/ExternalLoadBalancerUsageManagerImpl.java
@@ -88,7 +88,7 @@ public class ExternalLoadBalancerUsageManagerImpl implements ExternalLoadBalance
     @Inject
     DataCenterDao _dcDao;
     @Inject
-    NetworkManager _networkMgr;
+    NetworkModel _networkMgr;
     @Inject
     InlineLoadBalancerNicMapDao _inlineLoadBalancerNicMapDao;
     @Inject

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5a830c4d/server/src/com/cloud/network/ExternalNetworkDeviceManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/ExternalNetworkDeviceManagerImpl.java b/server/src/com/cloud/network/ExternalNetworkDeviceManagerImpl.java
index dfe720e..aae7736 100755
--- a/server/src/com/cloud/network/ExternalNetworkDeviceManagerImpl.java
+++ b/server/src/com/cloud/network/ExternalNetworkDeviceManagerImpl.java
@@ -80,7 +80,7 @@ public class ExternalNetworkDeviceManagerImpl implements ExternalNetworkDeviceMa
     @Inject ExternalDhcpManager _dhcpMgr;
     @Inject PxeServerManager _pxeMgr;
     @Inject AgentManager _agentMgr;
-    @Inject NetworkManager _networkMgr;
+    @Inject NetworkModel _networkMgr;
     @Inject HostDao _hostDao;
     @Inject DataCenterDao _dcDao;
     @Inject AccountDao _accountDao;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/5a830c4d/server/src/com/cloud/network/NetworkManager.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkManager.java b/server/src/com/cloud/network/NetworkManager.java
index 87848b8..8f8ea5e 100755
--- a/server/src/com/cloud/network/NetworkManager.java
+++ b/server/src/com/cloud/network/NetworkManager.java
@@ -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 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;
@@ -34,13 +31,8 @@ import com.cloud.exception.InsufficientCapacityException;
 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.NetworkElement;
 import com.cloud.network.element.UserDataServiceProvider;
 import com.cloud.network.guru.NetworkGuru;
 import com.cloud.network.rules.FirewallRule;
@@ -62,7 +54,7 @@ import com.cloud.vm.VirtualMachineProfileImpl;
  * NetworkManager manages the network for the different end users.
  * 
  */
-public interface NetworkManager {
+public interface NetworkManager  {
     /**
      * Assigns a new public ip address.
      * 
@@ -95,27 +87,12 @@ public interface NetworkManager {
      */
     public boolean disassociatePublicIpAddress(long id, long userId, Account caller);
 
-    /**
-     * Lists IP addresses that belong to VirtualNetwork VLANs
-     * 
-     * @param accountId
-     *            - account that the IP address should belong to
-     * @param associatedNetworkId
-     *            TODO
-     * @param sourceNat
-     *            - (optional) true if the IP address should be a source NAT address
-     * @return - list of IP addresses
-     */
-    List<IPAddressVO> listPublicIpsAssignedToGuestNtwk(long accountId, long associatedNetworkId, Boolean sourceNat);
-
     List<NetworkVO> setupNetwork(Account owner, NetworkOfferingVO offering, DeploymentPlan plan, String name, String displayText, boolean isDefault)
             throws ConcurrentOperationException;
 
     List<NetworkVO> setupNetwork(Account owner, NetworkOfferingVO offering, Network predefined, DeploymentPlan plan, String name, String displayText, boolean errorIfAlreadySetup, Long domainId,
             ACLType aclType, Boolean subdomainAccess, Long vpcId) throws ConcurrentOperationException;
 
-    List<NetworkOfferingVO> getSystemAccountNetworkOfferings(String... offeringNames);
-
     void allocate(VirtualMachineProfile<? extends VMInstanceVO> vm, List<Pair<NetworkVO, NicProfile>> networks) throws InsufficientCapacityException, ConcurrentOperationException;
 
     void prepare(VirtualMachineProfile<? extends VMInstanceVO> profile, DeployDestination dest, ReservationContext context) throws InsufficientCapacityException, ConcurrentOperationException,
@@ -128,25 +105,13 @@ public interface NetworkManager {
 
     void expungeNics(VirtualMachineProfile<? extends VMInstanceVO> vm);
 
-    List<? extends Nic> getNics(long vmId);
-
     List<NicProfile> getNicProfiles(VirtualMachine vm);
 
-    String getNextAvailableMacAddressInNetwork(long networkConfigurationId) throws InsufficientAddressCapacityException;
-    
     boolean applyRules(List<? extends FirewallRule> rules, FirewallRule.Purpose purpose, NetworkRuleApplier applier, boolean continueOnError) throws ResourceUnavailableException;
 
-    public boolean validateRule(FirewallRule rule);
-    
-    PublicIpAddress getPublicIpAddress(long ipAddressId);
-
-    List<? extends Vlan> listPodVlans(long podId);
-
     Pair<NetworkGuru, NetworkVO> implementNetwork(long networkId, DeployDestination dest, ReservationContext context) throws ConcurrentOperationException, ResourceUnavailableException,
             InsufficientCapacityException;
 
-    List<NetworkVO> listNetworksUsedByVm(long vmId, boolean isSystem);
-
     <T extends VMInstanceVO> void prepareNicForMigration(VirtualMachineProfile<T> vm, DeployDestination dest);
 
     boolean shutdownNetwork(long networkId, ReservationContext context, boolean cleanupElements);
@@ -174,135 +139,35 @@ public interface NetworkManager {
     boolean associateIpAddressListToAccount(long userId, long accountId, long zoneId, Long vlanId, Network guestNetwork) throws InsufficientCapacityException, ConcurrentOperationException,
             ResourceUnavailableException, ResourceAllocationException;
 
-    Nic getNicInNetwork(long vmId, long networkId);
-
-    List<? extends Nic> getNicsForTraffic(long vmId, TrafficType type);
-
-    Network getDefaultNetworkForVm(long vmId);
-
-    Nic getDefaultNic(long vmId);
-
     UserDataServiceProvider getPasswordResetProvider(Network network);
 
-    UserDataServiceProvider getUserDataUpdateProvider(Network network);
-
-    boolean networkIsConfiguredForExternalNetworking(long zoneId, long networkId);
-
-    Map<Capability, String> getNetworkServiceCapabilities(long networkId, Service service);
-
     boolean applyIpAssociations(Network network, boolean continueOnError) throws ResourceUnavailableException;
     
     boolean applyIpAssociations(Network network, boolean rulesRevoked, boolean continueOnError, List<PublicIp> publicIps) throws ResourceUnavailableException;
 
-    boolean areServicesSupportedByNetworkOffering(long networkOfferingId, Service... services);
-
-    NetworkVO getNetworkWithSecurityGroupEnabled(Long zoneId);
-
     boolean startNetwork(long networkId, DeployDestination dest, ReservationContext context) throws ConcurrentOperationException, ResourceUnavailableException, InsufficientCapacityException;
 
-    String getIpOfNetworkElementInVirtualNetwork(long accountId, long dataCenterId);
-
-    List<NetworkVO> listNetworksForAccount(long accountId, long zoneId, Network.GuestType type);
-    
-    List<NetworkVO> listAllNetworksInAllZonesByType(Network.GuestType type);
-
     IPAddressVO markIpAsUnavailable(long addrId);
 
     public String acquireGuestIpAddress(Network network, String requestedIp);
 
-    String getGlobalGuestDomainSuffix();
-
-    String getStartIpAddress(long networkId);
-
     boolean applyStaticNats(List<? extends StaticNat> staticNats, boolean continueOnError) throws ResourceUnavailableException;
 
-    String getIpInNetwork(long vmId, long networkId);
-
-    String getIpInNetworkIncludingRemoved(long vmId, long networkId);
-
-    Long getPodIdForVlan(long vlanDbId);
-
-    List<Long> listNetworkOfferingsForUpgrade(long networkId);
-
-    boolean isSecurityGroupSupportedInNetwork(Network network);
-
-    boolean isProviderSupportServiceInNetwork(long networkId, Service service, Provider provider);
-
-    boolean isProviderEnabledInPhysicalNetwork(long physicalNetowrkId, String providerName);
-
-    String getNetworkTag(HypervisorType hType, Network network);
-
-    List<Service> getElementServices(Provider provider);
-
-    boolean canElementEnableIndividualServices(Provider provider);
-
-    boolean areServicesSupportedInNetwork(long networkId, Service... services);
-
-    boolean isNetworkSystem(Network network);
-
     boolean reallocate(VirtualMachineProfile<? extends VMInstanceVO> vm,
             DataCenterDeployment dest) throws InsufficientCapacityException, ConcurrentOperationException;
 
-    Map<Capability, String> getNetworkOfferingServiceCapabilities(NetworkOffering offering, Service service);
-
-    Long getPhysicalNetworkId(Network network);
-
-    boolean getAllowSubdomainAccessGlobal();
-
-    boolean isProviderForNetwork(Provider provider, long networkId);
-
-    boolean isProviderForNetworkOffering(Provider provider, long networkOfferingId);
-
-    void canProviderSupportServices(Map<Provider, Set<Service>> providersMap);
-
-    List<PhysicalNetworkSetupInfo> getPhysicalNetworkInfo(long dcId,
-            HypervisorType hypervisorType);
-
-    boolean canAddDefaultSecurityGroup();
-
-    List<Service> listNetworkOfferingServices(long networkOfferingId);
-
-    boolean areServicesEnabledInZone(long zoneId, NetworkOffering offering, List<Service> services);
-
-    public Map<PublicIp, Set<Service>> getIpToServices(List<PublicIp> publicIps, boolean rulesRevoked, boolean includingFirewall);
-
-    public Map<Provider, ArrayList<PublicIp>> getProviderToIpList(Network network, Map<PublicIp, Set<Service>> ipToServices);
-
-    public boolean checkIpForService(IPAddressVO ip, Service service, Long networkId);
-
-    void checkCapabilityForProvider(Set<Provider> providers, Service service,
-            Capability cap, String capValue);
-
-    Provider getDefaultUniqueProviderForService(String serviceName);
-
     IpAddress assignSystemIp(long networkId, Account owner,
             boolean forElasticLb, boolean forElasticIp)
             throws InsufficientAddressCapacityException;
 
     boolean handleSystemIpRelease(IpAddress ip);
 
-    void checkNetworkPermissions(Account owner, Network network);
-
     void allocateDirectIp(NicProfile nic, DataCenter dc,
             VirtualMachineProfile<? extends VirtualMachine> vm,
             Network network, String requestedIp)
             throws InsufficientVirtualNetworkCapcityException,
             InsufficientAddressCapacityException;
 
-    String getDefaultManagementTrafficLabel(long zoneId, HypervisorType hypervisorType);
-
-    String getDefaultStorageTrafficLabel(long zoneId, HypervisorType hypervisorType);
-
-    String getDefaultPublicTrafficLabel(long dcId, HypervisorType vmware);
-
-    String getDefaultGuestTrafficLabel(long dcId, HypervisorType vmware);
-
-    /**
-     * @param providerName
-     * @return
-     */
-    NetworkElement getElementImplementingProvider(String providerName);
-
     /**
      * @param owner
      * @param guestNetwork
@@ -314,27 +179,6 @@ public interface NetworkManager {
 
 
     /**
-     * @param accountId
-     * @param zoneId
-     * @return
-     */
-    String getAccountNetworkDomain(long accountId, long zoneId);
-
-
-    /**
-     * @return
-     */
-    String getDefaultNetworkDomain();
-
-
-    /**
-     * @param ntwkOffId
-     * @return
-     */
-    List<Provider> getNtwkOffDistinctProviders(long ntwkOffId);
-
-
-    /**
      * @param requested
      * @param network
      * @param isDefaultNic
@@ -376,15 +220,6 @@ public interface NetworkManager {
 
 
     /**
-     * @param accountId
-     * @param dcId
-     * @param sourceNat
-     * @return
-     */
-    List<IPAddressVO> listPublicIpsAssignedToAccount(long accountId, long dcId, Boolean sourceNat);
-
-
-    /**
      * @param ipAddrId
      * @param networkId
      * @param releaseOnFailure TODO
@@ -394,15 +229,6 @@ public interface NetworkManager {
 
 
     /**
-     * @param vm
-     * @param networkId
-     * @param broadcastUri TODO
-     * @return
-     */
-    NicProfile getNicProfile(VirtualMachine vm, long networkId, String broadcastUri);
-
-
-    /**
      * @param network
      * @param provider
      * @return
@@ -421,21 +247,6 @@ public interface NetworkManager {
 
 
     /**
-     * @param zoneId
-     * @param trafficType
-     * @return
-     */
-    List<? extends PhysicalNetwork> getPhysicalNtwksSupportingTrafficType(long zoneId, TrafficType trafficType);
-
-
-    /**
-     * @param guestNic
-     * @return
-     */
-    boolean isPrivateGateway(Nic guestNic);
-
-
-    /**
      * @param network
      * @param requested
      * @param context
@@ -497,42 +308,6 @@ public interface NetworkManager {
 			NetworkOfferingVO findById) throws ConcurrentOperationException, InsufficientAddressCapacityException, ResourceUnavailableException, InsufficientCapacityException;
 
 
-	Map<Service, Map<Capability, String>> getNetworkCapabilities(long networkId);
-
-
-	Network getSystemNetworkByZoneAndTrafficType(long zoneId, TrafficType trafficType);
-
-
-	Long getDedicatedNetworkDomain(long networkId);
-
-
-	Map<Service, Set<Provider>> getNetworkOfferingServiceProvidersMap(long networkOfferingId);
-
-
-	List<? extends Provider> listSupportedNetworkServiceProviders(String serviceName);
-	
-    List<? extends Network> listNetworksByVpc(long vpcId);
-    
-    boolean canUseForDeploy(Network network);
-    
-    Network getExclusiveGuestNetwork(long zoneId);
-
-    long findPhysicalNetworkId(long zoneId, String tag, TrafficType trafficType);
-    
-    Integer getNetworkRate(long networkId, Long vmId);
-
-
-    boolean isVmPartOfNetwork(long vmId, long ntwkId);
-
-    PhysicalNetwork getDefaultPhysicalNetworkByZoneAndTrafficType(long zoneId, TrafficType trafficType);
-
-
-	Network getNetwork(long networkId);
-
-
-	IpAddress getIp(long sourceIpAddressId);
-
-
 	IpAddress allocateIp(Account ipOwner, boolean isSystem, Account caller,
 			DataCenter zone) throws ConcurrentOperationException, ResourceAllocationException, InsufficientAddressCapacityException;