Add compute node tests

This commit is contained in:
Ade Lee 2017-08-23 21:44:47 -04:00
parent c35289f567
commit 41a36611c1
5 changed files with 69 additions and 43 deletions

View File

@ -34,6 +34,9 @@ NovajoinGroup = [
cfg.ListOpt('tripleo_controllers',
default=['overcloud-controller-0'],
help='List of overcloud controller short host names'),
cfg.ListOpt('tripleo_computes',
default=['overcloud-novacompute-0'],
help='List of overcloud compute short host names'),
cfg.StrOpt('tripleo_undercloud',
default='undercloud',
help='Undercloud short host name'

View File

@ -113,17 +113,18 @@ class NovajoinScenarioTest(manager.ScenarioTest):
subhost = '{host}.{network}.{domain}'.format(
host=host, network=network, domain=self.ipa_client.domain
)
service_principal = self.get_service_principal(subhost, service)
result = self.ipa_client.find_service(service_principal)
self.assertFalse(result['count'] > 0)
service_principal = self.get_service_principal(
subhost, service)
result = self.ipa_client.find_service(service_principal)
self.assertFalse(result['count'] > 0)
def verify_managed_services_deleted(self, services):
for principal in services:
service = principal.split('/', 1)[0]
host = principal.split('/', 1)[1]
service_principal = self.get_service_principal(host, service)
result = self.ipa_client.find_service(service_principal)
self.assertFalse(result['count'] > 0)
service_principal = self.get_service_principal(host, service)
result = self.ipa_client.find_service(service_principal)
self.assertFalse(result['count'] > 0)
def get_service_cert(self, service, host):
service_principal = self.get_service_principal(host, service)
@ -214,6 +215,11 @@ class NovajoinScenarioTest(manager.ScenarioTest):
return href.split('/')[-1]
return None
def get_overcloud_server_ip(self, host):
host_id = self.get_server_id(host)
host_data = self.servers_client.show_server(host_id)['server']
return self.get_server_ip(host_data)
def get_haproxy_cfg(self, user, controller_ip):
try:
# check containerized location first
@ -232,6 +238,10 @@ class NovajoinScenarioTest(manager.ScenarioTest):
cmd = 'sudo hiera -c /etc/puppet/hiera.yaml rabbitmq::ssl_port'
return self.execute_on_controller(user, controller_ip, cmd).rstrip()
def get_libvirt_port(self, user, compute_ip):
# TODO(alee) Get from hiera nova::migration::libvirt::listen_address
return "16514"
def execute_on_controller(self, user, hostip, target_cmd):
keypair = '/home/stack/.ssh/id_rsa'
cmd = ['ssh', '-i', keypair,

View File

@ -47,7 +47,7 @@ class ServerTest(novajoin_manager.NovajoinScenarioTest):
def _create_flavor(self, flavor_name):
specs = {"capabilities:boot_option": "local",
"capabilities:profile": "compute"}
flvid = data_utils.rand_int_id(start=1000)
flv_id = data_utils.rand_int_id(start=1000)
ram = 4096
vcpus = 1
disk = 40
@ -55,10 +55,10 @@ class ServerTest(novajoin_manager.NovajoinScenarioTest):
ram=ram,
vcpus=vcpus,
disk=disk,
id=flvid)['flavor']
self.flavors_client.set_flavor_extra_spec(flvid,
id=flv_id)['flavor']
self.flavors_client.set_flavor_extra_spec(flv_id,
**specs)
return flvid
return flv_id
def _create_image(self, name, properties={}):
container_format = 'bare'
@ -69,9 +69,8 @@ class ServerTest(novajoin_manager.NovajoinScenarioTest):
properties=properties)
return image_id
def _verify_host_and_services_are_enrolled(self, server_name,
server_id, keypair):
def _verify_host_and_services_are_enrolled(
self, server_name, server_id, keypair):
self.verify_host_registered_with_ipa(server_name)
self.verify_host_has_keytab(server_name)
@ -87,8 +86,6 @@ class ServerTest(novajoin_manager.NovajoinScenarioTest):
)
# Verify managed services are created
metadata = self.servers_client.list_server_metadata(server_id
)['metadata']
self.managed_services = [metadata[key] for key in metadata.keys()
if key.startswith('managed_service_')]
self.verify_managed_services(self.managed_services)
@ -99,10 +96,7 @@ class ServerTest(novajoin_manager.NovajoinScenarioTest):
ip = self.get_server_ip(server_details)
self.verify_host_is_ipaclient(ip, USER, keypair)
def _verify_host_and_services_are_not_enrolled(self,
server_name,
server_id):
def _verify_host_and_services_are_not_enrolled(self, server_name):
# Verify host and associated compact and managed services
# are no longer registered with ipa
self.verify_host_not_registered_with_ipa(server_name)
@ -135,8 +129,7 @@ class ServerTest(novajoin_manager.NovajoinScenarioTest):
server['id'],
keypair)
self.servers_client.delete_server(server['id'])
self._verify_host_and_services_are_not_enrolled(instance_name,
server['id'])
self._verify_host_and_services_are_not_enrolled(instance_name)
def test_enrollment_metadata_in_image(self):
@ -165,5 +158,4 @@ class ServerTest(novajoin_manager.NovajoinScenarioTest):
self._verify_host_and_services_are_enrolled(instance_name,
server['id'], keypair)
self.servers_client.delete_server(server['id'])
self._verify_host_and_services_are_not_enrolled(instance_name,
server['id'])
self._verify_host_and_services_are_not_enrolled(instance_name)

