diff options
| author | Martin Basti <mbasti@redhat.com> | 2016-06-17 14:56:57 +0200 |
|---|---|---|
| committer | Martin Basti <mbasti@redhat.com> | 2016-06-17 18:05:03 +0200 |
| commit | e82ce439c4c8a4d2f5b4ef384158de93de1644cc (patch) | |
| tree | 52497246a78fbc9b1bf9d0e36de948a29ea61982 /ipaserver/plugins | |
| parent | 88ac58a1ce0641e65bcc7934020f85ef39d8e82b (diff) | |
| download | freeipa-e82ce439c4c8a4d2f5b4ef384158de93de1644cc.tar.gz freeipa-e82ce439c4c8a4d2f5b4ef384158de93de1644cc.tar.xz freeipa-e82ce439c4c8a4d2f5b4ef384158de93de1644cc.zip | |
DNS Location: add list of roles and DNS servers to location-show
Add to output list of DNS servers which advertise location and list fo
roles per server
https://fedorahosted.org/freeipa/ticket/2008
Reviewed-By: Petr Spacek <pspacek@redhat.com>
Diffstat (limited to 'ipaserver/plugins')
| -rw-r--r-- | ipaserver/plugins/location.py | 39 |
1 files changed, 25 insertions, 14 deletions
diff --git a/ipaserver/plugins/location.py b/ipaserver/plugins/location.py index 2a7e681ae..e24f7b7bc 100644 --- a/ipaserver/plugins/location.py +++ b/ipaserver/plugins/location.py @@ -117,6 +117,12 @@ class location(LDAPObject): doc=_('Servers that belongs to the IPA location'), flags={'virtual_attribute', 'no_create', 'no_update', 'no_search'}, ), + Str( + 'dns_server*', + label=_('Advertised by servers'), + doc=_('List of servers which advertise the given location'), + flags={'virtual_attribute', 'no_create', 'no_update', 'no_search'}, + ), ) def get_dn(self, *keys, **options): @@ -192,30 +198,31 @@ 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 = [] + dns_servers = [] weight_sum = 0 servers = self.api.Command.server_find( in_location=keys[0], no_members=False)['result'] for server in servers: - servers_name.append(server['cn'][0]) + s_name = server['cn'][0] + servers_name.append(s_name) weight = int(server.get('ipaserviceweight', [100])[0]) weight_sum += weight - servers_additional_info[server['cn'][0]] = { + servers_additional_info[s_name] = { 'cn': server['cn'], 'ipaserviceweight': server.get( 'ipaserviceweight', [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 + s_roles = server.get('enabled_role_servrole', ()) + if s_roles: + servers_additional_info[s_name][ + 'enabled_role_servrole'] = s_roles + if 'DNS server' in s_roles: + dns_servers.append(s_name) for server in servers_additional_info.values(): server['service_relative_weight'] = [ @@ -224,11 +231,15 @@ class location_show(LDAPRetrieve): ] if servers_name: 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] - )) + if dns_servers: + result['result']['dns_server'] = dns_servers + + if not dns_servers and servers_additional_info: + self.add_message(messages.LocationWithoutDNSServer( + location=keys[0] + )) + + result['servers'] = servers_additional_info return result |
