Merge branch 'marvin'
Signed-off-by: SrikanteswaraRao Talluri <[email protected]>
Conflicts:
test/integration/component/test_dynamic_compute_offering.py
test/integration/smoke/test_deploy_vm.py
test/integration/smoke/test_disk_offerings.py
test/integration/smoke/test_volumes.py
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/d22adf94
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/d22adf94
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/d22adf94
Branch: refs/heads/master
Commit: d22adf943dea0208595952435151a2b4a6664f9a
Parents: 523913a 901d633
Author: SrikanteswaraRao Talluri <[email protected]>
Authored: Wed Apr 23 11:45:43 2014 +0530
Committer: SrikanteswaraRao Talluri <[email protected]>
Committed: Wed Apr 23 11:45:43 2014 +0530
----------------------------------------------------------------------
README.md | 84 -
.../api/test/account/testCreateAccount.py | 4 +-
setup/dev/advanced.cfg | 2 +-
setup/dev/basic.cfg | 11 +-
.../maint/test_egress_rules_host_maintenance.py | 20 +-
.../component/maint/test_high_availability.py | 26 +-
.../maint/test_host_high_availability.py | 36 +-
.../component/maint/test_multiple_ip_ranges.py | 20 +-
.../component/maint/test_redundant_router.py | 70 +-
...test_redundant_router_deployment_planning.py | 17 +-
.../test_redundant_router_network_rules.py | 17 +-
.../maint/test_vpc_host_maintenance.py | 21 +-
.../maint/test_vpc_on_host_maintenance.py | 17 +-
.../component/test_VirtualRouter_alerts.py | 22 +-
test/integration/component/test_accounts.py | 141 +-
.../component/test_add_remove_network.py | 118 +-
.../component/test_advancedsg_networks.py | 71 +-
.../component/test_affinity_groups.py | 115 +-
.../component/test_allocation_states.py | 39 +-
test/integration/component/test_asa1000v_fw.py | 18 +-
test/integration/component/test_assign_vm.py | 39 +-
test/integration/component/test_baremetal.py | 28 +-
.../component/test_base_image_updation.py | 22 +-
test/integration/component/test_blocker_bugs.py | 74 +-
.../component/test_cpu_domain_limits.py | 38 +-
test/integration/component/test_cpu_limits.py | 35 +-
.../component/test_cpu_max_limits.py | 25 +-
.../component/test_cpu_project_limits.py | 17 +-
.../component/test_custom_hostname.py | 44 +-
.../component/test_deploy_vm_userdata_reg.py | 19 +-
.../component/test_dynamic_compute_offering.py | 44 +-
.../component/test_egress_fw_rules.py | 19 +-
test/integration/component/test_egress_rules.py | 126 +-
test/integration/component/test_eip_elb.py | 22 +-
test/integration/component/test_escalations.py | 1687 ++++++++
.../component/test_explicit_dedication.py | 15 +-
test/integration/component/test_haproxy.py | 15 +-
.../component/test_implicit_planner.py | 15 +-
.../component/test_ip_reservation.py | 109 +-
test/integration/component/test_ldap.py | 6 +-
.../integration/component/test_memory_limits.py | 32 +-
.../component/test_mm_domain_limits.py | 36 +-
.../integration/component/test_mm_max_limits.py | 23 +-
.../component/test_mm_project_limits.py | 17 +-
.../component/test_multiple_ip_ranges.py | 28 +-
.../component/test_multiple_ips_per_nic.py | 68 +-
.../component/test_netscaler_configs.py | 116 +-
test/integration/component/test_netscaler_lb.py | 116 +-
.../component/test_netscaler_lb_algo.py | 106 +-
.../component/test_netscaler_lb_sticky.py | 17 +-
.../component/test_netscaler_nw_off.py | 82 +-
.../component/test_network_offering.py | 39 +-
.../component/test_non_contiguous_vlan.py | 22 +-
.../component/test_persistent_networks.py | 112 +-
test/integration/component/test_portable_ip.py | 142 +-
.../component/test_project_configs.py | 62 +-
.../component/test_project_limits.py | 35 +-
.../component/test_project_resources.py | 69 +-
.../integration/component/test_project_usage.py | 102 +-
test/integration/component/test_projects.py | 109 +-
.../component/test_recurring_snapshots.py | 16 +-
.../component/test_redundant_router_cleanups.py | 17 +-
.../component/test_redundant_router_services.py | 17 +-
.../component/test_redundant_router_upgrades.py | 17 +-
test/integration/component/test_region_vpc.py | 38 +-
test/integration/component/test_regions.py | 8 +-
.../component/test_regions_accounts.py | 8 +-
.../component/test_reset_ssh_keypair.py | 24 +-
.../component/test_resource_limits.py | 33 +-
test/integration/component/test_routers.py | 45 +-
.../component/test_security_groups.py | 59 +-
.../component/test_shared_networks.py | 17 +-
test/integration/component/test_snapshot_gc.py | 16 +-
.../component/test_snapshot_limits.py | 16 +-
test/integration/component/test_snapshots.py | 34 +-
.../component/test_snapshots_improvement.py | 26 +-
test/integration/component/test_stopped_vm.py | 99 +-
.../component/test_storage_motion.py | 15 +-
test/integration/component/test_tags.py | 34 +-
test/integration/component/test_templates.py | 31 +-
test/integration/component/test_update_vm.py | 12 +-
test/integration/component/test_usage.py | 78 +-
.../component/test_vm_passwdenabled.py | 18 +-
test/integration/component/test_vmware_drs.py | 61 +-
test/integration/component/test_volumes.py | 60 +-
test/integration/component/test_vpc.py | 49 +-
.../test_vpc_distributed_routing_offering.py | 35 +-
test/integration/component/test_vpc_network.py | 54 +-
.../component/test_vpc_network_lbrules.py | 17 +-
.../component/test_vpc_network_pfrules.py | 17 +-
.../component/test_vpc_network_staticnatrule.py | 17 +-
.../integration/component/test_vpc_offerings.py | 17 +-
test/integration/component/test_vpc_routers.py | 200 +-
.../component/test_vpc_vm_life_cycle.py | 61 +-
.../component/test_vpc_vms_deployment.py | 17 +-
test/integration/component/test_vpn_users.py | 23 +-
test/integration/smoke/test_affinity_groups.py | 85 +-
.../smoke/test_deploy_vgpu_enabled_vm.py | 18 +-
test/integration/smoke/test_deploy_vm.py | 56 +-
.../smoke/test_deploy_vm_root_resize.py | 29 +-
.../smoke/test_deploy_vm_with_userdata.py | 60 +-
...deploy_vms_with_varied_deploymentplanners.py | 56 +-
test/integration/smoke/test_disk_offerings.py | 45 +-
test/integration/smoke/test_global_settings.py | 6 +-
test/integration/smoke/test_guest_vlan_range.py | 39 +-
test/integration/smoke/test_hosts.py | 88 +-
test/integration/smoke/test_internal_lb.py | 79 +-
test/integration/smoke/test_iso.py | 125 +-
test/integration/smoke/test_loadbalance.py | 126 +-
.../smoke/test_multipleips_per_nic.py | 50 +-
test/integration/smoke/test_network.py | 230 +-
test/integration/smoke/test_network_acl.py | 74 +-
test/integration/smoke/test_nic.py | 116 +-
.../smoke/test_non_contigiousvlan.py | 4 +-
.../integration/smoke/test_over_provisioning.py | 29 +-
.../integration/smoke/test_portable_publicip.py | 110 +-
test/integration/smoke/test_primary_storage.py | 31 +-
test/integration/smoke/test_privategw_acl.py | 6 +-
test/integration/smoke/test_public_ip_range.py | 50 +-
test/integration/smoke/test_pvlan.py | 18 +-
test/integration/smoke/test_regions.py | 35 +-
.../smoke/test_reset_vm_on_reboot.py | 86 +-
test/integration/smoke/test_resource_detail.py | 95 +-
test/integration/smoke/test_routers.py | 90 +-
test/integration/smoke/test_scale_vm.py | 97 +-
.../integration/smoke/test_secondary_storage.py | 12 +-
.../integration/smoke/test_service_offerings.py | 136 +-
test/integration/smoke/test_snapshots.py | 135 +-
test/integration/smoke/test_ssvm.py | 34 +-
test/integration/smoke/test_templates.py | 175 +-
test/integration/smoke/test_vm_iam.py | 12 +-
test/integration/smoke/test_vm_life_cycle.py | 186 +-
test/integration/smoke/test_vm_snapshots.py | 106 +-
test/integration/smoke/test_volumes.py | 161 +-
test/integration/smoke/test_vpc_vpn.py | 112 +-
tools/marvin/marvin/__init__.py | 2 +-
tools/marvin/marvin/asyncJobMgr.py | 12 +-
tools/marvin/marvin/cloudstackConnection.py | 476 ++-
tools/marvin/marvin/cloudstackException.py | 19 +-
tools/marvin/marvin/cloudstackTestCase.py | 6 +-
tools/marvin/marvin/cloudstackTestClient.py | 550 ++-
tools/marvin/marvin/codegenerator.py | 15 +-
tools/marvin/marvin/codes.py | 19 +-
tools/marvin/marvin/config/__init__.py | 0
tools/marvin/marvin/config/config.cfg | 28 +-
tools/marvin/marvin/config/test_data.cfg | 410 ++
tools/marvin/marvin/config/test_data.py | 573 +++
tools/marvin/marvin/configGenerator.py | 230 +-
tools/marvin/marvin/dbConnection.py | 9 +-
tools/marvin/marvin/deployAndRun.py | 6 +-
tools/marvin/marvin/deployDataCenter.py | 1524 ++++---
tools/marvin/marvin/integration/__init__.py | 18 -
tools/marvin/marvin/integration/lib/__init__.py | 16 -
tools/marvin/marvin/integration/lib/base.py | 3898 -----------------
tools/marvin/marvin/integration/lib/common.py | 1036 -----
tools/marvin/marvin/integration/lib/utils.py | 453 --
tools/marvin/marvin/jsonHelper.py | 9 +-
tools/marvin/marvin/lib/__init__.py | 16 +
tools/marvin/marvin/lib/base.py | 3935 ++++++++++++++++++
tools/marvin/marvin/lib/common.py | 1062 +++++
tools/marvin/marvin/lib/utils.py | 498 +++
tools/marvin/marvin/marvinInit.py | 247 +-
tools/marvin/marvin/marvinLog.py | 135 +-
tools/marvin/marvin/marvinPlugin.py | 295 +-
tools/marvin/marvin/src/__init__.py | 0
tools/marvin/marvin/sshClient.py | 142 +-
tools/marvin/marvin/tcExecuteEngine.py | 10 +-
tools/marvin/marvin/testSetupSuccess.py | 1 +
tools/marvin/setup.py | 60 +-
169 files changed, 13510 insertions(+), 11109 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/d22adf94/test/integration/component/test_VirtualRouter_alerts.py
----------------------------------------------------------------------
diff --cc test/integration/component/test_VirtualRouter_alerts.py
index 4b53e3f,0000000..e6f0a82
mode 100644,000000..100644
--- a/test/integration/component/test_VirtualRouter_alerts.py
+++ b/test/integration/component/test_VirtualRouter_alerts.py
@@@ -1,244 -1,0 +1,250 @@@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+""" P1 tests for alert receiving from VR on service failure in VR
+"""
+#Import Local Modules
+import marvin
+from marvin.cloudstackTestCase import *
+from marvin.cloudstackAPI import *
- from marvin.integration.lib.utils import *
- from marvin.integration.lib.base import *
- from marvin.integration.lib.common import *
++from marvin.lib.utils import *
++from marvin.lib.base import *
++from marvin.lib.common import *
+from nose.plugins.attrib import attr
++from marvin.codes import FAILED
+import time
+
+
+_multiprocess_shared_ = True
+
+class Services:
+ """Test VM Life Cycle Services
+ """
+
+ def __init__(self):
+ self.services = {
+
+ "account": {
+ "email": "[email protected]",
+ "firstname": "Test",
+ "lastname": "User",
+ "username": "test",
+ # Random characters are appended in create account to
+ # ensure unique username generated each time
+ "password": "password",
+ },
+ "small":
+ # Create a small virtual machine instance with disk offering
+ {
+ "displayname": "testserver",
+ "username": "root", # VM creds for SSH
+ "password": "password",
+ "ssh_port": 22,
+ "hypervisor": 'XenServer',
+ "privateport": 22,
+ "publicport": 22,
+ "protocol": 'TCP',
+ },
+ "service_offerings":
+ {
+ "small":
+ {
+ # Small service offering ID to for change VM
+ # service offering from medium to small
+ "name": "SmallInstance",
+ "displaytext": "SmallInstance",
+ "cpunumber": 1,
+ "cpuspeed": 100,
+ "memory": 256,
+ },
+ "big":
+ {
+ # Big service offering ID to for change VM
+ "name": "BigInstance",
+ "displaytext": "BigInstance",
+ "cpunumber": 1,
+ "cpuspeed": 100,
+ "memory": 512,
+ }
+ },
+ #Change this
+ "template": {
+ "displaytext": "xs",
+ "name": "xs",
+ "passwordenabled": False,
+ },
+ "sleep": 60,
+ "timeout": 10,
+ #Migrate VM to hostid
+ "ostype": 'CentOS 5.3 (64-bit)',
+ # CentOS 5.3 (64-bit)
+ }
+
+
+class TestVRServiceFailureAlerting(cloudstackTestCase):
+ @classmethod
+ def setUpClass(cls):
- cls.api_client = super(TestVRServiceFailureAlerting,
cls).getClsTestClient().getApiClient()
++ cls.testClient = super(TestVRServiceFailureAlerting,
cls).getClsTestClient()
++ cls.api_client = cls.testClient.getApiClient()
+ cls.services = Services().services
+
+ # Get Zone, Domain and templates
- domain = get_domain(cls.api_client, cls.services)
- cls.zone = get_zone(cls.api_client, cls.services)
++ cls.zone = get_zone(cls.api_client, cls.testClient.getZoneForTests())
++ domain = get_domain(cls.api_client)
+ cls.services['mode'] = cls.zone.networktype
+
+ template = get_template(
+ cls.api_client,
+ cls.zone.id,
+ cls.services["ostype"]
+ )
++
++ if template == FAILED:
++ assert False, "get_template() failed to return template with
description %s" % cls.services["ostype"]
+ # Set Zones and disk offerings ??
+ cls.services["small"]["zoneid"] = cls.zone.id
+ cls.services["small"]["template"] = template.id
+
+ # Create account, service offerings, vm.
+ cls.account = Account.create(
+ cls.api_client,
+ cls.services["account"],
+ domainid=domain.id
+ )
+
+ cls.small_offering = ServiceOffering.create(
+ cls.api_client,
+ cls.services["service_offerings"]["small"]
+ )
+
+ #create a virtual machine
+ cls.virtual_machine = VirtualMachine.create(
+ cls.api_client,
+ cls.services["small"],
+ accountid=cls.account.name,
+ domainid=cls.account.domainid,
+ serviceofferingid=cls.small_offering.id,
+ mode=cls.services["mode"]
+ )
+ cls._cleanup = [
+ cls.small_offering,
+ cls.account
+ ]
+
+ @classmethod
+ def tearDownClass(cls):
+ cls.api_client = super(TestVRServiceFailureAlerting,
cls).getClsTestClient().getApiClient()
+ cleanup_resources(cls.api_client, cls._cleanup)
+ return
+
+ def setUp(self):
+ self.apiclient = self.testClient.getApiClient()
+ self.dbclient = self.testClient.getDbConnection()
++ self.hypervisor = self.testClient.getHypervisorInfo()
+ self.cleanup = []
+
+ def tearDown(self):
+ #Clean up, terminate the created ISOs
+ cleanup_resources(self.apiclient, self.cleanup)
+ return
+
+ @attr(hypervisor="xenserver")
+ @attr(tags=["advanced", "basic"])
+ def test_01_VRServiceFailureAlerting(self):
+
+
+ if self.zone.networktype == "Basic":
+ list_router_response = list_routers(
+ self.apiclient,
+ listall="true"
+ )
+ else:
+ list_router_response = list_routers(
+ self.apiclient,
+ account=self.account.name,
+ domainid=self.account.domainid
+ )
+ self.assertEqual(
+ isinstance(list_router_response, list),
+ True,
+ "Check list response returns a valid list"
+ )
+ router = list_router_response[0]
+
+ hosts = list_hosts(
+ self.apiclient,
+ zoneid=router.zoneid,
+ type='Routing',
+ state='Up',
+ id=router.hostid
+ )
+ self.assertEqual(
+ isinstance(hosts, list),
+ True,
+ "Check list host returns a valid list"
+ )
+ host = hosts[0]
+
+ self.debug("Router ID: %s, state: %s" % (router.id, router.state))
+
+ self.assertEqual(
+ router.state,
+ 'Running',
+ "Check list router response for router state"
+ )
+
+ alertSubject = "Monitoring Service on VR " + router.name
+
- if self.apiclient.hypervisor.lower() == 'vmware':
++ if self.hypervisor.lower() == 'vmware':
+ result = get_process_status(
+ self.apiclient.connection.mgtSvr,
+ 22,
+ self.apiclient.connection.user,
+ self.apiclient.connection.passwd,
+ router.linklocalip,
+ "service dnsmasq status",
- hypervisor=self.apiclient.hypervisor
++ hypervisor=self.hypervisor
+ )
+ else:
+ try:
+ host.user, host.passwd = get_host_credentials(self.config,
host.ipaddress)
+ result = get_process_status(
+ host.ipaddress,
+ 22,
+ host.user,
+ host.passwd,
+ router.linklocalip,
+ "service apache2 stop"
+ )
+ except KeyError:
+ self.skipTest("Marvin configuration has no host credentials
to check router services")
+
+ res = str(result)
+ self.debug("apache process status: %s" % res)
+
+ time.sleep(2400) #wait for 40 minutes meanwhile monitor service on VR
starts the apache service (router.alerts.check.interval default value is
30minutes)
+
+ qresultset = self.dbclient.execute(
+ "select id from alert where subject = '%s' ORDER BY id DESC LIMIT
1;" \
+ % str(alertSubject)
+ )
+ self.assertNotEqual(
+ len(qresultset),
+ 0,
+ "Check DB Query result set"
+ )
+
+ return
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/d22adf94/test/integration/component/test_dynamic_compute_offering.py
----------------------------------------------------------------------
diff --cc test/integration/component/test_dynamic_compute_offering.py
index cb21caf,1636aad..da43fdf
--- a/test/integration/component/test_dynamic_compute_offering.py
+++ b/test/integration/component/test_dynamic_compute_offering.py
@@@ -24,20 -24,9 +24,10 @@@
Feature Specifications:
https://cwiki.apache.org/confluence/display/CLOUDSTACK/Dynamic+Compute+Offering+FS
"""
from marvin.cloudstackTestCase import cloudstackTestCase
- from marvin.integration.lib.utils import (cleanup_resources,
- validateList,
- random_gen)
- from marvin.integration.lib.base import (ServiceOffering,
- VirtualMachine,
- Account,
- Resources,
- AffinityGroup,
- Host)
- from marvin.integration.lib.common import (get_domain,
- get_zone,
- get_template,
- verifyComputeOfferingCreation)
+ from marvin.lib.utils import *
+ from marvin.lib.base import *
+ from marvin.lib.common import *
+
from nose.plugins.attrib import attr
from marvin.codes import PASS, ADMIN_ACCOUNT, USER_ACCOUNT
from ddt import ddt, data
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/d22adf94/test/integration/smoke/test_deploy_vm.py
----------------------------------------------------------------------
diff --cc test/integration/smoke/test_deploy_vm.py
index f31bc11,9073a14..6a8d8e2
--- a/test/integration/smoke/test_deploy_vm.py
+++ b/test/integration/smoke/test_deploy_vm.py
@@@ -22,58 -22,18 +22,22 @@@ from marvin.cloudstackTestCase import c
#Import Integration Libraries
+ from marvin.codes import FAILED
#base - contains all resources as entities and defines create, delete, list
operations on them
- from marvin.integration.lib.base import Account, VirtualMachine,
ServiceOffering, SimulatorMock
-from marvin.lib.base import Account, VirtualMachine, ServiceOffering
++from marvin.lib.base import Account, VirtualMachine, ServiceOffering,
SimulatorMock
#utils - utility classes for common cleanup, external library wrappers etc
- from marvin.integration.lib.utils import cleanup_resources
+ from marvin.lib.utils import cleanup_resources
#common - commonly used methods for all tests are listed here
- from marvin.integration.lib.common import get_zone, get_domain, get_template
+ from marvin.lib.common import get_zone, get_domain, get_template
from nose.plugins.attrib import attr
- class TestData(object):
- """Test data object that is required to create resources
- """
- def __init__(self):
- self.testdata = {
- #data to create an account
- "account": {
- "email": "[email protected]",
- "firstname": "Test",
- "lastname": "User",
- "username": "test",
- "password": "password",
- },
- #data reqd for virtual machine creation
- "virtual_machine" : {
- "name" : "testvm",
- "displayname" : "Test VM",
- },
- #data reqd for virtual machine creation
- "virtual_machine2" : {
- "name" : "testvm2",
- "displayname" : "Test VM2",
- },
+ "virtual_machine3" : {
+ "name" : "testvm3",
+ "displayname" : "Test VM3",
+ },
- #small service offering
- "service_offering": {
- "small": {
- "name": "Small Instance",
- "displaytext": "Small Instance",
- "cpunumber": 1,
- "cpuspeed": 100,
- "memory": 256,
- },
- },
- "ostype": 'CentOS 5.3 (64-bit)',
- }
-
-
class TestDeployVM(cloudstackTestCase):
"""Test deploy a VM into a user account
"""
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/d22adf94/test/integration/smoke/test_disk_offerings.py
----------------------------------------------------------------------
diff --cc test/integration/smoke/test_disk_offerings.py
index 8c52d88,d6ef8b8..42c950b
--- a/test/integration/smoke/test_disk_offerings.py
+++ b/test/integration/smoke/test_disk_offerings.py
@@@ -27,31 -27,6 +27,18 @@@ from nose.plugins.attrib import att
_multiprocess_shared_ = True
- class Services:
- """Test Disk offerings Services
- """
-
- def __init__(self):
- self.services = {
- "off": {
- "name": "Disk offering",
- "displaytext": "Disk offering",
- "disksize": 1 # in GB
- },
+ "sparse": {
+ "name": "Sparse Type Disk offering",
+ "displaytext": "Sparse Type Disk
offering",
+ "disksize": 1, # in GB
+ "provisioningtype" : "sparse"
+ },
+ "fat": {
+ "name": "Fat Type Disk offering",
+ "displaytext": "Fat Type Disk
offering",
+ "disksize": 1, # in GB
+ "provisioningtype" : "fat"
+ }
- }
-
class TestCreateDiskOffering(cloudstackTestCase):
def setUp(self):
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/d22adf94/test/integration/smoke/test_volumes.py
----------------------------------------------------------------------
diff --cc test/integration/smoke/test_volumes.py
index aed31fb,738d3c2..127a721
--- a/test/integration/smoke/test_volumes.py
+++ b/test/integration/smoke/test_volumes.py
@@@ -34,86 -35,23 +35,33 @@@ import tempfil
_multiprocess_shared_ = True
- class Services:
- """Test Volume Services
- """
-
- def __init__(self):
- self.services = {
- "account": {
- "email": "[email protected]",
- "firstname": "Test",
- "lastname": "User",
- "username": "test",
- # Random characters are appended for
unique
- # username
- "password": "password",
- },
- "service_offering": {
- "name": "Tiny Instance",
- "displaytext": "Tiny Instance",
- "cpunumber": 1,
- "cpuspeed": 100, # in MHz
- "memory": 260 # In MBs
-
- },
- "disk_offering": {
- "displaytext": "Small",
- "name": "Small",
- "disksize": 1
- },
+ "sparse_disk_offering": {
+ "displaytext": "Sparse",
+ "name": "Sparse",
+ "provisioningtype": "sparse",
+ "disksize": 1
+ },
- 'resized_disk_offering': {
- "displaytext": "Resized",
- "name": "Resized",
- "disksize": 3
- },
- "volume_offerings": {
- 0: {
- "diskname": "TestDiskServ",
- },
- },
- "customdisksize": 1, # GBs
- "username": "root", # Creds for SSH to VM
- "password": "password",
- "ssh_port": 22,
- "diskname": "TestDiskServ",
- "hypervisor": 'KVM',
- "privateport": 22,
- "publicport": 22,
- "protocol": 'TCP',
- "ostype": 'CentOS 5.5 (64-bit)',
- "sleep": 10,
- "timeout": 600,
- }
-
-
class TestCreateVolume(cloudstackTestCase):
@classmethod
def setUpClass(cls):
- cls.api_client = super(TestCreateVolume,
cls).getClsTestClient().getApiClient()
- cls.services = Services().services
-
+ testClient = super(TestCreateVolume, cls).getClsTestClient()
+ cls.apiclient = testClient.getApiClient()
+ cls.services = testClient.getParsedTestDataConfig()
# Get Zone, Domain and templates
- cls.domain = get_domain(cls.api_client, cls.services)
- cls.zone = get_zone(cls.api_client, cls.services)
+ cls.domain = get_domain(cls.apiclient)
+ cls.zone = get_zone(cls.apiclient, testClient.getZoneForTests())
cls.services['mode'] = cls.zone.networktype
cls.disk_offering = DiskOffering.create(
- cls.api_client,
+ cls.apiclient,
cls.services["disk_offering"]
)
+ cls.sparse_disk_offering = DiskOffering.create(
+ cls.api_client,
+ cls.services["sparse_disk_offering"]
+ )
cls.custom_disk_offering = DiskOffering.create(
- cls.api_client,
+ cls.apiclient,
cls.services["disk_offering"],
custom=True
)
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/d22adf94/tools/marvin/marvin/config/config.cfg
----------------------------------------------------------------------