You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by bh...@apache.org on 2012/12/24 01:57:37 UTC

[3/50] [abbrv] git commit: Merge branch 'master' into test-merge-api

Merge branch 'master' into test-merge-api

Conflicts:
	api/src/com/cloud/agent/api/BackupSnapshotCommand.java
	api/src/com/cloud/agent/api/storage/PrimaryStorageDownloadCommand.java
	api/src/com/cloud/agent/api/to/PortForwardingRuleTO.java
	api/src/com/cloud/network/NetworkService.java
	api/src/com/cloud/resource/ResourceService.java
	api/src/org/apache/cloudstack/api/ApiConstants.java
	api/src/org/apache/cloudstack/api/ResponseGenerator.java
	api/src/org/apache/cloudstack/api/response/SSHKeyPairResponse.java
	client/tomcatconf/commands.properties.in
	core/src/com/cloud/storage/SnapshotVO.java
	pom.xml
	server/src/com/cloud/api/ApiDispatcher.java
	server/src/com/cloud/api/ApiResponseHelper.java
	server/src/com/cloud/api/ApiServer.java
	server/src/com/cloud/configuration/ConfigurationManagerImpl.java
	server/src/com/cloud/network/NetworkManagerImpl.java
	server/src/com/cloud/network/rules/RulesManagerImpl.java
	server/src/com/cloud/offerings/NetworkOfferingVO.java
	server/src/com/cloud/resource/ResourceManagerImpl.java
	server/src/com/cloud/upgrade/dao/Upgrade40to41.java
	server/src/com/cloud/vm/UserVmManagerImpl.java
	server/test/com/cloud/vpc/MockNetworkManagerImpl.java
	setup/db/create-schema.sql
	setup/db/db/schema-40to410.sql

Signed-off-by: Rohit Yadav <bh...@apache.org>


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

Branch: refs/heads/api_refactoring
Commit: 296b49c2f83e0e778de9e2c80fbd2f9d36d8c71d
Parents: 38225a1 f0c3b4c
Author: Rohit Yadav <bh...@apache.org>
Authored: Sun Dec 23 13:54:46 2012 -0800
Committer: Rohit Yadav <bh...@apache.org>
Committed: Sun Dec 23 13:54:46 2012 -0800

