From 7bf3b1d546f22eeb61dce58cb69d471f834b8aac Mon Sep 17 00:00:00 2001 From: Martin Basti Date: Jun 27 2016 11:35:00 +0000 Subject: DNS Locations: optimization: use server-find to get information Because separated calls for of server-show, getting server data is quite slow. This commit replaces several server-show with one server-find command. There are future plans to improve speed of server-find that will be beneficial for DNS locations. https://fedorahosted.org/freeipa/ticket/2008 Reviewed-By: Petr Spacek --- diff --git a/ipaserver/dns_data_management.py b/ipaserver/dns_data_management.py index eac2e7d..e7f6595 100644 --- a/ipaserver/dns_data_management.py +++ b/ipaserver/dns_data_management.py @@ -78,8 +78,7 @@ class IPASystemRecords(object): """ self.__init_data() - def __get_server_attrs(self, hostname): - server_result = self.api_instance.Command.server_show(hostname)['result'] + def __get_server_attrs(self, server_result): weight = int(server_result.get('ipaserviceweight', [u'100'])[0]) location = server_result.get('ipalocation_location', [None])[0] roles = set(server_result.get('enabled_role_servrole', ())) @@ -93,11 +92,10 @@ class IPASystemRecords(object): self.servers_data = {} servers_result = self.api_instance.Command.server_find( - pkey_only=True)['result'] - servers = [s['cn'][0] for s in servers_result] - for s in servers: + no_members=False)['result'] + for s in servers_result: weight, location, roles = self.__get_server_attrs(s) - self.servers_data[s] = { + self.servers_data[s['cn'][0]] = { 'weight': weight, 'location': location, 'roles': roles,