summaryrefslogtreecommitdiffstats
path: root/ipaserver/plugins/location.py
diff options
context:
space:
mode:
authorMartin Basti <mbasti@redhat.com>2016-06-15 16:52:08 +0200
committerMartin Basti <mbasti@redhat.com>2016-06-17 18:05:03 +0200
commit8dde1201ed9b0ca839ffe7421be7efd04b666e11 (patch)
tree23ee5359e75f18a4a603c4526bd31723eb896128 /ipaserver/plugins/location.py
parent1997733cdf60bbd5fee8a5286d567580fa4e0198 (diff)
downloadfreeipa-8dde1201ed9b0ca839ffe7421be7efd04b666e11.tar.gz
freeipa-8dde1201ed9b0ca839ffe7421be7efd04b666e11.tar.xz
freeipa-8dde1201ed9b0ca839ffe7421be7efd04b666e11.zip
DNS Locations: show warning if there is no DNS servers in location
DNS servers must be in each location, otherwise DNS location without DNS server assigned will not work. https://fedorahosted.org/freeipa/ticket/2008 Reviewed-By: Petr Spacek <pspacek@redhat.com>
Diffstat (limited to 'ipaserver/plugins/location.py')
-rw-r--r--ipaserver/plugins/location.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/ipaserver/plugins/location.py b/ipaserver/plugins/location.py
index be7291bb2..073c1f957 100644
--- a/ipaserver/plugins/location.py
+++ b/ipaserver/plugins/location.py
@@ -14,6 +14,7 @@ from ipalib import (
Str,
DNSNameParam,
output,
+ messages
)
from ipalib.plugable import Registry
from ipaserver.plugins.baseldap import (
@@ -180,6 +181,7 @@ class location_show(LDAPRetrieve):
def execute(self, *keys, **options):
result = super(location_show, self).execute(*keys, **options)
+ dns_server_in_loc = False
servers_additional_info = {}
if not options.get('raw'):
servers_name = []
@@ -197,6 +199,13 @@ class location_show(LDAPRetrieve):
'ipalocationweight', [u'100']),
}
+ if not dns_server_in_loc:
+ show_result = self.api.Command.server_show(
+ server['cn'][0])['result']
+ if 'DNS server' in show_result.get(
+ 'enabled_role_servrole', ()):
+ dns_server_in_loc = True
+
for server in servers_additional_info.values():
server['location_relative_weight'] = [
u'{:.1f}%'.format(
@@ -206,4 +215,9 @@ class location_show(LDAPRetrieve):
result['result']['servers_server'] = servers_name
result['servers'] = servers_additional_info
+ if not dns_server_in_loc and servers_additional_info:
+ self.add_message(messages.LocationWithoutDNSServer(
+ location=keys[0]
+ ))
+
return result