----------------------------------------------------------------------
 .gitignore                                         |    2 +
 LICENSE                                            | 3474 +++++++--------
 NOTICE                                             |  146 +-
 .../src/com/cloud/agent/MetricsCollector.java      |  107 -
 .../src/com/cloud/agent/MockVmMetrics.java         |  205 -
 .../src/com/cloud/agent/MultiCaster.java           |  152 -
 .../src/com/cloud/agent/MultiCasterListener.java   |   22 -
 .../src/com/cloud/agent/SimulatorCmd.java          |   37 -
 .../src/com/cloud/agent/SimulatorMigrateVmCmd.java |   83 -
 .../com/cloud/agent/manager/MockAgentManager.java  |   66 -
 .../cloud/agent/manager/MockAgentManagerImpl.java  |  468 --
 .../cloud/agent/manager/MockStorageManager.java    |   91 -
 .../agent/manager/MockStorageManagerImpl.java      | 1298 ------
 .../src/com/cloud/agent/manager/MockVmManager.java |   83 -
 .../com/cloud/agent/manager/MockVmManagerImpl.java |  615 ---
 .../src/com/cloud/agent/manager/SimulatorInfo.java |   59 -
 .../com/cloud/agent/manager/SimulatorManager.java  |   66 -
 .../cloud/agent/manager/SimulatorManagerImpl.java  |  336 --
 .../com/cloud/api/commands/ConfigureSimulator.java |   82 -
 .../configuration/SimulatorComponentLibrary.java   |   50 -
 .../src/com/cloud/resource/AgentResourceBase.java  |  284 --
 .../com/cloud/resource/AgentRoutingResource.java   |  363 --
 .../com/cloud/resource/AgentStorageResource.java   |  117 -
 .../com/cloud/resource/SimulatorDiscoverer.java    |  336 --
 .../resource/SimulatorSecondaryDiscoverer.java     |  151 -
 .../server/ManagementServerSimulatorImpl.java      |   32 -
 .../com/cloud/simulator/MockConfigurationVO.java   |  121 -
 .../src/com/cloud/simulator/MockHost.java          |   62 -
 .../src/com/cloud/simulator/MockHostVO.java        |  276 --
 .../src/com/cloud/simulator/MockSecStorageVO.java  |   76 -
 .../com/cloud/simulator/MockSecurityRulesVO.java   |  104 -
 .../src/com/cloud/simulator/MockStoragePoolVO.java |  102 -
 .../src/com/cloud/simulator/MockVMVO.java          |  130 -
 .../src/com/cloud/simulator/MockVm.java            |   45 -
 .../src/com/cloud/simulator/MockVolumeVO.java      |  118 -
 .../src/com/cloud/simulator/SimulatorGuru.java     |   59 -
 .../cloud/simulator/SimulatorRuntimeException.java |   41 -
 .../cloud/simulator/dao/MockConfigurationDao.java  |   27 -
 .../simulator/dao/MockConfigurationDaoImpl.java    |  142 -
 .../src/com/cloud/simulator/dao/MockHostDao.java   |   27 -
 .../com/cloud/simulator/dao/MockHostDaoImpl.java   |   55 -
 .../com/cloud/simulator/dao/MockSecStorageDao.java |   24 -
 .../cloud/simulator/dao/MockSecStorageDaoImpl.java |   42 -
 .../cloud/simulator/dao/MockSecurityRulesDao.java  |   27 -
 .../simulator/dao/MockSecurityRulesDaoImpl.java    |   60 -
 .../cloud/simulator/dao/MockStoragePoolDao.java    |   25 -
 .../simulator/dao/MockStoragePoolDaoImpl.java      |   57 -
 .../src/com/cloud/simulator/dao/MockVMDao.java     |   29 -
 .../src/com/cloud/simulator/dao/MockVMDaoImpl.java |   92 -
 .../src/com/cloud/simulator/dao/MockVolumeDao.java |   30 -
 .../com/cloud/simulator/dao/MockVolumeDaoImpl.java |  101 -
 agent/src/com/cloud/agent/AgentShell.java          |    2 +
 .../com/cloud/agent/api/BackupSnapshotCommand.java |   18 +-
 .../CreatePrivateTemplateFromSnapshotCommand.java  |    7 +-
 .../CreatePrivateTemplateFromVolumeCommand.java    |   13 +-
 .../agent/api/CreateVolumeFromSnapshotCommand.java |    7 +-
 .../agent/api/DeleteSnapshotBackupCommand.java     |    8 +
 .../agent/api/DeleteTemplateFromS3Command.java     |  106 +
 .../agent/api/DownloadSnapshotFromS3Command.java   |   61 +
 ...oadTemplateFromS3ToSecondaryStorageCommand.java |   66 +
 api/src/com/cloud/agent/api/SnapshotCommand.java   |   16 +-
 .../cloud/agent/api/UpgradeSnapshotCommand.java    |    6 +-
 ...oadTemplateToS3FromSecondaryStorageCommand.java |  121 +
 .../api/downloadSnapshotFromSwiftCommand.java      |    2 +-
 .../api/storage/PrimaryStorageDownloadCommand.java |   16 +-
 .../cloud/agent/api/to/PortForwardingRuleTO.java   |    4 +-
 api/src/com/cloud/agent/api/to/S3TO.java           |  252 ++
 api/src/com/cloud/api/commands/AddS3Cmd.java       |  218 +
 api/src/com/cloud/api/commands/ListS3sCmd.java     |  112 +
 api/src/com/cloud/api/response/S3Response.java     |  210 +
 api/src/com/cloud/network/Network.java             |   11 +-
 api/src/com/cloud/network/NetworkService.java      |    2 +-
 api/src/com/cloud/offering/NetworkOffering.java    |    2 +
 api/src/com/cloud/resource/ResourceService.java    |    8 +
 api/src/com/cloud/storage/S3.java                  |   51 +
 .../org/apache/cloudstack/api/ApiConstants.java    |   13 +-
 .../apache/cloudstack/api/ResponseGenerator.java   |    5 +-
 .../command/user/address/AssociateIPAddrCmd.java   |    3 +-
 .../agent/api/test/BackupSnapshotAnswerTest.java   |    2 +-
 .../agent/api/test/BackupSnapshotCommandTest.java  |    6 +-
 .../cloud/agent/api/test/SnapshotCommandTest.java  |   96 +-
 .../com/cloud/bridge/io/S3CAStorBucketAdapter.java |   56 +-
 .../WEB-INF/classes/resources/messages.properties  |   15 +-
 .../classes/resources/messages_fr_FR.properties    |    2 -
 .../classes/resources/messages_ja.properties       |    2 -
 .../classes/resources/messages_pt_BR.properties    |    2 -
 .../classes/resources/messages_ru_RU.properties    |    2 -
 .../classes/resources/messages_zh_CN.properties    |    2 -
 client/tomcatconf/commands.properties.in           |    6 +-
 client/tomcatconf/db-enc.properties.in             |    3 -
 client/tomcatconf/db.properties.in                 |    3 -
 core/pom.xml                                       |    5 +
 .../cloud/agent/api/DirectNetworkUsageCommand.java |   23 +-
 .../network/resource/TrafficSentinelResource.java  |   39 +-
 core/src/com/cloud/storage/S3VO.java               |  208 +
 core/src/com/cloud/storage/SnapshotVO.java         |   12 +
 core/src/com/cloud/storage/VMTemplateS3VO.java     |  203 +
 .../resource/NfsSecondaryStorageResource.java      |  435 ++-
 .../src/com/xensource/xenapi/APIVersion.java       |   32 +-
 .../src/com/xensource/xenapi/Auth.java             |   14 +-
 .../src/com/xensource/xenapi/Blob.java             |   67 +-
 .../src/com/xensource/xenapi/Bond.java             |  199 +-
 .../src/com/xensource/xenapi/Connection.java       |   36 +-
 .../src/com/xensource/xenapi/Console.java          |   19 +-
 .../src/com/xensource/xenapi/Crashdump.java        |   19 +-
 .../src/com/xensource/xenapi/DRTask.java           |  303 ++
 .../src/com/xensource/xenapi/DataSource.java       |   21 +-
 .../src/com/xensource/xenapi/Event.java            |   64 +-
 .../src/com/xensource/xenapi/GPUGroup.java         |  445 ++
 .../src/com/xensource/xenapi/Host.java             |  186 +-
 .../src/com/xensource/xenapi/HostCpu.java          |   19 +-
 .../src/com/xensource/xenapi/HostCrashdump.java    |   19 +-
 .../src/com/xensource/xenapi/HostMetrics.java      |   19 +-
 .../src/com/xensource/xenapi/HostPatch.java        |   21 +-
 .../src/com/xensource/xenapi/Marshalling.java      |    8 +-
 .../src/com/xensource/xenapi/Message.java          |   37 +-
 .../src/com/xensource/xenapi/Network.java          |   88 +-
 .../src/com/xensource/xenapi/PBD.java              |   19 +-
 .../src/com/xensource/xenapi/PCI.java              |  418 ++
 .../src/com/xensource/xenapi/PGPU.java             |  349 ++
 .../src/com/xensource/xenapi/PIF.java              |  271 +-
 .../src/com/xensource/xenapi/PIFMetrics.java       |   19 +-
 .../src/com/xensource/xenapi/Pool.java             |   64 +-
 .../src/com/xensource/xenapi/PoolPatch.java        |   91 +-
 .../src/com/xensource/xenapi/Role.java             |   19 +-
 .../XenServerJava/src/com/xensource/xenapi/SM.java |   21 +-
 .../XenServerJava/src/com/xensource/xenapi/SR.java |  230 +-
 .../src/com/xensource/xenapi/Secret.java           |   91 +-
 .../src/com/xensource/xenapi/Session.java          |   19 +-
 .../src/com/xensource/xenapi/Subject.java          |   19 +-
 .../src/com/xensource/xenapi/Task.java             |   23 +-
 .../src/com/xensource/xenapi/Tunnel.java           |   19 +-
 .../src/com/xensource/xenapi/Types.java            | 2393 +++++++++-
 .../src/com/xensource/xenapi/User.java             |   19 +-
 .../src/com/xensource/xenapi/VBD.java              |   19 +-
 .../src/com/xensource/xenapi/VBDMetrics.java       |   19 +-
 .../src/com/xensource/xenapi/VDI.java              |  343 ++-
 .../src/com/xensource/xenapi/VGPU.java             |  446 ++
 .../src/com/xensource/xenapi/VIF.java              |  358 ++-
 .../src/com/xensource/xenapi/VIFMetrics.java       |   19 +-
 .../src/com/xensource/xenapi/VLAN.java             |   19 +-
 .../XenServerJava/src/com/xensource/xenapi/VM.java |  665 +++-
 .../src/com/xensource/xenapi/VMAppliance.java      |  655 +++
 .../src/com/xensource/xenapi/VMGuestMetrics.java   |   19 +-
 .../src/com/xensource/xenapi/VMMetrics.java        |   19 +-
 .../src/com/xensource/xenapi/VMPP.java             |   51 +-
 .../src/com/xensource/xenapi/VTPM.java             |   19 +-
 .../src/com/xensource/xenapi/XenAPIObject.java     |    8 +-
 docs/README.txt                                    |    2 +-
 docs/en-US/API_Developers_Guide.ent                |   21 -
 docs/en-US/API_Developers_Guide.xml                |   56 -
 docs/en-US/Book_Info_Release_Notes_4-0.xml         |   39 +
 docs/en-US/Book_Info_Release_Notes_4.0.xml         |   39 -
 docs/en-US/Developers_Guide.ent                    |   21 +
 docs/en-US/Developers_Guide.xml                    |   58 +
 docs/en-US/Release_Notes.xml                       |    2 +-
 docs/en-US/about-password-encryption.xml           |    4 +-
 docs/en-US/added-API-commands-4-0.xml              |  164 +
 docs/en-US/added-API-commands-4.0.xml              |  164 -
 docs/en-US/building-devcloud.xml                   |   32 +
 docs/en-US/building-prerequisites.xml              |   66 +
 docs/en-US/building-with-maven-deploy.xml          |   39 +
 docs/en-US/building-with-maven-steps.xml           |   33 +
 docs/en-US/building-with-maven.xml                 |   32 +
 docs/en-US/change-database-config.xml              |    4 +-
 docs/en-US/change-database-password.xml            |   76 +
 docs/en-US/changed-apicommands-4-0.xml             |  268 ++
 docs/en-US/changed-apicommands-4.0.xml             |  268 --
 docs/en-US/devcloud-usage-mode.xml                 |   60 +
 docs/en-US/devcloud.xml                            |   38 +
 docs/en-US/developer-introduction.xml              |    2 +-
 docs/en-US/images/DevCloud-hostonly.png            |  Bin 0 -> 39311 bytes
 docs/en-US/images/DevCloud.png                     |  Bin 0 -> 33529 bytes
 .../lb-policy-pfwd-rule-usage-record-format.xml    |   40 +
 ...cy-port-forwarding-rule-usage-record-format.xml |   40 -
 docs/en-US/manage-cloud.xml                        |    3 +-
 .../en-US/management-server-install-nfs-shares.xml |    8 +-
 docs/en-US/management-server-install-systemvm.xml  |    3 +-
 docs/en-US/marvin.xml                              |   32 +
 docs/en-US/nfs-shares-on-management-server.xml     |    7 +-
 docs/en-US/ongoing-config-of-ext-firewalls-lb.xml  |   34 +
 ...guration-of-external-firewalls-loadbalancer.xml |   34 -
 docs/en-US/primary-storage.xml                     |    3 +-
 docs/en-US/provisioning-steps.xml.orig             |   42 -
 docs/en-US/secondary-storage.xml                   |    3 +-
 docs/en-US/source-build.xml                        |   49 +
 docs/en-US/tools.xml                               |   29 +
 ...ooting-dataloss-on-exported-primary-storage.xml |   45 -
 ...ing-maintenance-mode-not-working-on-vCenter.xml |   43 -
 docs/en-US/troubleshooting.xml                     |    6 +-
 .../troublesht-dataloss-on-exp-primary-storage.xml |   45 +
 .../troublesht-mtn-mode-not-working-on-vCenter.xml |   43 +
 docs/en-US/usage-record-format.xml                 |    2 +-
 docs/en-US/whats-new.xml                           |    4 +-
 docs/publican-devguide.cfg                         |    2 +-
 .../debian/config/etc/init.d/cloud-early-config    |    6 +
 patches/systemvm/debian/config/etc/sysctl.conf     |    2 +-
 .../debian/config/opt/cloud/bin/ipassoc.sh         |    4 +-
 .../debian/config/opt/cloud/bin/passwd_server      |    2 +-
 patches/systemvm/debian/config/root/edithosts.sh   |    2 +-
 .../config/root/redundant_router/disable_pubip.sh  |    2 -
 .../root/redundant_router/enable_pubip.sh.templ    |    4 +-
 .../config/root/redundant_router/master.sh.templ   |    6 +
 .../config/root/redundant_router/services.sh       |   68 +
 .../systemvm/debian/config/root/savepassword.sh    |    2 +-
 .../user-concentrated-pod/build.xml                |  128 -
 .../deployment-planners/user-dispersing/build.xml  |  128 -
 plugins/file-systems/netapp/build.xml              |  129 -
 plugins/host-allocators/random/build.xml           |  128 -
 plugins/hypervisors/kvm/build.xml                  |  137 -
 .../kvm/resource/LibvirtComputingResource.java     |  148 +-
 .../kvm/storage/KVMStoragePoolManager.java         |   87 +-
 .../kvm/storage/LibvirtStorageAdaptor.java         |   46 +-
 .../hypervisor/kvm/storage/StorageAdaptor.java     |    4 -
 plugins/hypervisors/ovm/build.xml                  |  136 -
 plugins/hypervisors/simulator/pom.xml              |   45 +
 .../simulator/resources/components-simulator.xml   |   98 +
 .../src/com/cloud/agent/MetricsCollector.java      |  107 +
 .../src/com/cloud/agent/MockVmMetrics.java         |  204 +
 .../simulator/src/com/cloud/agent/MultiCaster.java |  152 +
 .../src/com/cloud/agent/MultiCasterListener.java   |   22 +
 .../src/com/cloud/agent/SimulatorCmd.java          |   37 +
 .../src/com/cloud/agent/SimulatorMigrateVmCmd.java |   83 +
 .../com/cloud/agent/manager/MockAgentManager.java  |   64 +
 .../cloud/agent/manager/MockAgentManagerImpl.java  |  459 ++
 .../cloud/agent/manager/MockStorageManager.java    |   91 +
 .../agent/manager/MockStorageManagerImpl.java      | 1298 ++++++
 .../src/com/cloud/agent/manager/MockVmManager.java |   84 +
 .../com/cloud/agent/manager/MockVmManagerImpl.java |  642 +++
 .../src/com/cloud/agent/manager/SimulatorInfo.java |   59 +
 .../com/cloud/agent/manager/SimulatorManager.java  |   65 +
 .../cloud/agent/manager/SimulatorManagerImpl.java  |  334 ++
 .../com/cloud/api/commands/ConfigureSimulator.java |   82 +
 .../configuration/SimulatorComponentLibrary.java   |   50 +
 .../src/com/cloud/resource/AgentResourceBase.java  |  284 ++
 .../com/cloud/resource/AgentRoutingResource.java   |  363 ++
 .../com/cloud/resource/AgentStorageResource.java   |  117 +
 .../com/cloud/resource/SimulatorDiscoverer.java    |  336 ++
 .../resource/SimulatorSecondaryDiscoverer.java     |  151 +
 .../server/ManagementServerSimulatorImpl.java      |   32 +
 .../com/cloud/simulator/MockConfigurationVO.java   |  120 +
 .../src/com/cloud/simulator/MockHost.java          |   62 +
 .../src/com/cloud/simulator/MockHostVO.java        |  276 ++
 .../src/com/cloud/simulator/MockSecStorageVO.java  |   76 +
 .../com/cloud/simulator/MockSecurityRulesVO.java   |  104 +
 .../src/com/cloud/simulator/MockStoragePoolVO.java |  102 +
 .../src/com/cloud/simulator/MockVMVO.java          |  140 +
 .../simulator/src/com/cloud/simulator/MockVm.java  |   47 +
 .../src/com/cloud/simulator/MockVolumeVO.java      |  118 +
 .../src/com/cloud/simulator/SimulatorGuru.java     |   59 +
 .../cloud/simulator/SimulatorRuntimeException.java |   41 +
 .../cloud/simulator/dao/MockConfigurationDao.java  |   27 +
 .../simulator/dao/MockConfigurationDaoImpl.java    |  142 +
 .../src/com/cloud/simulator/dao/MockHostDao.java   |   27 +
 .../com/cloud/simulator/dao/MockHostDaoImpl.java   |   55 +
 .../com/cloud/simulator/dao/MockSecStorageDao.java |   24 +
 .../cloud/simulator/dao/MockSecStorageDaoImpl.java |   42 +
 .../cloud/simulator/dao/MockSecurityRulesDao.java  |   27 +
 .../simulator/dao/MockSecurityRulesDaoImpl.java    |   60 +
 .../cloud/simulator/dao/MockStoragePoolDao.java    |   25 +
 .../simulator/dao/MockStoragePoolDaoImpl.java      |   57 +
 .../src/com/cloud/simulator/dao/MockVMDao.java     |   29 +
 .../src/com/cloud/simulator/dao/MockVMDaoImpl.java |   92 +
 .../src/com/cloud/simulator/dao/MockVolumeDao.java |   30 +
 .../com/cloud/simulator/dao/MockVolumeDaoImpl.java |  101 +
 plugins/hypervisors/vmware/build.xml               |  135 -
 plugins/hypervisors/xen/build.xml                  |  135 -
 .../xen/discoverer/XcpServerDiscoverer.java        |   27 +-
 .../hypervisor/xen/resource/CitrixHelper.java      |  143 +
 .../xen/resource/CitrixResourceBase.java           |  108 +-
 .../xen/resource/XenServer56Resource.java          |    5 -
 .../xen/resource/XenServer610Resource.java         |   58 +
 plugins/network-elements/dns-notifier/pom.xml      |   50 +
 .../dns-notifier/resources/components-example.xml  |  220 +
 .../cloudstack/network/element/DnsNotifier.java    |  143 +
 .../elastic-loadbalancer/build.xml                 |  129 -
 plugins/network-elements/f5/build.xml              |  129 -
 .../element/F5ExternalLoadBalancerElement.java     |    2 +-
 plugins/network-elements/juniper-srx/build.xml     |  129 -
 .../element/JuniperSRXExternalFirewallElement.java |    3 +-
 .../network-elements/midokura-midonet/build.xml    |   17 -
 plugins/network-elements/netscaler/build.xml       |  129 -
 .../cloud/network/element/NetscalerElement.java    |    3 +-
 plugins/network-elements/nicira-nvp/build.xml      |  129 -
 .../network/guru/NiciraNvpGuestNetworkGuru.java    |    8 +-
 .../cloud/network/nicira/DestinationNatRule.java   |   24 -
 .../src/com/cloud/network/nicira/Match.java        |  122 +-
 .../src/com/cloud/network/nicira/NatRule.java      |  169 +
 .../src/com/cloud/network/nicira/NiciraNvpApi.java |  146 +-
 .../com/cloud/network/nicira/SourceNatRule.java    |   27 -
 .../cloud/network/resource/NiciraNvpResource.java  |  350 +-
 .../guru/NiciraNvpGuestNetworkGuruTest.java        |  343 ++
 .../test/com/cloud/network/nicira/NatRuleTest.java |   47 +
 .../com/cloud/network/nicira/NiciraNvpApiTest.java |  306 ++
 .../network/resource/NiciraNvpResourceTest.java    |  830 ++++
 plugins/network-elements/ovs/build.xml             |  129 -
 .../src/com/cloud/network/element/OvsElement.java  |   13 +-
 plugins/pom.xml                                    |   13 +
 plugins/storage-allocators/random/build.xml        |  128 -
 plugins/user-authenticators/ldap/build.xml         |  128 -
 plugins/user-authenticators/md5/build.xml          |  128 -
 plugins/user-authenticators/plain-text/build.xml   |  128 -
 pom.xml                                            |    9 +-
 scripts/storage/qcow2/create_private_template.sh   |    8 +-
 scripts/storage/qcow2/createtmplt.sh               |    6 +
 scripts/storage/qcow2/createvolume.sh              |    8 +-
 scripts/vm/hypervisor/xenserver/s3xen              |  297 ++
 scripts/vm/hypervisor/xenserver/xenserver56/patch  |    2 +
 .../vm/hypervisor/xenserver/xenserver56fp1/patch   |    2 +
 scripts/vm/hypervisor/xenserver/xenserver60/patch  |    2 +
 scripts/vm/network/security_group.py               |    8 +-
 server/pom.xml                                     |    6 +-
 server/src/com/cloud/api/ApiDBUtils.java           |    8 +
 server/src/com/cloud/api/ApiDispatcher.java        |   16 +-
 server/src/com/cloud/api/ApiResponseHelper.java    |   99 +-
 server/src/com/cloud/api/ApiServer.java            |   23 +-
 server/src/com/cloud/api/ApiServlet.java           |    5 +-
 .../cloud/api/commands/AddTrafficMonitorCmd.java   |   14 +
 server/src/com/cloud/api/doc/ApiXmlDocWriter.java  |    5 +
 .../cloud/cluster/ClusterServiceServletImpl.java   |   20 +-
 server/src/com/cloud/configuration/Config.java     |    9 +-
 .../configuration/ConfigurationManagerImpl.java    |  112 +-
 .../configuration/DefaultComponentLibrary.java     |    6 +
 server/src/com/cloud/maint/UpgradeManagerImpl.java |    2 +
 .../src/com/cloud/network/NetworkManagerImpl.java  |  350 +-
 .../com/cloud/network/NetworkUsageManagerImpl.java |   28 +-
 server/src/com/cloud/network/dao/NetworkDao.java   |    2 +
 .../src/com/cloud/network/dao/NetworkDaoImpl.java  |   27 +-
 .../network/element/VpcVirtualRouterElement.java   |    2 +-
 .../com/cloud/network/guru/GuestNetworkGuru.java   |    8 +-
 .../router/VirtualNetworkApplianceManagerImpl.java |   71 +-
 .../com/cloud/network/rules/RulesManagerImpl.java  |   21 +-
 .../src/com/cloud/offerings/NetworkOfferingVO.java |   18 +-
 .../com/cloud/resource/ResourceManagerImpl.java    |   17 +
 .../com/cloud/server/ConfigurationServerImpl.java  |  134 +-
 .../src/com/cloud/storage/StorageManagerImpl.java  |   21 +-
 server/src/com/cloud/storage/dao/S3Dao.java        |   29 +
 server/src/com/cloud/storage/dao/S3DaoImpl.java    |   47 +
 .../src/com/cloud/storage/dao/VMTemplateDao.java   |    2 +
 .../com/cloud/storage/dao/VMTemplateDaoImpl.java   |   15 +-
 .../src/com/cloud/storage/dao/VMTemplateS3Dao.java |   36 +
 .../com/cloud/storage/dao/VMTemplateS3DaoImpl.java |  101 +
 server/src/com/cloud/storage/s3/S3Manager.java     |   63 +
 server/src/com/cloud/storage/s3/S3ManagerImpl.java |  669 +++
 .../cloud/storage/snapshot/SnapshotManager.java    |    2 +
 .../storage/snapshot/SnapshotManagerImpl.java      |  110 +-
 server/src/com/cloud/template/S3SyncTask.java      |   94 +
 .../com/cloud/template/TemplateManagerImpl.java    |   90 +-
 .../src/com/cloud/upgrade/dao/Upgrade40to41.java   |   39 +
 server/src/com/cloud/vm/UserVmManagerImpl.java     |  132 +-
 server/src/com/cloud/vm/dao/NicDao.java            |    2 +
 server/src/com/cloud/vm/dao/NicDaoImpl.java        |    8 +
 .../com/cloud/network/MockNetworkManagerImpl.java  |   42 +-
 .../test/com/cloud/vpc/MockNetworkManagerImpl.java |   35 +-
 .../test/com/cloud/vpc/dao/MockNetworkDaoImpl.java |    9 +
 setup/db/create-schema-premium.sql                 |    1 +
 setup/db/create-schema-simulator.sql               |    1 +
 setup/db/create-schema.sql                         |   35 +
 setup/db/db/schema-302to40.sql                     |    1 +
 setup/db/db/schema-40to410.sql                     |    1 -
 test/integration/component/test_snapshots.py       |   24 +-
 test/integration/component/test_templates.py       |   37 +
 test/integration/smoke/test_iso.py                 |   69 +-
 test/integration/smoke/test_network.py             |   14 +-
 test/integration/smoke/test_routers.py             |    4 +-
 test/integration/smoke/test_templates.py           |   58 +-
 test/integration/smoke/test_vm_life_cycle.py       |   51 +-
 test/integration/smoke/test_volumes.py             |    8 +-
 tools/apidoc/gen_toc.py                            |    1 +
 tools/cli/cloudmonkey/cloudmonkey.py               |   84 +-
 tools/cli/cloudmonkey/common.py                    |    1 +
 tools/cli/setup.py                                 |    4 +-
 tools/devcloud/README.md                           |  102 +
 tools/devcloud/basebuild/Vagrantfile               |   51 -
 .../basebuild/puppet-devcloudinitial/Modulefile    |    8 -
 .../basebuild/puppet-devcloudinitial/files/grub    |   52 -
 .../puppet-devcloudinitial/files/interfaces        |   33 -
 .../puppet-devcloudinitial/files/network.conf      |    1 -
 .../puppet-devcloudinitial/files/xen-defaults      |   18 -
 .../basebuild/puppet-devcloudinitial/files/xend    |  188 -
 .../basebuild/puppet-devcloudinitial/init.pp       |   18 -
 .../puppet-devcloudinitial/manifests/init.pp       |  106 -
 tools/devcloud/build_vagrant_basebox.sh            |   99 -
 tools/devcloud/devcloud.cfg                        |   30 -
 tools/devcloud/devcloud.sql                        |    8 +
 tools/devcloud/devcloudbox/Vagrantfile             |   51 -
 .../devcloudbox/puppet-devcloud/Modulefile         |    8 -
 .../puppet-devcloud/files/builddevcloud.sh         |   28 -
 .../puppet-devcloud/files/configebtables.sh        |   21 -
 .../puppet-devcloud/files/configlocalstorage.sh    |   25 -
 .../devcloudbox/puppet-devcloud/files/configvnc.sh |   25 -
 .../devcloudbox/puppet-devcloud/files/exports      |   18 -
 .../puppet-devcloud/files/installmaven.sh          |   22 -
 .../puppet-devcloud/files/iptables.save            |   30 -
 .../puppet-devcloud/files/startdevcloud.sh         |   23 -
 .../puppet-devcloud/files/updatecode.sh            |   27 -
 tools/devcloud/devcloudbox/puppet-devcloud/init.pp |   18 -
 .../devcloudbox/puppet-devcloud/manifests/init.pp  |  348 --
 tools/devcloud/devcloudsetup.sh                    |  151 -
 tools/devcloud/src/.rvmrc                          |   24 +
 tools/devcloud/src/Gemfile                         |   19 +
 tools/devcloud/src/Vagrantfile                     |   58 +
 tools/devcloud/src/boxit.sh                        |   21 +
 tools/devcloud/src/deps/boxer.sh                   |  184 +
 tools/devcloud/src/deps/boxes/basebox-build/.rvmrc |   24 +
 .../devcloud/src/deps/boxes/basebox-build/Gemfile  |   20 +
 .../src/deps/boxes/basebox-build/Vagrantfile       |   17 +
 .../src/deps/boxes/basebox-build/definition.rb     |   59 +
 .../src/deps/boxes/basebox-build/postinstall.sh    |   42 +
 .../src/deps/boxes/basebox-build/preseed.cfg       |  122 +
 tools/devcloud/src/deps/boxes/xenbox-build/.rvmrc  |   24 +
 tools/devcloud/src/deps/boxes/xenbox-build/Gemfile |   19 +
 .../src/deps/boxes/xenbox-build/Vagrantfile        |   52 +
 .../boxes/xenbox-build/puppet/manifests/site.pp    |   16 +
 .../puppet/manifests/vagrant-devcloudinitial.pp    |   18 +
 .../puppet/modules/devcloudinitial/Modulefile      |    8 +
 .../puppet/modules/devcloudinitial/files/grub      |   52 +
 .../modules/devcloudinitial/files/interfaces       |   45 +
 .../modules/devcloudinitial/files/iptables.save    |   30 +
 .../modules/devcloudinitial/files/xen-defaults     |   18 +
 .../puppet/modules/devcloudinitial/files/xend      |  188 +
 .../modules/devcloudinitial/manifests/init.pp      |  119 +
 .../src/puppet/manifests/vagrant-devcloud.pp       |   18 +
 .../src/puppet/modules/devcloud/Modulefile         |    8 +
 .../src/puppet/modules/devcloud/files/compare.sh   |   22 +
 .../modules/devcloud/files/configebtables.sh       |   21 +
 .../modules/devcloud/files/configlocalstorage.sh   |   25 +
 .../src/puppet/modules/devcloud/files/configvnc.sh |   25 +
 .../src/puppet/modules/devcloud/files/exports      |   19 +
 .../puppet/modules/devcloud/files/installmaven.sh  |   22 +
 .../puppet/modules/devcloud/files/startdevcloud.sh |   23 +
 .../puppet/modules/devcloud/files/updatecode.sh    |   27 +
 .../puppet/modules/devcloud/lib/facter/xeninfo.rb  |   22 +
 .../devcloud/manifests/functions/httpdownload.pp   |   37 +
 .../src/puppet/modules/devcloud/manifests/init.pp  |  255 ++
 .../puppet/modules/devcloud/manifests/params.pp    |   78 +
 .../devcloud/templates/buildcloudstack.sh.erb      |   28 +
 .../devcloud/templates/startcloudstack.sh.erb      |   26 +
 tools/devcloud/src/waitforxe.sh                    |   39 +
 tools/devcloud/veewee/definition.rb                |   56 -
 tools/devcloud/veewee/postinstall.sh               |   43 -
 tools/devcloud/veewee/preseed.cfg                  |  122 -
 tools/marvin/marvin/TestCaseExecuteEngine.py       |    4 +-
 tools/marvin/marvin/cloudstackConnection.py        |    2 +-
 tools/marvin/marvin/cloudstackTestCase.py          |    2 +-
 tools/marvin/marvin/cloudstackTestClient.py        |   25 +-
 tools/marvin/marvin/deployDataCenter.py            |   34 +-
 tools/marvin/marvin/integration/lib/base.py        |  286 ++-
 tools/marvin/marvin/integration/lib/common.py      |   62 +-
 tools/marvin/marvin/integration/lib/utils.py       |    7 +-
 tools/marvin/marvin/marvinPlugin.py                |    4 +-
 tools/marvin/marvin/remoteSSHClient.py             |    9 +-
 tools/marvin/marvin/setup.py                       |    8 +-
 tools/marvin/setup.py                              |    4 -
 tools/whisker/descriptor.xml                       |   43 +-
 ui/css/cloudstack3.css                             |  108 +-
 ui/dictionary.jsp                                  |   13 +-
 ui/images/bg-what-is-cloudplatform.png             |  Bin 32250 -> 0 bytes
 ui/images/citrix-logo-darkbg.png                   |  Bin 2799 -> 0 bytes
 ui/images/logo-cloudplatform.png                   |  Bin 1726 -> 0 bytes
 ui/images/logo-login.png                           |  Bin 8923 -> 0 bytes
 ui/index.jsp                                       |    4 +
 ui/scripts/cloudStack.js                           |   55 +-
 ui/scripts/configuration.js                        |   37 +-
 ui/scripts/docs.js                                 |  148 +
 ui/scripts/installWizard.js                        |    7 -
 ui/scripts/instances.js                            |   35 +
 ui/scripts/network.js                              |  175 +-
 ui/scripts/projects.js                             |    4 +-
 ui/scripts/sharedFunctions.js                      |    3 +-
 ui/scripts/system.js                               |  254 +-
 ui/scripts/templates.js                            |   11 +-
 ui/scripts/ui-custom/installWizard.js              |   61 +-
 ui/scripts/ui/widgets/detailView.js                |    2 +
 ui/scripts/zoneWizard.js                           |   73 +-
 utils/conf/db.properties                           |    6 +-
 utils/pom.xml                                      |   13 +-
 utils/src/com/cloud/utils/DateUtil.java            |    4 +
 utils/src/com/cloud/utils/S3Utils.java             |  495 ++
 utils/src/com/cloud/utils/StringUtils.java         |   27 +-
 utils/src/com/cloud/utils/db/GlobalLock.java       |   40 +
 utils/src/com/cloud/utils/db/Transaction.java      |    3 -
 utils/test/com/cloud/utils/StringUtilsTest.java    |  106 +
 483 files changed, 29766 insertions(+), 15764 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/296b49c2/api/src/com/cloud/agent/api/BackupSnapshotCommand.java
