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
----------------------------------------------------------------------