https://bugzilla.redhat.com/show_bug.cgi?id=744234
Description of problem: Attempting to add an invalid reverse DNS zone results in an Internal Server Error. errors_log :: [Fri Oct 07 10:46:48 2011] [error] ipa: INFO: admin@JGALIPEA: dnszone_add(None, idnssoamname=u'ipaserver.jgalipea.redhat.com', force=u'false'): RequirementError [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] mod_wsgi (pid=27085): Exception occurred processing WSGI script '/usr/share/ipa/wsgi.py'. [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] Traceback (most recent call last): [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] File "/usr/share/ipa/wsgi.py", line 48, in application [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] return api.Backend.session(environ, start_response) [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] File "/usr/lib/python2.6/site-packages/ipaserver/rpcserver.py", line 142, in __call__ [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] return self.route(environ, start_response) [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] File "/usr/lib/python2.6/site-packages/ipaserver/rpcserver.py", line 154, in route [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] return app(environ, start_response) [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] File "/usr/lib/python2.6/site-packages/ipaserver/rpcserver.py", line 254, in __call__ [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] response = self.wsgi_execute(environ) [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] File "/usr/lib/python2.6/site-packages/ipaserver/rpcserver.py", line 223, in wsgi_execute [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] result = self.Command[name](*args, **options) [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] File "/usr/lib/python2.6/site-packages/ipalib/frontend.py", line 419, in __call__ [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] default = self.get_default(**params) [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] File "/usr/lib/python2.6/site-packages/ipalib/frontend.py", line 673, in get_default [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] return dict(self.__get_default_iter(kw)) [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] File "/usr/lib/python2.6/site-packages/ipalib/frontend.py", line 683, in __get_default_iter [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] default = param.get_default(**kw) [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] File "/usr/lib/python2.6/site-packages/ipalib/parameters.py", line 873, in get_default [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] default = self._get_default(**kw) [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] File "/usr/lib/python2.6/site-packages/ipalib/parameters.py", line 228, in __call__ [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] return self.callback(*vals) [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] File "/usr/lib/python2.6/site-packages/ipalib/plugins/dns.py", line 312, in <lambda> [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] default_from=lambda name_from_ip: _reverse_zone_name(name_from_ip), [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] File "/usr/lib/python2.6/site-packages/ipalib/plugins/dns.py", line 151, in _reverse_zone_name [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] net = netaddr.IPNetwork(netstr) [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] File "/usr/lib/python2.6/site-packages/netaddr/ip/__init__.py", line 926, in __init__ [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] raise AddrFormatError('invalid IPNetwork %s' % addr) [Fri Oct 07 10:46:53 2011] [error] [client 10.16.64.87] AddrFormatError: invalid IPNetwork blah Version-Release number of selected component (if applicable): How reproducible: Steps to Reproduce: 1. From the UI, Identity --> DNS --> Add --> select radio button for reverse zone 2. Enter "blah" in reverse zone field 3. Enter the ipa server's fqdn for the authoritative server 4. Click Add Actual results: Internal server error Expected results: Proper error message stating the zone name is invalid Additional info:
The problem is in ipaserver/rpcserver.py. We re-calculate the params list by calling:
params = self.Command[name].args_options_2_params(args, *options)
This is throwing a ValidationError that is uncaught. It should probably look something like:
if name: try: params = self.Command[name].args_options_2_params(*args, **options) except Exception, e: params = options
We lose the args but get most of the context of what was going on.
master: 070bc7f[[BR]] ipa-2-1: dc39e95
Metadata Update from @rcritten: - Issue assigned to mkosek - Issue set to the milestone: FreeIPA 2.1.3 (bug fixing)
Login to comment on this ticket.