Add integration test for devstack cloud management driver
Change-Id: Ia69a3e28d65289c561d240476514cf0536c39868
This commit is contained in:
parent
ff78b92048
commit
51de6802f1
@ -85,6 +85,9 @@ class NodeCollection(utils.ReprMixin):
|
||||
for host in self.hosts:
|
||||
yield host
|
||||
|
||||
def __getitem__(self, item):
|
||||
return self.hosts[item]
|
||||
|
||||
def _make_instance(self, hosts):
|
||||
return self.__class__(cloud_management=self.cloud_management,
|
||||
hosts=hosts)
|
||||
|
@ -22,7 +22,7 @@ from os_faults.drivers import shared_schemas
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class DevStackNode(node_collection.NodeCollection):
|
||||
class DevStackNodeCollection(node_collection.NodeCollection):
|
||||
def connect(self, network_name):
|
||||
raise NotImplementedError
|
||||
|
||||
@ -62,7 +62,7 @@ class DevStackCloudManagement(cloud_management.CloudManagement,
|
||||
|
||||
NAME = 'devstack'
|
||||
DESCRIPTION = 'DevStack driver'
|
||||
NODE_CLS = DevStackNode
|
||||
NODE_CLS = DevStackNodeCollection
|
||||
SERVICES = {
|
||||
'cinder-api': {
|
||||
'driver': 'system_service',
|
||||
|
8
os_faults/tests/devstack/os-faults-devstack.yaml
Normal file
8
os_faults/tests/devstack/os-faults-devstack.yaml
Normal file
@ -0,0 +1,8 @@
|
||||
cloud_management:
|
||||
driver: devstack
|
||||
args:
|
||||
address: localhost
|
||||
auth:
|
||||
username: stack
|
||||
private_key_file: os_faults_key
|
||||
iface: lo
|
@ -16,11 +16,10 @@ from oslotest import base
|
||||
|
||||
import os_faults
|
||||
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class TestOSFaultsLibrary(base.BaseTestCase):
|
||||
class TestOSFaultsUniversalDriverLibrary(base.BaseTestCase):
|
||||
def test_connection_stack_user(self):
|
||||
cloud_config = {
|
||||
'cloud_management': {
|
||||
@ -46,3 +45,44 @@ class TestOSFaultsLibrary(base.BaseTestCase):
|
||||
|
||||
LOG.info('# Verify connection to the cloud')
|
||||
cloud_management.verify()
|
||||
|
||||
|
||||
class TestOSFaultsDevstackDriverLibrary(base.BaseTestCase):
|
||||
def test_connection_stack_user(self):
|
||||
address = 'localhost'
|
||||
cloud_config = {
|
||||
'cloud_management': {
|
||||
'driver': 'devstack',
|
||||
'args':
|
||||
{
|
||||
'address': address,
|
||||
'iface': 'lo',
|
||||
'auth': {
|
||||
'username': 'stack',
|
||||
'private_key_file': 'os_faults_key'
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
LOG.info('# Create connection to the cloud')
|
||||
cloud_management = os_faults.connect(cloud_config)
|
||||
self.assertIsNotNone(cloud_management)
|
||||
|
||||
LOG.info('# Verify connection to the cloud')
|
||||
cloud_management.verify()
|
||||
|
||||
nodes = cloud_management.get_nodes()
|
||||
self.assertEqual(1, len(nodes))
|
||||
self.assertEqual(address, nodes[0].ip)
|
||||
|
||||
service = cloud_management.get_service('etcd')
|
||||
self.assertIsNotNone(service)
|
||||
nodes = service.get_nodes()
|
||||
self.assertEqual(1, len(nodes))
|
||||
self.assertEqual(address, nodes[0].ip)
|
||||
|
||||
selection = nodes.pick()
|
||||
self.assertIsNotNone(selection)
|
||||
self.assertEqual(1, len(selection))
|
||||
self.assertEqual(address, selection[0].ip)
|
||||
|
@ -46,3 +46,8 @@ class TestOSInjectFaultUniversalDriver(test.TestCase):
|
||||
print('stderr', command_stderr)
|
||||
success = re.search('successfully', command_stderr)
|
||||
self.assertTrue(success)
|
||||
|
||||
|
||||
class TestOSInjectFaultDevstackDriver(TestOSInjectFaultUniversalDriver):
|
||||
CONFIG_FILE = os.path.join(os.path.dirname(__file__),
|
||||
'os-faults-devstack.yaml')
|
||||
|
@ -122,6 +122,9 @@ class NodeCollectionTestCase(test.TestCase):
|
||||
def test_iter(self):
|
||||
self.assertEqual(self.hosts, list(self.node_collection))
|
||||
|
||||
def test_getitem(self):
|
||||
self.assertEqual(self.hosts[0], self.node_collection[0])
|
||||
|
||||
def test_get_ips(self):
|
||||
self.assertEqual(['10.0.0.2', '10.0.0.3', '10.0.0.4', '10.0.0.5'],
|
||||
self.node_collection.get_ips())
|
||||
|
@ -30,7 +30,7 @@ class DevStackNodeTestCase(test.TestCase):
|
||||
self.host = node_collection.Host(
|
||||
ip='10.0.0.2', mac='09:7b:74:90:63:c1', fqdn='')
|
||||
|
||||
self.node_collection = devstack.DevStackNode(
|
||||
self.node_collection = devstack.DevStackNodeCollection(
|
||||
cloud_management=self.mock_cloud_management,
|
||||
hosts=[copy.deepcopy(self.host)])
|
||||
|
||||
@ -97,7 +97,7 @@ class DevStackManagementTestCase(test.TestCase):
|
||||
ansible_runner_inst.execute.assert_called_once_with(
|
||||
[self.host], {'command': 'cat /sys/class/net/eth0/address'})
|
||||
|
||||
self.assertIsInstance(nodes, devstack.DevStackNode)
|
||||
self.assertIsInstance(nodes, devstack.DevStackNodeCollection)
|
||||
self.assertEqual(
|
||||
[node_collection.Host(ip='10.0.0.2', mac='09:7b:74:90:63:c1',
|
||||
fqdn='')],
|
||||
|
Loading…
x
Reference in New Issue
Block a user