View File

@ -34,6 +34,11 @@ CONTROLLER_CERT_TAGS = [
'haproxy-storage_mgmt-cert'
]
COMPUTE_CERT_TAGS = [
'libvirt-client-cert',
'libvirt-server-cert'
]
class TripleOTest(novajoin_manager.NovajoinScenarioTest):
@ -64,12 +69,15 @@ class TripleOTest(novajoin_manager.NovajoinScenarioTest):
def test_hosts_are_registered(self):
hosts = list(CONF.novajoin.tripleo_controllers)
hosts.append(CONF.novajoin.tripleo_undercloud)
hosts.extend(CONF.novajoin.tripleo_computes)
for host in hosts:
self.verify_host_registered_with_ipa(host)
self.verify_host_has_keytab(host)
def test_verify_compact_services_created(self):
for host in CONF.novajoin.tripleo_controllers:
hosts = list(CONF.novajoin.tripleo_controllers)
hosts.extend(CONF.novajoin.tripleo_computes)
for host in hosts:
metadata = self.servers_client.list_server_metadata(
self.get_server_id(host))['metadata']
services = metadata['compact_services']
@ -92,12 +100,9 @@ class TripleOTest(novajoin_manager.NovajoinScenarioTest):
services=managed_services,
verify_certs=True)
def test_verify_service_certs_are_tracked(self):
def test_verify_controller_certs_are_tracked(self):
for host in CONF.novajoin.tripleo_controllers:
server_id = self.get_server_id(host)
server = self.servers_client.show_server(server_id)['server']
server_ip = self.get_server_ip(server)
server_ip = self.get_overcloud_server_ip(host)
for tag in CONTROLLER_CERT_TAGS:
self.verify_overcloud_cert_tracked(
server_ip,
@ -105,11 +110,21 @@ class TripleOTest(novajoin_manager.NovajoinScenarioTest):
tag
)
def test_overcloud_is_ipaclient(self):
for host in CONF.novajoin.tripleo_controllers:
server_id = self.get_server_id(host)
server = self.servers_client.show_server(server_id)['server']
server_ip = self.get_server_ip(server)
def test_verify_compute_certs_are_tracked(self):
for host in CONF.novajoin.tripleo_computes:
server_ip = self.get_overcloud_server_ip(host)
for tag in COMPUTE_CERT_TAGS:
self.verify_overcloud_cert_tracked(
server_ip,
'heat-admin',
tag
)
def test_overcloud_hosts_are_ipaclients(self):
hosts = list(CONF.novajoin.tripleo_controllers)
hosts.extend(CONF.novajoin.tripleo_computes)
for host in hosts:
server_ip = self.get_overcloud_server_ip(host)
self.verify_overcloud_host_is_ipaclient(
server_ip,
'heat-admin'

View File

@ -77,11 +77,7 @@ class TripleOTLSTest(novajoin_manager.NovajoinScenarioTest):
def test_haproxy_tls_connections(self):
for controller in CONF.novajoin.tripleo_controllers:
controller_id = self.get_server_id(controller)
controller_data = self.servers_client.show_server(
controller_id)['server']
controller_ip = self.get_server_ip(controller_data)
controller_ip = self.get_overcloud_server_ip(controller)
haproxy = self.get_haproxy_cfg('heat-admin', controller_ip)
services = self.parse_haproxy_cfg(haproxy)
@ -111,10 +107,7 @@ class TripleOTLSTest(novajoin_manager.NovajoinScenarioTest):
def test_rabbitmq_tls_connection(self):
for controller in CONF.novajoin.tripleo_controllers:
controller_id = self.get_server_id(controller)
controller_data = self.servers_client.show_server(
controller_id)['server']
controller_ip = self.get_server_ip(controller_data)
controller_ip = self.get_overcloud_server_ip(controller)
rabbitmq_host = self.get_rabbitmq_host('heat-admin', controller_ip)
rabbitmq_port = self.get_rabbitmq_port('heat-admin', controller_ip)
self.verify_overcloud_tls_connection(
@ -123,3 +116,16 @@ class TripleOTLSTest(novajoin_manager.NovajoinScenarioTest):
hostport="{host}:{port}".format(host=rabbitmq_host,
port=rabbitmq_port)
)
def test_libvirt_tls_connection(self):
for compute in CONF.novajoin.tripleo_computes:
compute_ip = self.get_overcloud_server_ip(compute)
libvirt_port = self.get_libvirt_port('heat-admin', compute_ip)
# TODO(alee) Is the host correct?
self.verify_overcloud_tls_connection(
controller_ip=compute_ip,
user='heat-admin',
hostport="{host}:{port}".format(host=compute_ip,
port=libvirt_port)
)