Add devstack services
Added support for following service: * mysql * rabbitmq * nova-api * glance-api * nova-compute * nova-scheduler Changed devstack verify command to check connectivity to screen. Change-Id: I75ed016fc44137cb6bf29d111c3748b68bda504e
This commit is contained in:
@@ -33,7 +33,48 @@ class DevStackNode(node_collection.NodeCollection):
|
||||
class KeystoneService(service.ServiceAsProcess):
|
||||
SERVICE_NAME = 'keystone'
|
||||
GREP = '[k]eystone-'
|
||||
RESTART_CMD = 'service apache2 restart'
|
||||
RESTART_CMD = 'sudo service apache2 restart'
|
||||
|
||||
|
||||
class MySQLService(service.ServiceAsProcess):
|
||||
SERVICE_NAME = 'mysql'
|
||||
GREP = '[m]ysqld'
|
||||
RESTART_CMD = 'sudo service mysql restart'
|
||||
PORT = ('tcp', 3307)
|
||||
|
||||
|
||||
class RabbitMQService(service.ServiceAsProcess):
|
||||
SERVICE_NAME = 'rabbitmq'
|
||||
GREP = '[r]abbitmq-server'
|
||||
RESTART_CMD = 'sudo service rabbitmq-server restart'
|
||||
|
||||
|
||||
class NovaAPIService(service.ServiceAsProcess):
|
||||
SERVICE_NAME = 'nova-api'
|
||||
GREP = '[n]ova-api'
|
||||
RESTART_CMD = ("screen -S stack -p n-api -X "
|
||||
"stuff $'\\003'$'\\033[A'$(printf \\\\r)")
|
||||
|
||||
|
||||
class GlanceAPIService(service.ServiceAsProcess):
|
||||
SERVICE_NAME = 'glance-api'
|
||||
GREP = '[g]lance-api'
|
||||
RESTART_CMD = ("screen -S stack -p g-api -X "
|
||||
"stuff $'\\003'$'\\033[A'$(printf \\\\r)")
|
||||
|
||||
|
||||
class NovaComputeService(service.ServiceAsProcess):
|
||||
SERVICE_NAME = 'nova-compute'
|
||||
GREP = '[n]ova-compute'
|
||||
RESTART_CMD = ("screen -S stack -p n-cpu -X "
|
||||
"stuff $'\\003'$'\\033[A'$(printf \\\\r)")
|
||||
|
||||
|
||||
class NovaSchedulerService(service.ServiceAsProcess):
|
||||
SERVICE_NAME = 'nova-scheduler'
|
||||
GREP = '[n]ova-scheduler'
|
||||
RESTART_CMD = ("screen -S stack -p n-sch -X "
|
||||
"stuff $'\\003'$'\\033[A'$(printf \\\\r)")
|
||||
|
||||
|
||||
class DevStackManagement(cloud_management.CloudManagement):
|
||||
@@ -42,6 +83,12 @@ class DevStackManagement(cloud_management.CloudManagement):
|
||||
NODE_CLS = DevStackNode
|
||||
SERVICE_NAME_TO_CLASS = {
|
||||
'keystone': KeystoneService,
|
||||
'mysql': MySQLService,
|
||||
'rabbitmq': RabbitMQService,
|
||||
'nova-api': NovaAPIService,
|
||||
'glance-api': GlanceAPIService,
|
||||
'nova-compute': NovaComputeService,
|
||||
'nova-scheduler': NovaSchedulerService,
|
||||
}
|
||||
SUPPORTED_SERVICES = list(SERVICE_NAME_TO_CLASS.keys())
|
||||
SUPPORTED_NETWORKS = ['all-in-one']
|
||||
@@ -67,12 +114,12 @@ class DevStackManagement(cloud_management.CloudManagement):
|
||||
|
||||
self.cloud_executor = executor.AnsibleRunner(
|
||||
remote_user=self.username, private_key_file=self.private_key_file,
|
||||
become=True)
|
||||
become=False)
|
||||
self.host = None
|
||||
|
||||
def verify(self):
|
||||
"""Verify connection to the cloud."""
|
||||
task = {'command': 'hostname'}
|
||||
task = {'shell': 'screen -ls | grep stack'}
|
||||
hostname = self.execute_on_cloud(
|
||||
[self.address], task)[0].payload['stdout']
|
||||
LOG.debug('DevStack hostname: %s', hostname)
|
||||
|
||||
@@ -63,7 +63,7 @@ class DevStackManagementTestCase(test.TestCase):
|
||||
devstack_management.verify()
|
||||
|
||||
ansible_runner_inst.execute.assert_called_once_with(
|
||||
['10.0.0.2'], {'command': 'hostname'})
|
||||
['10.0.0.2'], {'shell': 'screen -ls | grep stack'})
|
||||
|
||||
@mock.patch('os_faults.ansible.executor.AnsibleRunner', autospec=True)
|
||||
def test_execute_on_cloud(self, mock_ansible_runner):
|
||||
@@ -100,7 +100,7 @@ class DevStackManagementTestCase(test.TestCase):
|
||||
nodes.hosts)
|
||||
|
||||
@mock.patch('os_faults.ansible.executor.AnsibleRunner', autospec=True)
|
||||
@ddt.data(('keystone', devstack.KeystoneService))
|
||||
@ddt.data(*devstack.DevStackManagement.SERVICE_NAME_TO_CLASS.items())
|
||||
@ddt.unpack
|
||||
def test_get_service_nodes(self, service_name, service_cls,
|
||||
mock_ansible_runner):
|
||||
@@ -137,7 +137,7 @@ class DevStackServiceTestCase(test.TestCase):
|
||||
self.conf = {'address': '10.0.0.2', 'username': 'root'}
|
||||
|
||||
@mock.patch('os_faults.ansible.executor.AnsibleRunner', autospec=True)
|
||||
@ddt.data(('keystone', devstack.KeystoneService))
|
||||
@ddt.data(*devstack.DevStackManagement.SERVICE_NAME_TO_CLASS.items())
|
||||
@ddt.unpack
|
||||
def test_restart(self, service_name, service_cls, mock_ansible_runner):
|
||||
ansible_runner_inst = mock_ansible_runner.return_value
|
||||
|
||||
Reference in New Issue
Block a user