You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ed...@apache.org on 2013/01/15 03:04:55 UTC

[10/44] Revert "Merge remote-tracking branch 'origin/javelin' into javelin"

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/migration/Db21to22MigrationUtil.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/migration/Db21to22MigrationUtil.java b/server/src/com/cloud/migration/Db21to22MigrationUtil.java
index b6ff906..66a7d59 100755
--- a/server/src/com/cloud/migration/Db21to22MigrationUtil.java
+++ b/server/src/com/cloud/migration/Db21to22MigrationUtil.java
@@ -19,9 +19,7 @@ package com.cloud.migration;
 import java.io.File;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
-import java.util.LinkedList;
 import java.util.List;
-import java.util.Queue;
 
 import javax.inject.Inject;
 
@@ -32,21 +30,17 @@ import com.cloud.configuration.Resource.ResourceType;
 import com.cloud.configuration.ResourceCountVO;
 import com.cloud.configuration.dao.ConfigurationDao;
 import com.cloud.configuration.dao.ResourceCountDao;
-import com.cloud.dc.ClusterVO;
 import com.cloud.dc.DataCenter.NetworkType;
 import com.cloud.dc.DataCenterVO;
 import com.cloud.dc.dao.ClusterDao;
 import com.cloud.dc.dao.DataCenterDao;
 import com.cloud.domain.DomainVO;
 import com.cloud.domain.dao.DomainDao;
-import com.cloud.host.HostVO;
 import com.cloud.host.dao.HostDao;
-import com.cloud.hypervisor.Hypervisor.HypervisorType;
 import com.cloud.resource.ResourceManager;
 import com.cloud.user.Account;
 import com.cloud.user.dao.AccountDao;
 import com.cloud.utils.PropertiesUtil;
-import com.cloud.utils.component.ComponentLocator;
 import com.cloud.utils.db.SearchBuilder;
 import com.cloud.utils.db.SearchCriteria;
 import com.cloud.utils.db.Transaction;
