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

[50/50] [abbrv] git commit: updated refs/heads/object_store to 98af424

Merge branch 'master' into object_store.


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

Branch: refs/heads/object_store
Commit: 98af424053f341d80f5e3ef8f99951b9ecd654ae
Parents: 913e2b3 780b45e
Author: Min Chen <mi...@citrix.com>
Authored: Thu May 23 18:00:15 2013 -0700
Committer: Min Chen <mi...@citrix.com>
Committed: Thu May 23 18:00:15 2013 -0700

----------------------------------------------------------------------
 api/src/com/cloud/async/AsyncJob.java              |    1 +
 .../cloud/configuration/ConfigurationService.java  |   13 +
 api/src/com/cloud/deploy/DeploymentPlanner.java    |    7 +
 api/src/com/cloud/event/EventTypes.java            |    8 +
 .../InsufficientServerCapacityException.java       |   11 +
 api/src/com/cloud/network/IpAddress.java           |    4 +-
 .../cloud/network/NetworkMigrationResponder.java   |   70 ++
 api/src/com/cloud/network/NetworkService.java      |    5 +
 .../cloud/network/vpn/RemoteAccessVpnService.java  |    2 +-
 api/src/com/cloud/server/ManagementService.java    |   12 +-
 api/src/com/cloud/vm/UserVmService.java            |    2 +-
 .../org/apache/cloudstack/api/ApiConstants.java    |    3 +
 .../apache/cloudstack/api/ResponseGenerator.java   |    7 +
 .../api/command/admin/cluster/AddClusterCmd.java   |   36 +-
 .../command/admin/cluster/UpdateClusterCmd.java    |    6 +-
 .../admin/host/FindHostsForMigrationCmd.java       |    2 +-
 .../admin/offering/CreateServiceOfferingCmd.java   |   16 +
 .../admin/region/CreatePortableIpRangeCmd.java     |  156 +++
 .../admin/region/DeletePortableIpRangeCmd.java     |   93 ++
 .../admin/region/ListPortableIpRangesCmd.java      |  109 ++
 .../command/admin/systemvm/ScaleSystemVMCmd.java   |  131 +++
 .../command/user/address/AssociateIPAddrCmd.java   |   28 +-
 .../user/address/DisassociateIPAddrCmd.java        |   12 +-
 .../loadbalancer/ListLoadBalancerRulesCmd.java     |    9 +
 .../api/command/user/nat/EnableStaticNatCmd.java   |    6 +
 .../api/command/user/vm/DeployVMCmd.java           |   11 +-
 .../cloudstack/api/command/user/vm/ScaleVMCmd.java |   23 +-
 .../cloudstack/api/command/user/vm/StartVMCmd.java |   14 +-
 .../command/user/vpn/DeleteRemoteAccessVpnCmd.java |    2 +-
 .../cloudstack/api/response/ClusterResponse.java   |   27 +-
 .../cloudstack/api/response/IPAddressResponse.java |    7 +
 .../api/response/LoadBalancerResponse.java         |   11 +-
 .../api/response/PortableIpRangeResponse.java      |   93 ++
 .../api/response/PortableIpResponse.java           |  106 ++
 .../org/apache/cloudstack/region/PortableIp.java   |   58 ++
 .../apache/cloudstack/region/PortableIpRange.java  |   38 +
 .../api/command/test/ScaleVMCmdTest.java           |   30 +-
 .../bridge/persist/dao/CloudStackUserDaoImpl.java  |   12 +-
 .../com/cloud/bridge/service/EC2MainServlet.java   |    2 +-
 .../com/cloud/bridge/service/EC2RestServlet.java   |  428 ++++++---
 .../cloud/bridge/service/EC2SoapServiceImpl.java   |  259 +++--
 .../service/core/ec2/EC2AddressFilterSet.java      |   16 +-
 .../core/ec2/EC2AvailabilityZonesFilterSet.java    |    9 +-
 .../bridge/service/core/ec2/EC2DescribeImages.java |   10 +
 .../cloud/bridge/service/core/ec2/EC2Engine.java   |  764 ++++++++++-----
 .../bridge/service/core/ec2/EC2GroupFilterSet.java |    9 +-
 .../cloud/bridge/service/core/ec2/EC2Image.java    |   63 +-
 .../bridge/service/core/ec2/EC2ImageFilterSet.java |  168 ++++
 .../service/core/ec2/EC2InstanceFilterSet.java     |    8 +-
 .../service/core/ec2/EC2KeyPairFilterSet.java      |   16 +-
 .../core/ec2/EC2ModifyInstanceAttribute.java       |   64 ++
 .../bridge/service/core/ec2/EC2RegisterImage.java  |    5 +-
 .../service/core/ec2/EC2SnapshotFilterSet.java     |   10 +-
 .../bridge/service/core/ec2/EC2TagsFilterSet.java  |    9 +-
 .../service/core/ec2/EC2VolumeFilterSet.java       |    9 +-
 .../service/exception/EC2ServiceException.java     |  120 ++--
 awsapi/src/com/cloud/stack/CloudStackClient.java   |    5 +-
 client/pom.xml                                     |    5 +
 client/tomcatconf/applicationContext.xml.in        |    8 +-
 client/tomcatconf/commands.properties.in           |    7 +
 client/tomcatconf/componentContext.xml.in          |    1 +
 client/tomcatconf/nonossComponentContext.xml.in    |    2 +-
 .../storage/CreateEntityDownloadURLCommand.java    |    1 -
 .../src/com/cloud/network/DnsMasqConfigurator.java |    2 +-
 debian/rules                                       |    4 +-
 docs/en-US/CloudStack_Nicira_NVP_Guide.xml         |    1 +
 docs/en-US/Release_Notes.xml                       |   53 +-
 docs/en-US/added-API-commands-4.2.xml              |   16 +
 docs/en-US/images/nvp-add-controller.png           |  Bin 0 -> 35928 bytes
 docs/en-US/images/nvp-enable-provider.png          |  Bin 0 -> 32158 bytes
 docs/en-US/images/nvp-network-offering.png         |  Bin 0 -> 104060 bytes
 docs/en-US/images/nvp-physical-network-stt.png     |  Bin 0 -> 27317 bytes
 docs/en-US/images/nvp-vpc-offering-edit.png        |  Bin 0 -> 29279 bytes
 docs/en-US/plugin-niciranvp-about.xml              |    2 +-
 docs/en-US/plugin-niciranvp-devicemanagement.xml   |   32 +-
 docs/en-US/plugin-niciranvp-features.xml           |   67 ++-
 docs/en-US/plugin-niciranvp-guide.xml              |   31 -
 docs/en-US/plugin-niciranvp-introduction.xml       |    5 +-
 docs/en-US/plugin-niciranvp-networkofferings.xml   |  131 +++
 docs/en-US/plugin-niciranvp-physicalnet.xml        |   37 +
 docs/en-US/plugin-niciranvp-preparations.xml       |   11 +-
 docs/en-US/plugin-niciranvp-provider.xml           |   28 +-
 docs/en-US/plugin-niciranvp-revisions.xml          |   14 +
 docs/en-US/plugin-niciranvp-tables.xml             |  105 ++-
 docs/en-US/plugin-niciranvp-usage.xml              |   11 +-
 docs/en-US/plugin-niciranvp-vpc.xml                |   30 +
 docs/en-US/plugin-niciranvp-vpcfeatures.xml        |   28 +
 docs/en-US/plugin-niciranvp-vpcnetworkoffering.xml |   81 ++
 docs/en-US/plugin-niciranvp-vpcoffering.xml        |   38 +
 docs/en-US/portable-ip.xml                         |   30 +
 .../subsystem/api/storage/AbstractScope.java       |    6 +-
 .../cloud/entity/api/VMEntityManagerImpl.java      |   18 +-
 .../cloud/entity/api/db/VolumeReservationVO.java   |   22 +-
 .../api/db/dao/VolumeReservationDaoImpl.java       |    2 +-
 .../src/com/cloud/alert/dao/AlertDaoImpl.java      |    8 +
 .../cloud/configuration/dao/ResourceCountDao.java  |    2 +
 .../configuration/dao/ResourceCountDaoImpl.java    |   16 +
 .../cloud/configuration/dao/ResourceLimitDao.java  |    2 +
 .../configuration/dao/ResourceLimitDaoImpl.java    |   14 +
 .../src/com/cloud/event/dao/EventDaoImpl.java      |    5 +
 .../network/dao/ExternalLoadBalancerDeviceVO.java  |    2 +-
 .../src/com/cloud/network/dao/IPAddressVO.java     |   24 +
 .../cloud/service/ServiceOfferingDetailsVO.java    |   73 ++
 .../src/com/cloud/service/ServiceOfferingVO.java   |   27 +
 .../com/cloud/service/dao/ServiceOfferingDao.java  |    2 +
 .../cloud/service/dao/ServiceOfferingDaoImpl.java  |   19 +-
 .../service/dao/ServiceOfferingDetailsDao.java     |   29 +
 .../service/dao/ServiceOfferingDetailsDaoImpl.java |   98 ++
 .../src/com/cloud/upgrade/dao/Upgrade410to420.java |   32 +
 framework/jobs/pom.xml                             |    1 +
 .../debian/config/etc/init.d/cloud-early-config    |    5 +-
 .../affinity/HostAntiAffinityProcessor.java        |   31 +-
 .../implicit-dedication/pom.xml                    |   29 +
 .../cloud/deploy/ImplicitDedicationPlanner.java    |  249 +++++
 .../implicitplanner/ImplicitPlannerTest.java       |  586 +++++++++++
 .../kvm/resource/LibvirtComputingResource.java     |  133 ++--
 .../kvm/resource/LibvirtDomainXMLParser.java       |   57 +-
 .../kvm/resource/LibvirtComputingResourceTest.java |    4 +-
 .../xen/discoverer/XcpServerDiscoverer.java        |   88 +-
 .../hypervisor/xen/resource/CitrixHelper.java      |    4 +-
 .../xen/resource/CitrixResourceBase.java           |   40 +-
 .../xen/resource/XcpServer16Resource.java          |   32 +
 .../hypervisor/xen/resource/XcpServerResource.java |  120 ++-
 .../xen/resource/XenServer56FP1Resource.java       |   91 ++-
 .../motion/XenServerStorageMotionStrategy.java     |    8 +-
 .../xen/resource/CitrixResourceBaseTest.java       |    5 +-
 .../cloud/network/cisco/CiscoVnmcConnection.java   |   22 +-
 .../network/cisco/CiscoVnmcConnectionImpl.java     |  112 +--
 .../cloud/network/resource/CiscoVnmcResource.java  |   20 +-
 .../network/resource/CiscoVnmcResourceTest.java    |   22 +-
 .../cloud/network/element/MidoNetElementTest.java  |    3 +-
 .../response/NetscalerLoadBalancerResponse.java    |   21 +
 .../cloud/network/element/NetscalerElement.java    |    4 +
 .../cloud/network/nicira/DestinationNatRule.java   |  105 ++
 .../src/com/cloud/network/nicira/Match.java        |  146 +---
 .../src/com/cloud/network/nicira/NatRule.java      |  363 ++-----
 .../src/com/cloud/network/nicira/NiciraNvpApi.java |   67 +-
 .../com/cloud/network/nicira/SourceNatRule.java    |  123 +++
 .../cloud/network/resource/NiciraNvpResource.java  |   57 +-
 .../test/com/cloud/network/nicira/NatRuleTest.java |   43 +-
 .../network/resource/NiciraNvpResourceTest.java    |  113 ++-
 plugins/pom.xml                                    |    1 +
 scripts/vm/hypervisor/xenserver/xcposs/patch       |    2 +
 scripts/vm/hypervisor/xenserver/xcpserver/patch    |    4 +-
 scripts/vm/hypervisor/xenserver/xenserver56/patch  |    4 +-
 .../vm/hypervisor/xenserver/xenserver56fp1/patch   |    4 +-
 scripts/vm/hypervisor/xenserver/xenserver60/patch  |    4 +-
 server/src/com/cloud/api/ApiResponseHelper.java    |  124 ++-
 .../src/com/cloud/api/query/QueryManagerImpl.java  |    2 +-
 .../com/cloud/capacity/CapacityManagerImpl.java    |   18 +-
 .../cloud/configuration/ConfigurationManager.java  |    3 +-
 .../configuration/ConfigurationManagerImpl.java    |  266 ++++--
 .../deploy/DeploymentPlanningManagerImpl.java      |   24 +-
 .../com/cloud/hypervisor/HypervisorGuruBase.java   |    4 +-
 server/src/com/cloud/network/NetworkManager.java   |   43 +-
 .../src/com/cloud/network/NetworkManagerImpl.java  |  326 ++++++-
 server/src/com/cloud/network/NetworkModelImpl.java |    8 +-
 .../src/com/cloud/network/NetworkServiceImpl.java  |  105 ++-
 server/src/com/cloud/network/addr/PublicIp.java    |    9 +
 .../network/element/VirtualRouterElement.java      |   70 ++-
 .../network/lb/LoadBalancingRulesManagerImpl.java  |    6 +
 .../router/VirtualNetworkApplianceManager.java     |    2 +-
 .../router/VirtualNetworkApplianceManagerImpl.java |   26 +-
 .../com/cloud/network/rules/RulesManagerImpl.java  |   43 +
 .../cloud/network/vpc/NetworkACLServiceImpl.java   |    4 +-
 .../network/vpn/RemoteAccessVpnManagerImpl.java    |    4 +-
 server/src/com/cloud/resource/DiscovererBase.java  |    1 +
 .../com/cloud/resource/ResourceManagerImpl.java    |    7 +-
 server/src/com/cloud/server/ManagementServer.java  |    6 +
 .../src/com/cloud/server/ManagementServerImpl.java |  162 +---
 .../src/com/cloud/storage/VolumeManagerImpl.java   |   22 +-
 .../com/cloud/template/TemplateManagerImpl.java    |    7 +
 server/src/com/cloud/user/AccountManagerImpl.java  |   19 +-
 server/src/com/cloud/user/DomainManagerImpl.java   |   15 +-
 server/src/com/cloud/vm/UserVmManager.java         |    7 +-
 server/src/com/cloud/vm/UserVmManagerImpl.java     |   41 +-
 .../com/cloud/vm/VirtualMachineManagerImpl.java    |   33 +-
 .../com/cloud/vm/VirtualMachineProfileImpl.java    |   71 +-
 .../affinity/AffinityGroupServiceImpl.java         |    9 +
 .../apache/cloudstack/region/PortableIpDao.java    |   39 +
 .../cloudstack/region/PortableIpDaoImpl.java       |  131 +++
 .../cloudstack/region/PortableIpRangeDao.java      |   30 +
 .../cloudstack/region/PortableIpRangeDaoImpl.java  |   65 ++
 .../cloudstack/region/PortableIpRangeVO.java       |  119 +++
 .../org/apache/cloudstack/region/PortableIpVO.java |  222 +++++
 .../com/cloud/network/MockNetworkManagerImpl.java  |   69 ++-
 .../test/com/cloud/vm/MockUserVmManagerImpl.java   |   15 +-
 .../cloud/vpc/MockConfigurationManagerImpl.java    |   60 ++-
 .../test/com/cloud/vpc/MockNetworkManagerImpl.java |   89 ++-
 .../vpc/MockVpcVirtualNetworkApplianceManager.java |    6 +
 .../networkoffering/ChildTestConfiguration.java    |   18 +-
 services/secondary-storage/scripts/ssvm-check.sh   |    4 +-
 setup/db/db/schema-302to40.sql                     |   12 +-
 setup/db/db/schema-40to410.sql                     |   14 +
 setup/db/db/schema-410to420.sql                    |   62 ++-
 test/integration/component/test_accounts.py        |    2 +-
 test/integration/component/test_custom_hostname.py |  369 +++++++
 .../component/test_high_availability.py            |   28 +-
 .../component/test_host_high_availability.py       |   14 +-
 .../integration/component/test_implicit_planner.py |  232 +++++
 test/integration/component/test_ldap.py            |  365 +++++++
 test/integration/component/test_project_limits.py  |    5 +-
 test/integration/component/test_projects.py        |   34 +-
 .../integration/component/test_redundant_router.py |  120 ++--
 test/integration/component/test_stopped_vm.py      |   70 +-
 test/integration/component/test_tags.py            |  110 +-
 test/integration/component/test_vpc.py             |  124 ++--
 .../component/test_vpc_host_maintenance.py         |   44 +-
 test/integration/component/test_vpc_network.py     |  108 +-
 .../component/test_vpc_network_lbrules.py          |   18 +-
 .../component/test_vpc_network_pfrules.py          |   18 +-
 .../component/test_vpc_network_staticnatrule.py    |   18 +-
 test/integration/component/test_vpc_offerings.py   |   52 +-
 test/integration/component/test_vpc_routers.py     |   93 +--
 .../component/test_vpc_vm_life_cycle.py            |   98 +-
 .../component/test_vpc_vms_deployment.py           |  154 ++--
 test/integration/component/test_vpn_users.py       |    4 +-
 test/integration/smoke/test_deploy_vm.py           |    3 +
 .../smoke/test_deploy_vm_with_userdata.py          |    8 +-
 ...st_deploy_vms_with_varied_deploymentplanners.py |  414 +++++---
 test/integration/smoke/test_iso.py                 |   10 +-
 test/integration/smoke/test_network.py             |   69 +-
 test/integration/smoke/test_nic.py                 |   51 +-
 test/integration/smoke/test_portable_publicip.py   |  236 +++++
 test/integration/smoke/test_public_ip_range.py     |    6 +-
 test/integration/smoke/test_pvlan.py               |    1 +
 test/integration/smoke/test_routers.py             |   16 +-
 test/integration/smoke/test_templates.py           |   11 +-
 test/integration/smoke/test_vm_life_cycle.py       |  145 ++--
 test/integration/smoke/test_vm_snapshots.py        |  618 ++++++------
 test/integration/smoke/test_volumes.py             |   76 +-
 tools/apidoc/gen_toc.py                            |    1 +
 tools/marvin/marvin/cloudstackConnection.py        |    6 +-
 tools/marvin/marvin/integration/lib/base.py        |   41 +
 ui/scripts/configuration.js                        |  223 ++++-
 ui/scripts/docs.js                                 |    9 +
 ui/scripts/network.js                              |    2 +-
 ui/scripts/system.js                               |  385 ++++++++-
 ui/scripts/ui-custom/installWizard.js              |   13 +-
 ui/scripts/zoneWizard.js                           |    2 +-
 .../com/cloud/utils/db/GenericSearchBuilder.java   |   18 +-
 utils/src/com/cloud/utils/net/NetUtils.java        |   13 +
 242 files changed, 10622 insertions(+), 3337 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/98af4240/api/src/com/cloud/server/ManagementService.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/98af4240/api/src/org/apache/cloudstack/api/ResponseGenerator.java
