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

[38/51] [abbrv] All merge conflicts resolved

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
----------------------------------------------------------------------
diff --cc plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
index b30ef23,065d3be..f224d7d
--- a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
+++ b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
@@@ -183,7 -182,8 +183,8 @@@ import com.cloud.agent.api.storage.Crea
  import com.cloud.agent.api.storage.DestroyCommand;
  import com.cloud.agent.api.storage.PrimaryStorageDownloadAnswer;
  import com.cloud.agent.api.storage.PrimaryStorageDownloadCommand;
- import com.cloud.agent.api.storage.StorageCommand;
 -import com.cloud.agent.api.storage.ResizeVolumeCommand;
+ import com.cloud.agent.api.storage.ResizeVolumeAnswer;
++import com.cloud.agent.api.storage.ResizeVolumeCommand;
  import com.cloud.agent.api.to.IpAddressTO;
  import com.cloud.agent.api.to.NicTO;
  import com.cloud.agent.api.to.PortForwardingRuleTO;
@@@ -596,7 -592,7 +599,7 @@@ public abstract class CitrixResourceBas
              return new XsLocalNetwork(Network.getByUuid(conn, _host.privateNetwork), null, PIF.getByUuid(conn, _host.privatePif), null);
          } else if (type == TrafficType.Public) {
              return new XsLocalNetwork(Network.getByUuid(conn, _host.publicNetwork), null, PIF.getByUuid(conn, _host.publicPif), null);
--         } else if (type == TrafficType.Storage) {
++        } else if (type == TrafficType.Storage) {
              /*   TrafficType.Storage is for secondary storage, while storageNetwork1 is for primary storage, we need better name here */
              return new XsLocalNetwork(Network.getByUuid(conn, _host.storageNetwork1), null, PIF.getByUuid(conn, _host.storagePif1), null);
          }
@@@ -623,28 -619,28 +626,28 @@@
          // Create a VIF unless there's not already another VIF
          Set<VIF> dom0Vifs = dom0.getVIFs(conn);
          for (VIF vif:dom0Vifs) {
--        	vif.getRecord(conn);
--        	if (vif.getNetwork(conn).getUuid(conn) == nw.getUuid(conn)) {
--        		dom0vif = vif;
--        		s_logger.debug("A VIF for dom0 has already been found - No need to create one");
--        	}
++            vif.getRecord(conn);
++            if (vif.getNetwork(conn).getUuid(conn) == nw.getUuid(conn)) {
++                dom0vif = vif;
++                s_logger.debug("A VIF for dom0 has already been found - No need to create one");
++            }
          }
          if (dom0vif == null) {
--	        s_logger.debug("Create a vif on dom0 for " + networkDesc);
--	        VIF.Record vifr = new VIF.Record();
--	        vifr.VM = dom0;
--	        vifr.device = getLowestAvailableVIFDeviceNum(conn, dom0);
--	        if (vifr.device == null) {
--	            s_logger.debug("Failed to create " + networkDesc + ", no vif available");
--	            return;
--	        }
--	        Map<String, String> config = new HashMap<String, String>();
--	        config.put("nameLabel", vifNameLabel);
--	        vifr.otherConfig = config;
--	        vifr.MAC = "FE:FF:FF:FF:FF:FF";
--	        vifr.network = nw;
--	        
--	        dom0vif = VIF.create(conn, vifr);
++            s_logger.debug("Create a vif on dom0 for " + networkDesc);
++            VIF.Record vifr = new VIF.Record();
++            vifr.VM = dom0;
++            vifr.device = getLowestAvailableVIFDeviceNum(conn, dom0);
++            if (vifr.device == null) {
++                s_logger.debug("Failed to create " + networkDesc + ", no vif available");
++                return;
++            }
++            Map<String, String> config = new HashMap<String, String>();
++            config.put("nameLabel", vifNameLabel);
++            vifr.otherConfig = config;
++            vifr.MAC = "FE:FF:FF:FF:FF:FF";
++            vifr.network = nw;
++
++            dom0vif = VIF.create(conn, vifr);
          }
          // At this stage we surely have a VIF
          dom0vif.plug(conn);
