Merge "Test compact_services metadata"

This commit is contained in:
Zuul 2018-12-19 20:50:58 +00:00 committed by Gerrit Code Review
commit 59b91ceebf
2 changed files with 45 additions and 6 deletions

View File

@ -482,13 +482,17 @@ class IPAClient(IPANovaJoinBase):
return True
return False
def host_get_services(self, service_host):
"""Return list of services this host manages"""
LOG.debug('Checking host ' + service_host + ' services')
params = []
service_args = {'man_by_host': six.text_type(service_host)}
result = self._call_ipa('service_find', *params, **service_args)
return [service['krbprincipalname'][0] for service in result['result']]
def host_has_services(self, service_host):
"""Return True if this host manages any services"""
LOG.debug('Checking if host ' + service_host + ' has services')
params = []
service_args = {'man_by_host': service_host}
result = self._call_ipa('service_find', *params, **service_args)
return result['count'] > 0
return len(self.host_get_services(service_host)) > 0
def find_host(self, hostname):
"""Return True if this host exists"""

View File

@ -99,11 +99,33 @@ class TestEnrollment(testtools.TestCase):
self._server = self.conn.compute.create_server(
name=TEST_INSTANCE, image_id=image.id, flavor_id=flavor.id,
networks=[{"uuid": network.id}], key_name=self._key.name,
metadata = {"ipa_enroll": "True"})
metadata = {
"ipa_enroll": "True",
'compact_service_http': json.dumps(['test1', 'test2']),
})
server = self.conn.compute.wait_for_server(self._server)
return server
def _update_server_compact_service_new(self):
self.conn.compute.set_server_metadata(
self._server,
compact_service_rabbitmq=json.dumps(['test3', 'test4']))
def _update_server_compact_service_old(self):
self.conn.compute.delete_server_metadata(self._server, [
'compact_service_http', 'compact_service_rabbitmq'])
self.conn.compute.set_server_metadata(
self._server,
compact_services=json.dumps({'http': ['test5', 'test6']}))
@loopingcall.RetryDecorator(50, 5, 5, (AssertionError,))
def _check_server_compact_services(self, service_list):
services = ['\\'.join([s.split('/', 1)[0].lower(), s.split('.', 2)[1]])
for s in self.ipaclient.host_get_services(
TEST_INSTANCE + EXAMPLE_DOMAIN)]
self.assertSetEqual(set(services), set(service_list))
def _associate_floating_ip(self):
self.conn.compute.add_floating_ip_to_server(
self._server, self._ip.floating_ip_address)
@ -182,6 +204,19 @@ class TestEnrollment(testtools.TestCase):
self._check_ipa_client_install()
self._check_server_compact_services(['http\\test1', 'http\\test2'])
self._update_server_compact_service_new()
self._check_server_compact_services([
'http\\test1', 'http\\test2',
'rabbitmq\\test3', 'rabbitmq\\test4'])
self._update_server_compact_service_old()
# NOTE(xek), novajoin doesn't support removing of services via update
self._check_server_compact_services([
'http\\test1', 'http\\test2', 'http\\test5', 'http\\test6',
'rabbitmq\\test3', 'rabbitmq\\test4'])
self._delete_server()
self._check_ipa_client_deleted()
self._check_ip_record_removed()