----------------------------------------------------------------------
diff --cc api/src/org/apache/cloudstack/api/ResponseGenerator.java
index dd2bd58,0732e77..8cc9eaf
--- a/api/src/org/apache/cloudstack/api/ResponseGenerator.java
+++ b/api/src/org/apache/cloudstack/api/ResponseGenerator.java
@@@ -363,7 -443,12 +365,12 @@@ public interface ResponseGenerator 
  
      Long getAffinityGroupId(String name, long entityOwnerId);
  
+     PortableIpRangeResponse createPortableIPRangeResponse(PortableIpRange range);
+ 
+     PortableIpResponse createPortableIPResponse(PortableIp portableIp);
+ 
      InternalLoadBalancerElementResponse createInternalLbElementResponse(VirtualRouterProvider result);
 -
 +    
      IsolationMethodResponse createIsolationMethodResponse(IsolationType method);
+ 
  }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/98af4240/client/pom.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/98af4240/client/tomcatconf/applicationContext.xml.in
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/98af4240/client/tomcatconf/commands.properties.in
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/98af4240/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java
----------------------------------------------------------------------
diff --cc engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java
index 5e108e0,95abe5f..2e9f47f
--- a/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java
+++ b/engine/schema/src/com/cloud/upgrade/dao/Upgrade410to420.java
@@@ -75,10 -75,10 +75,11 @@@ public class Upgrade410to420 implement
          updateNetworkACLs(conn);
          addHostDetailsIndex(conn);
          updateNetworksForPrivateGateways(conn);