@@@ -718,64 -714,64 +721,64 @@@
       * This method creates a XenServer network and configures it for being used as a L2-in-L3 tunneled network
       */
      private synchronized Network configureTunnelNetwork(Connection conn, long networkId, long hostId, int key) {
--    	try {
--	    	Network nw = findOrCreateTunnelNetwork(conn, key);
--	    	String nwName = "OVSTunnel" + key;
--	    	//Invoke plugin to setup the bridge which will be used by this network
--	        String bridge = nw.getBridge(conn);
--	        Map<String,String> nwOtherConfig = nw.getOtherConfig(conn);
--	        String configuredHosts = nwOtherConfig.get("ovs-host-setup");
--	        boolean configured = false;
--	        if (configuredHosts!=null) {
--	        	String hostIdsStr[] = configuredHosts.split(",");
--	        	for (String hostIdStr:hostIdsStr) {
--	        		if (hostIdStr.equals(((Long)hostId).toString())) {
--	        			configured = true;
--	        			break;
--	        		}
--	        	}
--	        }
--	        if (!configured) {
--	            // Plug dom0 vif only if not done before for network and host
--	            enableXenServerNetwork(conn, nw, nwName, "tunnel network for account " + key);
--	            String result = callHostPlugin(conn, "ovstunnel", "setup_ovs_bridge", "bridge", bridge,
--	            							   "key", String.valueOf(key),
--	            							   "xs_nw_uuid", nw.getUuid(conn),
--	            							   "cs_host_id", ((Long)hostId).toString());
--	            //Note down the fact that the ovs bridge has been setup
--	            String[] res = result.split(":");
--	            if (res.length != 2 || !res[0].equalsIgnoreCase("SUCCESS")) {
--	            	//TODO: Should make this error not fatal?
--	            	throw new CloudRuntimeException("Unable to pre-configure OVS bridge " + bridge + " for network ID:" + networkId +
--	            									" - " + res);
--	            }
--	        }
--	        return nw;
++        try {
++            Network nw = findOrCreateTunnelNetwork(conn, key);
++            String nwName = "OVSTunnel" + key;
++            //Invoke plugin to setup the bridge which will be used by this network
++            String bridge = nw.getBridge(conn);
++            Map<String,String> nwOtherConfig = nw.getOtherConfig(conn);
++            String configuredHosts = nwOtherConfig.get("ovs-host-setup");
++            boolean configured = false;
++            if (configuredHosts!=null) {
++                String hostIdsStr[] = configuredHosts.split(",");
++                for (String hostIdStr:hostIdsStr) {
++                    if (hostIdStr.equals(((Long)hostId).toString())) {
++                        configured = true;
++                        break;
++                    }
++                }
++            }
++            if (!configured) {
++                // Plug dom0 vif only if not done before for network and host
++                enableXenServerNetwork(conn, nw, nwName, "tunnel network for account " + key);
++                String result = callHostPlugin(conn, "ovstunnel", "setup_ovs_bridge", "bridge", bridge,
++                        "key", String.valueOf(key),
++                        "xs_nw_uuid", nw.getUuid(conn),
++                        "cs_host_id", ((Long)hostId).toString());
++                //Note down the fact that the ovs bridge has been setup
++                String[] res = result.split(":");
++                if (res.length != 2 || !res[0].equalsIgnoreCase("SUCCESS")) {
++                    //TODO: Should make this error not fatal?
++                    throw new CloudRuntimeException("Unable to pre-configure OVS bridge " + bridge + " for network ID:" + networkId +
++                            " - " + res);
++                }
++            }
++            return nw;
          } catch (Exception e) {
              s_logger.warn("createandConfigureTunnelNetwork failed", e);
              return null;
          }
      }
--    
++
      private synchronized void destroyTunnelNetwork(Connection conn, int key) {
--    	try {
--    		Network nw = findOrCreateTunnelNetwork(conn, key);
++        try {
++            Network nw = findOrCreateTunnelNetwork(conn, key);
              String bridge = nw.getBridge(conn);
              String result = callHostPlugin(conn, "ovstunnel", "destroy_ovs_bridge", "bridge", bridge);
              String[] res = result.split(":");
              if (res.length != 2 || !res[0].equalsIgnoreCase("SUCCESS")) {
--            	//TODO: Should make this error not fatal?
--            	//Can Concurrent VM shutdown/migration/reboot events can cause this method
--            	//to be executed on a bridge which has already been removed?
--            	throw new CloudRuntimeException("Unable to remove OVS bridge " + bridge + ":" + res);
++                //TODO: Should make this error not fatal?
++                //Can Concurrent VM shutdown/migration/reboot events can cause this method
++                //to be executed on a bridge which has already been removed?
++                throw new CloudRuntimeException("Unable to remove OVS bridge " + bridge + ":" + res);
              }
              return;
--    	} catch (Exception e) {
++        } catch (Exception e) {
              s_logger.warn("destroyTunnelNetwork failed:", e);
              return;
--    	}
++        }
      }
--    
++
      protected Network getNetwork(Connection conn, NicTO nic) throws XenAPIException, XmlRpcException {
          String name = nic.getName();
          XsLocalNetwork network = getNativeNetworkForTraffic(conn, nic.getType(), name);
@@@ -803,13 -799,13 +806,13 @@@
                  return findOrCreateTunnelNetwork(conn, vnetId);
              }
          } else if (nic.getBroadcastType() == BroadcastDomainType.Storage) {
--        	URI broadcastUri = nic.getBroadcastUri();
--        	if (broadcastUri == null) {
--        		return network.getNetwork();
--        	} else {
--        		long vlan = Long.parseLong(broadcastUri.getHost());
--        		return enableVlanNetwork(conn, vlan, network);
--        	}
++            URI broadcastUri = nic.getBroadcastUri();
++            if (broadcastUri == null) {
++                return network.getNetwork();
++            } else {
++                long vlan = Long.parseLong(broadcastUri.getHost());
++                return enableVlanNetwork(conn, vlan, network);
++            }
          } else if (nic.getBroadcastType() == BroadcastDomainType.Lswitch) {
              // Nicira Logical Switch
              return network.getNetwork();
@@@ -889,26 -885,26 +892,26 @@@
  
      protected VDI mount(Connection conn, String vmName, VolumeTO volume) throws XmlRpcException, XenAPIException {
          if (volume.getType() == Volume.Type.ISO) {
--        	String isopath = volume.getPath();
--        	if (isopath == null) {
--        		return null;
--        	}
--        	if (isopath.startsWith("xs-tools")) {
--        		try {
--        			Set<VDI> vdis = VDI.getByNameLabel(conn, isopath);
--        			if (vdis.isEmpty()) {
--        				throw new CloudRuntimeException("Could not find ISO with URL: " + isopath);
--        			}
--        			return vdis.iterator().next();
--
--        		} catch (XenAPIException e) {
--        			throw new CloudRuntimeException("Unable to get pv iso: " + isopath + " due to " + e.toString());
--        		} catch (Exception e) {
--        			throw new CloudRuntimeException("Unable to get pv iso: " + isopath + " due to " + e.toString());
--        		}
--        	}
--
--          
++            String isopath = volume.getPath();
++            if (isopath == null) {
++                return null;
++            }
++            if (isopath.startsWith("xs-tools")) {
++                try {
++                    Set<VDI> vdis = VDI.getByNameLabel(conn, isopath);
++                    if (vdis.isEmpty()) {
++                        throw new CloudRuntimeException("Could not find ISO with URL: " + isopath);
++                    }
++                    return vdis.iterator().next();
++
++                } catch (XenAPIException e) {
++                    throw new CloudRuntimeException("Unable to get pv iso: " + isopath + " due to " + e.toString());
++                } catch (Exception e) {
++                    throw new CloudRuntimeException("Unable to get pv iso: " + isopath + " due to " + e.toString());
++                }
++            }
++
++
              int index = isopath.lastIndexOf("/");
  
              String mountpoint = isopath.substring(0, index);
@@@ -1180,11 -1176,11 +1183,11 @@@
              for ( VM vm : vms ) {
                  Set<VBD> vbds = vm.getVBDs(conn);
                  for( VBD vbd : vbds ) {
--                   if (vbd.getType(conn) == Types.VbdType.CD ) {
--                       vbd.eject(conn);
--                       vbd.destroy(conn);
--                       break;
--                   }
++                    if (vbd.getType(conn) == Types.VbdType.CD ) {
++                        vbd.eject(conn);
++                        vbd.destroy(conn);
++                        break;
++                    }
                  }
              }
          } catch (Exception e) {
@@@ -1287,7 -1283,7 +1290,7 @@@
                  }
              }
              synchronized (_cluster.intern()) {
--	            s_vms.put(_cluster, _name, vmName, State.Starting);
++                s_vms.put(_cluster, _name, vmName, State.Starting);
              }
              s_logger.debug("1. The VM " + vmName + " is in Starting state.");
  
@@@ -1309,7 -1305,7 +1312,7 @@@
              startVM(conn, host, vm, vmName);
  
              if (_isOvs) {
--            	// TODO(Salvatore-orlando): This code should go
++                // TODO(Salvatore-orlando): This code should go
                  for (NicTO nic : vmSpec.getNics()) {
                      if (nic.getBroadcastType() == Networks.BroadcastDomainType.Vswitch) {
                          HashMap<String, String> args = parseDefaultOvsRuleComamnd(nic.getBroadcastUri().toString().substring(Networks.BroadcastDomainType.Vswitch.scheme().length() + "://".length()));
@@@ -1332,7 -1328,8 +1335,8 @@@
                      NicTO[] nics = vmSpec.getNics();
                      boolean secGrpEnabled = false;
                      for (NicTO nic : nics) {
-                         if (nic.getIsolationUri() != null && nic.getIsolationUri().getScheme().equalsIgnoreCase(IsolationType.Ec2.toString())) {
+                         if (nic.isSecurityGroupEnabled() || (nic.getIsolationUri() != null
 -                                       && nic.getIsolationUri().getScheme().equalsIgnoreCase(IsolationType.Ec2.toString()))) {
++                                && nic.getIsolationUri().getScheme().equalsIgnoreCase(IsolationType.Ec2.toString()))) {
                              secGrpEnabled = true;
                              break;
                          }
@@@ -1350,7 -1347,8 +1354,8 @@@
                      //For user vm, program the rules for each nic if the isolation uri scheme is ec2
                      NicTO[] nics = vmSpec.getNics();
                      for (NicTO nic : nics) {
-                         if (nic.getIsolationUri() != null && nic.getIsolationUri().getScheme().equalsIgnoreCase(IsolationType.Ec2.toString())) {
+                         if ( nic.isSecurityGroupEnabled() || nic.getIsolationUri() != null
 -                                   && nic.getIsolationUri().getScheme().equalsIgnoreCase(IsolationType.Ec2.toString())) {
++                                && nic.getIsolationUri().getScheme().equalsIgnoreCase(IsolationType.Ec2.toString())) {
                              result = callHostPlugin(conn, "vmops", "default_network_rules", "vmName", vmName, "vmIP", nic.getIp(), "vmMAC", nic.getMac(), "vmID", Long.toString(vmSpec.getId()));
  
                              if (result == null || result.isEmpty() || !Boolean.parseBoolean(result)) {
@@@ -1373,10 -1371,10 +1378,10 @@@
              synchronized (_cluster.intern()) {
                  if (state != State.Stopped) { 
                      s_vms.put(_cluster, _name, vmName, state);
--                	s_logger.debug("2. The VM " + vmName + " is in " + state + " state.");
++                    s_logger.debug("2. The VM " + vmName + " is in " + state + " state.");
                  } else {
                      s_vms.remove(_cluster, _name, vmName);
--                	s_logger.debug("The VM is in stopped state, detected problem during startup : " + vmName);
++                    s_logger.debug("The VM is in stopped state, detected problem during startup : " + vmName);
                  }
              }
          }
@@@ -1761,11 -1759,11 +1766,11 @@@
          if (cmd.getStaticRoutes() != null) {
              args += " -s " + cmd.getStaticRoutes();
          }
--        
++
          if (cmd.getDefaultDns() != null) {
--        	args += " -N " + cmd.getDefaultDns();
++            args += " -N " + cmd.getDefaultDns();
          }
--        
++
          String result = callHostPlugin(conn, "vmops", "saveDhcpEntry", "args", args);
          if (result == null || result.isEmpty()) {
              return new Answer(cmd, false, "DhcpEntry failed");
@@@ -1941,10 -1939,10 +1946,10 @@@
  
              args += " -c ";
              args += "eth" + correctVif.getDevice(conn);
--            
++
              args += " -g ";
              args += vlanGateway;
--            
++
  
              String result = callHostPlugin(conn, "vmops", "routerProxy", "args", args);
              if (result == null || result.isEmpty()) {
@@@ -1980,7 -1978,7 +1985,7 @@@
  
          try {
              VM router = getVM(conn, vmName);
--            
++
              VIF correctVif = getVifByMac(conn, router, ip.getVifMacAddress());
              if (correctVif == null) {
                  if (ip.isAdd()) {
@@@ -1990,7 -1988,7 +1995,7 @@@
                      return;
                  }
              }           
--           
++
              String args = "vpc_ipassoc.sh " + routerIp;
  
              if (ip.isAdd()) {
@@@ -2004,14 -2002,14 +2009,14 @@@
  
              args += " -c ";
              args += "eth" + correctVif.getDevice(conn);
--            
++
              args += " -g ";
              args += ip.getVlanGateway();
--            
++
              args += " -m ";
              args += Long.toString(NetUtils.getCidrSize(ip.getVlanNetmask()));
--            
--            
++
++
              args += " -n ";
              args += NetUtils.getSubNet(ip.getPublicIp(), ip.getVlanNetmask());
  
@@@ -2025,7 -2023,7 +2030,7 @@@
              throw new Exception(msg);
          }
      }
--    
++
      protected String networkUsage(Connection conn, final String privateIpAddress, final String option, final String vif) {
  
          if (option.equals("get")) {
@@@ -2062,9 -2060,9 +2067,9 @@@
          try {
              Set<VM> vms = VM.getByNameLabel(conn, cmd.getName());
              if(vms.size() == 1) {
--            	int vncport = getVncPort(conn, vms.iterator().next());
--            	String consoleurl;
--            	consoleurl = "consoleurl=" +getVncUrl(conn, vms.iterator().next()) + "&" +"sessionref="+ conn.getSessionReference();
++                int vncport = getVncPort(conn, vms.iterator().next());
++                String consoleurl;
++                consoleurl = "consoleurl=" +getVncUrl(conn, vms.iterator().next()) + "&" +"sessionref="+ conn.getSessionReference();
                  return new GetVncPortAnswer(cmd, consoleurl, vncport);
              } else {
                  return new GetVncPortAnswer(cmd, "There are " + vms.size() + " VMs named " + cmd.getName());
@@@ -2540,7 -2538,7 +2545,7 @@@
              synchronized (_cluster.intern()) {
                  s_vms.put(_cluster, _name, vmName, State.Running);
              }
--        	s_logger.debug("3. The VM " + vmName + " is in Running state");
++            s_logger.debug("3. The VM " + vmName + " is in Running state");
          }
  
          return new CheckVirtualMachineAnswer(cmd, state, vncPort);
@@@ -2562,7 -2560,7 +2567,7 @@@
                  getNetwork(conn, nic);
              }
              synchronized (_cluster.intern()) {
--	            s_vms.put(_cluster, _name, vm.getName(), State.Migrating);
++                s_vms.put(_cluster, _name, vm.getName(), State.Migrating);
              }
              s_logger.debug("4. The VM " +  vm.getName() + " is in Migrating state");
  
@@@ -2634,7 -2632,7 +2639,7 @@@
          s_logger.warn(errMsg);
          throw new CloudRuntimeException(errMsg);
      }
--    
++
      boolean killCopyProcess(Connection conn, String nameLabel) {
          String results = callHostPluginAsync(conn, "vmops", "kill_copy_process",
                  60, "namelabel", nameLabel);
@@@ -2827,9 -2825,9 +2832,9 @@@
          State state = null;
  
          state = s_vms.getState(_cluster, vmName);
--        
++
          synchronized (_cluster.intern()) {
--	        s_vms.put(_cluster, _name, vmName, State.Stopping);
++            s_vms.put(_cluster, _name, vmName, State.Stopping);
          }
          s_logger.debug("5. The VM " + vmName + " is in Stopping state");
          try {
@@@ -2869,10 -2867,10 +2874,10 @@@
              s_logger.warn(msg, e);
              return new MigrateAnswer(cmd, false, msg, null);
          } finally {
--        	synchronized (_cluster.intern()) {
--	            s_vms.put(_cluster, _name, vmName, state);
--        	}
--        	s_logger.debug("6. The VM " + vmName + " is in " + state + " state");
++            synchronized (_cluster.intern()) {
++                s_vms.put(_cluster, _name, vmName, state);
++            }
++            s_logger.debug("6. The VM " + vmName + " is in " + state + " state");
          }
  
      }
@@@ -2971,8 -2969,8 +2976,8 @@@
              record = vm.getRecord(conn);
              Set<Console> consoles = record.consoles;
              if (consoles.isEmpty()) {
--            	s_logger.warn("There are no Consoles available to the vm : " + record.nameDescription);
--            	return -1;
++                s_logger.warn("There are no Consoles available to the vm : " + record.nameDescription);
++                return -1;
              }
              Iterator<Console> i = consoles.iterator();
          } catch (XenAPIException e) {
@@@ -2997,23 -2995,23 +3002,23 @@@
          vncport = vncport.replace("\n", "");
          return NumbersUtil.parseInt(vncport, -1);
      }
--    
++
      protected String getVncUrl(Connection conn, VM vm) {
          VM.Record record;
          Console c;
          try {
              record = vm.getRecord(conn);
              Set<Console> consoles = record.consoles;
--            
++
              if (consoles.isEmpty()) {
--            	s_logger.warn("There are no Consoles available to the vm : " + record.nameDescription);
--            	return null;
++                s_logger.warn("There are no Consoles available to the vm : " + record.nameDescription);
++                return null;
              }
              Iterator<Console> i = consoles.iterator();
              while(i.hasNext()) {
--	            c = i.next();
--	            if(c.getProtocol(conn) == ConsoleProtocol.RFB)
--	            	return c.getLocation(conn);
++                c = i.next();
++                if(c.getProtocol(conn) == ConsoleProtocol.RFB)
++                    return c.getLocation(conn);
              }
          } catch (XenAPIException e) {
              String msg = "Unable to get console url due to " + e.toString();
@@@ -3024,14 -3022,14 +3029,14 @@@
              s_logger.warn(msg, e);
              return null;
          }
--    	return null;
++        return null;
      }
  
      @Override
      public RebootAnswer execute(RebootCommand cmd) {
          Connection conn = getConnection();
          synchronized (_cluster.intern()) {
--	        s_vms.put(_cluster, _name, cmd.getVmName(), State.Starting);
++            s_vms.put(_cluster, _name, cmd.getVmName(), State.Starting);
          }
          s_logger.debug("7. The VM " + cmd.getVmName() + " is in Starting state");
          try {
@@@ -3056,9 -3054,9 +3061,9 @@@
              }
              return new RebootAnswer(cmd, "reboot succeeded", true);
          } finally {
--        	synchronized (_cluster.intern()) {
--	            s_vms.put(_cluster, _name, cmd.getVmName(), State.Running);
--        	}
++            synchronized (_cluster.intern()) {
++                s_vms.put(_cluster, _name, cmd.getVmName(), State.Running);
++            }
              s_logger.debug("8. The VM " + cmd.getVmName() + " is in Running state");
          }
      }
@@@ -3520,10 -3518,10 +3525,10 @@@
              }
  
              if (vms.size() == 0) {
--            	synchronized (_cluster.intern()) {
--	                s_logger.info("VM does not exist on XenServer" + _host.uuid);
--	                s_vms.remove(_cluster, _name, vmName);
--            	}
++                synchronized (_cluster.intern()) {
++                    s_logger.info("VM does not exist on XenServer" + _host.uuid);
++                    s_vms.remove(_cluster, _name, vmName);
++                }
                  return new StopAnswer(cmd, "VM does not exist", 0 , true);
              }
              for (VM vm : vms) {
@@@ -3542,9 -3540,9 +3547,9 @@@
                  }
  
                  State state = s_vms.getState(_cluster, vmName);
--                
++
                  synchronized (_cluster.intern()) {
--	                s_vms.put(_cluster, _name, vmName, State.Stopping);
++                    s_vms.put(_cluster, _name, vmName, State.Stopping);
                  }
                  s_logger.debug("9. The VM " + vmName + " is in Stopping state");
  
@@@ -3605,10 -3603,10 +3610,10 @@@
                          String msg = "VM destroy failed in Stop " + vmName + " Command due to " + e.getMessage();
                          s_logger.warn(msg, e);
                      } finally {
--                    	synchronized (_cluster.intern()) {
--	                        s_vms.put(_cluster, _name, vmName, state);
--                    	}
--                    	s_logger.debug("10. The VM " + vmName + " is in " + state + " state");
++                        synchronized (_cluster.intern()) {
++                            s_vms.put(_cluster, _name, vmName, state);
++                        }
++                        s_logger.debug("10. The VM " + vmName + " is in " + state + " state");
                      }
                  }
              }
@@@ -3829,7 -3827,7 +3834,7 @@@
  
          return null;
      }
--    
++
      protected VIF getCorrectVif(Connection conn, VM router, IpAddressTO ip) throws XmlRpcException, XenAPIException {
          NicTO nic = new NicTO();
          nic.setType(ip.getTrafficType());
@@@ -3852,7 -3850,7 +3857,7 @@@
          }
          return null;
      }
--    
++
      protected VIF getVifByMac(Connection conn, VM router, String mac) throws XmlRpcException, XenAPIException {
          Set<VIF> routerVIFs = router.getVIFs(conn);
          mac = mac.trim();
@@@ -4235,7 -4233,7 +4240,7 @@@
              }
              Connection conn = getConnection();
              if (!_canBridgeFirewall && !_isOvs) {
--            	return new PingRoutingCommand(getType(), id, null);
++                return new PingRoutingCommand(getType(), id, null);
              } else if (_isOvs) {
                  List<Pair<String, Long>>ovsStates = ovsFullSyncStates();
                  return new PingRoutingWithOvsCommand(getType(), id, null, ovsStates);
@@@ -4484,7 -4482,7 +4489,7 @@@
          cmd.setHypervisorType(HypervisorType.XenServer);
          cmd.setCluster(_cluster);
          cmd.setPoolSync(false);
--        
++
          Pool pool;
          try {
              pool = Pool.getByUuid(conn, _host.pool);
@@@ -4492,8 -4490,8 +4497,8 @@@
  
              Host.Record hostr = poolr.master.getRecord(conn);
              if (_host.uuid.equals(hostr.uuid)) {
--            	HashMap<String, Pair<String, State>> allStates=fullClusterSync(conn);
--            	cmd.setClusterVMStateChanges(allStates);
++                HashMap<String, Pair<String, State>> allStates=fullClusterSync(conn);
++                cmd.setClusterVMStateChanges(allStates);
              }
          } catch (Throwable e) {
              s_logger.warn("Check for master failed, failing the FULL Cluster sync command");
@@@ -5103,28 -5101,28 +5108,28 @@@
          return Boolean.valueOf(callHostPlugin(conn, "vmops", "can_bridge_firewall", "host_uuid", _host.uuid, "instance", _instance));
      }
  
--    
++
      private Answer execute(OvsSetupBridgeCommand cmd) {
          Connection conn = getConnection();
          findOrCreateTunnelNetwork(conn, cmd.getKey());
          configureTunnelNetwork(conn, cmd.getNetworkId(), cmd.getHostId(), cmd.getKey());
          s_logger.debug("OVS Bridge configured");
--    	return new Answer(cmd, true, null);
++        return new Answer(cmd, true, null);
      }
  
      private Answer execute(OvsDestroyBridgeCommand cmd) {
          Connection conn = getConnection();
          destroyTunnelNetwork(conn, cmd.getKey());
          s_logger.debug("OVS Bridge destroyed");
--    	return new Answer(cmd, true, null);
++        return new Answer(cmd, true, null);
      }
--    
++
      private Answer execute(OvsDestroyTunnelCommand cmd) {
          Connection conn = getConnection();
          try {
--        	Network nw = findOrCreateTunnelNetwork(conn, cmd.getNetworkId());
++            Network nw = findOrCreateTunnelNetwork(conn, cmd.getNetworkId());
              if (nw == null) {
--            	s_logger.warn("Unable to find tunnel network for GRE key:" + cmd.getKey());
++                s_logger.warn("Unable to find tunnel network for GRE key:" + cmd.getKey());
                  return new Answer(cmd, false, "No network found");
              }
  
@@@ -5151,16 -5149,16 +5156,16 @@@
          Connection conn = getConnection();
          String bridge = "unknown";
          try {
--        	Network nw = findOrCreateTunnelNetwork(conn, cmd.getKey());
++            Network nw = findOrCreateTunnelNetwork(conn, cmd.getKey());
              if (nw == null) {
--            	s_logger.debug("Error during bridge setup");
++                s_logger.debug("Error during bridge setup");
                  return new OvsCreateTunnelAnswer(cmd, false, "Cannot create network", bridge);
              }
--        	
++
              configureTunnelNetwork(conn, cmd.getNetworkId(), cmd.getFrom(), cmd.getKey());            
              bridge = nw.getBridge(conn);
              String result = callHostPlugin(conn, "ovstunnel", "create_tunnel", "bridge", bridge, "remote_ip", cmd.getRemoteIp(), 
--            		                       "key", cmd.getKey().toString(), "from", cmd.getFrom().toString(), "to", cmd.getTo().toString());
++                    "key", cmd.getKey().toString(), "from", cmd.getFrom().toString(), "to", cmd.getTo().toString());
              String[] res = result.split(":");
              if (res.length == 2 && res[0].equalsIgnoreCase("SUCCESS")) {
                  return new OvsCreateTunnelAnswer(cmd, true, result, res[1], bridge);
@@@ -5168,8 -5166,8 +5173,8 @@@
                  return new OvsCreateTunnelAnswer(cmd, false, result, bridge);
              }
          } catch (Exception e) {
--        	s_logger.debug("Error during tunnel setup");
--        	s_logger.warn("Caught execption when creating ovs tunnel", e);
++            s_logger.debug("Error during tunnel setup");
++            s_logger.warn("Caught execption when creating ovs tunnel", e);
              return new OvsCreateTunnelAnswer(cmd, false, e.getMessage(), bridge);
          }
      }
@@@ -5255,9 -5253,9 +5260,9 @@@
  
  
      private OvsFetchInterfaceAnswer execute(OvsFetchInterfaceCommand cmd) {
--        
--    	String label = cmd.getLabel();
--    	s_logger.debug("Will look for network with name-label:" + label + " on host " + _host.ip);
++
++        String label = cmd.getLabel();
++        s_logger.debug("Will look for network with name-label:" + label + " on host " + _host.ip);
          Connection conn = getConnection();
          try {
              XsLocalNetwork nw = this.getNetworkByName(conn, label);
@@@ -5266,17 -5264,17 +5271,17 @@@
              Record pifRec = pif.getRecord(conn);
              s_logger.debug("PIF object:" + pifRec.uuid + "(" + pifRec.device + ")");
              return new OvsFetchInterfaceAnswer(cmd, true, "Interface " + pifRec.device + " retrieved successfully", 
--            		pifRec.IP, pifRec.netmask, pifRec.MAC);
++                    pifRec.IP, pifRec.netmask, pifRec.MAC);
          } catch (Exception e) {
              e.printStackTrace();
              s_logger.error("An error occurred while fetching the interface for " +
--            				label + " on host " + _host.ip + ":" + e.toString() + 
--            				"(" + e.getClass() + ")");
++                    label + " on host " + _host.ip + ":" + e.toString() + 
++                    "(" + e.getClass() + ")");
              return new OvsFetchInterfaceAnswer(cmd, false, "EXCEPTION:" + e.getMessage());
          }
      }
  
--    
++
      private OvsCreateGreTunnelAnswer execute(OvsCreateGreTunnelCommand cmd) {
          _isOvs = true;
  
@@@ -5299,9 -5297,9 +5304,9 @@@
          } catch (Exception e) {
              e.printStackTrace();
              s_logger.error("An error occurred while creating a GRE tunnel to " +
--    				cmd.getRemoteIp() + " on host " + _host.ip + ":" + e.getMessage() + 
--    				"(" + e.getClass() + ")");
--            
++                    cmd.getRemoteIp() + " on host " + _host.ip + ":" + e.getMessage() + 
++                    "(" + e.getClass() + ")");
++
          }
  
          return new OvsCreateGreTunnelAnswer(cmd, false, "EXCEPTION", _host.ip, bridge);
@@@ -5316,10 -5314,10 +5321,10 @@@
          if (!_canBridgeFirewall) {
              s_logger.warn("Host " + _host.ip + " cannot do bridge firewalling");
              return new SecurityGroupRuleAnswer(cmd, false, 
--                                                 "Host " + _host.ip + " cannot do bridge firewalling",
--                                                 SecurityGroupRuleAnswer.FailureReason.CANNOT_BRIDGE_FIREWALL);
++                    "Host " + _host.ip + " cannot do bridge firewalling",
++                    SecurityGroupRuleAnswer.FailureReason.CANNOT_BRIDGE_FIREWALL);
          }