@@ -56,37 +50,37 @@ import com.cloud.vm.dao.InstanceGroupDao;
 import com.cloud.vm.dao.InstanceGroupVMMapDao;
 
 public class Db21to22MigrationUtil {
-	
-	@Inject private ClusterDao _clusterDao;
-	@Inject private HostDao _hostDao;
-	@Inject private AccountDao _accountDao;
-	@Inject private DomainDao _domainDao;
-	@Inject private ResourceCountDao _resourceCountDao;
-	@Inject private InstanceGroupDao _vmGroupDao;
-	@Inject private InstanceGroupVMMapDao _groupVMMapDao;
-	@Inject private ConfigurationDao _configurationDao;
-	@Inject private DataCenterDao _zoneDao;
-	@Inject private ResourceManager _resourceMgr;
-    
+
+    @Inject private ClusterDao _clusterDao;
+    @Inject private HostDao _hostDao;
+    @Inject private AccountDao _accountDao;
+    @Inject private DomainDao _domainDao;
+    @Inject private ResourceCountDao _resourceCountDao;
+    @Inject private InstanceGroupDao _vmGroupDao;
+    @Inject private InstanceGroupVMMapDao _groupVMMapDao;
+    @Inject private ConfigurationDao _configurationDao;
+    @Inject private DataCenterDao _zoneDao;
+    @Inject private ResourceManager _resourceMgr;
+
     private void doMigration() {
         setupComponents();
 
         migrateResourceCounts();
-        
+
         setupInstanceGroups();
 
         migrateZones();
-        
+
         setupClusterGuid();
-        
+
         System.out.println("Migration done");
     }
-    
+
     /* add guid in cluster table */
     private void setupClusterGuid() {
-    	
-   //FIXME moving out XenServer code out of server. This upgrade step need to be taken care of 
-  /*
+
+        //FIXME moving out XenServer code out of server. This upgrade step need to be taken care of 
+        /*
         XenServerConnectionPool _connPool = XenServerConnectionPool.getInstance();
         List<ClusterVO> clusters = _clusterDao.listByHyTypeWithoutGuid(HypervisorType.XenServer.toString());
         for (ClusterVO cluster : clusters) {
@@ -120,34 +114,34 @@ public class Db21to22MigrationUtil {
                 break;
             }
         }
-    */
+         */
     }      
-    
+
 
     /**
      * This method migrates the zones based on bug: 7204
      * based on the param direct.attach.untagged.vlan.enabled, we update zone to basic or advanced for 2.2
      */
     private void migrateZones(){
-    	try {
-			System.out.println("Migrating zones");
-			String val = _configurationDao.getValue("direct.attach.untagged.vlan.enabled");
-			NetworkType networkType;
-			if(val == null || val.equalsIgnoreCase("true")){
-				networkType = NetworkType.Basic;
-			}else{
-				networkType = NetworkType.Advanced;
-			}
-			List<DataCenterVO> existingZones = _zoneDao.listAll();
-			for(DataCenterVO zone : existingZones){
-				zone.setNetworkType(networkType);
-				_zoneDao.update(zone.getId(), zone);
-			}
-		} catch (Exception e) {
-			System.out.println("Unhandled exception in migrateZones()" + e);
-		}
+        try {
+            System.out.println("Migrating zones");
+            String val = _configurationDao.getValue("direct.attach.untagged.vlan.enabled");
+            NetworkType networkType;
+            if(val == null || val.equalsIgnoreCase("true")){
+                networkType = NetworkType.Basic;
+            }else{
+                networkType = NetworkType.Advanced;
+            }
+            List<DataCenterVO> existingZones = _zoneDao.listAll();
+            for(DataCenterVO zone : existingZones){
+                zone.setNetworkType(networkType);
+                _zoneDao.update(zone.getId(), zone);
+            }
+        } catch (Exception e) {
+            System.out.println("Unhandled exception in migrateZones()" + e);
+        }
     }
-    
+
     private void migrateResourceCounts() {
         System.out.println("migrating resource counts");
         SearchBuilder<ResourceCountVO> sb = _resourceCountDao.createSearchBuilder();
@@ -175,46 +169,46 @@ public class Db21to22MigrationUtil {
 
     private void setupComponents() {
     }
-    
+
     private void setupInstanceGroups() {
-    	System.out.println("setting up vm instance groups");
-    	
-    	//Search for all the vms that have not null groups
-    	Long vmId = 0L;
-    	Long accountId = 0L;
-    	String groupName;
-    	Transaction txn = Transaction.open(Transaction.CLOUD_DB);
-    	txn.start();
-		try {
-	    	String request = "SELECT vm.id, uservm.account_id, vm.group from vm_instance vm, user_vm uservm where vm.group is not null and vm.removed is null and vm.id=uservm.id order by id";
-	    	System.out.println(request);
-	    	PreparedStatement statement = txn.prepareStatement(request);
-	    	ResultSet result = statement.executeQuery();
-	    	while (result.next()) {
-	    		vmId = result.getLong(1);
-	    		accountId = result.getLong(2);
-	    		groupName = result.getString(3);
-		        InstanceGroupVO group = _vmGroupDao.findByAccountAndName(accountId, groupName);
-		    	//Create vm group if the group doesn't exist for this account
-		        if (group == null) {
-					group = new InstanceGroupVO(groupName, accountId);
-					group =  _vmGroupDao.persist(group);
-					System.out.println("Created new isntance group with name " + groupName + " for account id=" + accountId);
-		        }
-				
-				if (group != null) {
-					InstanceGroupVMMapVO groupVmMapVO = new InstanceGroupVMMapVO(group.getId(), vmId);
-					_groupVMMapDao.persist(groupVmMapVO);
-					System.out.println("Assigned vm id=" + vmId + " to group with name " + groupName + " for account id=" + accountId);
-				}
-	    	}
-			txn.commit();
-			statement.close();
-		} catch (Exception e) {
-			System.out.println("Unhandled exception: " + e);
-		} finally {
-			txn.close();
-		}
+        System.out.println("setting up vm instance groups");
+
+        //Search for all the vms that have not null groups
+        Long vmId = 0L;
+        Long accountId = 0L;
+        String groupName;
+        Transaction txn = Transaction.open(Transaction.CLOUD_DB);
+        txn.start();
+        try {
+            String request = "SELECT vm.id, uservm.account_id, vm.group from vm_instance vm, user_vm uservm where vm.group is not null and vm.removed is null and vm.id=uservm.id order by id";
+            System.out.println(request);
+            PreparedStatement statement = txn.prepareStatement(request);
+            ResultSet result = statement.executeQuery();
+            while (result.next()) {
+                vmId = result.getLong(1);
+                accountId = result.getLong(2);
+                groupName = result.getString(3);
+                InstanceGroupVO group = _vmGroupDao.findByAccountAndName(accountId, groupName);
+                //Create vm group if the group doesn't exist for this account
+                if (group == null) {
+                    group = new InstanceGroupVO(groupName, accountId);
+                    group =  _vmGroupDao.persist(group);
+                    System.out.println("Created new isntance group with name " + groupName + " for account id=" + accountId);
+                }
+
+                if (group != null) {
+                    InstanceGroupVMMapVO groupVmMapVO = new InstanceGroupVMMapVO(group.getId(), vmId);
+                    _groupVMMapDao.persist(groupVmMapVO);
+                    System.out.println("Assigned vm id=" + vmId + " to group with name " + groupName + " for account id=" + accountId);
+                }
+            }
+            txn.commit();
+            statement.close();
+        } catch (Exception e) {
+            System.out.println("Unhandled exception: " + e);
+        } finally {
+            txn.close();
+        }
     }
 
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/network/ExteralIpAddressAllocator.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/ExteralIpAddressAllocator.java b/server/src/com/cloud/network/ExteralIpAddressAllocator.java
index f8b5c15..eca5ff6 100644
--- a/server/src/com/cloud/network/ExteralIpAddressAllocator.java
+++ b/server/src/com/cloud/network/ExteralIpAddressAllocator.java
@@ -19,7 +19,6 @@ package com.cloud.network;
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
-import java.net.HttpURLConnection;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLConnection;
@@ -33,136 +32,135 @@ import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 
 import com.cloud.configuration.dao.ConfigurationDao;
-
 import com.cloud.dc.dao.VlanDao;
 import com.cloud.network.dao.IPAddressDao;
-import com.cloud.utils.component.ComponentLocator;
 import com.cloud.utils.exception.CloudRuntimeException;
 
 @Component
 @Local(value=IpAddrAllocator.class)
 public class ExteralIpAddressAllocator implements IpAddrAllocator{
-	private static final Logger s_logger = Logger.getLogger(ExteralIpAddressAllocator.class);
-	String _name;
+    private static final Logger s_logger = Logger.getLogger(ExteralIpAddressAllocator.class);
+    String _name;
     @Inject ConfigurationDao _configDao = null;
     @Inject IPAddressDao _ipAddressDao = null;
     @Inject VlanDao _vlanDao;
-	private boolean _isExternalIpAllocatorEnabled = false;
-	private String _externalIpAllocatorUrl = null;
-
-	
-	@Override
-	public IpAddr getPrivateIpAddress(String macAddr, long dcId, long podId) {
-		if (_externalIpAllocatorUrl == null || this._externalIpAllocatorUrl.equalsIgnoreCase("")) {
-			return new IpAddr();
-		}
-		String urlString = this._externalIpAllocatorUrl + "?command=getIpAddr&mac=" + macAddr + "&dc=" + dcId + "&pod=" + podId;
-		 s_logger.debug("getIP:" + urlString);
-		
-		BufferedReader in = null;
-		try {
-			URL url = new URL(urlString);
-			URLConnection conn = url.openConnection();
-			conn.setReadTimeout(30000);
-			
-	        in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
-	        String inputLine;
-	        while ((inputLine = in.readLine()) != null) {
-	        	s_logger.debug(inputLine);
-	        	String[] tokens = inputLine.split(",");
-	        	if (tokens.length != 3) {
-	        		s_logger.debug("the return value should be: mac,netmask,gateway");
-	        		return new IpAddr();
-	        	}
-	    		return new IpAddr(tokens[0], tokens[1], tokens[2]);
-	        }
-	        
-	        return new IpAddr();
-		} catch (MalformedURLException e) {
-			throw new CloudRuntimeException("URL is malformed " + urlString, e);
-		} catch (IOException e) {
-			return new IpAddr();
-		} finally {
-			if (in != null) {
-				try {
-					in.close();
-				} catch (IOException e) {
-				}
-			}
-		}
-		
-	}
-	
-	@Override
-	public IpAddr getPublicIpAddress(String macAddr, long dcId, long podId) {
-		/*TODO: call API to get  ip address from external DHCP server*/
-		return getPrivateIpAddress(macAddr, dcId, podId);
-	}
-	
-	@Override
-	public boolean releasePrivateIpAddress(String ip, long dcId, long podId) {
-		/*TODO: call API to release the ip address from external DHCP server*/
-		if (_externalIpAllocatorUrl == null || this._externalIpAllocatorUrl.equalsIgnoreCase("")) {
-			return false;
-		}
-		
-		String urlString = this._externalIpAllocatorUrl + "?command=releaseIpAddr&ip=" + ip + "&dc=" + dcId + "&pod=" + podId;
-		
-		 s_logger.debug("releaseIP:" + urlString);
-		BufferedReader in = null;
-		try {
-			URL url = new URL(urlString);
-			URLConnection conn = url.openConnection();
-			conn.setReadTimeout(30000);
-			
-	        in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
-	        
-	        return true;
-		} catch (MalformedURLException e) {
-			throw new CloudRuntimeException("URL is malformed " + urlString, e);
-		} catch (IOException e) {
-			return false;
-		} finally {
-			if (in != null) {
-				try {
-					in.close();
-				} catch (IOException e) {
-				}
-			}
-		}
-	}
-	
-	@Override
-	public boolean releasePublicIpAddress(String ip, long dcId, long podId) {
-		/*TODO: call API to release the ip address from external DHCP server*/
-		return releasePrivateIpAddress(ip, dcId, podId);
-	}
-	
-	public boolean exteralIpAddressAllocatorEnabled() {
-		return _isExternalIpAllocatorEnabled;
-	}
-	
-	@Override
-	public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
-		_isExternalIpAllocatorEnabled = Boolean.parseBoolean(_configDao.getValue("direct.attach.network.externalIpAllocator.enabled"));
-		_externalIpAllocatorUrl = _configDao.getValue("direct.attach.network.externalIpAllocator.url");
-		_name = name;
-		
-		return true;
-	}
-
-	@Override
-	public String getName() {
-		return _name;
-	}
-
-	@Override
-	public boolean start() {
-		return true;
-	}
-
-	@Override
-	public boolean stop() {
-		return true;
-	}
+    private boolean _isExternalIpAllocatorEnabled = false;
+    private String _externalIpAllocatorUrl = null;
+
+
+    @Override
+    public IpAddr getPrivateIpAddress(String macAddr, long dcId, long podId) {
+        if (_externalIpAllocatorUrl == null || this._externalIpAllocatorUrl.equalsIgnoreCase("")) {
+            return new IpAddr();
+        }
+        String urlString = this._externalIpAllocatorUrl + "?command=getIpAddr&mac=" + macAddr + "&dc=" + dcId + "&pod=" + podId;
+        s_logger.debug("getIP:" + urlString);
+
+        BufferedReader in = null;
+        try {
+            URL url = new URL(urlString);
+            URLConnection conn = url.openConnection();
+            conn.setReadTimeout(30000);
+
+            in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
+            String inputLine;
+            while ((inputLine = in.readLine()) != null) {
+                s_logger.debug(inputLine);
+                String[] tokens = inputLine.split(",");
+                if (tokens.length != 3) {
+                    s_logger.debug("the return value should be: mac,netmask,gateway");
+                    return new IpAddr();
+                }
+                return new IpAddr(tokens[0], tokens[1], tokens[2]);
+            }
+
+            return new IpAddr();
+        } catch (MalformedURLException e) {
+            throw new CloudRuntimeException("URL is malformed " + urlString, e);
+        } catch (IOException e) {
+            return new IpAddr();
+        } finally {
+            if (in != null) {
+                try {
+                    in.close();
+                } catch (IOException e) {
+                }
+            }
+        }
+
+    }
+
+    @Override
+    public IpAddr getPublicIpAddress(String macAddr, long dcId, long podId) {
+        /*TODO: call API to get  ip address from external DHCP server*/
+        return getPrivateIpAddress(macAddr, dcId, podId);
+    }
+
+    @Override
+    public boolean releasePrivateIpAddress(String ip, long dcId, long podId) {
+        /*TODO: call API to release the ip address from external DHCP server*/
+        if (_externalIpAllocatorUrl == null || this._externalIpAllocatorUrl.equalsIgnoreCase("")) {
+            return false;
+        }
+
+        String urlString = this._externalIpAllocatorUrl + "?command=releaseIpAddr&ip=" + ip + "&dc=" + dcId + "&pod=" + podId;
+
+        s_logger.debug("releaseIP:" + urlString);
+        BufferedReader in = null;
+        try {
+            URL url = new URL(urlString);
+            URLConnection conn = url.openConnection();
+            conn.setReadTimeout(30000);
+
+            in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
+
+            return true;
+        } catch (MalformedURLException e) {
+            throw new CloudRuntimeException("URL is malformed " + urlString, e);
+        } catch (IOException e) {
+            return false;
+        } finally {
+            if (in != null) {
+                try {
+                    in.close();
+                } catch (IOException e) {
+                }
+            }
+        }
+    }
+
+    @Override
+    public boolean releasePublicIpAddress(String ip, long dcId, long podId) {
+        /*TODO: call API to release the ip address from external DHCP server*/
+        return releasePrivateIpAddress(ip, dcId, podId);
+    }
+
+    @Override
+    public boolean exteralIpAddressAllocatorEnabled() {
+        return _isExternalIpAllocatorEnabled;
+    }
+
+    @Override
+    public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
+        _isExternalIpAllocatorEnabled = Boolean.parseBoolean(_configDao.getValue("direct.attach.network.externalIpAllocator.enabled"));
+        _externalIpAllocatorUrl = _configDao.getValue("direct.attach.network.externalIpAllocator.url");
+        _name = name;
+
+        return true;
+    }
+
+    @Override
+    public String getName() {
+        return _name;
+    }
+
+    @Override
+    public boolean start() {
+        return true;
+    }
+
+    @Override
+    public boolean stop() {
+        return true;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/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 93e0ef6..e95dd17 100755
--- a/server/src/com/cloud/network/ExternalNetworkDeviceManagerImpl.java
+++ b/server/src/com/cloud/network/ExternalNetworkDeviceManagerImpl.java
@@ -27,22 +27,21 @@ import javax.ejb.Local;
 import javax.inject.Inject;
 import javax.naming.ConfigurationException;
 
+import org.apache.cloudstack.api.ApiConstants;
 import org.apache.cloudstack.api.command.admin.network.AddNetworkDeviceCmd;
+import org.apache.cloudstack.api.command.admin.network.DeleteNetworkDeviceCmd;
 import org.apache.cloudstack.api.command.admin.network.ListNetworkDeviceCmd;
+import org.apache.cloudstack.api.response.NetworkDeviceResponse;
 import org.apache.cloudstack.network.ExternalNetworkDeviceManager;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 
 import com.cloud.agent.AgentManager;
 import com.cloud.api.ApiDBUtils;
-
-import org.apache.cloudstack.api.ApiConstants;
-import org.apache.cloudstack.api.IdentityService;
-import org.apache.cloudstack.api.command.admin.network.DeleteNetworkDeviceCmd;
 import com.cloud.baremetal.ExternalDhcpManager;
 import com.cloud.baremetal.PxeServerManager;
-import com.cloud.baremetal.PxeServerProfile;
 import com.cloud.baremetal.PxeServerManager.PxeServerType;
+import com.cloud.baremetal.PxeServerProfile;
 import com.cloud.configuration.dao.ConfigurationDao;
 import com.cloud.dc.DataCenter;
 import com.cloud.dc.Pod;
@@ -64,14 +63,11 @@ import com.cloud.network.dao.PhysicalNetworkServiceProviderDao;
 import com.cloud.network.dao.VpnUserDao;
 import com.cloud.network.rules.dao.PortForwardingRulesDao;
 import com.cloud.offerings.dao.NetworkOfferingDao;
-import com.cloud.server.ManagementServer;
-import org.apache.cloudstack.api.response.NetworkDeviceResponse;
 import com.cloud.server.api.response.NwDeviceDhcpResponse;
 import com.cloud.server.api.response.PxePingResponse;
 import com.cloud.user.AccountManager;
 import com.cloud.user.dao.AccountDao;
 import com.cloud.user.dao.UserStatisticsDao;
-import com.cloud.utils.component.ComponentLocator;
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.vm.dao.DomainRouterDao;
 import com.cloud.vm.dao.NicDao;
@@ -112,16 +108,16 @@ public class ExternalNetworkDeviceManagerImpl implements ExternalNetworkDeviceMa
 
     // obsolete
     // private final static IdentityService _identityService = (IdentityService)ComponentLocator.getLocator(ManagementServer.Name).getManager(IdentityService.class); 
-    
+
     private static final org.apache.log4j.Logger s_logger = Logger.getLogger(ExternalNetworkDeviceManagerImpl.class);
     protected String _name;
-    
+
     @Override
     public boolean configure(String name, Map<String, Object> params) throws ConfigurationException {
         _name = name;
         return true;
     }
-    
+
     @Override
     public boolean start() {
         return true;
@@ -136,21 +132,21 @@ public class ExternalNetworkDeviceManagerImpl implements ExternalNetworkDeviceMa
     public String getName() {
         return _name;
     }
-    
+
     @Override
     public Host addNetworkDevice(AddNetworkDeviceCmd cmd) {
         Map paramList = cmd.getParamList();
         if (paramList == null) {
             throw new CloudRuntimeException("Parameter list is null");
         }
-    
+
         Collection paramsCollection = paramList.values();
         HashMap params = (HashMap) (paramsCollection.toArray())[0];
         if (cmd.getDeviceType().equalsIgnoreCase(NetworkDevice.ExternalDhcp.getName())) {
             //Long zoneId = _identityService.getIdentityId("data_center", (String) params.get(ApiConstants.ZONE_ID));
             //Long podId = _identityService.getIdentityId("host_pod_ref", (String)params.get(ApiConstants.POD_ID));
-        	Long zoneId = Long.valueOf((String) params.get(ApiConstants.ZONE_ID));
-        	Long podId = Long.valueOf((String)params.get(ApiConstants.POD_ID));
+            Long zoneId = Long.valueOf((String) params.get(ApiConstants.ZONE_ID));
+            Long podId = Long.valueOf((String)params.get(ApiConstants.POD_ID));
             String type = (String) params.get(ApiConstants.DHCP_SERVER_TYPE);
             String url = (String) params.get(ApiConstants.URL);
             String username = (String) params.get(ApiConstants.USERNAME);
@@ -217,7 +213,7 @@ public class ExternalNetworkDeviceManagerImpl implements ExternalNetworkDeviceMa
         } else {
             throw new CloudRuntimeException("Unsupported network device type:" + host.getType());
         }
-        
+
         response.setId(device.getUuid());
         return response;
     }
@@ -234,19 +230,19 @@ public class ExternalNetworkDeviceManagerImpl implements ExternalNetworkDeviceMa
 //        } else {
 //            List<HostVO> devs = _hostDao.listBy(type, zoneId);
 //            res.addAll(devs);
- //       }
-        
- //       return res;
+        //       }
+
+        //       return res;
         return null;
     }
-    
+
     @Override
     public List<Host> listNetworkDevice(ListNetworkDeviceCmd cmd) {
         Map paramList = cmd.getParamList();
         if (paramList == null) {
             throw new CloudRuntimeException("Parameter list is null");
         }
-        
+
         List<Host> res;
         Collection paramsCollection = paramList.values();
         HashMap params = (HashMap) (paramsCollection.toArray())[0];
@@ -275,13 +271,13 @@ public class ExternalNetworkDeviceManagerImpl implements ExternalNetworkDeviceMa
         } else {
             throw new CloudRuntimeException("Unknown network device type:" + cmd.getDeviceType());
         }
-        
+
         return res;
     }
 
     @Override
     public boolean deleteNetworkDevice(DeleteNetworkDeviceCmd cmd) {
-       HostVO device = _hostDao.findById(cmd.getId());
-       return true;
+        HostVO device = _hostDao.findById(cmd.getId());
+        return true;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/network/NetworkManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkManagerImpl.java b/server/src/com/cloud/network/NetworkManagerImpl.java
index 84fcd32..2a4b27e 100755
--- a/server/src/com/cloud/network/NetworkManagerImpl.java
+++ b/server/src/com/cloud/network/NetworkManagerImpl.java
@@ -132,7 +132,8 @@ import com.cloud.user.dao.UserStatisticsDao;
 import com.cloud.utils.AnnotationHelper;
 import com.cloud.utils.NumbersUtil;
 import com.cloud.utils.Pair;
-import com.cloud.utils.component.Adapters;
+import com.cloud.utils.component.AdapterBase;
+import com.cloud.utils.component.ComponentContext;
 import com.cloud.utils.component.Manager;
 import com.cloud.utils.concurrency.NamedThreadFactory;
 import com.cloud.utils.db.JoinBuilder.JoinType;
@@ -212,11 +213,9 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
     @Inject
     PodVlanMapDao _podVlanMapDao;
     
-    //@com.cloud.utils.component.Inject(adapter = NetworkGuru.class)
     @Inject 
     List<NetworkGuru> _networkGurus;
 
-    // @com.cloud.utils.component.Inject(adapter = NetworkElement.class)
     @Inject 
     List<NetworkElement> _networkElements;
     
@@ -295,7 +294,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
     @Override
     public NetworkElement getElementImplementingProvider(String providerName) {
         String elementName = s_providerToNetworkElementMap.get(providerName);
-        NetworkElement element = Adapters.getAdapterByName(_networkElements, elementName);
+        NetworkElement element = AdapterBase.getAdapterByName(_networkElements, elementName);
         return element;
     }
 
@@ -1540,6 +1539,8 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
                             "multiple NetworkElements found for Provider: " + implementedProvider.getName());
                     return false;
                 }
+                s_logger.info("add element/provider mapping. provider: " + implementedProvider.getName() + " -> " + element.getName()
+                		+ ", class: " + ComponentContext.getTargetClass(element).getName());
                 s_providerToNetworkElementMap.put(implementedProvider.getName(), element.getName());
             }
             if (capabilities != null && implementedProvider != null) {
@@ -1802,7 +1803,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
         
         NetworkVO ntwkVO = _networksDao.findById(network.getId());
         s_logger.debug("Allocating nic for vm " + vm.getVirtualMachine() + " in network " + network + " with requested profile " + requested);
-        NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, ntwkVO.getGuruName());
+        NetworkGuru guru = AdapterBase.getAdapterByName(_networkGurus, ntwkVO.getGuruName());
 
         if (requested != null && requested.getMode() == null) {
             requested.setMode(network.getMode());
@@ -1947,7 +1948,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
         }
 
         try {
-            NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
+            NetworkGuru guru = AdapterBase.getAdapterByName(_networkGurus, network.getGuruName());
             Network.State state = network.getState();
             if (state == Network.State.Implemented || state == Network.State.Implementing) {
                 s_logger.debug("Network id=" + networkId + " is already implemented");
@@ -2154,7 +2155,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
             ConcurrentOperationException, InsufficientCapacityException, ResourceUnavailableException {
         
         Integer networkRate = getNetworkRate(network.getId(), vmProfile.getId());
-        NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
+        NetworkGuru guru = AdapterBase.getAdapterByName(_networkGurus, network.getGuruName());
         NicVO nic = _nicDao.findById(nicId);
         
         NicProfile profile = null;
@@ -2216,7 +2217,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
             NetworkVO network = _networksDao.findById(nic.getNetworkId());
             Integer networkRate = getNetworkRate(network.getId(), vm.getId());
 
-            NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
+            NetworkGuru guru = AdapterBase.getAdapterByName(_networkGurus, network.getGuruName());
             NicProfile profile = new NicProfile(nic, network, nic.getBroadcastUri(), nic.getIsolationUri(), networkRate, 
                     isSecurityGroupSupportedInNetwork(network), getNetworkTag(vm.getHypervisorType(), network));
             guru.updateNicProfile(profile, network);
@@ -2260,7 +2261,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
 
         if (originalState == Nic.State.Reserved || originalState == Nic.State.Reserving) {
             if (nic.getReservationStrategy() == Nic.ReservationStrategy.Start) {
-                NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
+                NetworkGuru guru = AdapterBase.getAdapterByName(_networkGurus, network.getGuruName());
                 nic.setState(Nic.State.Releasing);
                 _nicDao.update(nic.getId(), nic);
                 NicProfile profile = new NicProfile(nic, network, nic.getBroadcastUri(), nic.getIsolationUri(), null,
@@ -2310,7 +2311,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
                 NetworkVO network = _networksDao.findById(nic.getNetworkId());
                 Integer networkRate = getNetworkRate(network.getId(), vm.getId());
 
-                NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
+                NetworkGuru guru = AdapterBase.getAdapterByName(_networkGurus, network.getGuruName());
                 NicProfile profile = new NicProfile(nic, network, nic.getBroadcastUri(), nic.getIsolationUri(), 
                         networkRate, isSecurityGroupSupportedInNetwork(network), getNetworkTag(vm.getHypervisorType(), network));
                 guru.updateNicProfile(profile, network);
@@ -2331,7 +2332,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
         NetworkVO network = _networksDao.findById(networkId);
         Integer networkRate = getNetworkRate(network.getId(), vm.getId());
     
-        NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
+        NetworkGuru guru = AdapterBase.getAdapterByName(_networkGurus, network.getGuruName());
         NicProfile profile = new NicProfile(nic, network, nic.getBroadcastUri(), nic.getIsolationUri(), 
                 networkRate, isSecurityGroupSupportedInNetwork(network), getNetworkTag(vm.getHypervisorType(), network));
         guru.updateNicProfile(profile, network);            
@@ -2438,6 +2439,12 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
     }
 
     @Override
+    @DB
+    public Network getNetwork(String uuid) {
+        return _networksDao.findByUuid(uuid);
+    }
+
+    @Override
     public List<? extends RemoteAccessVPNServiceProvider> getRemoteAccessVpnElements() {
         List<RemoteAccessVPNServiceProvider> elements = new ArrayList<RemoteAccessVPNServiceProvider>();
         for (NetworkElement element : _networkElements) {
@@ -2486,7 +2493,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
         NetworkVO network = _networksDao.findById(nic.getNetworkId());
         NicProfile profile = new NicProfile(nic, network, null, null, null,
                 isSecurityGroupSupportedInNetwork(network), getNetworkTag(vm.getHypervisorType(), network));
-        NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
+        NetworkGuru guru = AdapterBase.getAdapterByName(_networkGurus, network.getGuruName());
         guru.deallocate(network, profile, vm);
         _nicDao.remove(nic.getId());
         s_logger.debug("Removed nic id=" + nic.getId());
@@ -3549,7 +3556,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
             if (s_logger.isDebugEnabled()) {
                 s_logger.debug("Network id=" + networkId + " is shutdown successfully, cleaning up corresponding resources now.");
             }
-            NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
+            NetworkGuru guru = AdapterBase.getAdapterByName(_networkGurus, network.getGuruName());
             NetworkProfile profile = convertNetworkToNetworkProfile(network.getId());
             guru.shutdown(profile, _networkOfferingDao.findById(network.getNetworkOfferingId()));
 
@@ -3715,7 +3722,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
             if (s_logger.isDebugEnabled()) {
                 s_logger.debug("Network id=" + networkId + " is destroyed successfully, cleaning up corresponding resources now.");
             }
-            NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
+            NetworkGuru guru = AdapterBase.getAdapterByName(_networkGurus, network.getGuruName());
             Account owner = _accountMgr.getAccount(network.getAccountId());
 
             Transaction txn = Transaction.currentTxn();
@@ -4418,7 +4425,7 @@ public class NetworkManagerImpl implements NetworkManager, NetworkService, Manag
     @Override
     public NetworkProfile convertNetworkToNetworkProfile(long networkId) {
         NetworkVO network = _networksDao.findById(networkId);
-        NetworkGuru guru = Adapters.getAdapterByName(_networkGurus, network.getGuruName());
+        NetworkGuru guru = AdapterBase.getAdapterByName(_networkGurus, network.getGuruName());
         NetworkProfile profile = new NetworkProfile(network);
         guru.updateNetworkProfile(profile);
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/network/as/AutoScaleManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/as/AutoScaleManagerImpl.java b/server/src/com/cloud/network/as/AutoScaleManagerImpl.java
index d49f4aa..7c8a6f5 100644
--- a/server/src/com/cloud/network/as/AutoScaleManagerImpl.java
+++ b/server/src/com/cloud/network/as/AutoScaleManagerImpl.java
@@ -23,27 +23,31 @@ import java.util.List;
 import java.util.Map;
 
 import javax.ejb.Local;
+import javax.inject.Inject;
 import javax.naming.ConfigurationException;
 
 import org.apache.cloudstack.acl.ControlledEntity;
-import org.apache.cloudstack.api.command.admin.autoscale.CreateCounterCmd;
-import org.apache.cloudstack.api.command.user.autoscale.*;
-import org.apache.log4j.Logger;
-
 import org.apache.cloudstack.api.ApiConstants;
-import com.cloud.api.ApiDBUtils;
-import com.cloud.api.ApiDispatcher;
 import org.apache.cloudstack.api.BaseListAccountResourcesCmd;
+import org.apache.cloudstack.api.command.admin.autoscale.CreateCounterCmd;
 import org.apache.cloudstack.api.command.user.autoscale.CreateAutoScalePolicyCmd;
 import org.apache.cloudstack.api.command.user.autoscale.CreateAutoScaleVmGroupCmd;
+import org.apache.cloudstack.api.command.user.autoscale.CreateAutoScaleVmProfileCmd;
 import org.apache.cloudstack.api.command.user.autoscale.CreateConditionCmd;
-import org.apache.cloudstack.api.command.user.vm.DeployVMCmd;
+import org.apache.cloudstack.api.command.user.autoscale.ListAutoScalePoliciesCmd;
 import org.apache.cloudstack.api.command.user.autoscale.ListAutoScaleVmGroupsCmd;
+import org.apache.cloudstack.api.command.user.autoscale.ListAutoScaleVmProfilesCmd;
 import org.apache.cloudstack.api.command.user.autoscale.ListConditionsCmd;
+import org.apache.cloudstack.api.command.user.autoscale.ListCountersCmd;
 import org.apache.cloudstack.api.command.user.autoscale.UpdateAutoScalePolicyCmd;
+import org.apache.cloudstack.api.command.user.autoscale.UpdateAutoScaleVmGroupCmd;
 import org.apache.cloudstack.api.command.user.autoscale.UpdateAutoScaleVmProfileCmd;
+import org.apache.cloudstack.api.command.user.vm.DeployVMCmd;
+import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 
+import com.cloud.api.ApiDBUtils;
+import com.cloud.api.ApiDispatcher;
 import com.cloud.configuration.Config;
 import com.cloud.configuration.ConfigurationManager;
 import com.cloud.configuration.dao.ConfigurationDao;
@@ -81,7 +85,6 @@ import com.cloud.user.dao.AccountDao;
 import com.cloud.user.dao.UserDao;
 import com.cloud.utils.Pair;
 import com.cloud.utils.Ternary;
-import com.cloud.utils.component.Inject;
 import com.cloud.utils.component.Manager;
 import com.cloud.utils.db.DB;
 import com.cloud.utils.db.Filter;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/network/dao/FirewallRulesDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/dao/FirewallRulesDaoImpl.java b/server/src/com/cloud/network/dao/FirewallRulesDaoImpl.java
index e5ee604..0c79676 100644
--- a/server/src/com/cloud/network/dao/FirewallRulesDaoImpl.java
+++ b/server/src/com/cloud/network/dao/FirewallRulesDaoImpl.java
@@ -32,7 +32,6 @@ import com.cloud.network.rules.FirewallRule.TrafficType;
 import com.cloud.network.rules.FirewallRuleVO;
 import com.cloud.server.ResourceTag.TaggedResourceType;
 import com.cloud.tags.dao.ResourceTagsDaoImpl;
-import com.cloud.utils.component.ComponentLocator;
 import com.cloud.utils.db.DB;
 import com.cloud.utils.db.GenericDaoBase;
 import com.cloud.utils.db.GenericSearchBuilder;
@@ -286,11 +285,12 @@ public class FirewallRulesDaoImpl extends GenericDaoBase<FirewallRuleVO, Long> i
         if (purpose != null) {
             sc.setParameters("purpose", purpose);
         }
-        
+
         sc.setParameters("trafficType", trafficType);
 
         return listBy(sc);
     }
+    @Override
     @DB
     public boolean remove(Long id) {
         Transaction txn = Transaction.currentTxn();
@@ -316,7 +316,7 @@ public class FirewallRulesDaoImpl extends GenericDaoBase<FirewallRuleVO, Long> i
     public List<FirewallRuleVO> listByIpAndPurposeWithState(Long ipId, Purpose purpose, State state) {
         SearchCriteria<FirewallRuleVO> sc = AllFieldsSearch.create();
         sc.setParameters("ipId", ipId);
-        
+
         if (state != null) {
             sc.setParameters("state", state);
         }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/network/dao/IPAddressDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/dao/IPAddressDaoImpl.java b/server/src/com/cloud/network/dao/IPAddressDaoImpl.java
index 833c831..4d6bd08 100755
--- a/server/src/com/cloud/network/dao/IPAddressDaoImpl.java
+++ b/server/src/com/cloud/network/dao/IPAddressDaoImpl.java
@@ -35,7 +35,6 @@ import com.cloud.network.IPAddressVO;
 import com.cloud.network.IpAddress.State;
 import com.cloud.server.ResourceTag.TaggedResourceType;
 import com.cloud.tags.dao.ResourceTagsDaoImpl;
-import com.cloud.utils.component.ComponentLocator;
 import com.cloud.utils.db.DB;
 import com.cloud.utils.db.GenericDaoBase;
 import com.cloud.utils.db.GenericSearchBuilder;
@@ -62,11 +61,11 @@ public class IPAddressDaoImpl extends GenericDaoBase<IPAddressVO, Long> implemen
     @Inject protected VlanDaoImpl _vlanDao;
     protected GenericSearchBuilder<IPAddressVO, Long> CountFreePublicIps;
     @Inject ResourceTagsDaoImpl _tagsDao;
-    
+
     // make it public for JUnit test
     public IPAddressDaoImpl() {
     }
-    
+
     @PostConstruct
     public void init() {
         AllFieldsSearch = createSearchBuilder();
@@ -101,7 +100,7 @@ public class IPAddressDaoImpl extends GenericDaoBase<IPAddressVO, Long> implemen
         AllocatedIpCount.and("vlan", AllocatedIpCount.entity().getVlanId(), Op.EQ);
         AllocatedIpCount.and("allocated", AllocatedIpCount.entity().getAllocatedTime(), Op.NNULL);
         AllocatedIpCount.done();              
-        
+
         AllIpCountForDashboard = createSearchBuilder(Integer.class);
         AllIpCountForDashboard.select(null, Func.COUNT, AllIpCountForDashboard.entity().getAddress());
         AllIpCountForDashboard.and("dc", AllIpCountForDashboard.entity().getDataCenterId(), Op.EQ);        
@@ -111,7 +110,7 @@ public class IPAddressDaoImpl extends GenericDaoBase<IPAddressVO, Long> implemen
         virtaulNetworkVlan.and("vlanType", virtaulNetworkVlan.entity().getVlanType(), SearchCriteria.Op.EQ);
 
         AllIpCountForDashboard.join("vlan", virtaulNetworkVlan, virtaulNetworkVlan.entity().getId(),
-        		AllIpCountForDashboard.entity().getVlanId(), JoinBuilder.JoinType.INNER);
+                AllIpCountForDashboard.entity().getVlanId(), JoinBuilder.JoinType.INNER);
         virtaulNetworkVlan.done();
         AllIpCountForDashboard.done();
 
@@ -121,7 +120,7 @@ public class IPAddressDaoImpl extends GenericDaoBase<IPAddressVO, Long> implemen
         AllocatedIpCountForAccount.and("allocated", AllocatedIpCountForAccount.entity().getAllocatedTime(), Op.NNULL);
         AllocatedIpCountForAccount.and("network", AllocatedIpCountForAccount.entity().getAssociatedWithNetworkId(), Op.NNULL);        
         AllocatedIpCountForAccount.done();
-        
+
         CountFreePublicIps = createSearchBuilder(Long.class);
         CountFreePublicIps.select(null, Func.COUNT, null);
         CountFreePublicIps.and("state", CountFreePublicIps.entity().getState(), SearchCriteria.Op.EQ);
@@ -167,14 +166,14 @@ public class IPAddressDaoImpl extends GenericDaoBase<IPAddressVO, Long> implemen
         sc.setParameters("accountId", accountId);
         return listBy(sc);
     }
-    
+
     @Override
     public List<IPAddressVO> listByVlanId(long vlanId) {
         SearchCriteria<IPAddressVO> sc = AllFieldsSearch.create();
         sc.setParameters("vlan", vlanId);
         return listBy(sc);
     }
-    
+
     @Override
     public IPAddressVO findByIpAndSourceNetworkId(long networkId, String ipAddress) {
         SearchCriteria<IPAddressVO> sc = AllFieldsSearch.create();
@@ -197,7 +196,7 @@ public class IPAddressDaoImpl extends GenericDaoBase<IPAddressVO, Long> implemen
         sc.setParameters("dataCenterId", dcId);
         return listBy(sc);
     }
-    
+
     @Override
     public List<IPAddressVO> listByDcIdIpAddress(long dcId, String ipAddress) {
         SearchCriteria<IPAddressVO> sc = AllFieldsSearch.create();
@@ -205,19 +204,19 @@ public class IPAddressDaoImpl extends GenericDaoBase<IPAddressVO, Long> implemen
         sc.setParameters("ipAddress", ipAddress);
         return listBy(sc);
     }
-    
+
     @Override
     public List<IPAddressVO> listByAssociatedNetwork(long networkId, Boolean isSourceNat) {
         SearchCriteria<IPAddressVO> sc = AllFieldsSearch.create();
         sc.setParameters("network", networkId);
-        
+
         if (isSourceNat != null) {
             sc.setParameters("sourceNat", isSourceNat);
         }
-        
+
         return listBy(sc);
     }
-    
+
     @Override 
     public List<IPAddressVO> listStaticNatPublicIps(long networkId) {
         SearchCriteria<IPAddressVO> sc = AllFieldsSearch.create();
@@ -225,12 +224,12 @@ public class IPAddressDaoImpl extends GenericDaoBase<IPAddressVO, Long> implemen
         sc.setParameters("oneToOneNat", true);
         return listBy(sc);        
     }
-    
+
     @Override
     public IPAddressVO findByAssociatedVmId(long vmId) {
         SearchCriteria<IPAddressVO> sc = AllFieldsSearch.create();
         sc.setParameters("associatedWithVmId", vmId);
-        
+
         return findOneBy(sc);
     }
 
@@ -248,13 +247,13 @@ public class IPAddressDaoImpl extends GenericDaoBase<IPAddressVO, Long> implemen
         SearchCriteria<Integer> sc = AllIpCountForDashboard.create();
         sc.setParameters("dc", dcId);
         if (onlyCountAllocated){
-        	sc.setParameters("state", State.Free);
+            sc.setParameters("state", State.Free);
         }
         sc.setJoinParameters("vlan", "vlanType", vlanType.toString());
         return customSearch(sc, null).get(0);
     }
 
-    
+
     @Override
     @DB
     public int countIPs(long dcId, Long accountId, String vlanId, String vlanGateway, String vlanNetmask) {
@@ -285,35 +284,35 @@ public class IPAddressDaoImpl extends GenericDaoBase<IPAddressVO, Long> implemen
     public IPAddressVO markAsUnavailable(long ipAddressId) {
         SearchCriteria<IPAddressVO> sc = AllFieldsSearch.create();
         sc.setParameters("id", ipAddressId);
-        
+
         IPAddressVO ip = createForUpdate();
         ip.setState(State.Releasing);
         if (update(ip, sc) != 1) {
             return null;
         }
-        
+
         return findOneBy(sc);
     }
 
     @Override
     public long countAllocatedIPsForAccount(long accountId) {
-    	SearchCriteria<Long> sc = AllocatedIpCountForAccount.create();
+        SearchCriteria<Long> sc = AllocatedIpCountForAccount.create();
         sc.setParameters("account", accountId);
         return customSearch(sc, null).get(0);
     }
-    
+
     @Override
     public List<IPAddressVO> listByPhysicalNetworkId(long physicalNetworkId) {
         SearchCriteria<IPAddressVO> sc = AllFieldsSearch.create();
         sc.setParameters("physicalNetworkId", physicalNetworkId);
         return listBy(sc);
     }
-    
+
     @Override
     public long countFreePublicIPs() {
-    	SearchCriteria<Long> sc = CountFreePublicIps.create();
-    	sc.setParameters("state", State.Free);
-    	sc.setJoinParameters("vlans", "vlanType", VlanType.VirtualNetwork);
+        SearchCriteria<Long> sc = CountFreePublicIps.create();
+        sc.setParameters("state", State.Free);
+        sc.setJoinParameters("vlans", "vlanType", VlanType.VirtualNetwork);
         return customSearch(sc, null).get(0);       
     }
 
@@ -321,21 +320,22 @@ public class IPAddressDaoImpl extends GenericDaoBase<IPAddressVO, Long> implemen
     public List<IPAddressVO> listByAssociatedVpc(long vpcId, Boolean isSourceNat) {
         SearchCriteria<IPAddressVO> sc = AllFieldsSearch.create();
         sc.setParameters("vpcId", vpcId);
-        
+
         if (isSourceNat != null) {
             sc.setParameters("sourceNat", isSourceNat);
         }
-        
+
         return listBy(sc);
     }
-    
+
+    @Override
     public long countFreeIPsInNetwork(long networkId) {
         SearchCriteria<Long> sc = CountFreePublicIps.create();
         sc.setParameters("state", State.Free);
         sc.setParameters("networkId", networkId);
         return customSearch(sc, null).get(0);       
     }
-    
+
     @Override
     @DB
     public boolean remove(Long id) {

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/network/dao/LoadBalancerDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/dao/LoadBalancerDaoImpl.java b/server/src/com/cloud/network/dao/LoadBalancerDaoImpl.java
index 31180db..ec9dbc5 100644
--- a/server/src/com/cloud/network/dao/LoadBalancerDaoImpl.java
+++ b/server/src/com/cloud/network/dao/LoadBalancerDaoImpl.java
@@ -29,7 +29,6 @@ import org.springframework.stereotype.Component;
 
 import com.cloud.network.LoadBalancerVO;
 import com.cloud.network.rules.FirewallRule.State;
-import com.cloud.utils.component.ComponentLocator;
 import com.cloud.utils.db.GenericDaoBase;
 import com.cloud.utils.db.SearchBuilder;
 import com.cloud.utils.db.SearchCriteria;
@@ -135,5 +134,5 @@ public class LoadBalancerDaoImpl extends GenericDaoBase<LoadBalancerVO, Long> im
         sc.setParameters("state", State.Add.toString(), State.Revoke.toString());
         return listBy(sc);
     }
-    
+
 }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/network/dao/NetworkDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/dao/NetworkDaoImpl.java b/server/src/com/cloud/network/dao/NetworkDaoImpl.java
index c6a65dd..206373e 100644
--- a/server/src/com/cloud/network/dao/NetworkDaoImpl.java
+++ b/server/src/com/cloud/network/dao/NetworkDaoImpl.java
@@ -45,7 +45,6 @@ import com.cloud.offerings.NetworkOfferingVO;
 import com.cloud.offerings.dao.NetworkOfferingDaoImpl;
 import com.cloud.server.ResourceTag.TaggedResourceType;
 import com.cloud.tags.dao.ResourceTagsDaoImpl;
-import com.cloud.utils.component.ComponentLocator;
 import com.cloud.utils.db.DB;
 import com.cloud.utils.db.GenericDaoBase;
 import com.cloud.utils.db.GenericSearchBuilder;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/network/dao/PhysicalNetworkDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/dao/PhysicalNetworkDaoImpl.java b/server/src/com/cloud/network/dao/PhysicalNetworkDaoImpl.java
index e1603db..f4648fb 100644
--- a/server/src/com/cloud/network/dao/PhysicalNetworkDaoImpl.java
+++ b/server/src/com/cloud/network/dao/PhysicalNetworkDaoImpl.java
@@ -25,23 +25,20 @@ import org.springframework.stereotype.Component;
 
 import com.cloud.network.Networks.TrafficType;
 import com.cloud.network.PhysicalNetworkVO;
-import com.cloud.utils.component.ComponentLocator;
 import com.cloud.utils.db.DB;
 import com.cloud.utils.db.GenericDaoBase;
-import com.cloud.utils.db.GenericSearchBuilder;
 import com.cloud.utils.db.JoinBuilder;
 import com.cloud.utils.db.SearchBuilder;
 import com.cloud.utils.db.SearchCriteria;
-import com.cloud.utils.db.SearchCriteria.Func;
 import com.cloud.utils.db.SearchCriteria.Op;
 
 @Component
 @Local(value=PhysicalNetworkDao.class) @DB(txn=false)
 public class PhysicalNetworkDaoImpl extends GenericDaoBase<PhysicalNetworkVO, Long> implements PhysicalNetworkDao {
     final SearchBuilder<PhysicalNetworkVO> ZoneSearch;
-    
+
     @Inject protected PhysicalNetworkTrafficTypeDaoImpl _trafficTypeDao;
-    
+
     protected PhysicalNetworkDaoImpl() {
         super();
         ZoneSearch = createSearchBuilder();
@@ -65,7 +62,7 @@ public class PhysicalNetworkDaoImpl extends GenericDaoBase<PhysicalNetworkVO, Lo
 
     @Override
     public List<PhysicalNetworkVO> listByZoneAndTrafficType(long dataCenterId, TrafficType trafficType) {
-        
+
         SearchBuilder<PhysicalNetworkTrafficTypeVO> trafficTypeSearch = _trafficTypeDao.createSearchBuilder();
         PhysicalNetworkTrafficTypeVO trafficTypeEntity = trafficTypeSearch.entity();
         trafficTypeSearch.and("trafficType", trafficTypeSearch.entity().getTrafficType(), SearchCriteria.Op.EQ);

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/network/dao/Site2SiteVpnConnectionDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/dao/Site2SiteVpnConnectionDaoImpl.java b/server/src/com/cloud/network/dao/Site2SiteVpnConnectionDaoImpl.java
index 2dbae75..8ad6176 100644
--- a/server/src/com/cloud/network/dao/Site2SiteVpnConnectionDaoImpl.java
+++ b/server/src/com/cloud/network/dao/Site2SiteVpnConnectionDaoImpl.java
@@ -25,10 +25,8 @@ import javax.inject.Inject;
 import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 
-import com.cloud.network.IPAddressVO;
 import com.cloud.network.Site2SiteVpnConnectionVO;
 import com.cloud.network.Site2SiteVpnGatewayVO;
-import com.cloud.utils.component.ComponentLocator;
 import com.cloud.utils.db.GenericDaoBase;
 import com.cloud.utils.db.JoinBuilder.JoinType;
 import com.cloud.utils.db.SearchBuilder;
@@ -41,35 +39,35 @@ public class Site2SiteVpnConnectionDaoImpl extends GenericDaoBase<Site2SiteVpnCo
 
     @Inject protected IPAddressDaoImpl _addrDao;
     @Inject protected Site2SiteVpnGatewayDaoImpl _vpnGatewayDao;
-    
+
     private SearchBuilder<Site2SiteVpnConnectionVO> AllFieldsSearch;
     private SearchBuilder<Site2SiteVpnConnectionVO> VpcSearch;
     private SearchBuilder<Site2SiteVpnGatewayVO> VpnGatewaySearch;
 
     public Site2SiteVpnConnectionDaoImpl() {
     }
-    
+
     @PostConstruct
     protected void init() {
         AllFieldsSearch = createSearchBuilder();
         AllFieldsSearch.and("customerGatewayId", AllFieldsSearch.entity().getCustomerGatewayId(), SearchCriteria.Op.EQ);
         AllFieldsSearch.and("vpnGatewayId", AllFieldsSearch.entity().getVpnGatewayId(), SearchCriteria.Op.EQ);
         AllFieldsSearch.done();
-        
+
         VpcSearch = createSearchBuilder();
         VpnGatewaySearch = _vpnGatewayDao.createSearchBuilder();
         VpnGatewaySearch.and("vpcId", VpnGatewaySearch.entity().getVpcId(), SearchCriteria.Op.EQ);
         VpcSearch.join("vpnGatewaySearch", VpnGatewaySearch, VpnGatewaySearch.entity().getId(), VpcSearch.entity().getVpnGatewayId(), JoinType.INNER);
         VpcSearch.done();
     }
-    
+
     @Override
     public List<Site2SiteVpnConnectionVO> listByCustomerGatewayId(long id) {
         SearchCriteria<Site2SiteVpnConnectionVO> sc = AllFieldsSearch.create();
         sc.setParameters("customerGatewayId", id);
         return listBy(sc);
     }
-    
+
     @Override
     public List<Site2SiteVpnConnectionVO> listByVpnGatewayId(long id) {
         SearchCriteria<Site2SiteVpnConnectionVO> sc = AllFieldsSearch.create();

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/network/dao/Site2SiteVpnGatewayDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/dao/Site2SiteVpnGatewayDaoImpl.java b/server/src/com/cloud/network/dao/Site2SiteVpnGatewayDaoImpl.java
index b5e0ad5..491b172 100644
--- a/server/src/com/cloud/network/dao/Site2SiteVpnGatewayDaoImpl.java
+++ b/server/src/com/cloud/network/dao/Site2SiteVpnGatewayDaoImpl.java
@@ -23,7 +23,6 @@ import org.apache.log4j.Logger;
 import org.springframework.stereotype.Component;
 
 import com.cloud.network.Site2SiteVpnGatewayVO;
-import com.cloud.utils.component.ComponentLocator;
 import com.cloud.utils.db.GenericDaoBase;
 import com.cloud.utils.db.SearchBuilder;
 import com.cloud.utils.db.SearchCriteria;
@@ -32,9 +31,9 @@ import com.cloud.utils.db.SearchCriteria;
 @Local(value={Site2SiteVpnGatewayDao.class})
 public class Site2SiteVpnGatewayDaoImpl extends GenericDaoBase<Site2SiteVpnGatewayVO, Long> implements Site2SiteVpnGatewayDao {
     @Inject protected IPAddressDaoImpl _addrDao;
-    
+
     private static final Logger s_logger = Logger.getLogger(Site2SiteVpnGatewayDaoImpl.class);
-    
+
     private final SearchBuilder<Site2SiteVpnGatewayVO> AllFieldsSearch;
 
     protected Site2SiteVpnGatewayDaoImpl() {
@@ -42,7 +41,7 @@ public class Site2SiteVpnGatewayDaoImpl extends GenericDaoBase<Site2SiteVpnGatew
         AllFieldsSearch.and("vpcId", AllFieldsSearch.entity().getVpcId(), SearchCriteria.Op.EQ);
         AllFieldsSearch.done();
     }
-    
+
     @Override
     public Site2SiteVpnGatewayVO findByVpcId(long vpcId) {
         SearchCriteria<Site2SiteVpnGatewayVO> sc = AllFieldsSearch.create();

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/network/element/BareMetalElement.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/element/BareMetalElement.java b/server/src/com/cloud/network/element/BareMetalElement.java
index d13cf14..553fe1d 100644
--- a/server/src/com/cloud/network/element/BareMetalElement.java
+++ b/server/src/com/cloud/network/element/BareMetalElement.java
@@ -16,7 +16,6 @@
 // under the License.
 package com.cloud.network.element;
 
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -24,7 +23,6 @@ import javax.ejb.Local;
 import javax.inject.Inject;
 
 import org.apache.log4j.Logger;
-import org.springframework.stereotype.Component;
 
 import com.cloud.baremetal.ExternalDhcpManager;
 import com.cloud.deploy.DeployDestination;
@@ -49,7 +47,6 @@ import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.VirtualMachineProfile;
 import com.cloud.vm.dao.NicDao;
 
-@Component
 @Local(value=NetworkElement.class)
 public class BareMetalElement extends AdapterBase implements NetworkElement {
 	private static final Logger s_logger = Logger.getLogger(BareMetalElement.class);

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/network/element/CloudZonesNetworkElement.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/element/CloudZonesNetworkElement.java b/server/src/com/cloud/network/element/CloudZonesNetworkElement.java
index 0cf632c..cc35460 100644
--- a/server/src/com/cloud/network/element/CloudZonesNetworkElement.java
+++ b/server/src/com/cloud/network/element/CloudZonesNetworkElement.java
@@ -17,7 +17,6 @@
 package com.cloud.network.element;
 
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -25,7 +24,6 @@ import javax.ejb.Local;
 import javax.inject.Inject;
 
 import org.apache.log4j.Logger;
-import org.springframework.stereotype.Component;
 
 import com.cloud.agent.AgentManager;
 import com.cloud.agent.AgentManager.OnError;
@@ -64,7 +62,6 @@ import com.cloud.vm.VirtualMachineProfile;
 import com.cloud.vm.dao.DomainRouterDao;
 import com.cloud.vm.dao.UserVmDao;
 
-@Component
 @Local(value = NetworkElement.class)
 public class CloudZonesNetworkElement extends AdapterBase implements NetworkElement, UserDataServiceProvider {
     private static final Logger s_logger = Logger.getLogger(CloudZonesNetworkElement.class);

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/network/element/ExternalDhcpElement.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/element/ExternalDhcpElement.java b/server/src/com/cloud/network/element/ExternalDhcpElement.java
index 0f99abd..f7c465d 100755
--- a/server/src/com/cloud/network/element/ExternalDhcpElement.java
+++ b/server/src/com/cloud/network/element/ExternalDhcpElement.java
@@ -17,7 +17,6 @@
 package com.cloud.network.element;
 
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -25,7 +24,6 @@ import javax.ejb.Local;
 import javax.inject.Inject;
 
 import org.apache.log4j.Logger;
-import org.springframework.stereotype.Component;
 
 import com.cloud.baremetal.ExternalDhcpManager;
 import com.cloud.dc.DataCenter;
@@ -51,7 +49,6 @@ import com.cloud.vm.ReservationContext;
 import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.VirtualMachineProfile;
 
-@Component
 @Local(value = NetworkElement.class)
 public class ExternalDhcpElement extends AdapterBase implements NetworkElement, DhcpServiceProvider {
     private static final Logger s_logger = Logger.getLogger(ExternalDhcpElement.class);

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/network/element/SecurityGroupElement.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/element/SecurityGroupElement.java b/server/src/com/cloud/network/element/SecurityGroupElement.java
index bcc8ecc..0659db7 100644
--- a/server/src/com/cloud/network/element/SecurityGroupElement.java
+++ b/server/src/com/cloud/network/element/SecurityGroupElement.java
@@ -17,14 +17,11 @@
 package com.cloud.network.element;
 
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
 import javax.ejb.Local;
 
-import org.springframework.stereotype.Component;
-
 import com.cloud.deploy.DeployDestination;
 import com.cloud.exception.ConcurrentOperationException;
 import com.cloud.exception.InsufficientCapacityException;
@@ -42,7 +39,6 @@ import com.cloud.vm.ReservationContext;
 import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.VirtualMachineProfile;
 
-@Component
 @Local(value=NetworkElement.class)
 public class SecurityGroupElement extends AdapterBase implements NetworkElement {
     private static final Map<Service, Map<Capability, String>> capabilities = setCapabilities();

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/network/element/VirtualRouterElement.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/element/VirtualRouterElement.java b/server/src/com/cloud/network/element/VirtualRouterElement.java
index 4818443..8a69e56 100755
--- a/server/src/com/cloud/network/element/VirtualRouterElement.java
+++ b/server/src/com/cloud/network/element/VirtualRouterElement.java
@@ -25,10 +25,10 @@ import java.util.Set;
 import javax.ejb.Local;
 import javax.inject.Inject;
 
+import com.cloud.utils.PropertiesUtil;
 import org.apache.cloudstack.api.command.admin.router.ConfigureVirtualRouterElementCmd;
 import org.apache.cloudstack.api.command.admin.router.ListVirtualRouterElementsCmd;
 import org.apache.log4j.Logger;
-import org.springframework.stereotype.Component;
 
 import com.cloud.configuration.ConfigurationManager;
 import com.cloud.configuration.dao.ConfigurationDao;
@@ -89,7 +89,6 @@ import com.cloud.vm.dao.DomainRouterDao;
 import com.cloud.vm.dao.UserVmDao;
 import com.google.gson.Gson;
 
-@Component
 @Local(value = NetworkElement.class)
 public class VirtualRouterElement extends AdapterBase implements VirtualRouterElementService, DhcpServiceProvider, 
     UserDataServiceProvider, SourceNatServiceProvider, StaticNatServiceProvider, FirewallServiceProvider,
@@ -682,8 +681,9 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
     }
 
     @Override
-    public String[] getPropertiesFiles() {
-        return new String[] { "virtualrouter_commands.properties" };
+    public Map<String, String> getProperties() {
+        return PropertiesUtil.processConfigFile(new String[]
+                { "virtualrouter_commands.properties" });
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/network/element/VpcVirtualRouterElement.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/element/VpcVirtualRouterElement.java b/server/src/com/cloud/network/element/VpcVirtualRouterElement.java
index 49ca0b4..60924a2 100644
--- a/server/src/com/cloud/network/element/VpcVirtualRouterElement.java
+++ b/server/src/com/cloud/network/element/VpcVirtualRouterElement.java
@@ -26,7 +26,6 @@ import javax.ejb.Local;
 import javax.inject.Inject;
 
 import org.apache.log4j.Logger;
-import org.springframework.stereotype.Component;
 
 import com.cloud.dc.DataCenter;
 import com.cloud.deploy.DeployDestination;
@@ -63,7 +62,6 @@ import com.cloud.vm.VirtualMachine;
 import com.cloud.vm.VirtualMachine.Type;
 import com.cloud.vm.VirtualMachineProfile;
 
-@Component
 @Local(value = NetworkElement.class)
 public class VpcVirtualRouterElement extends VirtualRouterElement implements VpcProvider, Site2SiteVpnServiceProvider, NetworkACLServiceProvider{
     private static final Logger s_logger = Logger.getLogger(VpcVirtualRouterElement.class);

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/network/guru/ControlNetworkGuru.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/guru/ControlNetworkGuru.java b/server/src/com/cloud/network/guru/ControlNetworkGuru.java
index 1195f68..469a08b 100755
--- a/server/src/com/cloud/network/guru/ControlNetworkGuru.java
+++ b/server/src/com/cloud/network/guru/ControlNetworkGuru.java
@@ -46,7 +46,7 @@ import com.cloud.network.Networks.Mode;
 import com.cloud.network.Networks.TrafficType;
 import com.cloud.offering.NetworkOffering;
 import com.cloud.user.Account;
-import com.cloud.utils.component.ComponentLocator;
+
 import com.cloud.utils.exception.CloudRuntimeException;
 import com.cloud.utils.net.NetUtils;
 import com.cloud.vm.Nic;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
index 85e86f6..255a1af 100755
--- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@ -206,7 +206,7 @@ import com.cloud.utils.NumbersUtil;
 import com.cloud.utils.Pair;
 import com.cloud.utils.PasswordGenerator;
 import com.cloud.utils.StringUtils;
-import com.cloud.utils.component.ComponentLocator;
+
 import com.cloud.utils.concurrency.NamedThreadFactory;
 import com.cloud.utils.db.DB;
 import com.cloud.utils.db.Filter;
@@ -818,26 +818,29 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
                     String privateIP = router.getPrivateIpAddress();
 
                     if (privateIP != null) {
+                        boolean forVpc = router.getVpcId() != null;
                         List<? extends Nic> routerNics = _nicDao.listByVmId(router.getId());
                         for (Nic routerNic : routerNics) {
                             Network network = _networkMgr.getNetwork(routerNic.getNetworkId());
-                            if (network.getTrafficType() == TrafficType.Public) {
-                                boolean forVpc = router.getVpcId() != null;
+                            //Send network usage command for public nic in VPC VR
+                            //Send network usage command for isolated guest nic of non VPC VR                            
+                            if ((forVpc && network.getTrafficType() == TrafficType.Public) || (!forVpc && network.getTrafficType() == TrafficType.Guest && network.getGuestType() == Network.GuestType.Isolated)) {
                                 final NetworkUsageCommand usageCmd = new NetworkUsageCommand(privateIP, router.getHostName(),
                                         forVpc, routerNic.getIp4Address());
-                                UserStatisticsVO previousStats = _statsDao.findBy(router.getAccountId(), 
-                                        router.getDataCenterIdToDeployIn(), network.getId(), null, router.getId(), router.getType().toString());
+                                String routerType = router.getType().toString();
+                                UserStatisticsVO previousStats = _statsDao.findBy(router.getAccountId(),
+                                        router.getDataCenterIdToDeployIn(), network.getId(), (forVpc ? routerNic.getIp4Address() : null), router.getId(), routerType);
                                 NetworkUsageAnswer answer = null;
                                 try {
                                     answer = (NetworkUsageAnswer) _agentMgr.easySend(router.getHostId(), usageCmd);
                                 } catch (Exception e) {
-                                    s_logger.warn("Error while collecting network stats from router: "+router.getInstanceName()+" from host: "+router.getHostId(), e);
+                                    s_logger.warn("Error while collecting network stats from router: " + router.getInstanceName() + " from host: " + router.getHostId(), e);
                                     continue;
                                 }
 
                                 if (answer != null) {
                                     if (!answer.getResult()) {
-                                        s_logger.warn("Error while collecting network stats from router: "+router.getInstanceName()+" from host: "+router.getHostId() + "; details: " + answer.getDetails());
+                                        s_logger.warn("Error while collecting network stats from router: " + router.getInstanceName() + " from host: " + router.getHostId() + "; details: " + answer.getDetails());
                                         continue;
                                     }
                                     Transaction txn = Transaction.open(Transaction.CLOUD_DB);
@@ -847,27 +850,27 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
                                             continue;
                                         }
                                         txn.start();
-                                        UserStatisticsVO stats = _statsDao.lock(router.getAccountId(), 
-                                                router.getDataCenterIdToDeployIn(), network.getId(), routerNic.getIp4Address(), router.getId(), router.getType().toString());
+                                        UserStatisticsVO stats = _statsDao.lock(router.getAccountId(),
+                                                router.getDataCenterIdToDeployIn(), network.getId(), (forVpc ? routerNic.getIp4Address() : null), router.getId(), routerType);
                                         if (stats == null) {
                                             s_logger.warn("unable to find stats for account: " + router.getAccountId());
                                             continue;
                                         }
 
-                                        if(previousStats != null 
-                                                && ((previousStats.getCurrentBytesReceived() != stats.getCurrentBytesReceived()) 
-                                                        || (previousStats.getCurrentBytesSent() != stats.getCurrentBytesSent()))){
+                                        if (previousStats != null
+                                                && ((previousStats.getCurrentBytesReceived() != stats.getCurrentBytesReceived())
+                                                || (previousStats.getCurrentBytesSent() != stats.getCurrentBytesSent()))) {
                                             s_logger.debug("Router stats changed from the time NetworkUsageCommand was sent. " +
-                                                    "Ignoring current answer. Router: "+answer.getRouterName()+" Rcvd: " + 
-                                                    answer.getBytesReceived()+ "Sent: " +answer.getBytesSent());
+                                                    "Ignoring current answer. Router: " + answer.getRouterName() + " Rcvd: " +
+                                                    answer.getBytesReceived() + "Sent: " + answer.getBytesSent());
                                             continue;
                                         }
 
                                         if (stats.getCurrentBytesReceived() > answer.getBytesReceived()) {
                                             if (s_logger.isDebugEnabled()) {
                                                 s_logger.debug("Received # of bytes that's less than the last one.  " +
-                                                        "Assuming something went wrong and persisting it. Router: " + 
-                                                        answer.getRouterName()+" Reported: " + answer.getBytesReceived()
+                                                        "Assuming something went wrong and persisting it. Router: " +
+                                                        answer.getRouterName() + " Reported: " + answer.getBytesReceived()
                                                         + " Stored: " + stats.getCurrentBytesReceived());
                                             }
                                             stats.setNetBytesReceived(stats.getNetBytesReceived() + stats.getCurrentBytesReceived());
@@ -876,8 +879,8 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian
                                         if (stats.getCurrentBytesSent() > answer.getBytesSent()) {
                                             if (s_logger.isDebugEnabled()) {
                                                 s_logger.debug("Received # of bytes that's less than the last one.  " +
-                                                        "Assuming something went wrong and persisting it. Router: " + 
-                                                        answer.getRouterName()+" Reported: " + answer.getBytesSent()
+                                                        "Assuming something went wrong and persisting it. Router: " +
+                                                        answer.getRouterName() + " Reported: " + answer.getBytesSent()
                                                         + " Stored: " + stats.getCurrentBytesSent());
                                             }
                                             stats.setNetBytesSent(stats.getNetBytesSent() + stats.getCurrentBytesSent());

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/network/rules/dao/PortForwardingRulesDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/rules/dao/PortForwardingRulesDaoImpl.java b/server/src/com/cloud/network/rules/dao/PortForwardingRulesDaoImpl.java
index 119ab3d..5406ab6 100644
--- a/server/src/com/cloud/network/rules/dao/PortForwardingRulesDaoImpl.java
+++ b/server/src/com/cloud/network/rules/dao/PortForwardingRulesDaoImpl.java
@@ -27,7 +27,7 @@ import com.cloud.network.dao.FirewallRulesCidrsDaoImpl;
 import com.cloud.network.rules.FirewallRule.Purpose;
 import com.cloud.network.rules.FirewallRule.State;
 import com.cloud.network.rules.PortForwardingRuleVO;
-import com.cloud.utils.component.ComponentLocator;
+
 import com.cloud.utils.db.GenericDaoBase;
 import com.cloud.utils.db.SearchBuilder;
 import com.cloud.utils.db.SearchCriteria;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java b/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java
index 0a0844f..c7848b8 100755
--- a/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java
+++ b/server/src/com/cloud/network/security/SecurityGroupManagerImpl.java
@@ -87,7 +87,7 @@ import com.cloud.uservm.UserVm;
 import com.cloud.utils.NumbersUtil;
 import com.cloud.utils.Pair;
 import com.cloud.utils.Ternary;
-import com.cloud.utils.component.ComponentLocator;
+
 import com.cloud.utils.component.Manager;
 import com.cloud.utils.concurrency.NamedThreadFactory;
 import com.cloud.utils.db.DB;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/network/security/dao/SecurityGroupDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/security/dao/SecurityGroupDaoImpl.java b/server/src/com/cloud/network/security/dao/SecurityGroupDaoImpl.java
index bd44328..68112c0 100644
--- a/server/src/com/cloud/network/security/dao/SecurityGroupDaoImpl.java
+++ b/server/src/com/cloud/network/security/dao/SecurityGroupDaoImpl.java
@@ -26,7 +26,7 @@ import org.springframework.stereotype.Component;
 import com.cloud.network.security.SecurityGroupVO;
 import com.cloud.server.ResourceTag.TaggedResourceType;
 import com.cloud.tags.dao.ResourceTagsDaoImpl;
-import com.cloud.utils.component.ComponentLocator;
+
 import com.cloud.utils.db.DB;
 import com.cloud.utils.db.GenericDaoBase;
 import com.cloud.utils.db.SearchBuilder;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/network/vpc/VpcManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/vpc/VpcManagerImpl.java b/server/src/com/cloud/network/vpc/VpcManagerImpl.java
index 58c497e..00205a1 100644
--- a/server/src/com/cloud/network/vpc/VpcManagerImpl.java
+++ b/server/src/com/cloud/network/vpc/VpcManagerImpl.java
@@ -99,7 +99,7 @@ import com.cloud.user.UserContext;
 import com.cloud.utils.NumbersUtil;
 import com.cloud.utils.Pair;
 import com.cloud.utils.Ternary;
-import com.cloud.utils.component.ComponentLocator;
+
 import com.cloud.utils.component.Manager;
 import com.cloud.utils.concurrency.NamedThreadFactory;
 import com.cloud.utils.db.DB;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/network/vpc/dao/StaticRouteDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/vpc/dao/StaticRouteDaoImpl.java b/server/src/com/cloud/network/vpc/dao/StaticRouteDaoImpl.java
index c5270f8..0ebccab 100644
--- a/server/src/com/cloud/network/vpc/dao/StaticRouteDaoImpl.java
+++ b/server/src/com/cloud/network/vpc/dao/StaticRouteDaoImpl.java
@@ -27,7 +27,7 @@ import com.cloud.network.vpc.StaticRoute;
 import com.cloud.network.vpc.StaticRouteVO;
 import com.cloud.server.ResourceTag.TaggedResourceType;
 import com.cloud.tags.dao.ResourceTagsDaoImpl;
-import com.cloud.utils.component.ComponentLocator;
+
 import com.cloud.utils.db.DB;
 import com.cloud.utils.db.GenericDaoBase;
 import com.cloud.utils.db.GenericSearchBuilder;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/network/vpc/dao/VpcDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/vpc/dao/VpcDaoImpl.java b/server/src/com/cloud/network/vpc/dao/VpcDaoImpl.java
index b7e4d30..a9b5e18 100644
--- a/server/src/com/cloud/network/vpc/dao/VpcDaoImpl.java
+++ b/server/src/com/cloud/network/vpc/dao/VpcDaoImpl.java
@@ -27,7 +27,7 @@ import com.cloud.network.vpc.Vpc;
 import com.cloud.network.vpc.VpcVO;
 import com.cloud.server.ResourceTag.TaggedResourceType;
 import com.cloud.tags.dao.ResourceTagsDaoImpl;
-import com.cloud.utils.component.ComponentLocator;
+
 import com.cloud.utils.db.DB;
 import com.cloud.utils.db.GenericDaoBase;
 import com.cloud.utils.db.GenericSearchBuilder;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java b/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java
index ad75502..5b7d9d4 100755
--- a/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java
+++ b/server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java
@@ -70,7 +70,7 @@ import com.cloud.utils.NumbersUtil;
 import com.cloud.utils.Pair;
 import com.cloud.utils.PasswordGenerator;
 import com.cloud.utils.Ternary;
-import com.cloud.utils.component.ComponentLocator;
+
 import com.cloud.utils.component.Manager;
 import com.cloud.utils.db.DB;
 import com.cloud.utils.db.Filter;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java b/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java
index d8371c4..e34f7d4 100644
--- a/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java
+++ b/server/src/com/cloud/network/vpn/Site2SiteVpnManagerImpl.java
@@ -70,7 +70,7 @@ import com.cloud.user.dao.AccountDao;
 import com.cloud.utils.NumbersUtil;
 import com.cloud.utils.Pair;
 import com.cloud.utils.Ternary;
-import com.cloud.utils.component.ComponentLocator;
+
 import com.cloud.utils.component.Manager;
 import com.cloud.utils.db.DB;
 import com.cloud.utils.db.Filter;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/projects/ProjectManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/projects/ProjectManagerImpl.java b/server/src/com/cloud/projects/ProjectManagerImpl.java
index 00b7716..ebe6d0c 100755
--- a/server/src/com/cloud/projects/ProjectManagerImpl.java
+++ b/server/src/com/cloud/projects/ProjectManagerImpl.java
@@ -131,7 +131,9 @@ public class ProjectManagerImpl implements ProjectManager, Manager{
 
         Map<String, String> configs = _configDao.getConfiguration(params);
         _invitationRequired = Boolean.valueOf(configs.get(Config.ProjectInviteRequired.key()));
-        _invitationTimeOut = Long.valueOf(configs.get(Config.ProjectInvitationExpirationTime.key()))*1000;
+        
+        String value = configs.get(Config.ProjectInvitationExpirationTime.key());
+        _invitationTimeOut = Long.valueOf(value != null ? value : "86400")*1000;
         _allowUserToCreateProject = Boolean.valueOf(configs.get(Config.AllowUserToCreateProject.key()));
 
 

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/projects/dao/ProjectDaoImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/projects/dao/ProjectDaoImpl.java b/server/src/com/cloud/projects/dao/ProjectDaoImpl.java
index 52ab141..e07aecc 100644
--- a/server/src/com/cloud/projects/dao/ProjectDaoImpl.java
+++ b/server/src/com/cloud/projects/dao/ProjectDaoImpl.java
@@ -28,7 +28,7 @@ import com.cloud.projects.Project;
 import com.cloud.projects.ProjectVO;
 import com.cloud.server.ResourceTag.TaggedResourceType;
 import com.cloud.tags.dao.ResourceTagsDaoImpl;
-import com.cloud.utils.component.ComponentLocator;
+
 import com.cloud.utils.db.DB;
 import com.cloud.utils.db.GenericDaoBase;
 import com.cloud.utils.db.GenericSearchBuilder;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/110465b5/server/src/com/cloud/resource/DiscovererBase.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/resource/DiscovererBase.java b/server/src/com/cloud/resource/DiscovererBase.java
index 6f6d1ba..8bf599b 100644
--- a/server/src/com/cloud/resource/DiscovererBase.java
+++ b/server/src/com/cloud/resource/DiscovererBase.java
@@ -34,7 +34,7 @@ import com.cloud.dc.dao.ClusterDao;
 import com.cloud.host.HostVO;
 import com.cloud.host.dao.HostDao;
 import com.cloud.network.NetworkManager;
-import com.cloud.utils.component.ComponentLocator;
+
 import com.cloud.utils.net.UrlUtil;
 
 public abstract class DiscovererBase implements Discoverer {