git commit: updated refs/heads/4.4 to 90117f0
Repository: cloudstack Updated Branches: refs/heads/4.4 e7724e90b -> 90117f09e CLOUDSTACK-6288: Changing default ImageFormat to vhdx for hyper-v and allowing registration of vhdx format templates. Signed-off-by: Devdeep Singh Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/90117f09 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/90117f09 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/90117f09 Branch: refs/heads/4.4 Commit: 90117f09e80a936c006bfe6ea1e380f6af591c12 Parents: e7724e9 Author: Anshul Gangwar Authored: Tue Apr 1 13:38:54 2014 +0530 Committer: Devdeep Singh Committed: Tue Apr 1 13:40:21 2014 +0530 -- .../orchestration/VolumeOrchestrator.java | 21 .../HypervResource/HypervResourceController.cs | 2 +- .../ServerResource/HypervResource/WmiCallsV2.cs | 2 +- ui/scripts/templates.js | 4 4 files changed, 23 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/90117f09/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java -- diff --git a/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java b/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java index 4ebde04..064ffca 100644 --- a/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java +++ b/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java @@ -30,8 +30,6 @@ import java.util.concurrent.ExecutionException; import javax.inject.Inject; import javax.naming.ConfigurationException; -import com.cloud.vm.UserVmVO; -import com.cloud.vm.dao.UserVmDao; import org.apache.log4j.Logger; import org.apache.cloudstack.engine.orchestration.service.VolumeOrchestrationService; @@ -113,10 +111,12 @@ import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.fsm.NoTransitionException; import com.cloud.utils.fsm.StateMachine2; import com.cloud.vm.DiskProfile; +import com.cloud.vm.UserVmVO; import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.VirtualMachineProfile; import com.cloud.vm.VirtualMachineProfileImpl; +import com.cloud.vm.dao.UserVmDao; public class VolumeOrchestrator extends ManagerBase implements VolumeOrchestrationService, Configurable { private static final Logger s_logger = Logger.getLogger(VolumeOrchestrator.class); @@ -687,16 +687,29 @@ public class VolumeOrchestrator extends ManagerBase implements VolumeOrchestrati } else if (hyperType == HypervisorType.Ovm) { return ImageFormat.RAW; } else if (hyperType == HypervisorType.Hyperv) { -return ImageFormat.VHD; +return ImageFormat.VHDX; } else { return null; } } +private boolean isSupportedImageFormatForCluster(VolumeInfo volume, HypervisorType rootDiskHyperType) { +ImageFormat volumeFormat = volume.getFormat(); +if (rootDiskHyperType == HypervisorType.Hyperv) { +if (volumeFormat.equals(ImageFormat.VHDX) || volumeFormat.equals(ImageFormat.VHD)) { +return true; +} else { +return false; +} +} else { +return volume.getFormat().equals(getSupportedImageFormatForCluster(rootDiskHyperType)); +} +} + private VolumeInfo copyVolume(StoragePool rootDiskPool, VolumeInfo volume, VirtualMachine vm, VirtualMachineTemplate rootDiskTmplt, DataCenter dcVO, Pod pod, DiskOffering diskVO, ServiceOffering svo, HypervisorType rootDiskHyperType) throws NoTransitionException { -if (!volume.getFormat().equals(getSupportedImageFormatForCluster(rootDiskHyperType))) { +if (!isSupportedImageFormatForCluster(volume, rootDiskHyperType)) { throw new InvalidParameterValueException("Failed to attach volume to VM since volumes format " + volume.getFormat().getFileExtension() + " is not compatible with the vm hypervisor type"); } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/90117f09/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/HypervResourceController.cs -- diff --git a/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/HypervResourceController.cs b/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/HypervResourceController.cs index 40609e4..66b9828 100644 --- a/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/Hype
git commit: updated refs/heads/master to 24820d2
Repository: cloudstack Updated Branches: refs/heads/master 06c0486d0 -> 24820d20d CLOUDSTACK-6288: Changing default ImageFormat to vhdx for hyper-v and allowing registration of vhdx format templates. Signed-off-by: Devdeep Singh Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/24820d20 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/24820d20 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/24820d20 Branch: refs/heads/master Commit: 24820d20d3f5f68ba07cd0fd92dc29c3634b5038 Parents: 06c0486 Author: Anshul Gangwar Authored: Tue Apr 1 13:38:54 2014 +0530 Committer: Devdeep Singh Committed: Tue Apr 1 14:00:24 2014 +0530 -- .../orchestration/VolumeOrchestrator.java | 21 .../HypervResource/HypervResourceController.cs | 2 +- .../ServerResource/HypervResource/WmiCallsV2.cs | 2 +- ui/scripts/templates.js | 4 4 files changed, 23 insertions(+), 6 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/24820d20/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java -- diff --git a/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java b/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java index 4ebde04..064ffca 100644 --- a/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java +++ b/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java @@ -30,8 +30,6 @@ import java.util.concurrent.ExecutionException; import javax.inject.Inject; import javax.naming.ConfigurationException; -import com.cloud.vm.UserVmVO; -import com.cloud.vm.dao.UserVmDao; import org.apache.log4j.Logger; import org.apache.cloudstack.engine.orchestration.service.VolumeOrchestrationService; @@ -113,10 +111,12 @@ import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.utils.fsm.NoTransitionException; import com.cloud.utils.fsm.StateMachine2; import com.cloud.vm.DiskProfile; +import com.cloud.vm.UserVmVO; import com.cloud.vm.VirtualMachine; import com.cloud.vm.VirtualMachine.State; import com.cloud.vm.VirtualMachineProfile; import com.cloud.vm.VirtualMachineProfileImpl; +import com.cloud.vm.dao.UserVmDao; public class VolumeOrchestrator extends ManagerBase implements VolumeOrchestrationService, Configurable { private static final Logger s_logger = Logger.getLogger(VolumeOrchestrator.class); @@ -687,16 +687,29 @@ public class VolumeOrchestrator extends ManagerBase implements VolumeOrchestrati } else if (hyperType == HypervisorType.Ovm) { return ImageFormat.RAW; } else if (hyperType == HypervisorType.Hyperv) { -return ImageFormat.VHD; +return ImageFormat.VHDX; } else { return null; } } +private boolean isSupportedImageFormatForCluster(VolumeInfo volume, HypervisorType rootDiskHyperType) { +ImageFormat volumeFormat = volume.getFormat(); +if (rootDiskHyperType == HypervisorType.Hyperv) { +if (volumeFormat.equals(ImageFormat.VHDX) || volumeFormat.equals(ImageFormat.VHD)) { +return true; +} else { +return false; +} +} else { +return volume.getFormat().equals(getSupportedImageFormatForCluster(rootDiskHyperType)); +} +} + private VolumeInfo copyVolume(StoragePool rootDiskPool, VolumeInfo volume, VirtualMachine vm, VirtualMachineTemplate rootDiskTmplt, DataCenter dcVO, Pod pod, DiskOffering diskVO, ServiceOffering svo, HypervisorType rootDiskHyperType) throws NoTransitionException { -if (!volume.getFormat().equals(getSupportedImageFormatForCluster(rootDiskHyperType))) { +if (!isSupportedImageFormatForCluster(volume, rootDiskHyperType)) { throw new InvalidParameterValueException("Failed to attach volume to VM since volumes format " + volume.getFormat().getFileExtension() + " is not compatible with the vm hypervisor type"); } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/24820d20/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/HypervResourceController.cs -- diff --git a/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/HypervResourceController.cs b/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResource/HypervResourceController.cs index 40609e4..66b9828 100644 --- a/plugins/hypervisors/hyperv/DotNet/ServerResource/HypervResourc
git commit: updated refs/heads/marvin to 95a6453
Repository: cloudstack Updated Branches: refs/heads/marvin e4053bc32 -> 95a645349 Added fix for CLOUDSTACK-6316 Added changes for CLOUDSTACK-6316. More details in the bug Signed-off-by: Santhosh Edukulla Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/95a64534 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/95a64534 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/95a64534 Branch: refs/heads/marvin Commit: 95a645349fc14bb16ea30509a265c2731736b206 Parents: e4053bc Author: Santhosh Edukulla Authored: Tue Apr 1 20:58:11 2014 +0530 Committer: SrikanteswaraRao Talluri Committed: Tue Apr 1 16:02:59 2014 +0530 -- tools/marvin/marvin/configGenerator.py | 110 +--- 1 file changed, 67 insertions(+), 43 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/95a64534/tools/marvin/marvin/configGenerator.py -- diff --git a/tools/marvin/marvin/configGenerator.py b/tools/marvin/marvin/configGenerator.py index 43b4d7c..68ec24e 100644 --- a/tools/marvin/marvin/configGenerator.py +++ b/tools/marvin/marvin/configGenerator.py @@ -25,6 +25,7 @@ from marvin.config.test_data import test_data class managementServer(object): + def __init__(self): self.mgtSvrIp = None self.port = 8096 @@ -36,6 +37,7 @@ class managementServer(object): class dbServer(object): + def __init__(self): self.dbSvr = None self.port = 3306 @@ -85,6 +87,7 @@ class zone(object): class trafficType(object): + def __init__(self, typ, labeldict=None): self.typ = typ # Guest/Management/Public if labeldict: @@ -97,6 +100,7 @@ class trafficType(object): class pod(object): + def __init__(self): self.gateway = None self.name = None @@ -111,6 +115,7 @@ class pod(object): class VmwareDc(object): + def __init__(self): self.zoneid = None self.name = None @@ -120,6 +125,7 @@ class VmwareDc(object): class cluster(object): + def __init__(self): self.clustername = None self.clustertype = None @@ -134,6 +140,7 @@ class cluster(object): class host(object): + def __init__(self): self.hypervisor = None self.password = None @@ -151,6 +158,7 @@ class host(object): class physicalNetwork(object): + def __init__(self): self.name = None self.tags = [] @@ -165,6 +173,7 @@ class physicalNetwork(object): class provider(object): + def __init__(self, name=None): self.name = name self.state = None @@ -175,6 +184,7 @@ class provider(object): class network(object): + def __init__(self): self.displaytext = None self.name = None @@ -187,6 +197,7 @@ class network(object): class iprange(object): + def __init__(self): '''tagged/untagged''' self.gateway = None @@ -200,12 +211,14 @@ class iprange(object): class primaryStorage(object): + def __init__(self): self.name = None self.url = None class secondaryStorage(object): + def __init__(self): self.url = None self.provider = None @@ -213,6 +226,7 @@ class secondaryStorage(object): class cacheStorage(object): + def __init__(self): self.url = None self.provider = None @@ -220,6 +234,7 @@ class cacheStorage(object): class s3(object): + def __init__(self): self.accesskey = None self.secretkey = None @@ -232,6 +247,7 @@ class s3(object): class netscaler(object): + def __init__(self, hostname=None, username='nsroot', password='nsroot'): self.hostname = hostname self.username = username @@ -248,11 +264,12 @@ class netscaler(object): def __repr__(self): req = zip(self.__dict__.keys(), self.__dict__.values()) -return self.hostname+"?" + "&".join(["=".join([r[0], r[1]]) - for r in req]) +return self.hostname + "?" + "&".join(["=".join([r[0], r[1]]) + for r in req]) class srx(object): + def __init__(self, hostname=None, username='root', password='admin'): self.hostname = hostname self.username = username @@ -271,11 +288,12 @@ class srx(object): def __repr__(self): req = zip(self.__dict__.keys(), self.__dict__.values()) -return self.hostname+"?" + "&".join(["=".join([r[0], r[1]]) - for r in req]) +return self.hostname + "?" + "&".join(["=".join([r[0], r[1]]) + for r in req]) class bigip(object)
git commit: updated refs/heads/marvin to 70e1040
Repository: cloudstack Updated Branches: refs/heads/marvin 95a645349 -> 70e104021 Revert "Added fix for CLOUDSTACK-6316" This reverts commit 95a645349fc14bb16ea30509a265c2731736b206. Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/70e10402 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/70e10402 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/70e10402 Branch: refs/heads/marvin Commit: 70e104021c6db6dd454ff481ca3ee6283637ad90 Parents: 95a6453 Author: SrikanteswaraRao Talluri Authored: Tue Apr 1 16:09:54 2014 +0530 Committer: SrikanteswaraRao Talluri Committed: Tue Apr 1 16:09:54 2014 +0530 -- tools/marvin/marvin/configGenerator.py | 110 +++- 1 file changed, 43 insertions(+), 67 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/70e10402/tools/marvin/marvin/configGenerator.py -- diff --git a/tools/marvin/marvin/configGenerator.py b/tools/marvin/marvin/configGenerator.py index 68ec24e..43b4d7c 100644 --- a/tools/marvin/marvin/configGenerator.py +++ b/tools/marvin/marvin/configGenerator.py @@ -25,7 +25,6 @@ from marvin.config.test_data import test_data class managementServer(object): - def __init__(self): self.mgtSvrIp = None self.port = 8096 @@ -37,7 +36,6 @@ class managementServer(object): class dbServer(object): - def __init__(self): self.dbSvr = None self.port = 3306 @@ -87,7 +85,6 @@ class zone(object): class trafficType(object): - def __init__(self, typ, labeldict=None): self.typ = typ # Guest/Management/Public if labeldict: @@ -100,7 +97,6 @@ class trafficType(object): class pod(object): - def __init__(self): self.gateway = None self.name = None @@ -115,7 +111,6 @@ class pod(object): class VmwareDc(object): - def __init__(self): self.zoneid = None self.name = None @@ -125,7 +120,6 @@ class VmwareDc(object): class cluster(object): - def __init__(self): self.clustername = None self.clustertype = None @@ -140,7 +134,6 @@ class cluster(object): class host(object): - def __init__(self): self.hypervisor = None self.password = None @@ -158,7 +151,6 @@ class host(object): class physicalNetwork(object): - def __init__(self): self.name = None self.tags = [] @@ -173,7 +165,6 @@ class physicalNetwork(object): class provider(object): - def __init__(self, name=None): self.name = name self.state = None @@ -184,7 +175,6 @@ class provider(object): class network(object): - def __init__(self): self.displaytext = None self.name = None @@ -197,7 +187,6 @@ class network(object): class iprange(object): - def __init__(self): '''tagged/untagged''' self.gateway = None @@ -211,14 +200,12 @@ class iprange(object): class primaryStorage(object): - def __init__(self): self.name = None self.url = None class secondaryStorage(object): - def __init__(self): self.url = None self.provider = None @@ -226,7 +213,6 @@ class secondaryStorage(object): class cacheStorage(object): - def __init__(self): self.url = None self.provider = None @@ -234,7 +220,6 @@ class cacheStorage(object): class s3(object): - def __init__(self): self.accesskey = None self.secretkey = None @@ -247,7 +232,6 @@ class s3(object): class netscaler(object): - def __init__(self, hostname=None, username='nsroot', password='nsroot'): self.hostname = hostname self.username = username @@ -264,12 +248,11 @@ class netscaler(object): def __repr__(self): req = zip(self.__dict__.keys(), self.__dict__.values()) -return self.hostname + "?" + "&".join(["=".join([r[0], r[1]]) - for r in req]) +return self.hostname+"?" + "&".join(["=".join([r[0], r[1]]) + for r in req]) class srx(object): - def __init__(self, hostname=None, username='root', password='admin'): self.hostname = hostname self.username = username @@ -288,12 +271,11 @@ class srx(object): def __repr__(self): req = zip(self.__dict__.keys(), self.__dict__.values()) -return self.hostname + "?" + "&".join(["=".join([r[0], r[1]]) - for r in req]) +return self.hostname+"?" + "&".join(["=".join([r[0], r[1]]) + for r in req]) class bigip(object): - def __i
[1/3] Added fix for CLOUDSTACK-6316
Repository: cloudstack Updated Branches: refs/heads/marvin 70e104021 -> 63d368836 http://git-wip-us.apache.org/repos/asf/cloudstack/blob/63d36883/tools/marvin/marvin/tcExecuteEngine.py -- diff --git a/tools/marvin/marvin/tcExecuteEngine.py b/tools/marvin/marvin/tcExecuteEngine.py index c437337..e2f4d11 100644 --- a/tools/marvin/marvin/tcExecuteEngine.py +++ b/tools/marvin/marvin/tcExecuteEngine.py @@ -23,6 +23,7 @@ from functools import partial class TestCaseExecuteEngine(object): + def __init__(self, testclient, config, tc_logger=None, debug_stream=None): """ Initialize the testcase execution engine, just the basics here @@ -53,7 +54,7 @@ class TestCaseExecuteEngine(object): if isinstance(test, unittest.BaseTestSuite): self.injectTestCase(test) else: -#inject testclient and logger into each unittest +# inject testclient and logger into each unittest self.tcRunLogger.name = test.__str__() setattr(test, "testClient", self.testclient) setattr(test, "config", self.config) http://git-wip-us.apache.org/repos/asf/cloudstack/blob/63d36883/tools/marvin/marvin/testSetupSuccess.py -- diff --git a/tools/marvin/marvin/testSetupSuccess.py b/tools/marvin/marvin/testSetupSuccess.py index 1701626..8b000f9 100644 --- a/tools/marvin/marvin/testSetupSuccess.py +++ b/tools/marvin/marvin/testSetupSuccess.py @@ -23,6 +23,7 @@ from time import sleep as delay class TestSetupSuccess(cloudstackTestCase): + """ Test to verify if the cloudstack is ready to launch tests upon 1. Verify that system VMs are up and running in all zones
[3/3] git commit: updated refs/heads/marvin to 63d3688
Added fix for CLOUDSTACK-6316 Added changes for CLOUDSTACK-6316. More details in the bug Signed-off-by: Santhosh Edukulla Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/63d36883 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/63d36883 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/63d36883 Branch: refs/heads/marvin Commit: 63d36883605e42cf48eec1f50e2496f43ea6a496 Parents: 70e1040 Author: Santhosh Edukulla Authored: Tue Apr 1 20:58:11 2014 +0530 Committer: SrikanteswaraRao Talluri Committed: Tue Apr 1 16:15:53 2014 +0530 -- .../maint/test_host_high_availability.py| 13 +- tools/marvin/marvin/__init__.py |2 +- tools/marvin/marvin/asyncJobMgr.py | 10 +- tools/marvin/marvin/cloudstackConnection.py | 72 +- tools/marvin/marvin/cloudstackException.py |4 + tools/marvin/marvin/cloudstackTestCase.py |4 +- tools/marvin/marvin/cloudstackTestClient.py | 111 +- tools/marvin/marvin/codegenerator.py| 11 +- tools/marvin/marvin/config/test_data.py |3 +- tools/marvin/marvin/configGenerator.py | 110 +- tools/marvin/marvin/dbConnection.py |3 +- tools/marvin/marvin/deployAndRun.py |6 +- tools/marvin/marvin/deployDataCenter.py | 1304 +- tools/marvin/marvin/jsonHelper.py |7 +- tools/marvin/marvin/marvinInit.py | 52 +- tools/marvin/marvin/marvinLog.py| 11 +- tools/marvin/marvin/marvinPlugin.py | 33 +- tools/marvin/marvin/sshClient.py| 22 +- tools/marvin/marvin/tcExecuteEngine.py |3 +- tools/marvin/marvin/testSetupSuccess.py |1 + 20 files changed, 933 insertions(+), 849 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/63d36883/test/integration/component/maint/test_host_high_availability.py -- diff --git a/test/integration/component/maint/test_host_high_availability.py b/test/integration/component/maint/test_host_high_availability.py index f81bff2..4cd7fd8 100644 --- a/test/integration/component/maint/test_host_high_availability.py +++ b/test/integration/component/maint/test_host_high_availability.py @@ -24,6 +24,7 @@ from marvin.cloudstackAPI import * from marvin.lib.utils import * from marvin.lib.base import * from marvin.lib.common import * +import time class Services: @@ -619,11 +620,7 @@ class TestHostHighAvailability(cloudstackTestCase): #verify the VM live migration happened to another running host self.debug("Waiting for VM to come up") -wait_for_vm( -self.apiclient, -virtualmachineid=vm_with_ha_enabled.id, -interval=timeout -) +time.sleep(timeout) vms = VirtualMachine.list( self.apiclient, @@ -751,11 +748,7 @@ class TestHostHighAvailability(cloudstackTestCase): #verify the VM live migration happened to another running host self.debug("Waiting for VM to come up") -wait_for_vm( -self.apiclient, -virtualmachineid=vm_with_ha_disabled.id, -interval=timeout -) +time.sleep(timeout) vms = VirtualMachine.list( self.apiclient, http://git-wip-us.apache.org/repos/asf/cloudstack/blob/63d36883/tools/marvin/marvin/__init__.py -- diff --git a/tools/marvin/marvin/__init__.py b/tools/marvin/marvin/__init__.py index 7af168e..7102e3f 100644 --- a/tools/marvin/marvin/__init__.py +++ b/tools/marvin/marvin/__init__.py @@ -15,4 +15,4 @@ # specific language governing permissions and limitations # under the License. -#Marvin - The cloudstack test client +# Marvin - The cloudstack test client http://git-wip-us.apache.org/repos/asf/cloudstack/blob/63d36883/tools/marvin/marvin/asyncJobMgr.py -- diff --git a/tools/marvin/marvin/asyncJobMgr.py b/tools/marvin/marvin/asyncJobMgr.py index ee3ae5a..00e8c19 100644 --- a/tools/marvin/marvin/asyncJobMgr.py +++ b/tools/marvin/marvin/asyncJobMgr.py @@ -26,12 +26,14 @@ import datetime class job(object): + def __init__(self): self.id = None self.cmd = None class jobStatus(object): + def __init__(self): self.result = None self.status = None @@ -47,6 +49,7 @@ class jobStatus(object): class workThread(threading.Thread): + def __init__(self, in_queue, outqueue, apiClient, db=None, lock=None): threading.Thread.__init__(self) self.inqueue = in_queue @@ -62
git commit: updated refs/heads/4.4 to eb86ed6
Repository: cloudstack Updated Branches: refs/heads/4.4 90117f09e -> eb86ed60b Value of Global parameter "custom.diskoffering.size.min" is not reflected in UI during new instance creation. Added fields to /api and /server classes for CustomDiskOfferingMinSize to be available in CapabilitiesResponse. Fixed UI code in Instance Wizard to have this config value as the minimum selectable option when we are in custom disk size mode. Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/eb86ed60 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/eb86ed60 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/eb86ed60 Branch: refs/heads/4.4 Commit: eb86ed60bd30afcb660c7a05ad46ac0977c019f0 Parents: 90117f0 Author: Gabor Apati-Nagy Authored: Fri Mar 28 14:39:02 2014 + Committer: Brian Federle Committed: Tue Apr 1 10:56:02 2014 -0700 -- api/src/org/apache/cloudstack/api/ApiConstants.java | 1 + .../api/command/user/config/ListCapabilitiesCmd.java | 1 + .../apache/cloudstack/api/response/CapabilitiesResponse.java | 8 server/src/com/cloud/server/ManagementServerImpl.java| 2 ++ ui/index.jsp | 2 +- ui/scripts/instanceWizard.js | 6 ++ ui/scripts/ui-custom/instanceWizard.js | 7 ++- 7 files changed, 25 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/eb86ed60/api/src/org/apache/cloudstack/api/ApiConstants.java -- diff --git a/api/src/org/apache/cloudstack/api/ApiConstants.java b/api/src/org/apache/cloudstack/api/ApiConstants.java index 0cfc9b8..1146cea 100755 --- a/api/src/org/apache/cloudstack/api/ApiConstants.java +++ b/api/src/org/apache/cloudstack/api/ApiConstants.java @@ -419,6 +419,7 @@ public class ApiConstants { public static final String INSTANCE_NAME = "instancename"; public static final String START_VM = "startvm"; public static final String HA_HOST = "hahost"; +public static final String CUSTOM_DISK_OFF_MIN_SIZE = "customdiskofferingminsize"; public static final String CUSTOM_DISK_OFF_MAX_SIZE = "customdiskofferingmaxsize"; public static final String DEFAULT_ZONE_ID = "defaultzoneid"; public static final String LIVE_MIGRATE = "livemigrate"; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/eb86ed60/api/src/org/apache/cloudstack/api/command/user/config/ListCapabilitiesCmd.java -- diff --git a/api/src/org/apache/cloudstack/api/command/user/config/ListCapabilitiesCmd.java b/api/src/org/apache/cloudstack/api/command/user/config/ListCapabilitiesCmd.java index d47645b..e6696e1 100644 --- a/api/src/org/apache/cloudstack/api/command/user/config/ListCapabilitiesCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/config/ListCapabilitiesCmd.java @@ -53,6 +53,7 @@ public class ListCapabilitiesCmd extends BaseCmd { response.setSupportELB((String)capabilities.get("supportELB")); response.setProjectInviteRequired((Boolean)capabilities.get("projectInviteRequired")); response.setAllowUsersCreateProjects((Boolean)capabilities.get("allowusercreateprojects")); + response.setDiskOffMinSize((Long)capabilities.get("customDiskOffMinSize")); response.setDiskOffMaxSize((Long)capabilities.get("customDiskOffMaxSize")); response.setRegionSecondaryEnabled((Boolean)capabilities.get("regionSecondaryEnabled")); response.setKVMSnapshotEnabled((Boolean)capabilities.get("KVMSnapshotEnabled")); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/eb86ed60/api/src/org/apache/cloudstack/api/response/CapabilitiesResponse.java -- diff --git a/api/src/org/apache/cloudstack/api/response/CapabilitiesResponse.java b/api/src/org/apache/cloudstack/api/response/CapabilitiesResponse.java index c8de587..f7fdb95 100644 --- a/api/src/org/apache/cloudstack/api/response/CapabilitiesResponse.java +++ b/api/src/org/apache/cloudstack/api/response/CapabilitiesResponse.java @@ -49,6 +49,10 @@ public class CapabilitiesResponse extends BaseResponse { @Param(description = "true if regular user is allowed to create projects") private Boolean allowUsersCreateProjects; +@SerializedName(ApiConstants.CUSTOM_DISK_OFF_MIN_SIZE) +@Param(description = "minimum size that can be specified when " + "create disk from disk offering with custom size") +private Long diskOffMinSize; + @SerializedName(ApiConstants.CUSTOM_DISK_OFF_MAX_SIZE) @Param(description = "maximum size that can be specified when "
git commit: updated refs/heads/master to 883d7f1
Repository: cloudstack Updated Branches: refs/heads/master 24820d20d -> 883d7f17f Value of Global parameter "custom.diskoffering.size.min" is not reflected in UI during new instance creation. Added fields to /api and /server classes for CustomDiskOfferingMinSize to be available in CapabilitiesResponse. Fixed UI code in Instance Wizard to have this config value as the minimum selectable option when we are in custom disk size mode. Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/883d7f17 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/883d7f17 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/883d7f17 Branch: refs/heads/master Commit: 883d7f17f78433b37e4f20103b532b3b20582014 Parents: 24820d2 Author: Gabor Apati-Nagy Authored: Fri Mar 28 14:39:02 2014 + Committer: Brian Federle Committed: Tue Apr 1 10:57:36 2014 -0700 -- api/src/org/apache/cloudstack/api/ApiConstants.java | 1 + .../api/command/user/config/ListCapabilitiesCmd.java | 1 + .../apache/cloudstack/api/response/CapabilitiesResponse.java | 8 server/src/com/cloud/server/ManagementServerImpl.java| 2 ++ ui/index.jsp | 2 +- ui/scripts/instanceWizard.js | 6 ++ ui/scripts/ui-custom/instanceWizard.js | 7 ++- 7 files changed, 25 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/883d7f17/api/src/org/apache/cloudstack/api/ApiConstants.java -- diff --git a/api/src/org/apache/cloudstack/api/ApiConstants.java b/api/src/org/apache/cloudstack/api/ApiConstants.java index 87fa8ee..fdb4558 100755 --- a/api/src/org/apache/cloudstack/api/ApiConstants.java +++ b/api/src/org/apache/cloudstack/api/ApiConstants.java @@ -419,6 +419,7 @@ public class ApiConstants { public static final String INSTANCE_NAME = "instancename"; public static final String START_VM = "startvm"; public static final String HA_HOST = "hahost"; +public static final String CUSTOM_DISK_OFF_MIN_SIZE = "customdiskofferingminsize"; public static final String CUSTOM_DISK_OFF_MAX_SIZE = "customdiskofferingmaxsize"; public static final String DEFAULT_ZONE_ID = "defaultzoneid"; public static final String LIVE_MIGRATE = "livemigrate"; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/883d7f17/api/src/org/apache/cloudstack/api/command/user/config/ListCapabilitiesCmd.java -- diff --git a/api/src/org/apache/cloudstack/api/command/user/config/ListCapabilitiesCmd.java b/api/src/org/apache/cloudstack/api/command/user/config/ListCapabilitiesCmd.java index d47645b..e6696e1 100644 --- a/api/src/org/apache/cloudstack/api/command/user/config/ListCapabilitiesCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/config/ListCapabilitiesCmd.java @@ -53,6 +53,7 @@ public class ListCapabilitiesCmd extends BaseCmd { response.setSupportELB((String)capabilities.get("supportELB")); response.setProjectInviteRequired((Boolean)capabilities.get("projectInviteRequired")); response.setAllowUsersCreateProjects((Boolean)capabilities.get("allowusercreateprojects")); + response.setDiskOffMinSize((Long)capabilities.get("customDiskOffMinSize")); response.setDiskOffMaxSize((Long)capabilities.get("customDiskOffMaxSize")); response.setRegionSecondaryEnabled((Boolean)capabilities.get("regionSecondaryEnabled")); response.setKVMSnapshotEnabled((Boolean)capabilities.get("KVMSnapshotEnabled")); http://git-wip-us.apache.org/repos/asf/cloudstack/blob/883d7f17/api/src/org/apache/cloudstack/api/response/CapabilitiesResponse.java -- diff --git a/api/src/org/apache/cloudstack/api/response/CapabilitiesResponse.java b/api/src/org/apache/cloudstack/api/response/CapabilitiesResponse.java index c8de587..f7fdb95 100644 --- a/api/src/org/apache/cloudstack/api/response/CapabilitiesResponse.java +++ b/api/src/org/apache/cloudstack/api/response/CapabilitiesResponse.java @@ -49,6 +49,10 @@ public class CapabilitiesResponse extends BaseResponse { @Param(description = "true if regular user is allowed to create projects") private Boolean allowUsersCreateProjects; +@SerializedName(ApiConstants.CUSTOM_DISK_OFF_MIN_SIZE) +@Param(description = "minimum size that can be specified when " + "create disk from disk offering with custom size") +private Long diskOffMinSize; + @SerializedName(ApiConstants.CUSTOM_DISK_OFF_MAX_SIZE) @Param(description = "maximum size that can be specified
git commit: updated refs/heads/marvin to 34409d7
Repository: cloudstack Updated Branches: refs/heads/marvin 63d368836 -> 34409d74c Fixed few issues for CLOUDSTACK-6316,CLOUDSTACK-5674 Fixed issues related to the mentioned bugs. More information in the bug. Signed-off-by: Santhosh Edukulla Signed-off-by: SrikanteswaraRao Talluri Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/34409d74 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/34409d74 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/34409d74 Branch: refs/heads/marvin Commit: 34409d74cd62c3c8f26ca42fe02237892fc93bbd Parents: 63d3688 Author: Santhosh Edukulla Authored: Wed Apr 2 04:57:39 2014 +0530 Committer: SrikanteswaraRao Talluri Committed: Tue Apr 1 23:53:14 2014 +0530 -- .../smoke/test_deploy_vm_with_userdata.py | 3 +++ test/integration/smoke/test_iso.py | 2 +- test/integration/smoke/test_public_ip_range.py | 2 +- test/integration/smoke/test_templates.py| 2 +- test/integration/smoke/test_vm_snapshots.py | 1 - tools/marvin/marvin/lib/base.py | 2 +- tools/marvin/marvin/lib/common.py | 22 +++- 7 files changed, 14 insertions(+), 20 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/34409d74/test/integration/smoke/test_deploy_vm_with_userdata.py -- diff --git a/test/integration/smoke/test_deploy_vm_with_userdata.py b/test/integration/smoke/test_deploy_vm_with_userdata.py index c1410fb..aec6334 100644 --- a/test/integration/smoke/test_deploy_vm_with_userdata.py +++ b/test/integration/smoke/test_deploy_vm_with_userdata.py @@ -67,6 +67,9 @@ class TestDeployVmWithUserData(cloudstackTestCase): user_data = ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(2500)) cls.services["virtual_machine"]["userdata"] = user_data +def setup(self): +self.hypervisor = self.testClient.getHypervisorInfo() + @attr(tags=["simulator", "devcloud", "basic", "advanced", "post"]) def test_deployvm_userdata_post(self): """Test userdata as POST, size > 2k http://git-wip-us.apache.org/repos/asf/cloudstack/blob/34409d74/test/integration/smoke/test_iso.py -- diff --git a/test/integration/smoke/test_iso.py b/test/integration/smoke/test_iso.py index b3c3181..37990b7 100644 --- a/test/integration/smoke/test_iso.py +++ b/test/integration/smoke/test_iso.py @@ -143,7 +143,7 @@ class TestISO(cloudstackTestCase): cls.services = testClient.getParsedTestDataConfig() # Get Zone, Domain and templates -cls.domain = get_domain(cls.apiclient, cls.testClient.getZoneForTests()) +cls.domain = get_domain(cls.apiclient) cls.zone = get_zone(cls.apiclient, cls.testClient.getZoneForTests()) cls.services["domainid"] = cls.domain.id http://git-wip-us.apache.org/repos/asf/cloudstack/blob/34409d74/test/integration/smoke/test_public_ip_range.py -- diff --git a/test/integration/smoke/test_public_ip_range.py b/test/integration/smoke/test_public_ip_range.py index 50b0c9b..ca3c83b 100644 --- a/test/integration/smoke/test_public_ip_range.py +++ b/test/integration/smoke/test_public_ip_range.py @@ -31,7 +31,7 @@ class TestDedicatePublicIPRange(cloudstackTestCase): @classmethod def setUpClass(cls): cls.testClient = super(TestDedicatePublicIPRange, cls).getClsTestClient() - cls.apivlient = cls.testClient.getApiClient() + cls.apiclient = cls.testClient.getApiClient() cls.services = cls.testClient.getParsedTestDataConfig() # Get Zone, Domain cls.domain = get_domain(cls.apiclient) http://git-wip-us.apache.org/repos/asf/cloudstack/blob/34409d74/test/integration/smoke/test_templates.py -- diff --git a/test/integration/smoke/test_templates.py b/test/integration/smoke/test_templates.py index b25359b..54b0a83 100644 --- a/test/integration/smoke/test_templates.py +++ b/test/integration/smoke/test_templates.py @@ -231,7 +231,7 @@ class TestTemplates(cloudstackTestCase): cls.services = testClient.getParsedTestDataConfig() # Get Zone, Domain and templates -cls.domain = get_domain(cls.apiclient, cls.getZoneForTests()) +cls.domain = get_domain(cls.apiclient) cls.zone = get_zone(cls.apiclient, cls.testClient.getZoneForTests()) cls.services['mode'] = cls.zone.networktype #populate second zone id for iso copy http://git-wip-us.apache.org/repos/asf/cloudstack/blob/34409d74/test/integration
[1/2] Add 4.4 UI resources files on Transifex
Repository: cloudstack Updated Branches: refs/heads/4.4 eb86ed60b -> 685d66490 http://git-wip-us.apache.org/repos/asf/cloudstack/blob/685d6649/tools/transifex/.tx/config -- diff --git a/tools/transifex/.tx/config b/tools/transifex/.tx/config index 5e83db3..a2c1e26 100644 --- a/tools/transifex/.tx/config +++ b/tools/transifex/.tx/config @@ -15,23 +15,14 @@ source_lang = en [CloudStack_UI.42xmessagesproperties] file_filter = translations/CloudStack_UI.42xmessagesproperties/.properties -source_file = work-dir/messages.properties source_lang = en -trans.ar = work-dir/messages_ar.properties -trans.ca = work-dir/messages_ca.properties -trans.de_DE = work-dir/messages_de_DE.properties -trans.es = work-dir/messages_es.properties -trans.fr_FR = work-dir/messages_fr_FR.properties -trans.it_IT = work-dir/messages_it_IT.properties -trans.ja = work-dir/messages_ja.properties -trans.ko_KR = work-dir/messages_ko_KR.properties -trans.nb_NO = work-dir/messages_nb_NO.properties -trans.pt_BR = work-dir/messages_pt_BR.properties -trans.ru_RU = work-dir/messages_ru_RU.properties -trans.zh_CN = work-dir/messages_zh_CN.properties [CloudStack_UI.43xmessagesproperties] -source_file = work-dir/messages.properties +file_filter = translations/CloudStack_UI.43xmessagesproperties/.properties +source_lang = en + +[CloudStack_UI.44xmessagesproperties] +file_filter = translations/CloudStack_UI.44xmessagesproperties/.properties source_lang = en trans.ar = work-dir/messages_ar.properties trans.ca = work-dir/messages_ca.properties
git commit: updated refs/heads/master to 6aef044
Repository: cloudstack Updated Branches: refs/heads/master 883d7f17f -> 6aef044c1 Update Transifex config file (add 4.4 resources config) Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/6aef044c Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/6aef044c Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/6aef044c Branch: refs/heads/master Commit: 6aef044c17d8f4e7b6766b666904178a893bc571 Parents: 883d7f1 Author: Milamber Authored: Tue Apr 1 19:44:07 2014 +0100 Committer: Milamber Committed: Tue Apr 1 19:44:07 2014 +0100 -- tools/transifex/.tx/config | 39 +++ 1 file changed, 11 insertions(+), 28 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/6aef044c/tools/transifex/.tx/config -- diff --git a/tools/transifex/.tx/config b/tools/transifex/.tx/config index 5e83db3..0732d9c 100644 --- a/tools/transifex/.tx/config +++ b/tools/transifex/.tx/config @@ -4,47 +4,30 @@ host = https://www.transifex.com [CloudStack_UI.2-2messagesproperties] file_filter = translations/CloudStack_UI.2-2messagesproperties/.properties source_lang = en +type = PROPERTIES [CloudStack_UI.30xmessagesproperties] file_filter = translations/CloudStack_UI.30xmessagesproperties/.properties source_lang = en +type = PROPERTIES [CloudStack_UI.41xmessageproperties] file_filter = translations/CloudStack_UI.41xmessageproperties/.properties source_lang = en +type = UNICODEPROPERTIES [CloudStack_UI.42xmessagesproperties] file_filter = translations/CloudStack_UI.42xmessagesproperties/.properties -source_file = work-dir/messages.properties source_lang = en -trans.ar = work-dir/messages_ar.properties -trans.ca = work-dir/messages_ca.properties -trans.de_DE = work-dir/messages_de_DE.properties -trans.es = work-dir/messages_es.properties -trans.fr_FR = work-dir/messages_fr_FR.properties -trans.it_IT = work-dir/messages_it_IT.properties -trans.ja = work-dir/messages_ja.properties -trans.ko_KR = work-dir/messages_ko_KR.properties -trans.nb_NO = work-dir/messages_nb_NO.properties -trans.pt_BR = work-dir/messages_pt_BR.properties -trans.ru_RU = work-dir/messages_ru_RU.properties -trans.zh_CN = work-dir/messages_zh_CN.properties +type = UNICODEPROPERTIES [CloudStack_UI.43xmessagesproperties] -source_file = work-dir/messages.properties +file_filter = translations/CloudStack_UI.43xmessagesproperties/.properties source_lang = en -trans.ar = work-dir/messages_ar.properties -trans.ca = work-dir/messages_ca.properties -trans.de_DE = work-dir/messages_de_DE.properties -trans.es = work-dir/messages_es.properties -trans.fr_FR = work-dir/messages_fr_FR.properties -trans.it_IT = work-dir/messages_it_IT.properties -trans.ja_JP = work-dir/messages_ja_JP.properties -trans.ko_KR = work-dir/messages_ko_KR.properties -trans.nb_NO = work-dir/messages_nb_NO.properties -trans.nl_NL = work-dir/messages_nl_NL.properties -trans.pl = work-dir/messages_pl.properties -trans.pt_BR = work-dir/messages_pt_BR.properties -trans.ru_RU = work-dir/messages_ru_RU.properties -trans.zh_CN = work-dir/messages_zh_CN.properties +type = UNICODEPROPERTIES + +[CloudStack_UI.44xmessagesproperties] +file_filter = translations/CloudStack_UI.44xmessagesproperties/.properties +source_lang = en +type = UNICODEPROPERTIES
[1/2] git commit: updated refs/heads/4.4 to b917184
Repository: cloudstack Updated Branches: refs/heads/4.4 685d66490 -> b917184fd SecurityChecker can accept multiple ControlledEntity Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/9962cf17 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/9962cf17 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/9962cf17 Branch: refs/heads/4.4 Commit: 9962cf1706f2b006c4c9daaea07960d2ba6c110c Parents: 685d664 Author: Prachi Damle Authored: Tue Apr 1 11:25:23 2014 -0700 Committer: Prachi Damle Committed: Tue Apr 1 12:06:13 2014 -0700 -- .../apache/cloudstack/acl/SecurityChecker.java | 20 server/src/com/cloud/acl/DomainChecker.java | 13 +++ .../cloud/api/dispatch/ParamProcessWorker.java | 109 +-- .../iam/RoleBasedAPIAccessChecker.java | 1 - .../iam/RoleBasedEntityAccessChecker.java | 66 +-- 5 files changed, 186 insertions(+), 23 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9962cf17/api/src/org/apache/cloudstack/acl/SecurityChecker.java -- diff --git a/api/src/org/apache/cloudstack/acl/SecurityChecker.java b/api/src/org/apache/cloudstack/acl/SecurityChecker.java index 8ca34d0..0b29fb4 100644 --- a/api/src/org/apache/cloudstack/acl/SecurityChecker.java +++ b/api/src/org/apache/cloudstack/acl/SecurityChecker.java @@ -100,6 +100,26 @@ public interface SecurityChecker extends Adapter { */ boolean checkAccess(Account caller, ControlledEntity entity, AccessType accessType, String action) throws PermissionDeniedException; +/** + * Checks if the account can access multiple objects. + * + * @param caller + *account to check against. + * @param entities + *objects that the account is trying to access. + * @param accessType + *TODO + * @param action + *name of the API + * @return true if access allowed. false if this adapter cannot provide + * permission. + * @throws PermissionDeniedException + * if this adapter is suppose to authenticate ownership and the + * check failed. + */ +boolean checkAccess(Account caller, AccessType accessType, String action, ControlledEntity... entities) +throws PermissionDeniedException; + /** * Checks if the user belongs to an account that can access the object. http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9962cf17/server/src/com/cloud/acl/DomainChecker.java -- diff --git a/server/src/com/cloud/acl/DomainChecker.java b/server/src/com/cloud/acl/DomainChecker.java index ea129f7..14976cc 100755 --- a/server/src/com/cloud/acl/DomainChecker.java +++ b/server/src/com/cloud/acl/DomainChecker.java @@ -341,4 +341,17 @@ public class DomainChecker extends AdapterBase implements SecurityChecker { } return checkAccess(caller, entity, accessType); } + +@Override +public boolean checkAccess(Account caller, AccessType accessType, String action, ControlledEntity... entities) +throws PermissionDeniedException { + +// returns true only if access to all entities is granted +for (ControlledEntity entity : entities) { +if (!checkAccess(caller, entity, accessType, action)) { +return false; +} +} +return true; +} } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/9962cf17/server/src/com/cloud/api/dispatch/ParamProcessWorker.java -- diff --git a/server/src/com/cloud/api/dispatch/ParamProcessWorker.java b/server/src/com/cloud/api/dispatch/ParamProcessWorker.java index e9bdd8b..3f1b47f 100644 --- a/server/src/com/cloud/api/dispatch/ParamProcessWorker.java +++ b/server/src/com/cloud/api/dispatch/ParamProcessWorker.java @@ -37,8 +37,10 @@ import org.apache.log4j.Logger; import org.apache.cloudstack.acl.ControlledEntity; import org.apache.cloudstack.acl.InfrastructureEntity; +import org.apache.cloudstack.acl.SecurityChecker; import org.apache.cloudstack.acl.SecurityChecker.AccessType; import org.apache.cloudstack.api.ACL; +import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiErrorCode; import org.apache.cloudstack.api.BaseAsyncCreateCmd; import org.apache.cloudstack.api.BaseCmd; @@ -54,7 +56,12 @@ import org.apache.cloudstack.api.command.user.event.DeleteEventsCmd; import org.apache.cloudstack.api.command.user.event.ListEventsCmd; import org.apache.cloudstack.context.CallContext; +import com.cloud.configuration.ConfigurationManager; +
[2/2] git commit: updated refs/heads/4.4 to b917184
Adding SecurityChecker list for the ParamProcessWorker Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/b917184f Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/b917184f Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/b917184f Branch: refs/heads/4.4 Commit: b917184fdaeef3b796d731727f306b59abd05773 Parents: 9962cf1 Author: Prachi Damle Authored: Tue Apr 1 12:05:41 2014 -0700 Committer: Prachi Damle Committed: Tue Apr 1 12:06:16 2014 -0700 -- api/src/org/apache/cloudstack/acl/SecurityChecker.java | 2 +- .../META-INF/cloudstack/core/spring-server-core-misc-context.xml | 4 +++- server/src/com/cloud/api/dispatch/ParamProcessWorker.java| 2 -- 3 files changed, 4 insertions(+), 4 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b917184f/api/src/org/apache/cloudstack/acl/SecurityChecker.java -- diff --git a/api/src/org/apache/cloudstack/acl/SecurityChecker.java b/api/src/org/apache/cloudstack/acl/SecurityChecker.java index 0b29fb4..4170871 100644 --- a/api/src/org/apache/cloudstack/acl/SecurityChecker.java +++ b/api/src/org/apache/cloudstack/acl/SecurityChecker.java @@ -102,7 +102,7 @@ public interface SecurityChecker extends Adapter { /** * Checks if the account can access multiple objects. - * + * * @param caller *account to check against. * @param entities http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b917184f/server/resources/META-INF/cloudstack/core/spring-server-core-misc-context.xml -- diff --git a/server/resources/META-INF/cloudstack/core/spring-server-core-misc-context.xml b/server/resources/META-INF/cloudstack/core/spring-server-core-misc-context.xml index 91401e3..479dc9c 100644 --- a/server/resources/META-INF/cloudstack/core/spring-server-core-misc-context.xml +++ b/server/resources/META-INF/cloudstack/core/spring-server-core-misc-context.xml @@ -52,7 +52,9 @@ - + + + http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b917184f/server/src/com/cloud/api/dispatch/ParamProcessWorker.java -- diff --git a/server/src/com/cloud/api/dispatch/ParamProcessWorker.java b/server/src/com/cloud/api/dispatch/ParamProcessWorker.java index 3f1b47f..21932f7 100644 --- a/server/src/com/cloud/api/dispatch/ParamProcessWorker.java +++ b/server/src/com/cloud/api/dispatch/ParamProcessWorker.java @@ -42,7 +42,6 @@ import org.apache.cloudstack.acl.SecurityChecker.AccessType; import org.apache.cloudstack.api.ACL; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiErrorCode; -import org.apache.cloudstack.api.BaseAsyncCreateCmd; import org.apache.cloudstack.api.BaseCmd; import org.apache.cloudstack.api.EntityReference; import org.apache.cloudstack.api.InternalIdentity; @@ -56,7 +55,6 @@ import org.apache.cloudstack.api.command.user.event.DeleteEventsCmd; import org.apache.cloudstack.api.command.user.event.ListEventsCmd; import org.apache.cloudstack.context.CallContext; -import com.cloud.configuration.ConfigurationManager; import com.cloud.dc.DataCenter; import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.PermissionDeniedException;
git commit: updated refs/heads/4.4 to a8a0e84
Repository: cloudstack Updated Branches: refs/heads/4.4 b917184fd -> a8a0e84b8 Split the Root Admin policy to allow 'ListEntry' access for listing resources for scope 'all', but 'UseEntry' access only within Account scope Same with Domain Admin policy Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/a8a0e84b Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/a8a0e84b Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/a8a0e84b Branch: refs/heads/4.4 Commit: a8a0e84b88b2635d3603a663925f1571c3d86b9d Parents: b917184 Author: Prachi Damle Authored: Tue Apr 1 16:01:36 2014 -0700 Committer: Prachi Damle Committed: Tue Apr 1 16:01:36 2014 -0700 -- .../iam/RoleBasedAPIAccessChecker.java | 49 +--- 1 file changed, 32 insertions(+), 17 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/a8a0e84b/services/iam/plugin/src/org/apache/cloudstack/iam/RoleBasedAPIAccessChecker.java -- diff --git a/services/iam/plugin/src/org/apache/cloudstack/iam/RoleBasedAPIAccessChecker.java b/services/iam/plugin/src/org/apache/cloudstack/iam/RoleBasedAPIAccessChecker.java index 9964d48..b7f672c 100644 --- a/services/iam/plugin/src/org/apache/cloudstack/iam/RoleBasedAPIAccessChecker.java +++ b/services/iam/plugin/src/org/apache/cloudstack/iam/RoleBasedAPIAccessChecker.java @@ -218,23 +218,6 @@ public class RoleBasedAPIAccessChecker extends AdapterBase implements APIChecker private void addDefaultAclPolicyPermission(String apiName, Class cmdClass, RoleType role) { AccessType accessType = null; Class[] entityTypes = null; -if (cmdClass != null) { -BaseCmd cmdObj; -try { -cmdObj = (BaseCmd) cmdClass.newInstance(); -if (cmdObj instanceof BaseListCmd) { -accessType = AccessType.UseEntry; -} else if (!(cmdObj instanceof BaseAsyncCreateCmd)) { -accessType = AccessType.OperateEntry; -} -} catch (Exception e) { -throw new CloudRuntimeException(String.format( -"%s is claimed as an API command, but it cannot be instantiated", cmdClass.getName())); - } - -APICommand at = cmdClass.getAnnotation(APICommand.class); -entityTypes = at.entityType(); -} PermissionScope permissionScope = PermissionScope.ACCOUNT; Long policyId = getDefaultPolicyId(role); @@ -256,15 +239,47 @@ public class RoleBasedAPIAccessChecker extends AdapterBase implements APIChecker break; } +boolean addAccountScopedUseEntry = false; + +if (cmdClass != null) { +BaseCmd cmdObj; +try { +cmdObj = (BaseCmd) cmdClass.newInstance(); +if (cmdObj instanceof BaseListCmd) { +if (permissionScope == PermissionScope.ACCOUNT) { +accessType = AccessType.UseEntry; +} else { +accessType = AccessType.ListEntry; +addAccountScopedUseEntry = true; +} +} else if (!(cmdObj instanceof BaseAsyncCreateCmd)) { +accessType = AccessType.OperateEntry; +} +} catch (Exception e) { +throw new CloudRuntimeException(String.format( +"%s is claimed as an API command, but it cannot be instantiated", cmdClass.getName())); +} + +APICommand at = cmdClass.getAnnotation(APICommand.class); +entityTypes = at.entityType(); +} if (entityTypes == null || entityTypes.length == 0) { _iamSrv.addIAMPermissionToIAMPolicy(policyId, null, permissionScope.toString(), new Long(IAMPolicyPermission.PERMISSION_SCOPE_ID_CURRENT_CALLER), apiName, (accessType == null) ? null : accessType.toString(), Permission.Allow, false); +if (addAccountScopedUseEntry) { +_iamSrv.addIAMPermissionToIAMPolicy(policyId, null, PermissionScope.ACCOUNT.toString(), new Long( + IAMPolicyPermission.PERMISSION_SCOPE_ID_CURRENT_CALLER), apiName, AccessType.UseEntry.toString(), Permission.Allow, false); +} } else { for (Class entityType : entityTypes) { _iamSrv.addIAMPermissionToIAMPolicy(policyId, entityType.getSimpleName(), permissionScope.toString(), new Long( IAMPolicyPermission.PERMISSION_SCOPE_ID_CURRENT_CALLER), apiName, (accessType == null) ? null : accessTyp
[2/4] Remove usage of sameOwner checkAccess invocation, and convert to OperateEntry IAM check.
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c89eb733/server/src/org/apache/cloudstack/region/gslb/GlobalLoadBalancingRulesServiceImpl.java -- diff --git a/server/src/org/apache/cloudstack/region/gslb/GlobalLoadBalancingRulesServiceImpl.java b/server/src/org/apache/cloudstack/region/gslb/GlobalLoadBalancingRulesServiceImpl.java index c84fea2..516b3ab 100644 --- a/server/src/org/apache/cloudstack/region/gslb/GlobalLoadBalancingRulesServiceImpl.java +++ b/server/src/org/apache/cloudstack/region/gslb/GlobalLoadBalancingRulesServiceImpl.java @@ -183,7 +183,7 @@ public class GlobalLoadBalancingRulesServiceImpl implements GlobalLoadBalancingR throw new InvalidParameterValueException("Invalid global load balancer rule id: " + gslbRuleId); } -_accountMgr.checkAccess(caller, SecurityChecker.AccessType.OperateEntry, true, gslbRule); +_accountMgr.checkAccess(caller, SecurityChecker.AccessType.OperateEntry, gslbRule); if (gslbRule.getState() == GlobalLoadBalancerRule.State.Revoke) { throw new InvalidParameterValueException("global load balancer rule id: " + gslbRule.getUuid() + " is in revoked state"); @@ -224,7 +224,7 @@ public class GlobalLoadBalancingRulesServiceImpl implements GlobalLoadBalancingR throw new InvalidParameterValueException("Specified load balancer rule ID does not exist."); } -_accountMgr.checkAccess(caller, null, true, loadBalancer); +_accountMgr.checkAccess(caller, null, loadBalancer); if (gslbRule.getAccountId() != loadBalancer.getAccountId()) { throw new InvalidParameterValueException("GSLB rule and load balancer rule does not belong to same account"); @@ -319,7 +319,7 @@ public class GlobalLoadBalancingRulesServiceImpl implements GlobalLoadBalancingR throw new InvalidParameterValueException("Invalid global load balancer rule id: " + gslbRuleId); } -_accountMgr.checkAccess(caller, SecurityChecker.AccessType.OperateEntry, true, gslbRule); +_accountMgr.checkAccess(caller, SecurityChecker.AccessType.OperateEntry, gslbRule); if (gslbRule.getState() == GlobalLoadBalancerRule.State.Revoke) { throw new InvalidParameterValueException("global load balancer rule id: " + gslbRuleId + " is already in revoked state"); @@ -346,7 +346,7 @@ public class GlobalLoadBalancingRulesServiceImpl implements GlobalLoadBalancingR throw new InvalidParameterValueException("Specified load balancer rule ID does not exist."); } -_accountMgr.checkAccess(caller, null, true, loadBalancer); +_accountMgr.checkAccess(caller, null, loadBalancer); } for (GlobalLoadBalancerLbRuleMapVO gslbLbMapVo : gslbLbMapVos) { @@ -445,7 +445,7 @@ public class GlobalLoadBalancingRulesServiceImpl implements GlobalLoadBalancingR throw new InvalidParameterValueException("Invalid global load balancer rule id: " + gslbRuleId); } -_accountMgr.checkAccess(caller, SecurityChecker.AccessType.OperateEntry, true, gslbRule); +_accountMgr.checkAccess(caller, SecurityChecker.AccessType.OperateEntry, gslbRule); if (gslbRule.getState() == com.cloud.region.ha.GlobalLoadBalancerRule.State.Staged) { if (s_logger.isDebugEnabled()) { @@ -523,7 +523,7 @@ public class GlobalLoadBalancingRulesServiceImpl implements GlobalLoadBalancingR CallContext ctx = CallContext.current(); Account caller = ctx.getCallingAccount(); -_accountMgr.checkAccess(caller, SecurityChecker.AccessType.OperateEntry, true, gslbRule); +_accountMgr.checkAccess(caller, SecurityChecker.AccessType.OperateEntry, gslbRule); if (algorithm != null && !GlobalLoadBalancerRule.Algorithm.isValidAlgorithm(algorithm)) { throw new InvalidParameterValueException("Invalid Algorithm: " + algorithm); @@ -583,7 +583,7 @@ public class GlobalLoadBalancingRulesServiceImpl implements GlobalLoadBalancingR if (gslbRule == null) { throw new InvalidParameterValueException("Invalid gslb rule id specified"); } -_accountMgr.checkAccess(caller, org.apache.cloudstack.acl.SecurityChecker.AccessType.UseEntry, false, gslbRule); +_accountMgr.checkAccess(caller, org.apache.cloudstack.acl.SecurityChecker.AccessType.UseEntry, gslbRule); response.add(gslbRule); return response; http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c89eb733/server/test/com/cloud/event/EventControlsUnitTest.java -- diff --git a/server/test/com/cloud/event/EventControlsUnitTest.java b/server/test/com/cloud/event/EventControlsUnitTest.java index 91dc921..0dc5742 100644 --- a/serve
[1/4] git commit: updated refs/heads/4.4 to 4367d14
Repository: cloudstack Updated Branches: refs/heads/4.4 a8a0e84b8 -> 4367d1406 Change AccountManagerImpl.checkAccess to invoke SecurityChecker interface that takes multiple controlled entities. Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/4367d140 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/4367d140 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/4367d140 Branch: refs/heads/4.4 Commit: 4367d1406b1d956d2a8d867af83ca4707b30193e Parents: c89eb73 Author: Min Chen Authored: Tue Apr 1 17:31:29 2014 -0700 Committer: Min Chen Committed: Tue Apr 1 17:31:56 2014 -0700 -- api/src/com/cloud/user/AccountService.java | 14 +-- .../apache/cloudstack/acl/SecurityChecker.java | 6 +- .../command/user/nat/DisableStaticNatCmd.java | 5 +- .../command/user/nat/EnableStaticNatCmd.java| 3 +- .../command/user/volume/AttachVolumeCmd.java| 4 +- .../contrail/management/MockAccountManager.java | 11 -- server/src/com/cloud/acl/DomainChecker.java | 12 ++ server/src/com/cloud/api/ApiDispatcher.java | 22 .../cloud/api/dispatch/ParamProcessWorker.java | 16 ++- .../com/cloud/storage/VolumeApiServiceImpl.java | 1 + .../src/com/cloud/user/AccountManagerImpl.java | 115 --- .../com/cloud/user/MockAccountManagerImpl.java | 9 -- .../iam/RoleBasedEntityAccessChecker.java | 19 +-- 13 files changed, 71 insertions(+), 166 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4367d140/api/src/com/cloud/user/AccountService.java -- diff --git a/api/src/com/cloud/user/AccountService.java b/api/src/com/cloud/user/AccountService.java index 4965270..4b5dc36 100755 --- a/api/src/com/cloud/user/AccountService.java +++ b/api/src/com/cloud/user/AccountService.java @@ -104,20 +104,14 @@ public interface AccountService { RoleType getRoleType(Account account); -void checkAccess(Account account, Domain domain) throws PermissionDeniedException; +void checkAccess(Account caller, Domain domain) throws PermissionDeniedException; -void checkAccess(Account account, AccessType accessType, ControlledEntity... entities) throws PermissionDeniedException; +void checkAccess(Account caller, AccessType accessType, ControlledEntity... entities) throws PermissionDeniedException; -void checkAccess(Account account, AccessType accessType, String apiName, ControlledEntity... entities) throws PermissionDeniedException; - -// TODO: the following two interfaces will be deprecated by the above two counterparts when securityChecker implementation is in place -void checkAccess(Account account, AccessType accessType, boolean sameOwner, ControlledEntity... entities) throws PermissionDeniedException; - -void checkAccess(Account account, AccessType accessType, boolean sameOwner, String apiName, -ControlledEntity... entities) throws PermissionDeniedException; +void checkAccess(Account caller, AccessType accessType, String apiName, ControlledEntity... entities) throws PermissionDeniedException; //TO be implemented, to check accessibility for an entity owned by domain -void checkAccess(Account account, AccessType accessType, boolean sameOwner, PartOf... entities) throws PermissionDeniedException; +void checkAccess(Account caller, AccessType accessType, boolean sameOwner, PartOf... entities) throws PermissionDeniedException; Long finalyzeAccountId(String accountName, Long domainId, Long projectId, boolean enabledOnly); } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4367d140/api/src/org/apache/cloudstack/acl/SecurityChecker.java -- diff --git a/api/src/org/apache/cloudstack/acl/SecurityChecker.java b/api/src/org/apache/cloudstack/acl/SecurityChecker.java index 4170871..79366bd 100644 --- a/api/src/org/apache/cloudstack/acl/SecurityChecker.java +++ b/api/src/org/apache/cloudstack/acl/SecurityChecker.java @@ -31,10 +31,10 @@ import com.cloud.utils.component.Adapter; public interface SecurityChecker extends Adapter { public enum AccessType { -ModifyProject, -OperateEntry, +ListEntry, UseEntry, -ListEntry +OperateEntry, +ModifyProject, } /** http://git-wip-us.apache.org/repos/asf/cloudstack/blob/4367d140/api/src/org/apache/cloudstack/api/command/user/nat/DisableStaticNatCmd.java -- diff --git a/api/src/org/apache/cloudstack/api/command/user/nat/DisableStaticNatCmd.java b/api/src/org/apache/cloudstack/api/command/user/nat/DisableStaticNatCmd.java index 1df77ec..
git commit: updated refs/heads/4.4 to 43ce832
Repository: cloudstack Updated Branches: refs/heads/4.4 4367d1406 -> 43ce83202 Fix for: doAccessChecks fail due to the wrong ClassCast toArray() Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/43ce8320 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/43ce8320 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/43ce8320 Branch: refs/heads/4.4 Commit: 43ce83202d9370f49c389fd06e7d258df057dc9d Parents: 4367d14 Author: Prachi Damle Authored: Tue Apr 1 17:33:45 2014 -0700 Committer: Prachi Damle Committed: Tue Apr 1 17:42:07 2014 -0700 -- server/src/com/cloud/api/dispatch/ParamProcessWorker.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/43ce8320/server/src/com/cloud/api/dispatch/ParamProcessWorker.java -- diff --git a/server/src/com/cloud/api/dispatch/ParamProcessWorker.java b/server/src/com/cloud/api/dispatch/ParamProcessWorker.java index 3c0c66b..4f55664 100644 --- a/server/src/com/cloud/api/dispatch/ParamProcessWorker.java +++ b/server/src/com/cloud/api/dispatch/ParamProcessWorker.java @@ -263,8 +263,8 @@ public class ParamProcessWorker implements DispatchWorker { } if (!entitiesToOperate.isEmpty()) { -_accountMgr.checkAccess(owner, AccessType.OperateEntry, apiName, -(ControlledEntity[]) entitiesToOperate.toArray()); +_accountMgr.checkAccess(caller, AccessType.OperateEntry, false, apiName, +entitiesToOperate.toArray(new ControlledEntity[entitiesToOperate.size()])); } }