blob: c2c075da65a92f6b9fb49d18dcbeae9030580024 [file] [log] [blame]
# 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.
""" Tests for API listing of storage pools with different filters
"""
# Import Local Modules
from marvin.cloudstackTestCase import cloudstackTestCase
from marvin.codes import FAILED
from marvin.lib.base import (StoragePool)
from marvin.lib.common import (get_domain, list_accounts,
list_zones, list_clusters, list_hosts)
# Import System modules
from nose.plugins.attrib import attr
_multiprocess_shared_ = True
class TestListStoragePools(cloudstackTestCase):
@classmethod
def setUpClass(cls):
testClient = super(TestListStoragePools, cls).getClsTestClient()
cls.apiclient = testClient.getApiClient()
cls.services = testClient.getParsedTestDataConfig()
cls.hypervisor = testClient.getHypervisorInfo()
cls.domain = get_domain(cls.apiclient)
cls.zones = list_zones(cls.apiclient)
cls.zone = cls.zones[0]
cls.clusters = list_clusters(cls.apiclient)
cls.cluster = cls.clusters[0]
cls.hosts = list_hosts(cls.apiclient)
cls.account = list_accounts(cls.apiclient, name="admin")[0]
cls.storage_pools = StoragePool.list(cls.apiclient)
@classmethod
def tearDownClass(cls):
super(TestListStoragePools, cls).tearDownClass()
@attr(tags=["advanced", "advancedns", "smoke", "basic"], required_hardware="false")
def test_01_list_storage_pools_clusterid_filter(self):
""" Test list storage pools by clusterid filter
"""
storage_pools = StoragePool.list(
self.apiclient,
clusterid=self.cluster.id
)
self.assertTrue(
isinstance(storage_pools, list),
"Storage pool response type should be a list"
)
self.assertGreater(
len(storage_pools),
0,
"Length of storage pools should greater than 0"
)
for storage_pool in storage_pools:
self.assertEqual(
storage_pool.clusterid,
self.cluster.id,
"Cluster id should be equal to the cluster id passed in the filter"
)
storage_pools = StoragePool.list(
self.apiclient,
clusterid="-1"
)
self.assertIsNone(
storage_pools,
"Response should be empty when invalid cluster id is passed"
)
@attr(tags=["advanced", "advancedns", "smoke", "basic"], required_hardware="false")
def test_02_list_storage_pools_id_filter(self):
""" Test list storage pools by id filter
"""
valid_id = self.storage_pools[0].id
storage_pools = StoragePool.list(
self.apiclient,
id=valid_id
)
self.assertTrue(
isinstance(storage_pools, list),
"Storage pool response type should be a list"
)
self.assertEqual(
len(storage_pools),
1,
"Length of storage pools should be equal to 1"
)
self.assertEqual(
storage_pools[0].id,
valid_id,
"Cluster id should be equal to the cluster id passed in the filter"
)
storage_pools = StoragePool.list(
self.apiclient,
id="-1"
)
self.assertIsNone(
storage_pools,
"Response should be empty when invalid cluster id is passed"
)
@attr(tags=["advanced", "advancedns", "smoke", "basic"], required_hardware="false")
def test_03_list_storage_pools_ipaddress_filter(self):
""" Test list storage pools by ipaddress filter
"""
valid_ipaddress = self.storage_pools[0].ipaddress
storage_pools = StoragePool.list(
self.apiclient,
ipaddress=valid_ipaddress
)
self.assertTrue(
isinstance(storage_pools, list),
"Storage pool response type should be a list"
)
self.assertGreater(
len(storage_pools),
0,
"Length of storage pools should greater than 0"
)
for storage_pool in storage_pools:
self.assertEqual(
storage_pool.ipaddress,
valid_ipaddress,
"IP address should be equal to the ip address passed in the filter"
)
storage_pools = StoragePool.list(
self.apiclient,
ipaddress="1.1.1.1"
)
self.assertIsNone(
storage_pools,
"Response should be empty when invalid ip address is passed"
)
@attr(tags=["advanced", "advancedns", "smoke", "basic"], required_hardware="false")
def test_04_list_storage_pools_keyword_filter(self):
""" Test list storage pools by keyword filter
"""
valid_keyword = self.storage_pools[0].name
storage_pools = StoragePool.list(
self.apiclient,
keyword=valid_keyword
)
self.assertTrue(
isinstance(storage_pools, list),
"Storage pool response type should be a list"
)
self.assertGreater(
len(storage_pools),
0,
"Length of storage pools should greater than 0"
)
for storage_pool in storage_pools:
self.assertIn(
valid_keyword,
storage_pool.name,
"Keyword should be present in the storage pool name"
)
storage_pools = StoragePool.list(
self.apiclient,
keyword="invalid"
)
self.assertIsNone(
storage_pools,
"Response should be empty when invalid keyword is passed"
)
@attr(tags=["advanced", "advancedns", "smoke", "basic"], required_hardware="false")
def test_05_list_storage_pools_name_filter(self):
""" Test list storage pools by name filter
"""
valid_name = self.storage_pools[0].name
storage_pools = StoragePool.list(
self.apiclient,
name=valid_name
)
self.assertTrue(
isinstance(storage_pools, list),
"Storage pool response type should be a list"
)
self.assertGreater(
len(storage_pools),
0,
"Length of storage pools should greater than 0"
)
for storage_pool in storage_pools:
self.assertEqual(
storage_pool.name,
valid_name,
"Name should be equal to the name passed in the filter"
)
storage_pools = StoragePool.list(
self.apiclient,
name="invalid"
)
self.assertIsNone(
storage_pools,
"Response should be empty when invalid name is passed"
)
@attr(tags=["advanced", "advancedns", "smoke", "basic"], required_hardware="false")
def test_06_list_storage_pools_path_filter(self):
""" Test list storage pools by path filter
"""
valid_path = self.storage_pools[0].path
storage_pools = StoragePool.list(
self.apiclient,
path=valid_path
)
self.assertTrue(
isinstance(storage_pools, list),
"Storage pool response type should be a list"
)
self.assertGreater(
len(storage_pools),
0,
"Length of storage pools should greater than 0"
)
for storage_pool in storage_pools:
self.assertEqual(
storage_pool.path,
valid_path,
"Path should be equal to the path passed in the filter"
)
storage_pools = StoragePool.list(
self.apiclient,
path="invalid"
)
self.assertIsNone(
storage_pools,
"Response should be empty when invalid path is passed"
)
@attr(tags=["advanced", "advancedns", "smoke", "basic"], required_hardware="false")
def test_07_list_storage_pools_podid_filter(self):
""" Test list storage pools by podid filter
"""
storage_pools = StoragePool.list(
self.apiclient,
podid=self.cluster.podid
)
self.assertTrue(
isinstance(storage_pools, list),
"Storage pool response type should be a list"
)
self.assertGreater(
len(storage_pools),
0,
"Length of storage pools should greater than 0"
)
for storage_pool in storage_pools:
self.assertEqual(
storage_pool.podid,
self.cluster.podid,
"Pod id should be equal to the pod id passed in the filter"
)
storage_pools = StoragePool.list(
self.apiclient,
podid="-1"
)
self.assertIsNone(
storage_pools,
"Response should be empty when invalid pod id is passed"
)
@attr(tags=["advanced", "advancedns", "smoke", "basic"], required_hardware="false")
def test_08_list_storage_pools_scope_filter(self):
""" Test list storage pools by scope filter
"""
valid_scope = self.storage_pools[0].scope
storage_pools = StoragePool.list(
self.apiclient,
scope=valid_scope
)
self.assertTrue(
isinstance(storage_pools, list),
"Storage pool response type should be a list"
)
self.assertGreater(
len(storage_pools),
0,
"Length of storage pools should greater than 0"
)
for storage_pool in storage_pools:
self.assertEqual(
storage_pool.scope,
valid_scope,
"Scope should be equal to the scope passed in the filter"
)
with self.assertRaises(Exception):
storage_pools = StoragePool.list(
self.apiclient,
scope="invalid"
)
@attr(tags=["advanced", "advancedns", "smoke", "basic"], required_hardware="false")
def test_09_list_storage_pools_status_filter(self):
""" Test list storage pools by status filter
"""
valid_status = self.storage_pools[0].status
storage_pools = StoragePool.list(
self.apiclient,
status=valid_status
)
self.assertTrue(
isinstance(storage_pools, list),
"Storage pool response type should be a list"
)
self.assertGreater(
len(storage_pools),
0,
"Length of storage pools should greater than 0"
)
for storage_pool in storage_pools:
self.assertEqual(
storage_pool.status,
valid_status,
"State should be equal to the status passed in the filter"
)
with self.assertRaises(Exception):
storage_pools = StoragePool.list(
self.apiclient,
status="invalid"
)
@attr(tags=["advanced", "advancedns", "smoke", "basic"], required_hardware="false")
def test_10_list_storage_pools_zoneid_filter(self):
""" Test list storage pools by zoneid filter
"""
storage_pools = StoragePool.list(
self.apiclient,
zoneid=self.zone.id
)
self.assertTrue(
isinstance(storage_pools, list),
"Storage pool response type should be a list"
)
self.assertGreater(
len(storage_pools),
0,
"Length of storage pools should greater than 0"
)
for storage_pool in storage_pools:
self.assertEqual(
storage_pool.zoneid,
self.zone.id,
"Zone id should be equal to the zone id passed in the filter"
)
storage_pools = StoragePool.list(
self.apiclient,
zoneid="-1"
)
self.assertIsNone(
storage_pools,
"Response should be empty when invalid zone id is passed"
)
@attr(tags=["advanced", "advancedns", "smoke", "basic"], required_hardware="false")
def test_11_list_storage_pools_no_filter(self):
""" Test list storage pools with no filter
"""
storage_pools = StoragePool.list(
self.apiclient
)
self.assertTrue(
isinstance(storage_pools, list),
"Storage pool response type should be a list"
)
self.assertGreater(
len(storage_pools),
0,
"Length of storage pools should greater than 0"
)