+         removeFirewallServiceFromSharedNetworkOfferingWithSGService(conn);
      }
  
 -    private void updateSystemVmTemplates(Connection conn) {
 +	private void updateSystemVmTemplates(Connection conn) {
 +	    /* TODO: where should be system vm templates located?
  	    PreparedStatement sql = null;
          try {
              sql = conn.prepareStatement("update vm_template set image_data_store_id = 1 where type = 'SYSTEM' or type = 'BUILTIN'");

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/98af4240/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
----------------------------------------------------------------------
diff --cc plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
index 39375f8,1e20d75..ee8531b
--- a/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
+++ b/plugins/hypervisors/kvm/src/com/cloud/hypervisor/kvm/resource/LibvirtComputingResource.java
@@@ -243,7 -234,7 +243,7 @@@ import com.cloud.vm.VirtualMachineName
  /**
   * LibvirtComputingResource execute requests on the computing/routing host using
   * the libvirt API
-- * 
++ *
   * @config {@table || Param Name | Description | Values | Default || ||
   *         hypervisor.type | type of local hypervisor | string | kvm || ||
   *         hypervisor.uri | local hypervisor to connect to | URI |
@@@ -394,9 -386,7 +394,9 @@@ ServerResource 
      }
  
      protected BridgeType _bridgeType;
-     
+ 
 +    protected StorageSubsystemCommandHandler storageHandler;
 +
      private String getEndIpFromStartIp(String startIp, int numIps) {
          String[] tokens = startIp.split("[.]");
          assert (tokens.length == 4);
@@@ -605,13 -595,13 +605,13 @@@
              throw new ConfigurationException(
                      "Unable to find the ovs-pvlan-dhcp-host.sh");
          }
--        
++
          _ovsPvlanVmPath = Script.findScript(networkScriptsDir, "ovs-pvlan-vm.sh");
          if ( _ovsPvlanVmPath == null) {
              throw new ConfigurationException(
                      "Unable to find the ovs-pvlan-vm.sh");
          }
--        
++
          String value = (String) params.get("developer");
          boolean isDeveloper = Boolean.parseBoolean(value);
  
@@@ -691,7 -681,7 +691,7 @@@
          if (_localStoragePath == null) {
              _localStoragePath = "/var/lib/libvirt/images/";
          }
--        
++
          File storagePath = new File(_localStoragePath);
          _localStoragePath = storagePath.getAbsolutePath();
  
@@@ -835,11 -825,7 +835,11 @@@
          params.put("libvirt.computing.resource", this);
  
          configureVifDrivers(params);
-         
+ 
 +        KVMStorageProcessor storageProcessor = new KVMStorageProcessor(this._storagePoolMgr, this);
 +        storageProcessor.configure(name, params);
 +        storageHandler = new StorageSubsystemCommandHandlerBase(storageProcessor);
 +
          return true;
      }
  
@@@ -987,13 -973,18 +987,13 @@@
  
          return pif;
      }
-     
+ 
 -    private String getOvsPif(String bridge) {
 -        String pif = Script.runSimpleBashScript("ovs-vsctl list-ports " + bridge);
 -        return pif;
 -    }
 -    
      private String matchPifFileInDirectory(String bridgeName){
          File f = new File("/sys/devices/virtual/net/" + bridgeName + "/brif");
  
          if (! f.isDirectory()){
              s_logger.debug("failing to get physical interface from bridge"
--                           + bridgeName + ", does " + f.getAbsolutePath() 
++                           + bridgeName + ", does " + f.getAbsolutePath()
                             + "exist?");
              return "";
          }
@@@ -1063,7 -1054,7 +1063,7 @@@
          return vnetId;
      }
  
--    private void passCmdLine(String vmName, String cmdLine) 
++    private void passCmdLine(String vmName, String cmdLine)
              throws InternalErrorException {
          final Script command = new Script(_patchViaSocketPath, _timeout, s_logger);
          String result;
@@@ -1373,7 -1362,7 +1373,7 @@@
              disksize = dskch.getSize();
  
              if (cmd.getTemplateUrl() != null) {
--                if(primaryPool.getType() == StoragePoolType.CLVM) { 
++                if(primaryPool.getType() == StoragePoolType.CLVM) {
                      vol = templateToPrimaryDownload(cmd.getTemplateUrl(),primaryPool);
                  } else {
                      BaseVol = primaryPool.getPhysicalDisk(cmd.getTemplateUrl());
@@@ -1450,7 -1439,7 +1450,7 @@@
      private String getResizeScriptType (KVMStoragePool pool, KVMPhysicalDisk vol) {
          StoragePoolType poolType = pool.getType();
          PhysicalDiskFormat volFormat = vol.getFormat();
--         
++
          if(pool.getType() == StoragePoolType.CLVM && volFormat == PhysicalDiskFormat.RAW) {
              return "CLVM";
          } else if ((poolType == StoragePoolType.NetworkFilesystem
@@@ -1462,7 -1451,7 +1462,7 @@@
          return null;
      }
  
--    /* uses a local script now, eventually support for virStorageVolResize() will maybe work on 
++    /* uses a local script now, eventually support for virStorageVolResize() will maybe work on
         qcow2 and lvm and we can do this in libvirt calls */
      public Answer execute(ResizeVolumeCommand cmd) {
          String volid = cmd.getPath();
@@@ -1479,16 -1468,16 +1479,16 @@@
              String type = getResizeScriptType(pool, vol);
  
              if (type == null) {
--                return new ResizeVolumeAnswer(cmd, false, "Unsupported volume format: pool type '" 
++                return new ResizeVolumeAnswer(cmd, false, "Unsupported volume format: pool type '"
                                  + pool.getType() + "' and volume format '" + vol.getFormat() + "'");
              } else if (type.equals("QCOW2") && shrinkOk) {
                  return new ResizeVolumeAnswer(cmd, false, "Unable to shrink volumes of type " + type);
              }
  
--            s_logger.debug("got to the stage where we execute the volume resize, params:" 
++            s_logger.debug("got to the stage where we execute the volume resize, params:"
                             + path + "," + currentSize + "," + newSize + "," + type + "," + vmInstanceName + "," + shrinkOk);
              final Script resizecmd = new Script(_resizeVolumePath,
--                        _cmdsTimeout, s_logger); 
++                        _cmdsTimeout, s_logger);
              resizecmd.add("-s",String.valueOf(newSize));
              resizecmd.add("-c",String.valueOf(currentSize));
              resizecmd.add("-p",path);
@@@ -1512,8 -1501,8 +1512,8 @@@
              s_logger.debug(error);
              return new ResizeVolumeAnswer(cmd, false, error);
          }
--        
--    } 
++
++    }
  
      public Answer execute(DestroyCommand cmd) {
          VolumeTO vol = cmd.getVolume();
@@@ -1537,7 -1528,7 +1537,7 @@@
          if(pifparts.length == 2) {
              return pifparts[1];
          } else {
--            s_logger.debug("failed to get vlan id from bridge " + brName 
++            s_logger.debug("failed to get vlan id from bridge " + brName
                             + "attached to physical interface" + pif);
              return "";
          }
@@@ -1552,13 -1543,13 +1552,13 @@@
      	String dhcpIp = cmd.getDhcpIp();
      	String vmMac = cmd.getVmMac();
      	boolean add = true;
--    	
++
      	String opr = "-A";
      	if (op.equals("delete"))  {
      		opr = "-D";
      		add = false;
      	}
--    	
++
      	String result = null;
          Connect conn;
  		try {
@@@ -1722,7 -1715,9 +1722,7 @@@
  
      private SetNetworkACLAnswer execute(SetNetworkACLCommand cmd) {
          String[] results = new String[cmd.getRules().length];
-        
 -        String callResult;
 -        Connect conn;
 -        String routerName = cmd.getAccessDetail(NetworkElementCommand.ROUTER_NAME);
++
          String routerIp = cmd.getAccessDetail(NetworkElementCommand.ROUTER_IP);
          String privateGw = cmd.getAccessDetail(NetworkElementCommand.VPC_PRIVATE_GATEWAY);
  
@@@ -1772,7 -1770,7 +1772,7 @@@
              for (InterfaceDef pluggedNic : pluggedNics) {
                  String pluggedVlanBr = pluggedNic.getBrName();
                  String pluggedVlanId = getVlanIdFromBridge(pluggedVlanBr);
--                if (pubVlan.equalsIgnoreCase(Vlan.UNTAGGED) 
++                if (pubVlan.equalsIgnoreCase(Vlan.UNTAGGED)
                          && pluggedVlanBr.equalsIgnoreCase(_publicBridgeName)) {
                      break;
                  } else if (pluggedVlanBr.equalsIgnoreCase(_linkLocalBridgeName)){
@@@ -1818,7 -1817,7 +1818,7 @@@
              for (InterfaceDef pluggedNic : pluggedNics) {
                  String pluggedVlan = pluggedNic.getBrName();
                  if (pluggedVlan.equalsIgnoreCase(_linkLocalBridgeName)) {
--                    vlanToNicNum.put("LinkLocal",devNum); 
++                    vlanToNicNum.put("LinkLocal",devNum);
                  } else if (pluggedVlan.equalsIgnoreCase(_publicBridgeName)
                          || pluggedVlan.equalsIgnoreCase(_privBridgeName)
                          || pluggedVlan.equalsIgnoreCase(_guestBridgeName)) {
@@@ -1864,8 -1863,8 +1864,8 @@@
                  if (nic.getBrName().equalsIgnoreCase(_linkLocalBridgeName)) {
                      vlanAllocatedToVM.put("LinkLocal", nicPos);
                  } else {
--                    if (nic.getBrName().equalsIgnoreCase(_publicBridgeName) 
--                            || nic.getBrName().equalsIgnoreCase(_privBridgeName) 
++                    if (nic.getBrName().equalsIgnoreCase(_publicBridgeName)
++                            || nic.getBrName().equalsIgnoreCase(_privBridgeName)
                              || nic.getBrName().equalsIgnoreCase(_guestBridgeName)) {
                          vlanAllocatedToVM.put(Vlan.UNTAGGED, nicPos);
                      } else {
@@@ -3351,14 -3357,10 +3351,14 @@@
          }
      }
  
 -    private String getVolumePath(Connect conn, VolumeTO volume)
 +    private String getVolumePath(Connect conn, DiskTO volume)
              throws LibvirtException, URISyntaxException {
 -        if (volume.getType() == Volume.Type.ISO && volume.getPath() != null) {
 -            String isoPath = volume.getPath();
 +        DataTO data = volume.getData();
 +        DataStoreTO store = data.getDataStore();
-         
++
 +        if (volume.getType() == Volume.Type.ISO && data.getPath() != null) {
 +            NfsTO nfsStore = (NfsTO)store;
 +            String isoPath = nfsStore.getUrl() + File.separator + data.getPath();
              int index = isoPath.lastIndexOf("/");
              String path = isoPath.substring(0, index);
              String name = isoPath.substring(index + 1);
@@@ -4308,7 -4312,28 +4305,29 @@@
          return parser.getEmulator();
      }
  
 +
+     private String getGuestType(Connect conn, String vmName) {
+         LibvirtDomainXMLParser parser = new LibvirtDomainXMLParser();
+         Domain dm = null;
+         try {
+             dm = conn.domainLookupByName(vmName);
+             String xmlDesc = dm.getXMLDesc(0);
+             parser.parseDomainXML(xmlDesc);
+             return parser.getDescription();
+         } catch (LibvirtException e) {
+             s_logger.trace("Ignoring libvirt error.", e);
+             return null;
+         } finally {
+             try {
+                 if (dm != null) {
+                     dm.free();
+                 }
+             } catch (LibvirtException l) {
+                 s_logger.trace("Ignoring libvirt error.", l);
+             }
+         }
+     }
+ 
      boolean isGuestPVEnabled(String guestOS) {
          if (guestOS == null) {
              return false;
@@@ -4378,10 -4411,10 +4397,10 @@@
          }
      }
  
 -    private Domain getDomain(Connect conn, String vmName)
 +    public Domain getDomain(Connect conn, String vmName)
              throws LibvirtException {
          return conn
-                 .domainLookupByUUID(UUID.nameUUIDFromBytes(vmName.getBytes()));
+                 .domainLookupByName(vmName);
      }
  
      protected List<InterfaceDef> getInterfaces(Connect conn, String vmName) {
@@@ -4786,13 -4848,13 +4803,13 @@@
  	@Override
  	public void setName(String name) {
  		// TODO Auto-generated method stub
--		
++
  	}
  
  	@Override
  	public void setConfigParams(Map<String, Object> params) {
  		// TODO Auto-generated method stub
--		
++
  	}
  
  	@Override
@@@ -4810,7 -4872,7 +4827,7 @@@
  	@Override
  	public void setRunLevel(int level) {
  		// TODO Auto-generated method stub
--		
++
  	}
  
  }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/98af4240/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/discoverer/XcpServerDiscoverer.java
----------------------------------------------------------------------
diff --cc plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/discoverer/XcpServerDiscoverer.java
index 5698218,fd49836..6d9265d
--- a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/discoverer/XcpServerDiscoverer.java
+++ b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/discoverer/XcpServerDiscoverer.java
@@@ -79,10 -62,11 +62,10 @@@ import com.cloud.resource.ResourceManag
  import com.cloud.resource.ResourceStateAdapter;
  import com.cloud.resource.ServerResource;
  import com.cloud.resource.UnableDeleteHostException;
- import com.cloud.storage.VMTemplateVO;
  import com.cloud.storage.Storage.ImageFormat;
  import com.cloud.storage.Storage.TemplateType;
+ import com.cloud.storage.VMTemplateVO;
  import com.cloud.storage.dao.VMTemplateDao;
 -import com.cloud.storage.dao.VMTemplateHostDao;
  import com.cloud.user.Account;
  import com.cloud.utils.NumbersUtil;
  import com.cloud.utils.db.SearchCriteria.Op;
@@@ -425,37 -428,36 +426,36 @@@ public class XcpServerDiscoverer extend
      		prodVersion = prodVersion.trim();
      	}
  
-         if(prodBrand.equals("XCP") && (prodVersion.equals("1.0.0") ||  prodVersion.equals("1.1.0") || prodVersion.equals("5.6.100") || prodVersion.startsWith("1.4"))) {
-             return new XcpServerResource("1.1");
+         // Xen Cloud Platform group of hypervisors
+         if (prodBrand.equals("XCP") && (
+                 prodVersion.equals("1.0.0")
+                         || prodVersion.equals("1.1.0")
+                         || prodVersion.equals("5.6.100")
+                         || prodVersion.startsWith("1.4")
+         )) {
+             return new XcpServerResource();
          } else if (prodBrand.equals("XCP") && prodVersion.startsWith("1.6")) {
-         	return new XcpServerResource("1.6");
-         }
- 
-     	if(prodBrand.equals("XenServer") && prodVersion.equals("5.6.0"))
+             return new XcpServer16Resource();
+         } // Citrix Xenserver group of hypervisors
+         else if (prodBrand.equals("XenServer") && prodVersion.equals("5.6.0"))
 -            return new XenServer56Resource();
 +    		return new XenServer56Resource();
- 
-     	if (prodBrand.equals("XenServer") && prodVersion.equals("6.0.0"))
+         else if (prodBrand.equals("XenServer") && prodVersion.equals("6.0.0"))
 -            return new XenServer600Resource();
 +    		return new XenServer600Resource();
- 
-     	if (prodBrand.equals("XenServer") && prodVersion.equals("6.0.2"))
+         else if (prodBrand.equals("XenServer") && prodVersion.equals("6.0.2"))
 -            return new XenServer602Resource();
 +    		return new XenServer602Resource();
- 
-         if (prodBrand.equals("XenServer") && prodVersion.equals("6.1.0"))
+         else if (prodBrand.equals("XenServer") && prodVersion.equals("6.1.0"))
              return new XenServer610Resource();
- 
-     	if(prodBrand.equals("XenServer") && prodVersion.equals("5.6.100"))  {
+         else if (prodBrand.equals("XenServer") && prodVersion.equals("5.6.100")) {
 -            String prodVersionTextShort = record.softwareVersion.get("product_version_text_short").trim();
 +    		String prodVersionTextShort = record.softwareVersion.get("product_version_text_short").trim();
-     		if("5.6 SP2".equals(prodVersionTextShort)) {
+             if ("5.6 SP2".equals(prodVersionTextShort)) {
 -                return new XenServer56SP2Resource();
 +    			return new XenServer56SP2Resource();
-     		} else if("5.6 FP1".equals(prodVersionTextShort)) {
+             } else if ("5.6 FP1".equals(prodVersionTextShort)) {
 -                return new XenServer56FP1Resource();
 -            }
 +    			return new XenServer56FP1Resource();
 +    		}
-     	}
- 
-     	if (prodBrand.equals("XCP_Kronos")) {
+         } else if (prodBrand.equals("XCP_Kronos")) {
 -            return new XcpOssResource();
 -        }
 -    	
 +    		return new XcpOssResource();
 +    	}
 +
          String msg = "Only support XCP 1.0.0, 1.1.0, 1.4.x, 1.5 beta, 1.6.x; XenServer 5.6,  XenServer 5.6 FP1, XenServer 5.6 SP2, Xenserver 6.0, 6.0.2, 6.1.0 but this one is " + prodBrand + " " + prodVersion;
      			_alertMgr.sendAlert(AlertManager.ALERT_TYPE_HOST, dcId, podId, msg, msg);
      	s_logger.debug(msg);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/98af4240/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/CitrixResourceBase.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/98af4240/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServer56FP1Resource.java
----------------------------------------------------------------------
diff --cc plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServer56FP1Resource.java
index d2b96e4,54aeef5..724c21b
--- a/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServer56FP1Resource.java
+++ b/plugins/hypervisors/xen/src/com/cloud/hypervisor/xen/resource/XenServer56FP1Resource.java
@@@ -11,31 -11,16 +11,31 @@@
  // Unless required by applicable law or agreed to in writing,
  // software distributed under the License is distributed on an
  // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
--// KIND, either express or implied.  See the License for the 
++// KIND, either express or implied.  See the License for the
  // specific language governing permissions and limitations
  // under the License.
  package com.cloud.hypervisor.xen.resource;
  
  
++
 +import java.io.File;
 +import java.util.ArrayList;
 +import java.util.HashMap;
 +import java.util.HashSet;
 +import java.util.List;
 +import java.util.Map;
 +import java.util.Set;
 +
 +import javax.ejb.Local;
 +
 +import org.apache.cloudstack.storage.to.TemplateObjectTO;
 +import org.apache.log4j.Logger;
 +import org.apache.xmlrpc.XmlRpcException;
 +
  import com.cloud.agent.api.FenceAnswer;
  import com.cloud.agent.api.FenceCommand;
 +import com.cloud.agent.api.to.DiskTO;
  import com.cloud.agent.api.to.VirtualMachineTO;
--import com.cloud.agent.api.to.VolumeTO;
  import com.cloud.resource.ServerResource;
  import com.cloud.storage.Volume;
  import com.cloud.template.VirtualMachineTemplate.BootloaderType;
@@@ -48,25 -33,36 +48,25 @@@ import com.xensource.xenapi.Types.XenAP
  import com.xensource.xenapi.VBD;
  import com.xensource.xenapi.VDI;
  import com.xensource.xenapi.VM;
  
  @Local(value=ServerResource.class)
  public class XenServer56FP1Resource extends XenServer56Resource {
+     private static final long mem_128m = 134217728L;
      private static final Logger s_logger = Logger.getLogger(XenServer56FP1Resource.class);
--    
++
      public XenServer56FP1Resource() {
          super();
      }
--    
++
      @Override
      protected String getGuestOsType(String stdType, boolean bootFromCD) {
      	return CitrixHelper.getXenServer56FP1GuestOsType(stdType, bootFromCD);
      }
--   
++
      @Override
--    protected List<File> getPatchFiles() {      
++    protected List<File> getPatchFiles() {
          List<File> files = new ArrayList<File>();
--        String patch = "scripts/vm/hypervisor/xenserver/xenserver56fp1/patch";    
++        String patch = "scripts/vm/hypervisor/xenserver/xenserver56fp1/patch";
          String patchfilePath = Script.findScript("" , patch);
          if ( patchfilePath == null ) {
              throw new CloudRuntimeException("Unable to find patch file " + patch);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/98af4240/plugins/hypervisors/xen/src/org/apache/cloudstack/storage/motion/XenServerStorageMotionStrategy.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/98af4240/plugins/pom.xml
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/98af4240/server/src/com/cloud/api/ApiResponseHelper.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/api/ApiResponseHelper.java
index ae666fe,540c8e9..1cb425a
--- a/server/src/com/cloud/api/ApiResponseHelper.java
+++ b/server/src/com/cloud/api/ApiResponseHelper.java
@@@ -102,9 -90,10 +90,11 @@@ import org.apache.cloudstack.api.respon
  import org.apache.cloudstack.api.response.NetworkResponse;
  import org.apache.cloudstack.api.response.NicResponse;
  import org.apache.cloudstack.api.response.NicSecondaryIpResponse;
 +import org.apache.cloudstack.api.response.ImageStoreResponse;
  import org.apache.cloudstack.api.response.PhysicalNetworkResponse;
  import org.apache.cloudstack.api.response.PodResponse;
+ import org.apache.cloudstack.api.response.PortableIpRangeResponse;
+ import org.apache.cloudstack.api.response.PortableIpResponse;
  import org.apache.cloudstack.api.response.PrivateGatewayResponse;
  import org.apache.cloudstack.api.response.ProjectAccountResponse;
  import org.apache.cloudstack.api.response.ProjectInvitationResponse;
@@@ -444,11 -437,11 +442,11 @@@ public class ApiResponseHelper implemen
              snapshotResponse.setVolumeId(volume.getUuid());
              snapshotResponse.setVolumeName(volume.getName());
              snapshotResponse.setVolumeType(volume.getVolumeType().name());
--        
++
              DataCenter zone = ApiDBUtils.findZoneById(volume.getDataCenterId());
              if (zone != null) {
              	snapshotResponse.setZoneName(zone.getName());
--            	snapshotResponse.setZoneType(zone.getNetworkType().toString());                
++            	snapshotResponse.setZoneType(zone.getNetworkType().toString());
              }
          }
          snapshotResponse.setCreated(snapshot.getCreated());
@@@ -733,7 -726,9 +731,10 @@@
              }
          }
  
-         // set tag information
++
+         ipResponse.setPortable(ipAddr.isPortable());
+ 
+         //set tag information
          List<? extends ResourceTag> tags = ApiDBUtils.listByResourceTypeAndId(TaggedResourceType.PublicIpAddress, ipAddr.getId());
          List<ResourceTagResponse> tagResponses = new ArrayList<ResourceTagResponse>();
          for (ResourceTag tag : tags) {
@@@ -781,7 -776,10 +782,10 @@@
              tagResponses.add(tagResponse);
          }
          lbResponse.setTags(tagResponses);
 -        
 +
+         Network ntwk = ApiDBUtils.findNetworkById(loadBalancer.getNetworkId());
+         lbResponse.setNetworkId(ntwk.getUuid());
+ 
          lbResponse.setObjectName("loadbalancer");
          return lbResponse;
      }
@@@ -954,15 -948,6 +958,15 @@@
      }
  
      @Override
 +    public ImageStoreResponse createImageStoreResponse(ImageStore os) {
 +        List<ImageStoreJoinVO> viewStores = ApiDBUtils.newImageStoreView(os);
 +        List<ImageStoreResponse> listStores = ViewResponseHelper
 +                .createImageStoreResponse(viewStores.toArray(new ImageStoreJoinVO[viewStores.size()]));
 +        assert listStores != null && listStores.size() == 1 : "There should be one image data store returned";
 +        return listStores.get(0);
 +    }
-     
++
 +    @Override
      public StoragePoolForMigrationResponse createStoragePoolForMigrationResponse(StoragePool pool) {
          List<StoragePoolJoinVO> viewPools = ApiDBUtils.newStoragePoolView(pool);
          List<StoragePoolForMigrationResponse> listPools = ViewResponseHelper.createStoragePoolForMigrationResponse(
@@@ -991,11 -976,12 +995,11 @@@
          clusterResponse.setClusterType(cluster.getClusterType().toString());
          clusterResponse.setAllocationState(cluster.getAllocationState().toString());
          clusterResponse.setManagedState(cluster.getManagedState().toString());
-         String cpuOvercommitRatio = ApiDBUtils.findClusterDetails(cluster.getId(), "cpuOvercommitRatio").getValue();
-         String memoryOvercommitRatio = ApiDBUtils.findClusterDetails(cluster.getId(), "memoryOvercommitRatio").getValue();
-         clusterResponse.setCpuovercommitratio(cpuOvercommitRatio);
-         clusterResponse.setRamovercommitratio(memoryOvercommitRatio);
+         String cpuOvercommitRatio=ApiDBUtils.findClusterDetails(cluster.getId(),"cpuOvercommitRatio").getValue();
+         String memoryOvercommitRatio=ApiDBUtils.findClusterDetails(cluster.getId(),"memoryOvercommitRatio").getValue();
+         clusterResponse.setCpuOvercommitRatio(cpuOvercommitRatio);
+         clusterResponse.setMemoryOvercommitRatio(memoryOvercommitRatio);
  
 -
          if (showCapacities != null && showCapacities) {
              List<SummedCapacity> capacities = ApiDBUtils.getCapacityByClusterPodZone(null, null, cluster.getId());
              Set<CapacityResponse> capacityResponses = new HashSet<CapacityResponse>();
@@@ -1302,25 -1413,126 +1306,25 @@@
      }
  
      @Override
 -    public List<TemplateResponse> createTemplateResponses(long templateId, long zoneId, boolean readyOnly) {
 +    public List<TemplateResponse> createTemplateResponses(long templateId, Long zoneId, boolean readyOnly) {
          VirtualMachineTemplate template = findTemplateById(templateId);
 -        List<TemplateResponse> responses = new ArrayList<TemplateResponse>();
 -        VMTemplateHostVO templateHostRef = ApiDBUtils.findTemplateHostRef(templateId, zoneId, readyOnly);
 -        if (templateHostRef == null) {
 -            return responses;
 -        }
 -
 -        HostVO host = ApiDBUtils.findHostById(templateHostRef.getHostId());
 -        if (host.getType() == Host.Type.LocalSecondaryStorage && host.getStatus() != com.cloud.host.Status.Up) {
 -            return responses;
 -        }
 -
 -        TemplateResponse templateResponse = new TemplateResponse();
 -        templateResponse.setId(template.getUuid());
 -        templateResponse.setName(template.getName());
 -        templateResponse.setDisplayText(template.getDisplayText());
 -        templateResponse.setPublic(template.isPublicTemplate());
 -        templateResponse.setCreated(templateHostRef.getCreated());
 -
 -        templateResponse.setReady(templateHostRef.getDownloadState() == Status.DOWNLOADED);
 -        templateResponse.setFeatured(template.isFeatured());
 -        templateResponse.setExtractable(template.isExtractable() && !(template.getTemplateType() == TemplateType.SYSTEM));
 -        templateResponse.setPasswordEnabled(template.getEnablePassword());
 -        templateResponse.setSshKeyEnabled(template.getEnableSshKey());
 -        templateResponse.setCrossZones(template.isCrossZones());
 -        templateResponse.setFormat(template.getFormat());
 -        if (template.getTemplateType() != null) {
 -            templateResponse.setTemplateType(template.getTemplateType().toString());
 -        }
 -
 -        templateResponse.setHypervisor(template.getHypervisorType().toString());
 -        templateResponse.setDetails(template.getDetails());
 -
 -        GuestOS os = ApiDBUtils.findGuestOSById(template.getGuestOSId());
 -        if (os != null) {
 -            templateResponse.setOsTypeId(os.getUuid());
 -            templateResponse.setOsTypeName(os.getDisplayName());
 -        } else {
 -            templateResponse.setOsTypeId("-1");
 -            templateResponse.setOsTypeName("");
 -        }
 -
 -        Account account = ApiDBUtils.findAccountByIdIncludingRemoved(template.getAccountId());
 -        populateAccount(templateResponse, account.getId());
 -        populateDomain(templateResponse, account.getDomainId());
 -
 -        DataCenter datacenter = ApiDBUtils.findZoneById(zoneId);
 -
 -        if (datacenter != null) {
 -            // Add the zone ID
 -            templateResponse.setZoneId(datacenter.getUuid());
 -            templateResponse.setZoneName(datacenter.getName());
 -            templateResponse.setZoneType(datacenter.getNetworkType().toString());
 -        }
 -
 -        boolean isAdmin = false;
 -        Account caller = UserContext.current().getCaller();
 -        if ((caller == null) || BaseCmd.isAdmin(caller.getType())) {
 -            isAdmin = true;
 -        }
 -
 -        // If the user is an Admin, add the template download status
 -        if (isAdmin || caller.getId() == template.getAccountId()) {
 -            // add download status
 -            if (templateHostRef.getDownloadState() != Status.DOWNLOADED) {
 -                String templateStatus = "Processing";
 -                if (templateHostRef.getDownloadState() == VMTemplateHostVO.Status.DOWNLOAD_IN_PROGRESS) {
 -                    if (templateHostRef.getDownloadPercent() == 100) {
 -                        templateStatus = "Installing Template";
 -                    } else {
 -                        templateStatus = templateHostRef.getDownloadPercent() + "% Downloaded";
 -                    }
 -                } else {
 -                    templateStatus = templateHostRef.getErrorString();
 -                }
 -                templateResponse.setStatus(templateStatus);
 -            } else if (templateHostRef.getDownloadState() == VMTemplateHostVO.Status.DOWNLOADED) {
 -                templateResponse.setStatus("Download Complete");
 -            } else {
 -                templateResponse.setStatus("Successfully Installed");
 -            }
 -        }
 -
 -        Long templateSize = templateHostRef.getSize();
 -        if (templateSize > 0) {
 -            templateResponse.setSize(templateSize);
 -        }
 -
 -        templateResponse.setChecksum(template.getChecksum());
 -        if (template.getSourceTemplateId() != null) {
 -            VirtualMachineTemplate tmpl = ApiDBUtils.findTemplateById(template.getSourceTemplateId());
 -            if (tmpl != null) {
 -                templateResponse.setSourceTemplateId(tmpl.getUuid());
 -            }
 -        }
 -
 -        templateResponse.setChecksum(template.getChecksum());
 +        return createTemplateResponses(template, zoneId, readyOnly);
 +    }
  
 -        templateResponse.setTemplateTag(template.getTemplateTag());
  
 -        //set tag information
 -        List<? extends ResourceTag> tags = null;
 -        if (template.getFormat() == ImageFormat.ISO) {
 -            tags = ApiDBUtils.listByResourceTypeAndId(TaggedResourceType.ISO, template.getId());
 +    @Override
 +    public List<TemplateResponse> createIsoResponses(VirtualMachineTemplate result, Long zoneId, boolean readyOnly) {
 +        List<TemplateJoinVO> tvo = null;
 +        if (zoneId == null || zoneId == -1) {
 +            tvo = ApiDBUtils.newTemplateView(result);
          } else {
 -            tags = ApiDBUtils.listByResourceTypeAndId(TaggedResourceType.Template, template.getId());
 +            tvo = ApiDBUtils.newTemplateView(result, zoneId, readyOnly);
          }
-         
 -        List<ResourceTagResponse> tagResponses = new ArrayList<ResourceTagResponse>();
 -        for (ResourceTag tag : tags) {
 -            ResourceTagResponse tagResponse = createResourceTagResponse(tag, true);
 -            tagResponses.add(tagResponse);
 -        }
 -        templateResponse.setTags(tagResponses);
+ 
 -        templateResponse.setObjectName("template");
 -        responses.add(templateResponse);
 -        return responses;
 +        return ViewResponseHelper.createIsoResponse(tvo.toArray(new TemplateJoinVO[tvo.size()]));
      }
  
 +    /*
      @Override
      public List<TemplateResponse> createIsoResponses(long isoId, Long zoneId, boolean readyOnly) {
  
@@@ -2084,13 -2286,13 +2088,13 @@@
          response.setForVpc(ApiDBUtils.isOfferingForVpc(offering));
  
          response.setServices(serviceResponses);
--        
++
          //set network offering details
          Map<Detail, String> details = _ntwkModel.getNtwkOffDetails(offering.getId());
          if (details != null && !details.isEmpty()) {
              response.setDetails(details);
          }
--        
++
          response.setObjectName("networkoffering");
          return response;
      }
@@@ -3522,7 -3736,7 +3526,7 @@@
          return response;
      }
  
--    
++
      @Override
      public ApplicationLoadBalancerResponse createLoadBalancerContainerReponse(ApplicationLoadBalancerRule lb, Map<Ip, UserVm> lbInstances) {
  
@@@ -3534,7 -3748,7 +3538,7 @@@
          Network nw = ApiDBUtils.findNetworkById(lb.getNetworkId());
          lbResponse.setNetworkId(nw.getUuid());
          populateOwner(lbResponse, lb);
--        
++
          if (lb.getScheme() == Scheme.Internal) {
              lbResponse.setSourceIp(lb.getSourceIp().addr());
              //TODO - create the view for the load balancer rule to reflect the network uuid
@@@ -3547,7 -3761,7 +3551,7 @@@
              Network ntwk = ApiDBUtils.findNetworkById(publicIp.getNetworkId());
              lbResponse.setSourceIpNetworkId(ntwk.getUuid());
          }
--        
++
          //set load balancer rules information (only one rule per load balancer in this release)
          List<ApplicationLoadBalancerRuleResponse> ruleResponses = new ArrayList<ApplicationLoadBalancerRuleResponse>();
          ApplicationLoadBalancerRuleResponse ruleResponse = new ApplicationLoadBalancerRuleResponse();
@@@ -3561,7 -3775,7 +3565,7 @@@
          ruleResponse.setObjectName("loadbalancerrule");
          ruleResponses.add(ruleResponse);
          lbResponse.setLbRules(ruleResponses);
--        
++
          //set Lb instances information
          List<ApplicationLoadBalancerInstanceResponse> instanceResponses = new ArrayList<ApplicationLoadBalancerInstanceResponse>();
          for (Ip ip : lbInstances.keySet()) {
@@@ -3573,7 -3787,7 +3577,7 @@@
              instanceResponse.setObjectName("loadbalancerinstance");
              instanceResponses.add(instanceResponse);
          }
--        
++
          lbResponse.setLbInstances(instanceResponses);
  
          //set tag information

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/98af4240/server/src/com/cloud/api/query/QueryManagerImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/98af4240/server/src/com/cloud/capacity/CapacityManagerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/capacity/CapacityManagerImpl.java
index a627719,e58ae40..7a94c78
--- a/server/src/com/cloud/capacity/CapacityManagerImpl.java
+++ b/server/src/com/cloud/capacity/CapacityManagerImpl.java
@@@ -177,10 -177,10 +177,10 @@@ public class CapacityManagerImpl extend
          ServiceOfferingVO svo = _offeringsDao.findById(vm.getServiceOfferingId());
          CapacityVO capacityCpu = _capacityDao.findByHostIdType(hostId, CapacityVO.CAPACITY_TYPE_CPU);
          CapacityVO capacityMemory = _capacityDao.findByHostIdType(hostId, CapacityVO.CAPACITY_TYPE_MEMORY);
-         Long clusterId=null;
+         Long clusterId = null;
          if (hostId != null) {
 -            HostVO host = _hostDao.findById(hostId);
 +        HostVO host = _hostDao.findById(hostId);
-         clusterId= host.getClusterId();
+             clusterId = host.getClusterId();
          }
          if (capacityCpu == null || capacityMemory == null || svo == null) {
              return false;

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/98af4240/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/configuration/ConfigurationManagerImpl.java
index 174a7ad,47c5482..f0b6899
--- a/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
+++ b/server/src/com/cloud/configuration/ConfigurationManagerImpl.java
@@@ -39,11 -39,11 +39,8 @@@ import javax.naming.NamingException
  import javax.naming.directory.DirContext;
  import javax.naming.directory.InitialDirContext;
  
- 
--import com.cloud.dc.*;
--import com.cloud.dc.dao.*;
--import com.cloud.user.*;
  import com.cloud.event.UsageEventUtils;
+ import com.cloud.utils.db.*;
  import org.apache.cloudstack.acl.SecurityChecker;
  import org.apache.cloudstack.api.ApiConstants.LDAPParams;
  import org.apache.cloudstack.api.command.admin.config.UpdateCfgCmd;
@@@ -68,8 -71,8 +68,10 @@@ import org.apache.cloudstack.api.comman
  import org.apache.cloudstack.api.command.admin.zone.DeleteZoneCmd;
  import org.apache.cloudstack.api.command.admin.zone.UpdateZoneCmd;
  import org.apache.cloudstack.api.command.user.network.ListNetworkOfferingsCmd;
 +import org.apache.cloudstack.engine.subsystem.api.storage.DataStore;
 +import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
+ import org.apache.cloudstack.region.*;
+ import org.apache.cloudstack.region.dao.RegionDao;
  import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
  import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailVO;
  import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailsDao;
@@@ -113,7 -116,7 +115,6 @@@ import com.cloud.domain.DomainVO
  import com.cloud.domain.dao.DomainDao;
  import com.cloud.event.ActionEvent;
  import com.cloud.event.EventTypes;
--import com.cloud.event.UsageEventUtils;
  import com.cloud.exception.ConcurrentOperationException;
  import com.cloud.exception.InsufficientAddressCapacityException;
  import com.cloud.exception.InsufficientCapacityException;
@@@ -199,58 -201,58 +197,6 @@@ import com.cloud.vm.dao.NicIpAliasDao
  import com.cloud.vm.dao.NicIpAliasVO;
  import com.cloud.vm.dao.NicSecondaryIpDao;
  import edu.emory.mathcs.backport.java.util.Arrays;
--import org.apache.cloudstack.acl.SecurityChecker;
--import org.apache.cloudstack.api.ApiConstants.LDAPParams;
--import org.apache.cloudstack.api.command.admin.config.UpdateCfgCmd;
--import org.apache.cloudstack.api.command.admin.ldap.LDAPConfigCmd;
--import org.apache.cloudstack.api.command.admin.ldap.LDAPRemoveCmd;
--import org.apache.cloudstack.api.command.admin.network.CreateNetworkOfferingCmd;
--import org.apache.cloudstack.api.command.admin.network.DeleteNetworkOfferingCmd;
--import org.apache.cloudstack.api.command.admin.network.UpdateNetworkOfferingCmd;
--import org.apache.cloudstack.api.command.admin.offering.CreateDiskOfferingCmd;
--import org.apache.cloudstack.api.command.admin.offering.CreateServiceOfferingCmd;
--import org.apache.cloudstack.api.command.admin.offering.DeleteDiskOfferingCmd;
--import org.apache.cloudstack.api.command.admin.offering.DeleteServiceOfferingCmd;
--import org.apache.cloudstack.api.command.admin.offering.UpdateDiskOfferingCmd;
--import org.apache.cloudstack.api.command.admin.offering.UpdateServiceOfferingCmd;
--import org.apache.cloudstack.api.command.admin.pod.DeletePodCmd;
--import org.apache.cloudstack.api.command.admin.pod.UpdatePodCmd;
--import org.apache.cloudstack.api.command.admin.vlan.CreateVlanIpRangeCmd;
--import org.apache.cloudstack.api.command.admin.vlan.DedicatePublicIpRangeCmd;
--import org.apache.cloudstack.api.command.admin.vlan.DeleteVlanIpRangeCmd;
--import org.apache.cloudstack.api.command.admin.vlan.ReleasePublicIpRangeCmd;
--import org.apache.cloudstack.api.command.admin.zone.CreateZoneCmd;
--import org.apache.cloudstack.api.command.admin.zone.DeleteZoneCmd;
--import org.apache.cloudstack.api.command.admin.zone.UpdateZoneCmd;
--import org.apache.cloudstack.api.command.user.network.ListNetworkOfferingsCmd;
--import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
--import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailVO;
--import org.apache.cloudstack.storage.datastore.db.StoragePoolDetailsDao;
--import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
--import org.apache.log4j.Logger;
--import org.springframework.stereotype.Component;
--
--import javax.ejb.Local;
--import javax.inject.Inject;
--import javax.naming.ConfigurationException;
--import javax.naming.Context;
--import javax.naming.NamingException;
--import javax.naming.directory.DirContext;
--import javax.naming.directory.InitialDirContext;
--import java.net.URI;
--import java.sql.PreparedStatement;
--import java.sql.ResultSet;
--import java.sql.SQLException;
--import java.util.ArrayList;
--import java.util.Collection;
--import java.util.HashMap;
--import java.util.HashSet;
--import java.util.Hashtable;
--import java.util.Iterator;
--import java.util.List;
--import java.util.Map;
--import java.util.Set;
--import java.util.UUID;
  
  @Component
  @Local(value = { ConfigurationManager.class, ConfigurationService.class })
@@@ -1901,7 -1911,7 +1855,7 @@@ public class ConfigurationManagerImpl e
  
                  userNetwork.setBroadcastDomainType(broadcastDomainType);
                  userNetwork.setNetworkDomain(networkDomain);
--                _networkMgr.setupNetwork(systemAccount, offering, userNetwork, plan, null, null, false, 
++                _networkMgr.setupNetwork(systemAccount, offering, userNetwork, plan, null, null, false,
                          Domain.ROOT_DOMAIN, null, null, null, true);
              }
          }
@@@ -2543,7 -2560,7 +2504,7 @@@
          Transaction txn = Transaction.currentTxn();
          txn.start();
  
--        Vlan vlan = createVlanAndPublicIpRange(zoneId, networkId, physicalNetworkId, forVirtualNetwork, podId, startIP, 
++        Vlan vlan = createVlanAndPublicIpRange(zoneId, networkId, physicalNetworkId, forVirtualNetwork, podId, startIP,
                  endIP, newVlanGateway, newVlanNetmask, vlanId, vlanOwner, startIPv6, endIPv6, ip6Gateway, ip6Cidr);
          //create an entry in the nic_secondary table. This will be the new gateway that will be configured on the corresponding routervm.
          if (sameSubnet == false) {
@@@ -2918,7 -2936,7 +2879,7 @@@
                              throw new InvalidParameterValueException("Can't delete account specific vlan " + vlanDbId +
                                      " as ip " + ip + " belonging to the range is used for static nat purposes. Cleanup the rules first");
                          }
--                        
++
                          if (ip.isSourceNat()) {
                              throw new InvalidParameterValueException("Can't delete account specific vlan " + vlanDbId +
                                      " as ip " + ip + " belonging to the range is a source nat ip for the network id=" + ip.getSourceNetworkId() +
@@@ -2937,7 -2955,7 +2898,7 @@@
                      }
                  } finally {
                      _vlanDao.releaseFromLockTable(vlanDbId);
--                } 
++                }
              }
          }
  
@@@ -3765,7 -3783,7 +3726,7 @@@
              firewallProviderSet.add(firewallProvider);
              serviceProviderMap.put(Service.Firewall, firewallProviderSet);
          }
--        
++
          Map<NetworkOffering.Detail, String> details = new HashMap<NetworkOffering.Detail, String>();
          if (detailsStr != null) {
              for (String detailStr : detailsStr.keySet()) {
@@@ -3820,7 -3838,7 +3781,7 @@@
                          throw new InvalidParameterValueException("Unknown specified value for " + Capability.LbSchemes.getName());
                      }
                  } else {
--                    throw new InvalidParameterValueException("Only " + Capability.SupportedLBIsolation.getName() + 
++                    throw new InvalidParameterValueException("Only " + Capability.SupportedLBIsolation.getName() +
                              ", " + Capability.ElasticLb.getName() + ", " + Capability.InlineMode.getName()
                              + ", " + Capability.LbSchemes.getName() + " capabilities can be sepcified for LB service");
                  }
@@@ -3974,7 -3992,7 +3935,7 @@@
                  } else {
                      inline = false;
                  }
--                
++
                  String publicLbStr = lbServiceCapabilityMap.get(Capability.LbSchemes);
                  if (serviceProviderMap.containsKey(Service.Lb)) {
                      if (publicLbStr != null) {
@@@ -3987,7 -4005,7 +3948,7 @@@
                      }
                  }
              }
--            
++
              //in the current version of the code, publicLb and specificLb can't both be set to true for the same network offering
              if (publicLb && internalLb) {
                  throw new InvalidParameterValueException("Public lb and internal lb can't be enabled at the same time on the offering");
@@@ -4030,7 -4048,7 +3991,7 @@@
          if (serviceOfferingId != null) {
              offering.setServiceOfferingId(serviceOfferingId);
          }
--        
++
          //validate the details
          if (details != null) {
              validateNtwkOffDetails(details, serviceProviderMap);
@@@ -4077,7 -4095,7 +4038,7 @@@
  
      protected void validateNtwkOffDetails(Map<Detail, String> details, Map<Service, Set<Provider>> serviceProviderMap) {
          for (Detail detail : details.keySet()) {
--            
++
              Provider lbProvider = null;
              if (detail == NetworkOffering.Detail.InternalLbProvider || detail == NetworkOffering.Detail.PublicLbProvider) {
                  //1) Vaidate the detail values - have to match the lb provider name
@@@ -4092,13 -4110,13 +4053,13 @@@
                              break;
                          }
                      }
--                } 
--                
++                }
++
                  if (lbProvider == null) {
                      throw new InvalidParameterValueException("Invalid value " + details.get(detail)
                              + " for the detail " + detail + ". The provider is not supported by the network offering");
                  }
--                
++
                  //2) validate if the provider supports the scheme
                  Set<Provider> lbProviders = new HashSet<Provider>();
                  lbProviders.add(lbProvider);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/98af4240/server/src/com/cloud/deploy/DeploymentPlanningManagerImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/98af4240/server/src/com/cloud/hypervisor/HypervisorGuruBase.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/hypervisor/HypervisorGuruBase.java
index 33e9d5d,ea4fcc1..befd8c1
--- a/server/src/com/cloud/hypervisor/HypervisorGuruBase.java
+++ b/server/src/com/cloud/hypervisor/HypervisorGuruBase.java
@@@ -88,9 -86,9 +88,9 @@@ public abstract class HypervisorGuruBas
  
          ServiceOffering offering = vmProfile.getServiceOffering();  
          VirtualMachine vm = vmProfile.getVirtualMachine();
-         Long minMemory = (long) (offering.getRamSize()/vmProfile.getCpuOvercommitRatio());
-         int  minspeed= (int)(offering.getSpeed()/vmProfile.getMemoryOvercommitRatio());
+         Long minMemory = (long) (offering.getRamSize() / vmProfile.getMemoryOvercommitRatio());
+         int minspeed = (int) (offering.getSpeed() / vmProfile.getCpuOvercommitRatio());
 -        int maxspeed = (offering.getSpeed());
 +        int  maxspeed = (offering.getSpeed());
          VirtualMachineTO to = new VirtualMachineTO(vm.getId(), vm.getInstanceName(), vm.getType(), offering.getCpu(), minspeed, maxspeed,
                  minMemory * 1024l * 1024l, offering.getRamSize() * 1024l * 1024l, null, null, vm.isHaEnabled(), vm.limitCpuUse(), vm.getVncPassword());
          to.setBootArgs(vmProfile.getBootArgs());

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/98af4240/server/src/com/cloud/network/NetworkManagerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/network/NetworkManagerImpl.java
index bf79596,254510b..e880180
--- a/server/src/com/cloud/network/NetworkManagerImpl.java
+++ b/server/src/com/cloud/network/NetworkManagerImpl.java
@@@ -740,13 -803,15 +802,15 @@@ public class NetworkManagerImpl extend
              }
  
              DataCenter zone = _configMgr.getZone(network.getDataCenterId());
-             if (network.getGuestType() == Network.GuestType.Shared && zone.getNetworkType() == NetworkType.Advanced) {
+             if (zone.getNetworkType() == NetworkType.Advanced) {
+                 if (network.getGuestType() == Network.GuestType.Shared) {
 -                    if (isSharedNetworkOfferingWithServices(network.getNetworkOfferingId())) {
 -                        _accountMgr.checkAccess(UserContext.current().getCaller(), AccessType.UseNetwork, false, network);
 -                    } else {
 -                        throw new InvalidParameterValueException("IP can be associated with guest network of 'shared' type only if " +
 -                                "network services Source Nat, Static Nat, Port Forwarding, Load balancing, firewall are enabled in the network");
 -                    }
 +                if (isSharedNetworkOfferingWithServices(network.getNetworkOfferingId())) {
 +                    _accountMgr.checkAccess(UserContext.current().getCaller(), AccessType.UseNetwork, false, network);
 +                } else {
 +                    throw new InvalidParameterValueException("IP can be associated with guest network of 'shared' type only if " +
 +                        "network services Source Nat, Static Nat, Port Forwarding, Load balancing, firewall are enabled in the network");
 +                }
+                 }
              } else {
                  _accountMgr.checkAccess(caller, null, true, ipToAssoc);
              }

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/98af4240/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
index f5f99ed,b969be2..4e3b903
--- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
+++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java
@@@ -2234,15 -2234,22 +2235,22 @@@ public class VirtualNetworkApplianceMan
      	}
      	Network network = _networkDao.findById(nic.getNetworkId());
      	String networkTag = _networkModel.getNetworkTag(router.getHypervisorType(), network);
-     	PvlanSetupCommand cmd = PvlanSetupCommand.createDhcpSetup(op, nic.getBroadcastUri(), networkTag, router.getInstanceName(), nic.getMacAddress(), nic.getIp4Address());
-     	Commands cmds = new Commands(cmd);
+     	PvlanSetupCommand cmd = PvlanSetupCommand.createDhcpSetup(op, nic.getBroadCastUri(), networkTag, router.getInstanceName(), nic.getMacAddress(), nic.getIp4Address());
      	// In fact we send command to the host of router, we're not programming router but the host
+         Answer answer = null;
 -        try {
 +    	try {
- 			sendCommandsToRouter(router, cmds);
+             answer = _agentMgr.send(hostId, cmd);
+         } catch (OperationTimedoutException e) {
+             s_logger.warn("Timed Out", e);
+             return false;
 -        } catch (AgentUnavailableException e) {
 +		} catch (AgentUnavailableException e) {
              s_logger.warn("Agent Unavailable ", e);
 -            return false;
 -        }
 +			return false;
 +		}
+ 
+         if (answer == null || !answer.getResult()) {
+         	return false;
+         }
      	return true;
      }
      

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/98af4240/server/src/com/cloud/resource/ResourceManagerImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/98af4240/server/src/com/cloud/server/ManagementServerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/server/ManagementServerImpl.java
index 17f87a5,8323af8..95ef6f4
--- a/server/src/com/cloud/server/ManagementServerImpl.java
+++ b/server/src/com/cloud/server/ManagementServerImpl.java
@@@ -17,11 -17,11 +17,7 @@@
  package com.cloud.server;
  
  import java.lang.reflect.Field;
--import java.net.Inet6Address;
--import java.net.InetAddress;
--import java.net.URI;
  import java.net.URISyntaxException;
--import java.net.UnknownHostException;
  import java.security.NoSuchAlgorithmException;
  import java.security.SecureRandom;
  import java.util.ArrayList;
@@@ -29,10 -29,10 +25,8 @@@ import java.util.Calendar
  import java.util.Comparator;
  import java.util.Date;
  import java.util.HashMap;
--import java.util.HashSet;
  import java.util.List;
  import java.util.Map;
--import java.util.Set;
  import java.util.TimeZone;
  import java.util.concurrent.Executors;
  import java.util.concurrent.ScheduledExecutorService;
@@@ -43,12 -43,22 +37,20 @@@ import javax.crypto.spec.SecretKeySpec
  import javax.inject.Inject;
  import javax.naming.ConfigurationException;
  
+ import com.cloud.exception.*;
+ import com.cloud.vm.*;
  import org.apache.cloudstack.acl.ControlledEntity;
  import org.apache.cloudstack.acl.SecurityChecker.AccessType;
- import org.apache.cloudstack.affinity.AffinityGroupProcessor;
- import org.apache.cloudstack.affinity.dao.AffinityGroupVMMapDao;
  import org.apache.cloudstack.api.ApiConstants;
+ 
+ import com.cloud.event.ActionEventUtils;
  import org.apache.cloudstack.api.BaseUpdateTemplateOrIsoCmd;
+ import org.apache.cloudstack.api.command.admin.region.*;
+ import org.apache.cloudstack.api.response.ExtractResponse;
+ import org.apache.commons.codec.binary.Base64;
+ import org.apache.log4j.Logger;
+ import org.apache.cloudstack.affinity.AffinityGroupProcessor;
+ import org.apache.cloudstack.affinity.dao.AffinityGroupVMMapDao;
 -import org.apache.cloudstack.api.ApiConstants;
 -import org.apache.cloudstack.api.BaseUpdateTemplateOrIsoCmd;
  import org.apache.cloudstack.api.command.admin.account.CreateAccountCmd;
  import org.apache.cloudstack.api.command.admin.account.DeleteAccountCmd;
  import org.apache.cloudstack.api.command.admin.account.DisableAccountCmd;
@@@ -281,8 -278,8 +274,6 @@@ import org.apache.cloudstack.api.comman
  import org.apache.cloudstack.api.command.user.nat.DisableStaticNatCmd;
  import org.apache.cloudstack.api.command.user.nat.EnableStaticNatCmd;
  import org.apache.cloudstack.api.command.user.nat.ListIpForwardingRulesCmd;
--import org.apache.cloudstack.api.command.user.network.*;
--
  import org.apache.cloudstack.api.command.user.network.CreateNetworkACLCmd;
  import org.apache.cloudstack.api.command.user.network.CreateNetworkACLListCmd;
  import org.apache.cloudstack.api.command.user.network.CreateNetworkCmd;
@@@ -404,14 -410,14 +395,10 @@@ import org.apache.cloudstack.api.comman
  import org.apache.cloudstack.api.command.user.vpn.ResetVpnConnectionCmd;
  import org.apache.cloudstack.api.command.user.vpn.UpdateVpnCustomerGatewayCmd;
  import org.apache.cloudstack.api.command.user.zone.ListZonesByCmd;
--import org.apache.cloudstack.api.response.ExtractResponse;
  import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
  import org.apache.cloudstack.engine.subsystem.api.storage.StoragePoolAllocator;
  import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
  import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
--import org.apache.commons.codec.binary.Base64;
--import org.apache.log4j.Logger;
--
  import com.cloud.agent.AgentManager;
  import com.cloud.agent.api.GetVncPortAnswer;
  import com.cloud.agent.api.GetVncPortCommand;
@@@ -463,7 -469,7 +450,6 @@@ import com.cloud.deploy.DeploymentPlann
  import com.cloud.domain.DomainVO;
  import com.cloud.domain.dao.DomainDao;
  import com.cloud.event.ActionEvent;
--import com.cloud.event.ActionEventUtils;
  import com.cloud.event.EventTypes;
  import com.cloud.event.EventVO;
  import com.cloud.event.dao.EventDao;
@@@ -514,7 -514,7 +494,6 @@@ import com.cloud.storage.Storage.ImageF
  import com.cloud.storage.StorageManager;
  import com.cloud.storage.StoragePool;
  import com.cloud.storage.Upload;
--import com.cloud.storage.Upload.Mode;
  import com.cloud.storage.UploadVO;
  import com.cloud.storage.VMTemplateVO;
  import com.cloud.storage.Volume;
@@@ -534,7 -534,7 +513,6 @@@ import com.cloud.storage.upload.UploadM
  import com.cloud.tags.ResourceTagVO;
  import com.cloud.tags.dao.ResourceTagDao;
  import com.cloud.template.TemplateManager;
--import com.cloud.template.VirtualMachineTemplate.TemplateFilter;
  import com.cloud.user.Account;
  import com.cloud.user.AccountManager;
  import com.cloud.user.SSHKeyPair;
@@@ -586,84 -576,79 +554,14 @@@ import com.cloud.vm.dao.VMInstanceDao
  
  import edu.emory.mathcs.backport.java.util.Arrays;
  import edu.emory.mathcs.backport.java.util.Collections;
- import org.apache.cloudstack.acl.ControlledEntity;
- import org.apache.cloudstack.api.command.admin.autoscale.CreateCounterCmd;
- import org.apache.cloudstack.api.command.admin.autoscale.DeleteCounterCmd;
- import org.apache.cloudstack.api.command.admin.cluster.AddClusterCmd;
- import org.apache.cloudstack.api.command.admin.cluster.DeleteClusterCmd;
- import org.apache.cloudstack.api.command.admin.cluster.ListClustersCmd;
- import org.apache.cloudstack.api.command.admin.cluster.UpdateClusterCmd;
- import org.apache.cloudstack.api.command.admin.config.ListCfgsByCmd;
- import org.apache.cloudstack.api.command.admin.config.ListHypervisorCapabilitiesCmd;
- import org.apache.cloudstack.api.command.admin.config.UpdateCfgCmd;
- import org.apache.cloudstack.api.command.admin.config.UpdateHypervisorCapabilitiesCmd;
- import org.apache.cloudstack.api.command.admin.ldap.LDAPConfigCmd;
- import org.apache.cloudstack.api.command.admin.ldap.LDAPRemoveCmd;
- import org.apache.cloudstack.api.command.admin.pod.CreatePodCmd;
- import org.apache.cloudstack.api.command.admin.pod.DeletePodCmd;
- import org.apache.cloudstack.api.command.admin.pod.ListPodsByCmd;
- import org.apache.cloudstack.api.command.admin.pod.UpdatePodCmd;
+ 
 -import org.apache.cloudstack.acl.ControlledEntity;
 -import org.apache.cloudstack.api.command.admin.autoscale.CreateCounterCmd;
 -import org.apache.cloudstack.api.command.admin.autoscale.DeleteCounterCmd;
 -import org.apache.cloudstack.api.command.admin.cluster.AddClusterCmd;
 -import org.apache.cloudstack.api.command.admin.cluster.DeleteClusterCmd;
 -import org.apache.cloudstack.api.command.admin.cluster.ListClustersCmd;
 -import org.apache.cloudstack.api.command.admin.cluster.UpdateClusterCmd;
 -import org.apache.cloudstack.api.command.admin.config.ListCfgsByCmd;
 -import org.apache.cloudstack.api.command.admin.config.ListHypervisorCapabilitiesCmd;
 -import org.apache.cloudstack.api.command.admin.config.UpdateCfgCmd;
 -import org.apache.cloudstack.api.command.admin.config.UpdateHypervisorCapabilitiesCmd;
 -import org.apache.cloudstack.api.command.admin.ldap.LDAPConfigCmd;
 -import org.apache.cloudstack.api.command.admin.ldap.LDAPRemoveCmd;
 -import org.apache.cloudstack.api.command.admin.pod.CreatePodCmd;
 -import org.apache.cloudstack.api.command.admin.pod.DeletePodCmd;
 -import org.apache.cloudstack.api.command.admin.pod.ListPodsByCmd;
 -import org.apache.cloudstack.api.command.admin.pod.UpdatePodCmd;
 -import org.apache.cloudstack.api.command.admin.swift.AddSwiftCmd;
 -import org.apache.cloudstack.api.command.admin.swift.ListSwiftsCmd;
 -import org.apache.cloudstack.api.command.admin.template.PrepareTemplateCmd;
 -import org.apache.cloudstack.api.command.admin.vlan.CreateVlanIpRangeCmd;
 -import org.apache.cloudstack.api.command.admin.vlan.DeleteVlanIpRangeCmd;
 -import org.apache.cloudstack.api.command.admin.vlan.ListVlanIpRangesCmd;
 -import org.apache.cloudstack.api.command.admin.vm.AssignVMCmd;
 -import org.apache.cloudstack.api.command.admin.vm.MigrateVMCmd;
 -import org.apache.cloudstack.api.command.admin.vm.MigrateVirtualMachineWithVolumeCmd;
 -import org.apache.cloudstack.api.command.admin.vm.RecoverVMCmd;
 -import org.apache.cloudstack.api.command.admin.zone.CreateZoneCmd;
 -import org.apache.cloudstack.api.command.admin.zone.DeleteZoneCmd;
 -import org.apache.cloudstack.api.command.admin.zone.MarkDefaultZoneForAccountCmd;
 -import org.apache.cloudstack.api.command.admin.zone.UpdateZoneCmd;
 -import org.apache.cloudstack.api.command.user.account.AddAccountToProjectCmd;
 -import org.apache.cloudstack.api.command.user.account.DeleteAccountFromProjectCmd;
 -import org.apache.cloudstack.api.command.user.account.ListAccountsCmd;
 -import org.apache.cloudstack.api.command.user.account.ListProjectAccountsCmd;
 -import org.apache.cloudstack.api.command.user.address.AssociateIPAddrCmd;
 -import org.apache.cloudstack.api.command.user.address.DisassociateIPAddrCmd;
 -import org.apache.cloudstack.api.command.user.address.ListPublicIpAddressesCmd;
 -import org.apache.cloudstack.api.command.user.config.ListCapabilitiesCmd;
 -import org.apache.cloudstack.api.command.user.event.ArchiveEventsCmd;
 -import org.apache.cloudstack.api.command.user.event.DeleteEventsCmd;
 -import org.apache.cloudstack.api.command.user.event.ListEventTypesCmd;
 -import org.apache.cloudstack.api.command.user.event.ListEventsCmd;
 -import org.apache.cloudstack.api.command.user.guest.ListGuestOsCategoriesCmd;
 -import org.apache.cloudstack.api.command.user.guest.ListGuestOsCmd;
 -import org.apache.cloudstack.api.command.user.job.ListAsyncJobsCmd;
 -import org.apache.cloudstack.api.command.user.job.QueryAsyncJobResultCmd;
 -import org.apache.cloudstack.api.command.user.offering.ListDiskOfferingsCmd;
 -import org.apache.cloudstack.api.command.user.offering.ListServiceOfferingsCmd;
 -import org.apache.cloudstack.api.command.user.region.ListRegionsCmd;
 -import org.apache.cloudstack.api.command.user.region.ha.gslb.*;
 -import org.apache.cloudstack.api.command.user.ssh.CreateSSHKeyPairCmd;
 -import org.apache.cloudstack.api.command.user.ssh.DeleteSSHKeyPairCmd;
 -import org.apache.cloudstack.api.command.user.ssh.ListSSHKeyPairsCmd;
 -import org.apache.cloudstack.api.command.user.ssh.RegisterSSHKeyPairCmd;
 -import org.apache.cloudstack.api.command.user.tag.CreateTagsCmd;
 -import org.apache.cloudstack.api.command.user.tag.DeleteTagsCmd;
 -import org.apache.cloudstack.api.command.user.tag.ListTagsCmd;
 -import org.apache.cloudstack.api.command.user.vmgroup.CreateVMGroupCmd;
 -import org.apache.cloudstack.api.command.user.vmgroup.DeleteVMGroupCmd;
 -import org.apache.cloudstack.api.command.user.vmgroup.ListVMGroupsCmd;
 -import org.apache.cloudstack.api.command.user.vmgroup.UpdateVMGroupCmd;
 -import org.apache.cloudstack.api.command.user.vmsnapshot.CreateVMSnapshotCmd;
 -import org.apache.cloudstack.api.command.user.vmsnapshot.DeleteVMSnapshotCmd;
 -import org.apache.cloudstack.api.command.user.vmsnapshot.ListVMSnapshotCmd;
 -import org.apache.cloudstack.api.command.user.zone.ListZonesByCmd;
 -import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
 -import org.apache.cloudstack.engine.subsystem.api.storage.StoragePoolAllocator;
 -import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
 -import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
 +import org.apache.cloudstack.api.command.admin.region.AddRegionCmd;
 +import org.apache.cloudstack.api.command.admin.region.RemoveRegionCmd;
 +import org.apache.cloudstack.api.command.admin.region.UpdateRegionCmd;
- import org.apache.cloudstack.api.command.admin.swift.AddSwiftCmd;
- import org.apache.cloudstack.api.command.admin.swift.ListSwiftsCmd;
- import org.apache.cloudstack.api.command.admin.template.PrepareTemplateCmd;
- import org.apache.cloudstack.api.command.admin.vlan.CreateVlanIpRangeCmd;
- import org.apache.cloudstack.api.command.admin.vlan.DeleteVlanIpRangeCmd;
- import org.apache.cloudstack.api.command.admin.vlan.ListVlanIpRangesCmd;
- import org.apache.cloudstack.api.command.admin.vm.AssignVMCmd;
- import org.apache.cloudstack.api.command.admin.vm.MigrateVMCmd;
- import org.apache.cloudstack.api.command.admin.vm.MigrateVirtualMachineWithVolumeCmd;
- import org.apache.cloudstack.api.command.admin.vm.RecoverVMCmd;
- import org.apache.cloudstack.api.command.admin.zone.CreateZoneCmd;
- import org.apache.cloudstack.api.command.admin.zone.DeleteZoneCmd;
- import org.apache.cloudstack.api.command.admin.zone.MarkDefaultZoneForAccountCmd;
- import org.apache.cloudstack.api.command.admin.zone.UpdateZoneCmd;
- import org.apache.cloudstack.api.command.user.account.AddAccountToProjectCmd;
- import org.apache.cloudstack.api.command.user.account.DeleteAccountFromProjectCmd;
- import org.apache.cloudstack.api.command.user.account.ListAccountsCmd;
- import org.apache.cloudstack.api.command.user.account.ListProjectAccountsCmd;
- import org.apache.cloudstack.api.command.user.address.AssociateIPAddrCmd;
- import org.apache.cloudstack.api.command.user.address.DisassociateIPAddrCmd;
- import org.apache.cloudstack.api.command.user.address.ListPublicIpAddressesCmd;
- import org.apache.cloudstack.api.command.user.config.ListCapabilitiesCmd;
- import org.apache.cloudstack.api.command.user.event.ArchiveEventsCmd;
- import org.apache.cloudstack.api.command.user.event.DeleteEventsCmd;
- import org.apache.cloudstack.api.command.user.event.ListEventTypesCmd;
- import org.apache.cloudstack.api.command.user.event.ListEventsCmd;
- import org.apache.cloudstack.api.command.user.guest.ListGuestOsCategoriesCmd;
- import org.apache.cloudstack.api.command.user.guest.ListGuestOsCmd;
- import org.apache.cloudstack.api.command.user.job.ListAsyncJobsCmd;
- import org.apache.cloudstack.api.command.user.job.QueryAsyncJobResultCmd;
- import org.apache.cloudstack.api.command.user.offering.ListDiskOfferingsCmd;
- import org.apache.cloudstack.api.command.user.offering.ListServiceOfferingsCmd;
- import org.apache.cloudstack.api.command.user.region.ListRegionsCmd;
- import org.apache.cloudstack.api.command.user.region.ha.gslb.*;
- import org.apache.cloudstack.api.command.user.ssh.CreateSSHKeyPairCmd;
- import org.apache.cloudstack.api.command.user.ssh.DeleteSSHKeyPairCmd;
- import org.apache.cloudstack.api.command.user.ssh.ListSSHKeyPairsCmd;
- import org.apache.cloudstack.api.command.user.ssh.RegisterSSHKeyPairCmd;
- import org.apache.cloudstack.api.command.user.tag.CreateTagsCmd;
- import org.apache.cloudstack.api.command.user.tag.DeleteTagsCmd;
- import org.apache.cloudstack.api.command.user.tag.ListTagsCmd;
- import org.apache.cloudstack.api.command.user.vmgroup.CreateVMGroupCmd;
- import org.apache.cloudstack.api.command.user.vmgroup.DeleteVMGroupCmd;
- import org.apache.cloudstack.api.command.user.vmgroup.ListVMGroupsCmd;
- import org.apache.cloudstack.api.command.user.vmgroup.UpdateVMGroupCmd;
- import org.apache.cloudstack.api.command.user.vmsnapshot.CreateVMSnapshotCmd;
- import org.apache.cloudstack.api.command.user.vmsnapshot.DeleteVMSnapshotCmd;
- import org.apache.cloudstack.api.command.user.vmsnapshot.ListVMSnapshotCmd;
- import org.apache.cloudstack.api.command.user.vmsnapshot.RevertToVMSnapshotCmd;
- import org.apache.cloudstack.api.command.user.zone.ListZonesByCmd;
- import org.apache.cloudstack.api.response.ExtractResponse;
 +import org.apache.cloudstack.engine.subsystem.api.storage.DataStore;
- import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
- import org.apache.cloudstack.engine.subsystem.api.storage.StoragePoolAllocator;
- import org.apache.cloudstack.storage.datastore.db.PrimaryDataStoreDao;
- import org.apache.cloudstack.storage.datastore.db.StoragePoolVO;
  import org.apache.cloudstack.api.command.admin.config.ListDeploymentPlannersCmd;
  
++
  public class ManagementServerImpl extends ManagerBase implements ManagementServer {
      public static final Logger s_logger = Logger.getLogger(ManagementServerImpl.class.getName());
  

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/98af4240/server/src/com/cloud/storage/VolumeManagerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/storage/VolumeManagerImpl.java
index 9af53ee,4b654eb..e98939d
--- a/server/src/com/cloud/storage/VolumeManagerImpl.java
+++ b/server/src/com/cloud/storage/VolumeManagerImpl.java
@@@ -733,9 -720,9 +733,9 @@@ public class VolumeManagerImpl extends 
          // volume.setSize(size);
          volume.setInstanceId(null);
          volume.setUpdated(new Date());
-         volume.setDomainId((caller == null) ? Domain.ROOT_DOMAIN : caller
+         volume.setDomainId((owner == null) ? Domain.ROOT_DOMAIN : owner
                  .getDomainId());
 -
 +        volume.setFormat(ImageFormat.valueOf(format));
          volume = _volsDao.persist(volume);
          try {
              stateTransitTo(volume, Event.UploadRequested);

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/98af4240/server/src/com/cloud/template/TemplateManagerImpl.java
----------------------------------------------------------------------
diff --cc server/src/com/cloud/template/TemplateManagerImpl.java
index 3e3616f,517d4ba..eaf9d25
--- a/server/src/com/cloud/template/TemplateManagerImpl.java
+++ b/server/src/com/cloud/template/TemplateManagerImpl.java
@@@ -1218,9 -1553,16 +1218,16 @@@ public class TemplateManagerImpl extend
                  accountNames.add(acct.getAccountName());
              }
          }
+ 
+         // also add the owner if not public
+         if (!template.isPublicTemplate()) {
+             Account templateOwner = _accountDao.findById(template.getAccountId());
+             accountNames.add(templateOwner.getAccountName());
+         }
+ 
          return accountNames;
      }
 -    
 +
      @DB
      @Override
      public boolean updateTemplateOrIsoPermissions(BaseUpdateTemplateOrIsoPermissionsCmd cmd) {

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/98af4240/server/src/com/cloud/vm/UserVmManagerImpl.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/98af4240/server/src/com/cloud/vm/VirtualMachineManagerImpl.java
----------------------------------------------------------------------