----------------------------------------------------------------------
diff --cc api/src/com/cloud/agent/api/BackupSnapshotCommand.java
index f6c0233,7ea7835..52d9d38
--- a/api/src/com/cloud/agent/api/BackupSnapshotCommand.java
+++ b/api/src/com/cloud/agent/api/BackupSnapshotCommand.java
@@@ -44,12 -46,11 +46,11 @@@ public class BackupSnapshotCommand exte
       * @param snapshotUuid             The UUID of the snapshot which is going to be backed up
       * @param prevSnapshotUuid         The UUID of the previous snapshot for this volume. This will be destroyed on the primary storage.
       * @param prevBackupUuid           This is the UUID of the vhd file which was last backed up on secondary storage.
 -     * @param firstBackupUuid          This is the backup of the first ever snapshot taken by the volume.                                 
 +     * @param firstBackupUuid          This is the backup of the first ever snapshot taken by the volume.
       * @param isFirstSnapshotOfRootVolume true if this is the first snapshot of a root volume. Set the parent of the backup to null.
 -     * @param isVolumeInactive         True if the volume belongs to a VM that is not running or is detached. 
 +     * @param isVolumeInactive         True if the volume belongs to a VM that is not running or is detached.
       */
-     public BackupSnapshotCommand(String primaryStoragePoolNameLabel,
-                                  String secondaryStoragePoolURL,
+     public BackupSnapshotCommand(String secondaryStoragePoolURL,
                                   Long   dcId,
                                   Long   accountId,
                                   Long   volumeId,
@@@ -62,9 -63,9 +63,9 @@@
                                   String prevBackupUuid,
                                   boolean isVolumeInactive,
                                   String vmName,
 -                                 int wait) 
 +                                 int wait)
      {
-         super(primaryStoragePoolNameLabel, secondaryStoragePoolURL, snapshotUuid, snapshotName, dcId, accountId, volumeId);
+         super(pool, secondaryStoragePoolURL, snapshotUuid, snapshotName, dcId, accountId, volumeId);
          this.snapshotId = snapshotId;
          this.prevSnapshotUuid = prevSnapshotUuid;
          this.prevBackupUuid = prevBackupUuid;
@@@ -86,9 -86,9 +86,9 @@@
      public boolean isVolumeInactive() {
          return isVolumeInactive;
      }
 -    
 +
      public String getVmName() {
-     	return vmName;
+         return vmName;
      }
  
      public SwiftTO getSwift() {

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/296b49c2/api/src/com/cloud/agent/api/CreatePrivateTemplateFromSnapshotCommand.java
----------------------------------------------------------------------
diff --cc api/src/com/cloud/agent/api/CreatePrivateTemplateFromSnapshotCommand.java
index 504198c,0140a4e..9e2680e
--- a/api/src/com/cloud/agent/api/CreatePrivateTemplateFromSnapshotCommand.java
+++ b/api/src/com/cloud/agent/api/CreatePrivateTemplateFromSnapshotCommand.java
@@@ -16,8 -16,10 +16,10 @@@
  // under the License.
  package com.cloud.agent.api;
  
+ import com.cloud.storage.StoragePool;
+ 
  /**
 - * This currently assumes that both primary and secondary storage are mounted on the XenServer.  
 + * This currently assumes that both primary and secondary storage are mounted on the XenServer.
   */
  public class CreatePrivateTemplateFromSnapshotCommand extends SnapshotCommand {
      private String origTemplateInstallPath;
@@@ -38,9 -40,10 +40,10 @@@
       *                                 In the code, it is present as: In the vmops.host_details table, there is a field mount.parent. This is the value of that field
       *                                 If you have better ideas on how to get it, you are welcome.
       *                                 It may not be the UUID of the base copy of the snapshot, if no data was written since last snapshot.
 -     * @param origTemplateInstallPath  The install path of the original template VHD on the secondary                                 
 +     * @param origTemplateInstallPath  The install path of the original template VHD on the secondary
       */
-     public CreatePrivateTemplateFromSnapshotCommand(String primaryStoragePoolNameLabel,
+ 
+     public CreatePrivateTemplateFromSnapshotCommand(StoragePool pool,
                                                      String secondaryStoragePoolURL,
                                                      Long   dcId,
                                                      Long   accountId,
@@@ -50,9 -53,9 +53,9 @@@
                                                      String origTemplateInstallPath,
                                                      Long   newTemplateId,
                                                      String templateName,
 -                                                    int wait) 
 +                                                    int wait)
      {
-         super(primaryStoragePoolNameLabel, secondaryStoragePoolURL, backedUpSnapshotUuid, backedUpSnapshotName, dcId, accountId, volumeId);
+         super(pool, secondaryStoragePoolURL, backedUpSnapshotUuid, backedUpSnapshotName, dcId, accountId, volumeId);
          this.origTemplateInstallPath = origTemplateInstallPath;
          this.newTemplateId = newTemplateId;
          this.templateName = templateName;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/296b49c2/api/src/com/cloud/agent/api/CreateVolumeFromSnapshotCommand.java
----------------------------------------------------------------------
diff --cc api/src/com/cloud/agent/api/CreateVolumeFromSnapshotCommand.java
index 955c81a,9bc9b36..a19d344
--- a/api/src/com/cloud/agent/api/CreateVolumeFromSnapshotCommand.java
+++ b/api/src/com/cloud/agent/api/CreateVolumeFromSnapshotCommand.java
@@@ -16,15 -16,17 +16,17 @@@
  // under the License.
  package com.cloud.agent.api;
  
+ import com.cloud.storage.StoragePool;
+ 
  /**
 - * This currently assumes that both primary and secondary storage are mounted on the XenServer.  
 + * This currently assumes that both primary and secondary storage are mounted on the XenServer.
   */
  public class CreateVolumeFromSnapshotCommand extends SnapshotCommand {
 -    
 +
      protected CreateVolumeFromSnapshotCommand() {
 -        
 +
      }
 -    
 +
      /**
       * Given the UUID of a backed up snapshot VHD file on the secondary storage, the execute of this command does
       * 1) Get the parent chain of this VHD all the way up to the root, say VHDList
@@@ -37,9 -39,10 +39,10 @@@
       *                                 In the code, it is present as: In the vmops.host_details table, there is a field mount.parent. This is the value of that field
       *                                 If you have better ideas on how to get it, you are welcome.
       *                                 It may not be the UUID of the base copy of the snapshot, if no data was written since last snapshot.
 -     * @param templatePath             The install path of the template VHD on the secondary, if this a root volume                                 
 +     * @param templatePath             The install path of the template VHD on the secondary, if this a root volume
       */
-     public CreateVolumeFromSnapshotCommand(String primaryStoragePoolNameLabel,
+ 
+     public CreateVolumeFromSnapshotCommand(StoragePool pool,
                                             String secondaryStoragePoolURL,
                                             Long   dcId,
                                             Long   accountId,

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/296b49c2/api/src/com/cloud/agent/api/DeleteSnapshotBackupCommand.java
----------------------------------------------------------------------
diff --cc api/src/com/cloud/agent/api/DeleteSnapshotBackupCommand.java
index 6ea1945,5e55570..6114148
--- a/api/src/com/cloud/agent/api/DeleteSnapshotBackupCommand.java
+++ b/api/src/com/cloud/agent/api/DeleteSnapshotBackupCommand.java
@@@ -44,9 -46,13 +46,13 @@@ public class DeleteSnapshotBackupComman
          this.swift = swift;
      }
  
+     public S3TO getS3() {
+         return s3;
+     }
+ 
      protected DeleteSnapshotBackupCommand() {
      }
 -    
 +
      /**
       * Given 2 VHD files on the secondary storage which are linked in a parent chain as follows:
       * backupUUID = parent(childUUID)
@@@ -57,22 -63,23 +63,23 @@@
       * 1) it coalesces backupUuid into its parent.
       * 2) It deletes the VHD file corresponding to backupUuid
       * 3) It sets the parent VHD of childUUID to that of previousBackupUuid
 -     * 
 +     *
       * It takes care of the cases when
       * 1) childUUID is null. - Step 3 is not done.
 -     * 2) previousBackupUUID is null 
 +     * 2) previousBackupUUID is null
       *       - Merge childUUID into its parent backupUUID
       *       - Set the UUID of the resultant VHD to childUUID
 -     *       - Essentially we are deleting the oldest VHD file and setting the current oldest VHD to childUUID                               
 -     *       
 -     * @param volumeName                  The name of the volume whose snapshot was taken (something like i-3-SV-ROOT) 
 -     * @param secondaryStoragePoolURL    This is what shows up in the UI when you click on Secondary storage. 
 +     *       - Essentially we are deleting the oldest VHD file and setting the current oldest VHD to childUUID
 +     *
 +     * @param volumeName                  The name of the volume whose snapshot was taken (something like i-3-SV-ROOT)
 +     * @param secondaryStoragePoolURL    This is what shows up in the UI when you click on Secondary storage.
       *                                    In the code, it is present as: In the vmops.host_details table, there is a field mount.parent. This is the value of that field
 -     *                                    If you have better ideas on how to get it, you are welcome. 
 -     * @param backupUUID                  The VHD which has to be deleted    
 -     * @param childUUID                   The child VHD file of the backup whose parent is reset to its grandparent.  
 +     *                                    If you have better ideas on how to get it, you are welcome.
 +     * @param backupUUID                  The VHD which has to be deleted
 +     * @param childUUID                   The child VHD file of the backup whose parent is reset to its grandparent.
       */
      public DeleteSnapshotBackupCommand(SwiftTO swift,
+                                        S3TO s3,
                                         String secondaryStoragePoolURL,
                                         Long   dcId,
                                         Long   accountId,
@@@ -81,6 -88,7 +88,7 @@@
      {
          super(null, secondaryStoragePoolURL, backupUUID, null, dcId, accountId, volumeId);
          setSwift(swift);
+         this.s3 = s3;
          setAll(all);
      }
 -}
 +}

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/296b49c2/api/src/com/cloud/agent/api/UpgradeSnapshotCommand.java
----------------------------------------------------------------------
diff --cc api/src/com/cloud/agent/api/UpgradeSnapshotCommand.java
index 1b3ff74,703aea0..f00f490
--- a/api/src/com/cloud/agent/api/UpgradeSnapshotCommand.java
+++ b/api/src/com/cloud/agent/api/UpgradeSnapshotCommand.java
@@@ -28,9 -30,9 +30,9 @@@ public class UpgradeSnapshotCommand ext
       * @param primaryStoragePoolNameLabel   The UUID of the primary storage Pool
       * @param secondaryStoragePoolURL  This is what shows up in the UI when you click on Secondary storage.
       * @param snapshotUuid             The UUID of the snapshot which is going to be upgraded
 -     * @param _version          version for this snapshot                                 
 +     * @param _version          version for this snapshot
       */
-     public UpgradeSnapshotCommand(String primaryStoragePoolNameLabel,
+     public UpgradeSnapshotCommand(StoragePool pool,
                                   String secondaryStoragePoolURL,
                                   Long   dcId,
                                   Long   accountId,

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/296b49c2/api/src/com/cloud/agent/api/downloadSnapshotFromSwiftCommand.java
----------------------------------------------------------------------
diff --cc api/src/com/cloud/agent/api/downloadSnapshotFromSwiftCommand.java
index 0937dad,6021762..a2ae611
--- a/api/src/com/cloud/agent/api/downloadSnapshotFromSwiftCommand.java
+++ b/api/src/com/cloud/agent/api/downloadSnapshotFromSwiftCommand.java
@@@ -29,12 -29,12 +29,12 @@@ public class downloadSnapshotFromSwiftC
      private String _parent;
  
      protected downloadSnapshotFromSwiftCommand() {
 -        
 +
      }
 -   
 +
      public downloadSnapshotFromSwiftCommand(SwiftTO swift, String secondaryStorageUrl, Long dcId, Long accountId, Long volumeId, String parent, String BackupUuid, int wait) {
  
-         super("", secondaryStorageUrl, BackupUuid, "", dcId, accountId, volumeId);
+         super(null, secondaryStorageUrl, BackupUuid, "", dcId, accountId, volumeId);
          setParent(parent);
          setSwift(swift);
          setWait(wait);

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/296b49c2/api/src/com/cloud/agent/api/storage/PrimaryStorageDownloadCommand.java
----------------------------------------------------------------------
diff --cc api/src/com/cloud/agent/api/storage/PrimaryStorageDownloadCommand.java
index 565b50d,f66d00e..b450041
--- a/api/src/com/cloud/agent/api/storage/PrimaryStorageDownloadCommand.java
+++ b/api/src/com/cloud/agent/api/storage/PrimaryStorageDownloadCommand.java
@@@ -26,20 -27,22 +27,23 @@@ public class PrimaryStorageDownloadComm
  	String localPath;
  	String poolUuid;
  	long poolId;
 -        StorageFilerTO primaryPool;
 -	
 +
++    StorageFilerTO primaryPool;
++
  	String secondaryStorageUrl;
  	String primaryStorageUrl;
  
      protected PrimaryStorageDownloadCommand() {
  	}
  
-     public PrimaryStorageDownloadCommand(String name, String url, ImageFormat format, long accountId, long poolId, String poolUuid, int wait) {
+     public PrimaryStorageDownloadCommand(String name, String url, ImageFormat format, long accountId, StoragePool pool, int wait) {
          super(name, url, format, accountId);
-         this.poolId = poolId;
-         this.poolUuid = poolUuid;
+         this.poolId = pool.getId();
+         this.poolUuid = pool.getUuid();
+         this.primaryPool = new StorageFilerTO(pool);
          setWait(wait);
      }
 -   
 +
      public String getPoolUuid() {
          return poolUuid;
      }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/296b49c2/api/src/com/cloud/agent/api/to/PortForwardingRuleTO.java
----------------------------------------------------------------------
diff --cc api/src/com/cloud/agent/api/to/PortForwardingRuleTO.java
index 9ef8d0a,19673a6..c23dce8
--- a/api/src/com/cloud/agent/api/to/PortForwardingRuleTO.java
+++ b/api/src/com/cloud/agent/api/to/PortForwardingRuleTO.java
@@@ -38,9 -38,9 +38,9 @@@ public class PortForwardingRuleTO exten
          this.dstIp = rule.getDestinationIpAddress().addr();
          this.dstPortRange = new int[] { rule.getDestinationPortStart(), rule.getDestinationPortEnd() };
      }
 -    
 +
-     protected PortForwardingRuleTO(long id, String srcIp, int srcPortStart, int srcPortEnd, String dstIp, int dstPortStart, int dstPortEnd, String protocol, boolean revoked, boolean brandNew) {
-         super(id, srcIp,null, protocol, srcPortStart, srcPortEnd, revoked, brandNew, FirewallRule.Purpose.PortForwarding, null,0,0);
+     public PortForwardingRuleTO(long id, String srcIp, int srcPortStart, int srcPortEnd, String dstIp, int dstPortStart, int dstPortEnd, String protocol, boolean revoked, boolean alreadyAdded) {
+         super(id, null, srcIp, protocol, srcPortStart, srcPortEnd, revoked, alreadyAdded, FirewallRule.Purpose.PortForwarding, null,0,0);
          this.dstIp = dstIp;
          this.dstPortRange = new int[] { dstPortStart, dstPortEnd };
      }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/296b49c2/api/src/com/cloud/api/commands/AddS3Cmd.java
----------------------------------------------------------------------
diff --cc api/src/com/cloud/api/commands/AddS3Cmd.java
index 0000000,e046ccc..8ef6c98
mode 000000,100644..100644
--- a/api/src/com/cloud/api/commands/AddS3Cmd.java
+++ b/api/src/com/cloud/api/commands/AddS3Cmd.java
@@@ -1,0 -1,218 +1,218 @@@
+ /*
+  * Licensed to the Apache Software Foundation (ASF) under one
+  * or more contributor license agreements.  See the NOTICE file
+  * distributed with this work for additional information
+  * regarding copyright ownership.  The ASF licenses this file
+  * to you under the Apache License, Version 2.0 (the
+  * "License"); you may not use this file except in compliance
+  * with the License.  You may obtain a copy of the License at
+  *
+  *    http://www.apache.org/licenses/LICENSE-2.0
+  *
+  * 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
+  * specific language governing permissions and limitations
+  * under the License.
+  */
+ package com.cloud.api.commands;
+ 
 -import static com.cloud.api.ApiConstants.S3_ACCESS_KEY;
 -import static com.cloud.api.ApiConstants.S3_CONNECTION_TIMEOUT;
 -import static com.cloud.api.ApiConstants.S3_END_POINT;
 -import static com.cloud.api.ApiConstants.S3_HTTPS_FLAG;
 -import static com.cloud.api.ApiConstants.S3_MAX_ERROR_RETRY;
 -import static com.cloud.api.ApiConstants.S3_SECRET_KEY;
 -import static com.cloud.api.ApiConstants.S3_SOCKET_TIMEOUT;
 -import static com.cloud.api.ApiConstants.S3_BUCKET_NAME;
 -import static com.cloud.api.BaseCmd.CommandType.INTEGER;
 -import static com.cloud.api.BaseCmd.CommandType.STRING;
 -import static com.cloud.api.BaseCmd.CommandType.BOOLEAN;
++import static org.apache.cloudstack.api.ApiConstants.S3_ACCESS_KEY;
++import static org.apache.cloudstack.api.ApiConstants.S3_CONNECTION_TIMEOUT;
++import static org.apache.cloudstack.api.ApiConstants.S3_END_POINT;
++import static org.apache.cloudstack.api.ApiConstants.S3_HTTPS_FLAG;
++import static org.apache.cloudstack.api.ApiConstants.S3_MAX_ERROR_RETRY;
++import static org.apache.cloudstack.api.ApiConstants.S3_SECRET_KEY;
++import static org.apache.cloudstack.api.ApiConstants.S3_SOCKET_TIMEOUT;
++import static org.apache.cloudstack.api.ApiConstants.S3_BUCKET_NAME;
++import static org.apache.cloudstack.api.BaseCmd.CommandType.INTEGER;
++import static org.apache.cloudstack.api.BaseCmd.CommandType.STRING;
++import static org.apache.cloudstack.api.BaseCmd.CommandType.BOOLEAN;
+ import static com.cloud.user.Account.ACCOUNT_ID_SYSTEM;
+ 
 -import com.cloud.api.BaseCmd;
 -import com.cloud.api.Implementation;
 -import com.cloud.api.Parameter;
 -import com.cloud.api.ServerApiException;
++import org.apache.cloudstack.api.BaseCmd;
++import org.apache.cloudstack.api.Implementation;
++import org.apache.cloudstack.api.Parameter;
++import org.apache.cloudstack.api.ServerApiException;
+ import com.cloud.api.response.S3Response;
+ import com.cloud.exception.ConcurrentOperationException;
+ import com.cloud.exception.DiscoveryException;
+ import com.cloud.exception.InsufficientCapacityException;
+ import com.cloud.exception.NetworkRuleConflictException;
+ import com.cloud.exception.ResourceAllocationException;
+ import com.cloud.exception.ResourceUnavailableException;
+ import com.cloud.storage.S3;
+ 
+ @Implementation(description = "Adds S3", responseObject = S3Response.class, since = "4.0.0")
+ public final class AddS3Cmd extends BaseCmd {
+ 
+     private static String COMMAND_NAME = "adds3response";
+ 
+     @Parameter(name = S3_ACCESS_KEY, type = STRING, required = true,
+             description = "S3 access key")
+     private String accessKey;
+ 
+     @Parameter(name = S3_SECRET_KEY, type = STRING, required = true,
+             description = "S3 secret key")
+     private String secretKey;
+ 
+     @Parameter(name = S3_END_POINT, type = STRING, required = false,
+             description = "S3 host name")
+     private String endPoint = null;
+ 
+     @Parameter(name = S3_BUCKET_NAME, type = STRING, required = true,
+             description = "name of the template storage bucket")
+     private String bucketName;
+ 
+     @Parameter(name = S3_HTTPS_FLAG, type = BOOLEAN, required = false,
+             description = "connect to the S3 endpoint via HTTPS?")
+     private Boolean httpsFlag = null;
+ 
+     @Parameter(name = S3_CONNECTION_TIMEOUT, type = INTEGER, required = false,
+             description = "connection timeout (milliseconds)")
+     private Integer connectionTimeout = null;
+ 
+     @Parameter(name = S3_MAX_ERROR_RETRY, type = INTEGER, required = false,
+             description = "maximum number of times to retry on error")
+     private Integer maxErrorRetry = null;
+ 
+     @Parameter(name = S3_SOCKET_TIMEOUT, type = INTEGER, required = false,
+             description = "socket timeout (milliseconds)")
+     private Integer socketTimeout = null;
+ 
+     @Override
+     public void execute() throws ResourceUnavailableException, InsufficientCapacityException,
+             ServerApiException, ConcurrentOperationException, ResourceAllocationException,
+             NetworkRuleConflictException {
+ 
+         final S3 result;
+ 
+         try {
+ 
+             result = _resourceService.discoverS3(this);
+ 
+             if (result == null) {
+                 throw new ServerApiException(INTERNAL_ERROR, "Failed to add S3.");
+             }
+ 
+         } catch (DiscoveryException e) {
+ 
+             throw new ServerApiException(INTERNAL_ERROR, "Failed to add S3 due to " + e.getMessage());
+ 
+         }
+ 
+         final S3Response response = _responseGenerator.createS3Response(result);
+         response.setResponseName(this.getCommandName());
+         this.setResponseObject(response);
+ 
+     }
+ 
+     @Override
+     public boolean equals(final Object thatObject) {
+ 
+         if (this == thatObject) {
+             return true;
+         }
+ 
+         if (thatObject == null || this.getClass() != thatObject.getClass()) {
+             return false;
+         }
+ 
+         final AddS3Cmd thatAddS3Cmd = (AddS3Cmd) thatObject;
+ 
+         if (this.httpsFlag != null ? !this.httpsFlag.equals(thatAddS3Cmd.httpsFlag) : thatAddS3Cmd.httpsFlag != null) {
+             return false;
+         }
+ 
+         if (this.accessKey != null ? !this.accessKey.equals(thatAddS3Cmd.accessKey) : thatAddS3Cmd.accessKey != null) {
+             return false;
+         }
+ 
+         if (this.connectionTimeout != null ? !this.connectionTimeout.equals(thatAddS3Cmd.connectionTimeout) : thatAddS3Cmd.connectionTimeout != null) {
+             return false;
+         }
+ 
+         if (this.endPoint != null ? !this.endPoint.equals(thatAddS3Cmd.endPoint) : thatAddS3Cmd.endPoint != null) {
+             return false;
+         }
+ 
+         if (this.maxErrorRetry != null ? !this.maxErrorRetry.equals(thatAddS3Cmd.maxErrorRetry) : thatAddS3Cmd.maxErrorRetry != null) {
+             return false;
+         }
+ 
+         if (this.secretKey != null ? !this.secretKey.equals(thatAddS3Cmd.secretKey) : thatAddS3Cmd.secretKey != null) {
+             return false;
+         }
+ 
+         if (this.socketTimeout != null ? !this.socketTimeout.equals(thatAddS3Cmd.socketTimeout) : thatAddS3Cmd.socketTimeout != null) {
+             return false;
+         }
+ 
+         if (this.bucketName != null ? !this.bucketName.equals(thatAddS3Cmd.bucketName) : thatAddS3Cmd.bucketName != null) {
+             return false;
+         }
+ 
+         return true;
+ 
+     }
+ 
+     @Override
+     public int hashCode() {
+ 
+         int result = this.accessKey != null ? this.accessKey.hashCode() : 0;
+         result = 31 * result + (this.secretKey != null ? this.secretKey.hashCode() : 0);
+         result = 31 * result + (this.endPoint != null ? this.endPoint.hashCode() : 0);
+         result = 31 * result + (this.bucketName != null ? this.bucketName.hashCode() : 0);
+         result = 31 * result + (this.httpsFlag != null && this.httpsFlag == true ? 1 : 0);
+         result = 31 * result + (this.connectionTimeout != null ? this.connectionTimeout.hashCode() : 0);
+         result = 31 * result + (this.maxErrorRetry != null ? this.maxErrorRetry.hashCode() : 0);
+         result = 31 * result + (this.socketTimeout != null ? this.socketTimeout.hashCode() : 0);
+ 
+         return result;
+ 
+     }
+ 
+     @Override
+     public String getCommandName() {
+         return COMMAND_NAME;
+     }
+ 
+     @Override
+     public long getEntityOwnerId() {
+         return ACCOUNT_ID_SYSTEM;
+     }
+ 
+     public String getAccessKey() {
+         return this.accessKey;
+     }
+ 
+     public String getSecretKey() {
+         return this.secretKey;
+     }
+ 
+     public String getEndPoint() {
+         return this.endPoint;
+     }
+ 
+     public String getBucketName() {
+         return this.bucketName;
+     }
+ 
+     public Boolean getHttpsFlag() {
+         return this.httpsFlag;
+     }
+ 
+     public Integer getConnectionTimeout() {
+         return this.connectionTimeout;
+     }
+ 
+     public Integer getMaxErrorRetry() {
+         return this.maxErrorRetry;
+     }
+ 
+     public Integer getSocketTimeout() {
+         return this.socketTimeout;
+     }
+ 
+ }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/296b49c2/api/src/com/cloud/api/commands/ListS3sCmd.java
----------------------------------------------------------------------
diff --cc api/src/com/cloud/api/commands/ListS3sCmd.java
index 0000000,507053d..86c8c53
mode 000000,100644..100644
--- a/api/src/com/cloud/api/commands/ListS3sCmd.java
+++ b/api/src/com/cloud/api/commands/ListS3sCmd.java
@@@ -1,0 -1,112 +1,112 @@@
+ /*
+  * Licensed to the Apache Software Foundation (ASF) under one
+  * or more contributor license agreements.  See the NOTICE file
+  * distributed with this work for additional information
+  * regarding copyright ownership.  The ASF licenses this file
+  * to you under the Apache License, Version 2.0 (the
+  * "License"); you may not use this file except in compliance
+  * with the License.  You may obtain a copy of the License at
+  *
+  *    http://www.apache.org/licenses/LICENSE-2.0
+  *
+  * 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
+  * specific language governing permissions and limitations
+  * under the License.
+  */
+ package com.cloud.api.commands;
+ 
 -import static com.cloud.api.ApiConstants.ID;
 -import static com.cloud.api.BaseCmd.CommandType.LONG;
++import static org.apache.cloudstack.api.ApiConstants.ID;
++import static org.apache.cloudstack.api.BaseCmd.CommandType.LONG;
+ 
+ import java.util.ArrayList;
+ import java.util.List;
+ 
 -import com.cloud.api.BaseListCmd;
 -import com.cloud.api.Implementation;
 -import com.cloud.api.Parameter;
 -import com.cloud.api.ServerApiException;
 -import com.cloud.api.response.ListResponse;
++import org.apache.cloudstack.api.BaseListCmd;
++import org.apache.cloudstack.api.Implementation;
++import org.apache.cloudstack.api.Parameter;
++import org.apache.cloudstack.api.ServerApiException;
++import org.apache.cloudstack.api.response.ListResponse;
+ import com.cloud.api.response.S3Response;
+ import com.cloud.exception.ConcurrentOperationException;
+ import com.cloud.exception.InsufficientCapacityException;
+ import com.cloud.exception.NetworkRuleConflictException;
+ import com.cloud.exception.ResourceAllocationException;
+ import com.cloud.exception.ResourceUnavailableException;
+ import com.cloud.storage.S3;
+ 
+ @Implementation(description = "Lists S3s", responseObject = S3Response.class, since = "4.0.0")
+ public final class ListS3sCmd extends BaseListCmd {
+ 
+     private static final String COMMAND_NAME = "lists3sresponse";
+ 
+     @Parameter(name = ID, type = LONG, required = true, description = "The ID of the S3")
+     private Long id;
+ 
+     @Override
+     public void execute() throws ResourceUnavailableException, InsufficientCapacityException,
+             ServerApiException, ConcurrentOperationException, ResourceAllocationException,
+             NetworkRuleConflictException {
+ 
+         final List<? extends S3> result = _resourceService.listS3s(this);
+         final ListResponse<S3Response> response = new ListResponse<S3Response>();
+         final List<S3Response> s3Responses = new ArrayList<S3Response>();
+ 
+         if (result != null) {
+ 
+             for (S3 s3 : result) {
+ 
+                 S3Response s3Response = _responseGenerator.createS3Response(s3);
+                 s3Response.setResponseName(this.getCommandName());
+                 s3Response.setObjectName("s3");
+                 s3Responses.add(s3Response);
+ 
+             }
+ 
+         }
+ 
+         response.setResponses(s3Responses);
+         response.setResponseName(this.getCommandName());
+ 
+         this.setResponseObject(response);
+ 
+     }
+ 
+     @Override
+     public boolean equals(final Object thatObject) {
+ 
+         if (this == thatObject) {
+             return true;
+         }
+ 
+         if (thatObject == null || getClass() != thatObject.getClass()) {
+             return false;
+         }
+ 
+         final ListS3sCmd thatListS3sCmd = (ListS3sCmd) thatObject;
+ 
+         if (this.id != null ? !this.id.equals(thatListS3sCmd.id) : thatListS3sCmd.id != null) {
+             return false;
+         }
+ 
+         return true;
+ 
+     }
+ 
+     @Override
+     public int hashCode() {
+         return this.id != null ? this.id.hashCode() : 0;
+     }
+ 
+     @Override
+     public String getCommandName() {
+         return COMMAND_NAME;
+     }
+ 
+     public Long getId() {
+         return this.id;
+     }
+ 
+ }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/296b49c2/api/src/com/cloud/api/response/S3Response.java
----------------------------------------------------------------------
diff --cc api/src/com/cloud/api/response/S3Response.java
index 0000000,1efbe23..0d2cf7e
mode 000000,100644..100644
--- a/api/src/com/cloud/api/response/S3Response.java
+++ b/api/src/com/cloud/api/response/S3Response.java
@@@ -1,0 -1,209 +1,210 @@@
+ /*
+  * Licensed to the Apache Software Foundation (ASF) under one
+  * or more contributor license agreements.  See the NOTICE file
+  * distributed with this work for additional information
+  * regarding copyright ownership.  The ASF licenses this file
+  * to you under the Apache License, Version 2.0 (the
+  * "License"); you may not use this file except in compliance
+  * with the License.  You may obtain a copy of the License at
+  *
+  *    http://www.apache.org/licenses/LICENSE-2.0
+  *
+  * 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
+  * specific language governing permissions and limitations
+  * under the License.
+  */
+ package com.cloud.api.response;
+ 
+ import com.cloud.serializer.Param;
+ import com.cloud.utils.IdentityProxy;
+ import com.google.gson.annotations.SerializedName;
++import org.apache.cloudstack.api.BaseResponse;
+ 
 -import static com.cloud.api.ApiConstants.*;
++import static org.apache.cloudstack.api.ApiConstants.*;
+ 
+ public class S3Response extends BaseResponse {
+ 
+     @SerializedName(ID)
+     @Param(description = "The ID of the S3 configuration")
+     private IdentityProxy id = new IdentityProxy("s3");
+ 
+     @SerializedName(S3_ACCESS_KEY)
+     @Param(description = "The S3 access key")
+     private String accessKey;
+ 
+     @SerializedName(S3_SECRET_KEY)
+     @Param(description = "The S3 secret key")
+     private String secretKey;
+ 
+     @SerializedName(S3_END_POINT)
+     @Param(description = "The S3 end point")
+     private String endPoint;
+ 
+     @SerializedName(S3_BUCKET_NAME)
+     @Param(description = "The name of the template storage bucket")
+     private String bucketName;
+ 
+     @SerializedName(S3_HTTPS_FLAG)
+     @Param(description = "Connect to S3 using HTTPS?")
+     private Integer httpsFlag;
+ 
+     @SerializedName(S3_CONNECTION_TIMEOUT)
+     @Param(description = "The connection timeout (milliseconds)")
+     private Integer connectionTimeout;
+ 
+     @SerializedName(S3_MAX_ERROR_RETRY)
+     @Param(description = "The maximum number of time to retry a connection on error.")
+     private Integer maxErrorRetry;
+ 
+     @SerializedName(S3_SOCKET_TIMEOUT)
+     @Param(description = "The connection socket (milliseconds)")
+     private Integer socketTimeout;
+ 
+     @Override
+     public boolean equals(final Object thatObject) {
+ 
+         if (this == thatObject) {
+             return true;
+         }
+ 
+         if (thatObject == null || this.getClass() != thatObject.getClass()) {
+             return false;
+         }
+ 
+         final S3Response thatS3Response = (S3Response) thatObject;
+ 
+         if (this.httpsFlag != null ? !this.httpsFlag.equals(thatS3Response.httpsFlag) : thatS3Response.httpsFlag != null) {
+             return false;
+         }
+ 
+         if (this.accessKey != null ? !this.accessKey.equals(thatS3Response.accessKey) : thatS3Response.accessKey != null) {
+             return false;
+         }
+ 
+         if (this.connectionTimeout != null ? !this.connectionTimeout.equals(thatS3Response.connectionTimeout) : thatS3Response.connectionTimeout != null) {
+             return false;
+         }
+ 
+         if (this.endPoint != null ? !this.endPoint.equals(thatS3Response.endPoint) : thatS3Response.endPoint != null) {
+             return false;
+         }
+ 
+         if (this.id != null ? !this.id.equals(thatS3Response.id) : thatS3Response.id != null) {
+             return false;
+         }
+ 
+         if (this.maxErrorRetry != null ? !this.maxErrorRetry.equals(thatS3Response.maxErrorRetry) : thatS3Response.maxErrorRetry != null) {
+             return false;
+         }
+ 
+         if (this.secretKey != null ? !this.secretKey.equals(thatS3Response.secretKey) : thatS3Response.secretKey != null) {
+             return false;
+         }
+ 
+         if (this.socketTimeout != null ? !this.socketTimeout.equals(thatS3Response.socketTimeout) : thatS3Response.socketTimeout != null) {
+             return false;
+         }
+ 
+         if (this.bucketName != null ? !this.bucketName.equals(thatS3Response.bucketName) : thatS3Response.bucketName != null) {
+             return false;
+         }
+ 
+         return true;
+ 
+     }
+ 
+     @Override
+     public int hashCode() {
+ 
+         int result = this.id != null ? this.id.hashCode() : 0;
+         result = 31 * result + (this.accessKey != null ? this.accessKey.hashCode() : 0);
+         result = 31 * result + (this.secretKey != null ? this.secretKey.hashCode() : 0);
+         result = 31 * result + (this.endPoint != null ? this.endPoint.hashCode() : 0);
+         result = 31 * result + (this.bucketName != null ? this.bucketName.hashCode() : 0);
+         result = 31 * result + (this.httpsFlag != null ? this.httpsFlag : 0);
+         result = 31 * result + (this.connectionTimeout != null ? this.connectionTimeout.hashCode() : 0);
+         result = 31 * result + (this.maxErrorRetry != null ? this.maxErrorRetry.hashCode() : 0);
+         result = 31 * result + (this.socketTimeout != null ? this.socketTimeout.hashCode() : 0);
+ 
+         return result;
+ 
+     }
+ 
+     @Override
 -    public Long getObjectId() {
 -        return this.id.getValue();
++    public String getObjectId() {
++        return this.id.getValue().toString();
+     }
+ 
+     public void setObjectId(Long id) {
+         this.id.setValue(id);
+     }
+ 
+     public String getAccessKey() {
+         return this.accessKey;
+     }
+ 
+     public void setAccessKey(final String accessKey) {
+         this.accessKey = accessKey;
+     }
+ 
+     public String getSecretKey() {
+         return this.secretKey;
+     }
+ 
+     public void setSecretKey(final String secretKey) {
+         this.secretKey = secretKey;
+     }
+ 
+     public String getEndPoint() {
+         return this.endPoint;
+     }
+ 
+     public void setEndPoint(final String endPoint) {
+         this.endPoint = endPoint;
+     }
+ 
+ 
+     public String getTemplateBucketName() {
+         return this.bucketName;
+     }
+ 
+     public void setTemplateBucketName(final String templateBucketName) {
+         this.bucketName = templateBucketName;
+     }
+ 
+     public Integer getHttpsFlag() {
+         return this.httpsFlag;
+     }
+ 
+     public void setHttpsFlag(final Integer httpsFlag) {
+         this.httpsFlag = httpsFlag;
+     }
+ 
+     public Integer getConnectionTimeout() {
+         return this.connectionTimeout;
+     }
+ 
+     public void setConnectionTimeout(final Integer connectionTimeout) {
+         this.connectionTimeout = connectionTimeout;
+     }
+ 
+     public Integer getMaxErrorRetry() {
+         return this.maxErrorRetry;
+     }
+ 
+     public void setMaxErrorRetry(final Integer maxErrorRetry) {
+         this.maxErrorRetry = maxErrorRetry;
+     }
+ 
+     public Integer getSocketTimeout() {
+         return this.socketTimeout;
+     }
+ 
+     public void setSocketTimeout(final Integer socketTimeout) {
+         this.socketTimeout = socketTimeout;
+     }
+ 
+ }

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/296b49c2/api/src/com/cloud/network/Network.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/296b49c2/api/src/com/cloud/network/NetworkService.java
----------------------------------------------------------------------
diff --cc api/src/com/cloud/network/NetworkService.java
index 140563e,e7b6def..d5841a4
--- a/api/src/com/cloud/network/NetworkService.java
+++ b/api/src/com/cloud/network/NetworkService.java
@@@ -41,7 -41,8 +41,7 @@@ public interface NetworkService 
  
      List<? extends Network> getIsolatedNetworksOwnedByAccountInZone(long zoneId, Account owner);
  
-     IpAddress allocateIP(Account ipOwner, boolean isSystem, long zoneId) throws ResourceAllocationException,
 -
+     IpAddress allocateIP(Account ipOwner, long zoneId, Long networkId) throws ResourceAllocationException,
          InsufficientAddressCapacityException, ConcurrentOperationException;
  
      boolean releaseIpAddress(long ipAddressId) throws InsufficientAddressCapacityException;

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/296b49c2/api/src/com/cloud/offering/NetworkOffering.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/296b49c2/api/src/com/cloud/resource/ResourceService.java
----------------------------------------------------------------------
diff --cc api/src/com/cloud/resource/ResourceService.java
index 4d1c0ba,4cdb31a..ade1012
--- a/api/src/com/cloud/resource/ResourceService.java
+++ b/api/src/com/cloud/resource/ResourceService.java
@@@ -18,21 -18,28 +18,24 @@@ package com.cloud.resource
  
  import java.util.List;
  
 -import com.cloud.api.commands.AddClusterCmd;
 -import com.cloud.api.commands.AddHostCmd;
 +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.host.*;
 +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.host.PrepareForMaintenanceCmd;
+ import com.cloud.api.commands.AddS3Cmd;
 -import com.cloud.api.commands.AddSecondaryStorageCmd;
 -import com.cloud.api.commands.AddSwiftCmd;
 -import com.cloud.api.commands.CancelMaintenanceCmd;
 -import com.cloud.api.commands.DeleteClusterCmd;
+ import com.cloud.api.commands.ListS3sCmd;
 -import com.cloud.api.commands.ListSwiftsCmd;
 -import com.cloud.api.commands.PrepareForMaintenanceCmd;
 -import com.cloud.api.commands.ReconnectHostCmd;
 -import com.cloud.api.commands.UpdateHostCmd;
 -import com.cloud.api.commands.UpdateHostPasswordCmd;
  import com.cloud.exception.DiscoveryException;
  import com.cloud.exception.InvalidParameterValueException;
  import com.cloud.exception.ResourceInUseException;
  import com.cloud.host.Host;
  import com.cloud.hypervisor.Hypervisor.HypervisorType;
  import com.cloud.org.Cluster;
+ import com.cloud.storage.S3;
  import com.cloud.storage.Swift;
  import com.cloud.utils.fsm.NoTransitionException;
 +import org.apache.cloudstack.api.command.admin.host.ReconnectHostCmd;
  
  public interface ResourceService {
      /**