--        
++
          String result = callHostPlugin(conn, "vmops", "network_rules",
                  "vmName", cmd.getVmName(),
                  "vmIP", cmd.getGuestIp(),
@@@ -5338,7 -5336,7 +5343,7 @@@
              return new SecurityGroupRuleAnswer(cmd);
          }
      }
--    
++
      protected Answer execute(DeleteStoragePoolCommand cmd) {
          Connection conn = getConnection();
          StorageFilerTO poolTO = cmd.getPool();
@@@ -5381,7 -5379,7 +5386,7 @@@
              if( hr.softwareVersion.get("product_version_text_short") != null ) {
                  details.put("product_version_text_short", hr.softwareVersion.get("product_version_text_short"));
                  cmd.setHypervisorVersion(hr.softwareVersion.get("product_version_text_short"));                
--           
++
                  cmd.setHypervisorVersion(_host.product_version);
              }
              if (_privateNetworkName != null) {
@@@ -5546,16 -5544,10 +5551,16 @@@
          }
  
          CheckXenHostInfo();
-         
++
 +        this.storageResource = getStorageResource();
          return true;
  
      }
-     
+ 
 +    protected XenServerStorageResource getStorageResource() {
 +        return new XenServerStorageResource(this);
 +    }
 +
      private void CheckXenHostInfo() throws ConfigurationException {
          Connection conn = _connPool.slaveConnect(_host.ip, _username, _password);
          if( conn == null ) {
@@@ -5600,10 -5592,10 +5605,10 @@@
          DiskProfile dskch = cmd.getDiskCharacteristics();
          VDI vdi = null;
          try {
 -            SR poolSr = getStorageRepository(conn, pool);
 +            SR poolSr = getStorageRepository(conn, pool.getUuid());
              if (cmd.getTemplateUrl() != null) {
                  VDI tmpltvdi = null;
--                
++
                  tmpltvdi = getVDIbyUuid(conn, cmd.getTemplateUrl());
                  vdi = tmpltvdi.createClone(conn, new HashMap<String, String>());
                  vdi.setNameLabel(conn, dskch.getName());
@@@ -7262,12 -7271,12 +7284,12 @@@
  
  
          synchronized (_cluster.intern()) {
--        	HashMap<String, Pair<String, State>> newStates = getAllVms(conn);
--	        if (newStates == null) {
--	            s_logger.warn("Unable to get the vm states so no state sync at this point.");
--	            return null;
--	        }
--	        HashMap<String, Pair<String, State>>  oldStates = new HashMap<String, Pair<String, State>>(s_vms.size(_cluster));
++            HashMap<String, Pair<String, State>> newStates = getAllVms(conn);
++            if (newStates == null) {
++                s_logger.warn("Unable to get the vm states so no state sync at this point.");
++                return null;
++            }
++            HashMap<String, Pair<String, State>>  oldStates = new HashMap<String, Pair<String, State>>(s_vms.size(_cluster));
              oldStates.putAll(s_vms.getClusterVmState(_cluster));
  
              for (final Map.Entry<String, Pair<String, State>> entry : newStates.entrySet()) {
@@@ -7282,7 -7291,7 +7304,7 @@@
                      if (!host_uuid.equals(oldState.first()) && newState != State.Stopped && newState != State.Stopping){
                          s_logger.warn("Detecting a change in host for " + vm);
                          changes.put(vm, new Pair<String, State>(host_uuid, newState));
--                        
++
                          s_logger.debug("11. The VM " + vm + " is in " + newState + " state");
                          s_vms.put(_cluster, host_uuid, vm, newState);
                          continue;
@@@ -7292,7 -7301,7 +7314,7 @@@
                  if (newState == State.Stopped  && oldState != null && oldState.second() != State.Stopping && oldState.second() != State.Stopped) {
                      newState = getRealPowerState(conn, vm);
                  }
--                
++
                  if (s_logger.isTraceEnabled()) {
                      s_logger.trace("VM " + vm + ": xen has state " + newState + " and we have state " + (oldState != null ? oldState.toString() : "null"));
                  }
@@@ -7307,7 -7316,7 +7329,7 @@@
                      changes.put(vm, new Pair<String, State>(host_uuid, newState));
                  } else if (oldState.second() == State.Starting) {
                      if (newState == State.Running) { 
--                    	s_logger.debug("12. The VM " + vm + " is in " + State.Running + " state");
++                        s_logger.debug("12. The VM " + vm + " is in " + State.Running + " state");
                          s_vms.put(_cluster, host_uuid, vm, newState);
                      } else if (newState == State.Stopped) {
                          s_logger.warn("Ignoring vm " + vm + " because of a lag in starting the vm.");
@@@ -7319,13 -7328,13 +7341,13 @@@
                      }
                  } else if (oldState.second() == State.Stopping) {
                      if (newState == State.Stopped) {
--                    	s_logger.debug("13. The VM " + vm + " is in " + State.Stopped + " state");
++                        s_logger.debug("13. The VM " + vm + " is in " + State.Stopped + " state");
                          s_vms.put(_cluster, host_uuid, vm, newState);
                      } else if (newState == State.Running) {
                          s_logger.warn("Ignoring vm " + vm + " because of a lag in stopping the vm. ");
                      }
                  } else if (oldState.second() != newState) {
--                	s_logger.debug("14. The VM " + vm + " is in " + newState + " state was " + oldState.second());
++                    s_logger.debug("14. The VM " + vm + " is in " + newState + " state was " + oldState.second());
                      s_vms.put(_cluster, host_uuid, vm, newState);
                      if (newState == State.Stopped) {
                          /*
@@@ -7341,7 -7350,7 +7363,7 @@@
                  final String vm = entry.getKey();
                  final State oldState = entry.getValue().second();
                  String host_uuid = entry.getValue().first();
--                
++
                  if (s_logger.isTraceEnabled()) {
                      s_logger.trace("VM " + vm + " is now missing from xen so reporting stopped");
                  }
@@@ -7352,7 -7361,7 +7374,7 @@@
                  } else if (oldState == State.Starting) {
                      s_logger.warn("Ignoring VM " + vm + " in transition state starting.");
                  } else if (oldState == State.Stopped) {
--                	s_logger.debug("VM missing " + vm + " old state stopped so removing.");
++                    s_logger.debug("VM missing " + vm + " old state stopped so removing.");
                      s_vms.remove(_cluster, host_uuid, vm);
                  } else if (oldState == State.Migrating) {
                      s_logger.warn("Ignoring VM " + vm + " in migrating state.");
@@@ -7526,31 -7535,31 +7548,31 @@@
          if (cmd.isCreate()) {
              args += " -A";
              args += " -l ";
--	        args += cmd.getLocalPublicIp();
++            args += cmd.getLocalPublicIp();
              args += " -n ";
--	        args += cmd.getLocalGuestCidr();
++            args += cmd.getLocalGuestCidr();
              args += " -g ";
--	        args += cmd.getLocalPublicGateway();
++            args += cmd.getLocalPublicGateway();
              args += " -r ";
--	        args += cmd.getPeerGatewayIp();
++            args += cmd.getPeerGatewayIp();
              args += " -N ";
--	        args += cmd.getPeerGuestCidrList();
++            args += cmd.getPeerGuestCidrList();
              args += " -e ";
--	        args += "\"" + cmd.getEspPolicy() + "\"";
++            args += "\"" + cmd.getEspPolicy() + "\"";
              args += " -i ";
--	        args += "\"" + cmd.getIkePolicy() + "\"";
++            args += "\"" + cmd.getIkePolicy() + "\"";
              args += " -t ";
--	        args += Long.toString(cmd.getIkeLifetime());
++            args += Long.toString(cmd.getIkeLifetime());
              args += " -T ";
--	        args += Long.toString(cmd.getEspLifetime());
++            args += Long.toString(cmd.getEspLifetime());
              args += " -s ";
--	        args += "\"" + cmd.getIpsecPsk() + "\"";
--	        args += " -d ";
--	        if (cmd.getDpd()) {
--	            args += "1";
--	        } else {
--	            args += "0";
--	        }
++            args += "\"" + cmd.getIpsecPsk() + "\"";
++            args += " -d ";
++            if (cmd.getDpd()) {
++                args += "1";
++            } else {
++                args += "0";
++            }
          } else {
              args += " -D";
              args += " -r ";
@@@ -7576,7 -7585,7 +7598,7 @@@
              VM router = getVM(conn, routerName);
  
              VIF correctVif = getCorrectVif(conn, router, pubIp);
--            
++
              String args = "vpc_snat.sh " + routerIp;
  
              args += " -A ";
@@@ -7585,7 -7594,7 +7607,7 @@@
  
              args += " -c ";
              args += "eth" + correctVif.getDevice(conn);
--            
++
              String result = callHostPlugin(conn, "vmops", "routerProxy", "args", args);
              if (result == null || result.isEmpty()) {
                  throw new InternalErrorException("Xen plugin \"vpc_snat\" failed.");
@@@ -7609,11 -7618,11 +7631,11 @@@
              String [][] rules = cmd.generateFwRules();
              StringBuilder sb = new StringBuilder();
              String[] aclRules = rules[0];
--            
++
              for (int i = 0; i < aclRules.length; i++) {
                  sb.append(aclRules[i]).append(',');
              }
--            
++
              NicTO nic = cmd.getNic();
              VIF vif = getVifByMac(conn, router, nic.getMac());
              String args = "vpc_acl.sh " + routerIp;
@@@ -7665,8 -7674,8 +7687,8 @@@
          }
          return new SetPortForwardingRulesAnswer(cmd, results, endResult);
      }
--    
--    
++
++
      private SetStaticRouteAnswer execute(SetStaticRouteCommand cmd) {
          String callResult;
          Connection conn = getConnection();

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/element/ElasticLoadBalancerElement.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
----------------------------------------------------------------------
diff --cc plugins/network-elements/elastic-loadbalancer/src/com/cloud/network/lb/ElasticLoadBalancerManagerImpl.java
index e6dc1e8,82c6120..e0a211a
--- 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
@@@ -495,9 -496,9 +498,9 @@@ ElasticLoadBalancerManager, Manager,  V
                  if (s_logger.isDebugEnabled()) {
                      s_logger.debug("Creating the ELB vm " + id);
                  }
 -
 + 
-                 List<NetworkOfferingVO> offerings = _networkMgr.getSystemAccountNetworkOfferings(NetworkOfferingVO.SystemControlNetwork);
-                 NetworkOfferingVO controlOffering = offerings.get(0);
+                 List<? extends NetworkOffering> offerings = _networkModel.getSystemAccountNetworkOfferings(NetworkOffering.SystemControlNetwork);
+                 NetworkOffering controlOffering = offerings.get(0);
                  NetworkVO controlConfig = _networkMgr.setupNetwork(_systemAcct, controlOffering, plan, null, null, false).get(0);
  
                  List<Pair<NetworkVO, NicProfile>> networks = new ArrayList<Pair<NetworkVO, NicProfile>>(2);
@@@ -589,16 -590,16 +592,16 @@@
              sc.setParameters("publicPort", publicPort);
          }
          List<LoadBalancerVO> lbs = _lbDao.search(sc, null);
 -
 +   
          return lbs == null || lbs.size()==0 ? null: lbs;
      }
 -
 +    
      @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();
 -
 +        
          PublicIp ip = _networkMgr.assignPublicIpAddress(frontEndNetwork.getDataCenterId(), null, account, VlanType.DirectAttached, frontEndNetwork.getId(), null, true);
          IPAddressVO ipvo = _ipAddressDao.findById(ip.getId());
          ipvo.setAssociatedWithNetworkId(frontEndNetwork.getId()); 
@@@ -622,11 -623,11 +625,11 @@@
      @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;
 -        }
 -
 -        Long ipId = lb.getSourceIpAddressId();
 +    		return null;
 +    	}
 +    	
 +    	Long ipId = lb.getSourceIpAddressId();
          if (ipId != null) {
              return null;
          }
@@@ -661,9 -662,9 +664,9 @@@
                  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;
              try {
                  lb.setSourceIpAddressId(ipId);

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/f5/src/com/cloud/api/commands/AddExternalLoadBalancerCmd.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/f5/src/com/cloud/api/commands/AddF5LoadBalancerCmd.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/f5/src/com/cloud/api/commands/ConfigureF5LoadBalancerCmd.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/f5/src/com/cloud/api/commands/DeleteExternalLoadBalancerCmd.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/f5/src/com/cloud/api/commands/DeleteF5LoadBalancerCmd.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/f5/src/com/cloud/api/commands/ListF5LoadBalancerNetworksCmd.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/f5/src/com/cloud/api/commands/ListF5LoadBalancersCmd.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/f5/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java
----------------------------------------------------------------------
diff --cc plugins/network-elements/f5/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java
index 1773026,2e6f6e7..36f0dad
--- a/plugins/network-elements/f5/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java
+++ b/plugins/network-elements/f5/src/com/cloud/network/element/F5ExternalLoadBalancerElement.java
@@@ -16,7 -16,8 +16,6 @@@
  // under the License.
  package com.cloud.network.element;
  
- import java.lang.String;
 -import java.lang.Class;
 -import java.lang.String;
  import java.util.ArrayList;
  import java.util.HashMap;
  import java.util.List;
@@@ -24,11 -25,9 +23,11 @@@ import java.util.Map
  import java.util.Set;
  
  import javax.ejb.Local;
 +import javax.inject.Inject;
  
--import com.cloud.utils.PropertiesUtil;
++import org.apache.cloudstack.api.response.ExternalLoadBalancerResponse;
++import org.apache.cloudstack.network.ExternalNetworkDeviceManager.NetworkDevice;
  import org.apache.log4j.Logger;
- import org.springframework.stereotype.Component;
  
  import com.cloud.api.ApiDBUtils;
  import com.cloud.api.commands.AddExternalLoadBalancerCmd;
@@@ -60,7 -59,7 +59,6 @@@ import com.cloud.network.ExternalLoadBa
  import com.cloud.network.ExternalLoadBalancerDeviceManagerImpl;
  import com.cloud.network.ExternalLoadBalancerDeviceVO;
  import com.cloud.network.ExternalLoadBalancerDeviceVO.LBDeviceState;
--import org.apache.cloudstack.network.ExternalNetworkDeviceManager.NetworkDevice;
  import com.cloud.network.Network;
  import com.cloud.network.Network.Capability;
  import com.cloud.network.Network.Provider;
@@@ -83,9 -82,10 +81,7 @@@ import com.cloud.network.resource.F5Big
  import com.cloud.network.rules.LbStickinessMethod;
  import com.cloud.network.rules.LbStickinessMethod.StickinessMethodType;
  import com.cloud.offering.NetworkOffering;
--import com.cloud.resource.ServerResource;
--import org.apache.cloudstack.api.response.ExternalLoadBalancerResponse;
  import com.cloud.utils.NumbersUtil;
 -import com.cloud.utils.component.Inject;
  import com.cloud.utils.exception.CloudRuntimeException;
  import com.cloud.vm.NicProfile;
  import com.cloud.vm.ReservationContext;
@@@ -93,8 -93,8 +89,7 @@@ import com.cloud.vm.VirtualMachine
  import com.cloud.vm.VirtualMachineProfile;
  import com.google.gson.Gson;
  
- @Component
- @Local(value = NetworkElement.class)
 -@Local(value = {NetworkElement.class, LoadBalancingServiceProvider.class, 
 -		IpDeployer.class})
++@Local(value = {NetworkElement.class, LoadBalancingServiceProvider.class, IpDeployer.class})
  public class F5ExternalLoadBalancerElement extends ExternalLoadBalancerDeviceManagerImpl implements LoadBalancingServiceProvider, IpDeployer, F5ExternalLoadBalancerElementService, ExternalLoadBalancerDeviceManager {
  
      private static final Logger s_logger = Logger.getLogger(F5ExternalLoadBalancerElement.class);
@@@ -133,7 -133,7 +128,7 @@@
  
      @Override
      public boolean implement(Network guestConfig, NetworkOffering offering, DeployDestination dest, ReservationContext context) throws ResourceUnavailableException, ConcurrentOperationException,
--            InsufficientNetworkCapacityException {
++    InsufficientNetworkCapacityException {
  
          if (!canHandle(guestConfig)) {
              return false;
@@@ -148,7 -148,7 +143,7 @@@
  
      @Override
      public boolean prepare(Network config, NicProfile nic, VirtualMachineProfile<? extends VirtualMachine> vm, DeployDestination dest, ReservationContext context) throws ConcurrentOperationException,
--            InsufficientNetworkCapacityException, ResourceUnavailableException {
++    InsufficientNetworkCapacityException, ResourceUnavailableException {
          return true;
      }
  
@@@ -213,8 -213,8 +208,8 @@@
          // Specifies that load balancing rules can only be made with public IPs that aren't source NAT IPs
          lbCapabilities.put(Capability.LoadBalancingSupportedIps, "additional");
  
--	// Support inline mode with firewall
--	lbCapabilities.put(Capability.InlineMode, "true");
++        // Support inline mode with firewall
++        lbCapabilities.put(Capability.InlineMode, "true");
  
          LbStickinessMethod method;
          List<LbStickinessMethod> methodList = new ArrayList<LbStickinessMethod>();
@@@ -253,7 -253,7 +248,7 @@@
  
      @Override
      public boolean shutdownProviderInstances(PhysicalNetworkServiceProvider provider, ReservationContext context) throws ConcurrentOperationException,
--            ResourceUnavailableException {
++    ResourceUnavailableException {
          // TODO Auto-generated method stub
          return true;
      }
@@@ -291,7 -299,7 +294,7 @@@
          pNetwork = physicalNetworks.get(0);
  
          String deviceType = NetworkDevice.F5BigIpLoadBalancer.getName();
--        lbDeviceVO = addExternalLoadBalancer(pNetwork.getId(), cmd.getUrl(), cmd.getUsername(), cmd.getPassword(), deviceType, (ServerResource) new F5BigIpResource());
++        lbDeviceVO = addExternalLoadBalancer(pNetwork.getId(), cmd.getUrl(), cmd.getUsername(), cmd.getPassword(), deviceType, new F5BigIpResource());
  
          if (lbDeviceVO != null) {
              lbHost = _hostDao.findById(lbDeviceVO.getHostId());
@@@ -344,7 -352,7 +347,7 @@@
              throw new InvalidParameterValueException("Invalid F5 load balancer device type");
          }
  
--        return addExternalLoadBalancer(cmd.getPhysicalNetworkId(), cmd.getUrl(), cmd.getUsername(), cmd.getPassword(), deviceName, (ServerResource) new F5BigIpResource());
++        return addExternalLoadBalancer(cmd.getPhysicalNetworkId(), cmd.getUrl(), cmd.getUsername(), cmd.getPassword(), deviceName, new F5BigIpResource());
  
      }
  

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/juniper-srx/src/com/cloud/api/commands/AddExternalFirewallCmd.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/juniper-srx/src/com/cloud/api/commands/AddSrxFirewallCmd.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/juniper-srx/src/com/cloud/api/commands/ConfigureSrxFirewallCmd.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/juniper-srx/src/com/cloud/api/commands/DeleteExternalFirewallCmd.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/juniper-srx/src/com/cloud/api/commands/DeleteSrxFirewallCmd.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/juniper-srx/src/com/cloud/api/commands/ListSrxFirewallNetworksCmd.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/juniper-srx/src/com/cloud/api/commands/ListSrxFirewallsCmd.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/juniper-srx/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java
----------------------------------------------------------------------
diff --cc plugins/network-elements/juniper-srx/src/com/cloud/network/element/JuniperSRXExternalFirewallElement.java
index 63781bb,5038cc8..d13b95d
--- 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
@@@ -16,7 -16,7 +16,6 @@@
  // under the License.
  package com.cloud.network.element;
  
--import java.lang.String;
  import java.util.ArrayList;
  import java.util.HashMap;
  import java.util.List;
@@@ -24,11 -24,9 +23,12 @@@ import java.util.Map
  import java.util.Set;
  
  import javax.ejb.Local;
 +import javax.inject.Inject;
  
--import com.cloud.utils.PropertiesUtil;
++import org.apache.cloudstack.api.response.ExternalFirewallResponse;
++import org.apache.cloudstack.network.ExternalNetworkDeviceManager.NetworkDevice;
  import org.apache.log4j.Logger;
 +import org.springframework.stereotype.Component;
  
  import com.cloud.api.ApiDBUtils;
  import com.cloud.api.commands.AddExternalFirewallCmd;
@@@ -60,7 -58,7 +60,6 @@@ import com.cloud.host.dao.HostDetailsDa
  import com.cloud.network.ExternalFirewallDeviceManagerImpl;
  import com.cloud.network.ExternalFirewallDeviceVO;
  import com.cloud.network.ExternalFirewallDeviceVO.FirewallDeviceState;
--import org.apache.cloudstack.network.ExternalNetworkDeviceManager.NetworkDevice;
  import com.cloud.network.Network;
  import com.cloud.network.Network.Capability;
  import com.cloud.network.Network.Provider;
@@@ -85,19 -83,21 +84,19 @@@ import com.cloud.network.rules.PortForw
  import com.cloud.network.rules.StaticNat;
  import com.cloud.offering.NetworkOffering;
  import com.cloud.offerings.dao.NetworkOfferingDao;
--import com.cloud.resource.ServerResource;
--import org.apache.cloudstack.api.response.ExternalFirewallResponse;
  import com.cloud.utils.NumbersUtil;
 -import com.cloud.utils.component.Inject;
  import com.cloud.utils.exception.CloudRuntimeException;
  import com.cloud.vm.NicProfile;
  import com.cloud.vm.ReservationContext;
  import com.cloud.vm.VirtualMachine;
  import com.cloud.vm.VirtualMachineProfile;
  
 +@Component
- @Local(value = NetworkElement.class)
+ @Local(value = {NetworkElement.class, FirewallServiceProvider.class, 
 -		PortForwardingServiceProvider.class, IpDeployer.class, 
 -		SourceNatServiceProvider.class, RemoteAccessVPNServiceProvider.class})
++        PortForwardingServiceProvider.class, IpDeployer.class, 
++        SourceNatServiceProvider.class, RemoteAccessVPNServiceProvider.class})
  public class JuniperSRXExternalFirewallElement extends ExternalFirewallDeviceManagerImpl implements SourceNatServiceProvider, FirewallServiceProvider,
--        PortForwardingServiceProvider, RemoteAccessVPNServiceProvider, IpDeployer, JuniperSRXFirewallElementService, StaticNatServiceProvider {
++PortForwardingServiceProvider, RemoteAccessVPNServiceProvider, IpDeployer, JuniperSRXFirewallElementService, StaticNatServiceProvider {
  
      private static final Logger s_logger = Logger.getLogger(JuniperSRXExternalFirewallElement.class);
  
@@@ -155,7 -154,7 +153,7 @@@
  
      @Override
      public boolean implement(Network network, NetworkOffering offering, DeployDestination dest, ReservationContext context) throws ResourceUnavailableException, ConcurrentOperationException,
--            InsufficientNetworkCapacityException {
++    InsufficientNetworkCapacityException {
          DataCenter zone = _configMgr.getZone(network.getDataCenterId());
  
          // don't have to implement network is Basic zone
@@@ -180,7 -179,7 +178,7 @@@
  
      @Override
      public boolean prepare(Network config, NicProfile nic, VirtualMachineProfile<? extends VirtualMachine> vm, DeployDestination dest, ReservationContext context) throws ConcurrentOperationException,
--            InsufficientNetworkCapacityException, ResourceUnavailableException {
++    InsufficientNetworkCapacityException, ResourceUnavailableException {
          return true;
      }
  
@@@ -329,7 -328,7 +327,7 @@@
  
      @Override
      public boolean shutdownProviderInstances(PhysicalNetworkServiceProvider provider, ReservationContext context) throws ConcurrentOperationException,
--            ResourceUnavailableException {
++    ResourceUnavailableException {
          // TODO Auto-generated method stub
          return true;
      }
@@@ -361,7 -360,7 +359,7 @@@
          pNetwork = physicalNetworks.get(0);
  
          String deviceType = NetworkDevice.JuniperSRXFirewall.getName();
--        ExternalFirewallDeviceVO fwDeviceVO = addExternalFirewall(pNetwork.getId(), cmd.getUrl(), cmd.getUsername(), cmd.getPassword(), deviceType, (ServerResource) new JuniperSrxResource());
++        ExternalFirewallDeviceVO fwDeviceVO = addExternalFirewall(pNetwork.getId(), cmd.getUrl(), cmd.getUsername(), cmd.getPassword(), deviceType, new JuniperSrxResource());
          if (fwDeviceVO != null) {
              fwHost = _hostDao.findById(fwDeviceVO.getHostId());
          }
@@@ -401,6 -400,6 +399,7 @@@
          return firewallHosts;
      }
  
++    @Override
      public ExternalFirewallResponse createExternalFirewallResponse(Host externalFirewall) {
          return super.createExternalFirewallResponse(externalFirewall);
      }
@@@ -418,7 -425,7 +425,7 @@@
              throw new InvalidParameterValueException("Invalid SRX firewall device type");
          }
          return addExternalFirewall(cmd.getPhysicalNetworkId(), cmd.getUrl(), cmd.getUsername(), cmd.getPassword(), deviceName,
--                (ServerResource) new JuniperSrxResource());
++                new JuniperSrxResource());
      }
  
      @Override
@@@ -563,8 -570,8 +570,8 @@@
          return true;
      }
  
--	@Override
--	public boolean applyStaticNats(Network config, List<? extends StaticNat> rules) throws ResourceUnavailableException {
++    @Override
++    public boolean applyStaticNats(Network config, List<? extends StaticNat> rules) throws ResourceUnavailableException {
          if (!canHandle(config, Service.StaticNat)) {
              return false;
          }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/midokura-midonet/src/com/cloud/network/element/MidokuraMidonetElement.java
----------------------------------------------------------------------
diff --cc plugins/network-elements/midokura-midonet/src/com/cloud/network/element/MidokuraMidonetElement.java
index 9954e80,a45c5c0..48833b3
--- a/plugins/network-elements/midokura-midonet/src/com/cloud/network/element/MidokuraMidonetElement.java
+++ b/plugins/network-elements/midokura-midonet/src/com/cloud/network/element/MidokuraMidonetElement.java
@@@ -36,19 -36,12 +36,15 @@@ import com.cloud.vm.ReservationContext
  import com.cloud.vm.VirtualMachine;
  import com.cloud.vm.VirtualMachineProfile;
  import org.apache.log4j.Logger;
 +import org.springframework.stereotype.Component;
  
  import javax.ejb.Local;
+ import java.lang.Class;
  import java.util.Map;
  import java.util.Set;
  
- /**
-  * User: tomoe
-  * Date: 8/8/12
-  * Time: 1:38 PM
-  */
 +
 +@Component
  @Local(value = NetworkElement.class)
  public class MidokuraMidonetElement extends AdapterBase implements ConnectivityProvider, PluggableService {
      private static final Logger s_logger = Logger.getLogger(MidokuraMidonetElement.class);

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/netscaler/src/com/cloud/api/commands/AddNetscalerLoadBalancerCmd.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/netscaler/src/com/cloud/api/commands/ConfigureNetscalerLoadBalancerCmd.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/netscaler/src/com/cloud/api/commands/DeleteNetscalerLoadBalancerCmd.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/netscaler/src/com/cloud/api/commands/ListNetscalerLoadBalancerNetworksCmd.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/netscaler/src/com/cloud/api/commands/ListNetscalerLoadBalancersCmd.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java
----------------------------------------------------------------------
diff --cc plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java
index faff153,c2dc1e0..868c56a
--- a/plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java
+++ b/plugins/network-elements/netscaler/src/com/cloud/network/element/NetscalerElement.java
@@@ -25,11 -26,9 +25,12 @@@ import java.util.Map
  import java.util.Set;
  
  import javax.ejb.Local;
 +import javax.inject.Inject;
  
--import com.cloud.utils.PropertiesUtil;
++import org.apache.cloudstack.api.ApiConstants;
++import org.apache.cloudstack.network.ExternalNetworkDeviceManager.NetworkDevice;
  import org.apache.log4j.Logger;
 +import org.springframework.stereotype.Component;
  
  import com.cloud.agent.AgentManager;
  import com.cloud.agent.api.Answer;
@@@ -38,8 -37,8 +39,6 @@@ import com.cloud.agent.api.routing.SetS
  import com.cloud.agent.api.routing.SetStaticNatRulesCommand;
  import com.cloud.agent.api.to.LoadBalancerTO;
  import com.cloud.agent.api.to.StaticNatRuleTO;
--import org.apache.cloudstack.api.ApiConstants;
--
  import com.cloud.api.ApiDBUtils;
  import com.cloud.api.commands.AddNetscalerLoadBalancerCmd;
  import com.cloud.api.commands.ConfigureNetscalerLoadBalancerCmd;
@@@ -70,7 -69,7 +69,6 @@@ import com.cloud.network.ExternalLoadBa
  import com.cloud.network.ExternalLoadBalancerDeviceManagerImpl;
  import com.cloud.network.ExternalLoadBalancerDeviceVO;
  import com.cloud.network.ExternalLoadBalancerDeviceVO.LBDeviceState;
--import org.apache.cloudstack.network.ExternalNetworkDeviceManager.NetworkDevice;
  import com.cloud.network.IpAddress;
  import com.cloud.network.NetScalerPodVO;
  import com.cloud.network.Network;
@@@ -113,8 -113,7 +111,8 @@@ import com.cloud.vm.VirtualMachine
  import com.cloud.vm.VirtualMachineProfile;
  import com.google.gson.Gson;
  
 +@Component
- @Local(value = NetworkElement.class)
+ @Local(value = {NetworkElement.class, StaticNatServiceProvider.class, LoadBalancingServiceProvider.class})
  public class NetscalerElement extends ExternalLoadBalancerDeviceManagerImpl implements LoadBalancingServiceProvider, NetscalerLoadBalancerElementService, ExternalLoadBalancerDeviceManager, IpDeployer,
  StaticNatServiceProvider {
  
@@@ -614,13 -617,13 +616,13 @@@
          // NetScaler can only act as Lb and Static Nat service provider
          if (services != null && !services.isEmpty() && !netscalerServices.containsAll(services)) {
              s_logger.warn("NetScaler network element can only support LB and Static NAT services and service combination "
--                + services + " is not supported.");
++                    + services + " is not supported.");
              String servicesList = "";
              for (Service service : services) {
                  servicesList += service.getName() + " ";
              }
 -            s_logger.warn("NetScaler network element can only support LB and Static NAT services and service combination "
 -                + servicesList + " is not supported.");
 +            s_logger.warn("NetScaler network element can only support LB and Static NAT services and service combination " 
-                 + servicesList + " is not supported.");
++                    + servicesList + " is not supported.");
              s_logger.warn("NetScaler network element can only support LB and Static NAT services and service combination "
                      + services + " is not supported.");
              return false;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/nicira-nvp/src/com/cloud/api/commands/AddNiciraNvpDeviceCmd.java
----------------------------------------------------------------------
diff --cc plugins/network-elements/nicira-nvp/src/com/cloud/api/commands/AddNiciraNvpDeviceCmd.java
index 8457b44,3bd39b8..5b2dacf
--- a/plugins/network-elements/nicira-nvp/src/com/cloud/api/commands/AddNiciraNvpDeviceCmd.java
+++ b/plugins/network-elements/nicira-nvp/src/com/cloud/api/commands/AddNiciraNvpDeviceCmd.java
@@@ -106,15 -104,15 +106,15 @@@ public class AddNiciraNvpDeviceCmd exte
                  response.setResponseName(getCommandName());
                  this.setResponseObject(response);
              } else {
-                 throw new ServerApiException(BaseAsyncCmd.INTERNAL_ERROR, "Failed to add Nicira NVP device due to internal error.");
+                 throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, "Failed to add Nicira NVP device due to internal error.");
              }
          }  catch (InvalidParameterValueException invalidParamExcp) {
-             throw new ServerApiException(BaseCmd.PARAM_ERROR, invalidParamExcp.getMessage());
+             throw new ServerApiException(ApiErrorCode.PARAM_ERROR, invalidParamExcp.getMessage());
          } catch (CloudRuntimeException runtimeExcp) {
-             throw new ServerApiException(BaseCmd.INTERNAL_ERROR, runtimeExcp.getMessage());
+             throw new ServerApiException(ApiErrorCode.INTERNAL_ERROR, runtimeExcp.getMessage());
          }
      }
 -
 + 
      @Override
      public String getCommandName() {
          return s_name;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/nicira-nvp/src/com/cloud/api/commands/DeleteNiciraNvpDeviceCmd.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/nicira-nvp/src/com/cloud/api/commands/ListNiciraNvpDeviceNetworksCmd.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/10d9c019/plugins/network-elements/nicira-nvp/src/com/cloud/api/commands/ListNiciraNvpDevicesCmd.java
----------------------------------------------------------------------
diff --cc plugins/network-elements/nicira-nvp/src/com/cloud/api/commands/ListNiciraNvpDevicesCmd.java
index 32080fd,0d2ca5a..81cbb23
--- a/plugins/network-elements/nicira-nvp/src/com/cloud/api/commands/ListNiciraNvpDevicesCmd.java
+++ b/plugins/network-elements/nicira-nvp/src/com/cloud/api/commands/ListNiciraNvpDevicesCmd.java
@@@ -19,9 -19,8 +19,10 @@@ package com.cloud.api.commands
  import java.util.ArrayList;
  import java.util.List;
  
 +import javax.inject.Inject;
 +
  import org.apache.cloudstack.api.ApiConstants;
+ import org.apache.cloudstack.api.ApiErrorCode;
  import org.apache.cloudstack.api.BaseCmd;
  import org.apache.cloudstack.api.BaseListCmd;
  import org.apache.cloudstack.api.Parameter;