daisycloud-core/test/tempest/daisy_tempest/v1/test_cinder_volume.py

314 lines
15 KiB
Python
Executable File

from daisy_tempest import base
from nose.tools import set_trace
from daisyclient import exc as client_exc
import copy
from fake.logical_network_fake import FakeLogicNetwork as logical_fake
class DaisyCinderVolumeTest(base.BaseDaisyTest):
@classmethod
def resource_setup(cls):
super(DaisyCinderVolumeTest, cls).resource_setup()
cls.fake = logical_fake()
cls.cinder_volume_add_meta = \
{'disk_array': [{'management_ips': '10.43.177.1,10.43.177.2',
'pools': 'pool1,pool2',
'user_name': 'rooot',
'user_pwd': 'pwd',
'volume_driver': 'KS3200_FCSAN',
'volume_type': 'KISP-1'}]}
cls.cinder_volume_update_meta = {'management_ips': '10.43.177.3',
'pools': 'pool3',
'user_name': 'rooot',
'user_pwd': 'pwd',
'volume_driver': 'KS3200_FCSAN',
'volume_type': 'KISP-1'}
cls.cluster_meta = \
{'description': 'desc',
'logic_networks': [{'name': 'external1',
'physnet_name': 'phynet2',
'segmentation_id': 200,
'segmentation_type': 'vlan',
'shared': True,
'subnets': [{'cidr': '192.168.1.0/24',
'dns_nameservers': ['8.8.4.4',
'8.8.8.8'],
'floating_ranges':
[['192.168.1.2',
'192.168.1.200']],
'gateway': '192.168.1.1',
'name': 'subnet2'},
{'cidr': '172.16.1.0/24',
'dns_nameservers': ['8.8.4.4',
'8.8.8.8'],
'floating_ranges':
[['172.16.1.130',
'172.16.1.150'],
['172.16.1.151',
'172.16.1.254']],
'gateway': '172.16.1.1',
'name': 'subnet10'}],
'type': 'external'},
{'name': 'internal2',
'physnet_name': 'phynet1',
'segmentation_id': 1023,
'segmentation_type': 'vxlan',
'shared': True,
'subnets': [{'cidr': '192.168.2.0/24',
'dns_nameservers': ['8.8.4.4',
'8.8.8.8'],
'floating_ranges':
[['192.168.2.130',
'192.168.2.254']],
'gateway': '192.168.2.1',
'name': 'subnet123'}],
'type': 'internal'},
{'name': 'internal1',
'physnet_name': 'phynet3',
'segmentation_id': '777',
'segmentation_type': 'vlan',
'shared': False,
'subnets': [{'cidr': '192.168.31.0/24',
'dns_nameservers':
['8.8.4.4',
'8.8.8.8'],
'floating_ranges':
[['192.168.31.130',
'192.168.31.254']],
'gateway': '192.168.31.1',
'name': 'subnet3'},
{'cidr': '192.168.4.0/24',
'dns_nameservers': ['8.8.4.4',
'8.8.8.8'],
'floating_ranges':
[['192.168.4.130',
'192.168.4.254']],
'gateway': '192.168.4.1',
'name': 'subnet4'}],
'type': 'internal'}],
'name': 'test',
'networking_parameters': {'base_mac': 'fa:16:3e:00:00:00',
'gre_id_range': [2, 2000],
'net_l23_provider': 'ovs',
'public_vip': '172.16.0.3',
'segmentation_type': 'vlan,vxlan',
'vlan_range': [2, 4094],
'vni_range': [1000, 1030]},
'networks': [],
'nodes': [],
'routers': [{'description': 'router1',
'external_logic_network': 'external1',
'name': 'router1',
'subnets': ['subnet4', 'subnet3', 'subnet2']},
{'description': 'router2',
'external_logic_network': 'external1',
'name': 'router2',
'subnets': ['subnet10']}]}
cls.role_meta = {'name': 'test_role',
'description': 'test'}
def private_network_add(self):
# add network plane
private_network_params = self.fake.fake_private_network_parameters()
private_network_params1 = self.fake.fake_private_network_parameters1()
private_network_params2 = self.fake.fake_private_network_parameters2()
private_network_params = self.add_network(**private_network_params)
private_network_params1 = self.add_network(**private_network_params1)
private_network_params2 = self.add_network(**private_network_params2)
self.private_network_id = private_network_params.id
self.private_network_id1 = private_network_params1.id
self.private_network_id2 = private_network_params2.id
self.cluster_meta['networks'] = [self.private_network_id,
self.private_network_id1,
self.private_network_id2]
return copy.deepcopy(private_network_params)
def private_network_delete(self):
set_trace()
self.delete_network(self.private_network_id)
self.delete_network(self.private_network_id1)
self.delete_network(self.private_network_id2)
def test_add_cinder_volume(self):
self.private_network_add()
cluster_info = self.add_cluster(**self.cluster_meta)
self.role_meta['cluster_id'] = cluster_info.id
role = self.add_role(**self.role_meta)
self.cinder_volume_add_meta['role_id'] = role.id
cinder_volume_info = self.add_cinder_volume(
**self.cinder_volume_add_meta)
self.assertEqual('10.43.177.1,10.43.177.2',
cinder_volume_info.management_ips,
"test_add_cinder_volume failed")
self.delete_cinder_volume(cinder_volume_info.id)
def test_add_same_cinder_volume(self):
self.private_network_add()
cluster_info = self.add_cluster(**self.cluster_meta)
self.role_meta['cluster_id'] = cluster_info.id
role = self.add_role(**self.role_meta)
self.cinder_volume_add_meta['role_id'] = role.id
self.cinder_volume_add_meta['role_id']
cinder_volume_info = self.add_cinder_volume(
**self.cinder_volume_add_meta)
self.assertRaisesMessage(client_exc.HTTPBadRequest,
"400 Bad Request: cinder_volume array disks "
"conflict with cinder_volume %s (HTTP 400)" %
cinder_volume_info.id,
self.add_cinder_volume,
**self.cinder_volume_add_meta)
self.delete_cinder_volume(cinder_volume_info.id)
def test_add_cinder_volume_with_wrong_role(self):
self.cinder_volume_add_meta['role_id'] = \
'af47d81c-7ae4-4148-a801-b4a5c6a52074'
self.assertRaisesMessage(client_exc.HTTPNotFound,
"404 Not Found: The resource could not be "
"found.: Role with identifier "
"af47d81c-7ae4-4148-a801-b4a5c6a52074 not "
"found (HTTP 404)",
self.add_cinder_volume,
**self.cinder_volume_add_meta)
del self.cinder_volume_add_meta['role_id']
def test_add_cinder_volume_with_wrong_driver(self):
self.private_network_add()
cluster_info = self.add_cluster(**self.cluster_meta)
self.role_meta['cluster_id'] = cluster_info.id
role = self.add_role(**self.role_meta)
self.cinder_volume_add_meta['role_id'] = role.id
self.cinder_volume_add_meta['disk_array'][0]['volume_driver'] = \
'test_driver'
self.assertRaisesMessage(client_exc.HTTPBadRequest,
"400 Bad Request: volume_driver test_driver "
"is not supported (HTTP 400)",
self.add_cinder_volume,
**self.cinder_volume_add_meta)
del self.cinder_volume_add_meta['role_id']
self.cinder_volume_add_meta['disk_array'][0]['volume_driver'] = \
'KS3200_FCSAN'
def test_update_cinder_volume(self):
self.private_network_add()
cluster_info = self.add_cluster(**self.cluster_meta)
self.role_meta['cluster_id'] = cluster_info.id
role = self.add_role(**self.role_meta)
self.cinder_volume_add_meta['role_id'] = role.id
cinder_volume_info = self.add_cinder_volume(
**self.cinder_volume_add_meta)
cinder_volume_update_info = self.update_cinder_volume(
cinder_volume_info.id,
**self.cinder_volume_update_meta)
self.assertEqual('10.43.177.3',
cinder_volume_update_info.management_ips,
"test_update_cinder_volume failed")
self.delete_cinder_volume(cinder_volume_info.id)
def test_update_to_same_cinder_volume(self):
self.private_network_add()
cluster_info = self.add_cluster(**self.cluster_meta)
self.role_meta['cluster_id'] = cluster_info.id
role = self.add_role(**self.role_meta)
self.cinder_volume_add_meta['role_id'] = role.id
cinder_volume_info = self.add_cinder_volume(
**self.cinder_volume_add_meta)
cinder_volume_add_meta1 = {'disk_array':
[{'management_ips':
'10.43.177.3,10.43.177.4',
'pools': 'pool1,pool2',
'user_name': 'rooot',
'user_pwd': 'pwd',
'volume_driver': 'KS3200_FCSAN',
'volume_type': 'KISP-1'}]}
cinder_volume_add_meta1['role_id'] = role.id
cinder_volume_info1 = self.add_cinder_volume(
**cinder_volume_add_meta1)
update_meta = {'management_ips': '10.43.177.1,10.43.177.2'}
self.assertRaisesMessage(
client_exc.HTTPBadRequest,
"400 Bad Request: cinder_volume array disks conflict with "
"cinder_volume %s (HTTP 400)" % cinder_volume_info.id,
self.update_cinder_volume,
cinder_volume_info1.id,
**update_meta)
self.delete_cinder_volume(cinder_volume_info.id)
self.delete_cinder_volume(cinder_volume_info1.id)
def test_update_cinder_volume_with_wrong_driver(self):
self.private_network_add()
cluster_info = self.add_cluster(**self.cluster_meta)
self.role_meta['cluster_id'] = cluster_info.id
role = self.add_role(**self.role_meta)
self.cinder_volume_add_meta['role_id'] = role.id
cinder_volume_info = self.add_cinder_volume(
**self.cinder_volume_add_meta)
update_meta = {'volume_driver': 'test_driver'}
self.assertRaisesMessage(
client_exc.HTTPBadRequest,
"400 Bad Request: volume_driver test_driver is not supported"
" (HTTP 400)",
self.update_cinder_volume, cinder_volume_info.id, **update_meta)
self.delete_cinder_volume(cinder_volume_info.id)
def test_list_cinder_volume(self):
self.private_network_add()
cluster_info = self.add_cluster(**self.cluster_meta)
self.role_meta['cluster_id'] = cluster_info.id
role = self.add_role(**self.role_meta)
self.cinder_volume_add_meta['role_id'] = role.id
cinder_volume_info = self.add_cinder_volume(
**self.cinder_volume_add_meta)
cinder_volume_meta = {}
cinder_volume_flag = False
list_cinder_volume = self.list_cinder_volume(**cinder_volume_meta)
query_cinder_volume_list = [volume_info for volume_info
in list_cinder_volume]
if query_cinder_volume_list:
cinder_volume_flag = True
self.assertTrue(cinder_volume_flag, "test_list_cinder_volume error")
self.delete_cinder_volume(cinder_volume_info.id)
def test_get_cinder_volume_detail(self):
self.private_network_add()
cluster_info = self.add_cluster(**self.cluster_meta)
self.role_meta['cluster_id'] = cluster_info.id
role = self.add_role(**self.role_meta)
self.cinder_volume_add_meta['role_id'] = role.id
cinder_volume_info = self.add_cinder_volume(
**self.cinder_volume_add_meta)
cinder_volume_detail_info = self.get_cinder_volume_detail(
cinder_volume_info.id)
self.assertEqual("10.43.177.1,10.43.177.2",
cinder_volume_detail_info.management_ips,
"test_get_cinder_volume_detail failed")
self.delete_cinder_volume(cinder_volume_info.id)
def tearDown(self):
if self.cinder_volume_add_meta.get('role_id', None):
self.delete_role(self.cinder_volume_add_meta['role_id'])
del self.cinder_volume_add_meta['role_id']
if self.role_meta.get('cluster_id', None):
self.delete_cluster(self.role_meta['cluster_id'])
del self.role_meta['cluster_id']
super(DaisyCinderVolumeTest, self).tearDown()