Bug 631496 - Error 500 from luci when try to edit a Service
Summary: Error 500 from luci when try to edit a Service
Keywords:
Status: CLOSED WONTFIX
Alias: None
Product: Fedora
Classification: Fedora
Component: luci
Version: 13
Hardware: x86_64
OS: Linux
low
medium
Target Milestone: ---
Assignee: Ryan McCabe
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On: 632319
Blocks:
TreeView+ depends on / blocked
 
Reported: 2010-09-07 19:40 UTC by Michael Hagmann
Modified: 2011-06-28 13:14 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2011-06-28 13:14:59 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)
Sosreport from Luci Server node Leo (434.16 KB, application/x-xz)
2010-09-09 18:31 UTC, Michael Hagmann
no flags Details

Description Michael Hagmann 2010-09-07 19:40:46 UTC
Description of problem:

When I try to edit a Service I get a error 500 from luci

Version-Release number of selected component (if applicable):

see sosreport

How reproducible:

click on the Service Name in the luci interface

Steps to Reproduce:
1.
2.
3.
  
Actual results:


Expected results:


Additional info:

from luci.log

Error - <class 'genshi.template.eval.UndefinedError'>: None has no member named "split"
URL: https://leo:8084/cluster/gecco/services/Blog
File '/usr/lib/python2.6/site-packages/weberror/errormiddleware.py', line 162 in __call__
  app_iter = self.application(environ, sr_checker)
File '/usr/lib/python2.6/site-packages/tg/configuration.py', line 783 in remover
  return app(environ, start_response)
File '/usr/lib/python2.6/site-packages/repoze/tm/__init__.py', line 23 in __call__
  result = self.application(environ, save_status_and_headers)
File '/usr/lib/python2.6/site-packages/tw/core/middleware.py', line 43 in __call__
  return self.wsgi_app(environ, start_response)
File '/usr/lib/python2.6/site-packages/tw/core/middleware.py', line 68 in wsgi_app
  resp = req.get_response(self.application)
File '/usr/lib/python2.6/site-packages/webob/request.py', line 919 in get_response
  application, catch_exc_info=False)
File '/usr/lib/python2.6/site-packages/webob/request.py', line 887 in call_application
  app_iter = application(self.environ, start_response)
File '/usr/lib/python2.6/site-packages/tw/core/resource_injector.py', line 68 in _injector
  resp = req.get_response(app)
File '/usr/lib/python2.6/site-packages/webob/request.py', line 919 in get_response
  application, catch_exc_info=False)
File '/usr/lib/python2.6/site-packages/webob/request.py', line 887 in call_application
  app_iter = application(self.environ, start_response)
File '/usr/lib/python2.6/site-packages/beaker/middleware.py', line 73 in __call__
  return self.app(environ, start_response)
File '/usr/lib/python2.6/site-packages/beaker/middleware.py', line 152 in __call__
  return self.wrap_app(environ, session_start_response)
File '/usr/lib/python2.6/site-packages/routes/middleware.py', line 131 in __call__
  response = self.app(environ, start_response)
File '/usr/lib/python2.6/site-packages/pylons/wsgiapp.py', line 125 in __call__
  response = self.dispatch(controller, environ, start_response)
File '/usr/lib/python2.6/site-packages/pylons/wsgiapp.py', line 324 in dispatch
  return controller(environ, start_response)
File '/usr/lib/python2.6/site-packages/luci/controllers/root.py', line 43 in __call__
  return BaseController.__call__(self, environ, start_response)
File '/usr/lib/python2.6/site-packages/luci/lib/base.py', line 30 in __call__
  return TGController.__call__(self, environ, start_response)
File '/usr/lib/python2.6/site-packages/pylons/controllers/core.py', line 221 in __call__
  response = self._dispatch_call()
File '/usr/lib/python2.6/site-packages/pylons/controllers/core.py', line 172 in _dispatch_call
  response = self._inspect_call(func)
File '/usr/lib/python2.6/site-packages/pylons/controllers/core.py', line 107 in _inspect_call
  result = self._perform_call(func, args)
File '/usr/lib/python2.6/site-packages/tg/controllers/dispatcher.py', line 254 in _perform_call
  r = self._call(func, params, remainder=remainder)
File '/usr/lib/python2.6/site-packages/tg/controllers/decoratedcontroller.py', line 129 in _call
  response = self._render_response(controller, output)
File '/usr/lib/python2.6/site-packages/tg/controllers/decoratedcontroller.py', line 305 in _render_response
  template_name=template_name)
File '/usr/lib/python2.6/site-packages/tg/render.py', line 156 in render
  return render_function(template_name, template_vars, **kwargs)
File '/usr/lib/python2.6/site-packages/tg/render.py', line 186 in render_genshi
  **kwargs)
File '/usr/lib/python2.6/site-packages/pylons/templating.py', line 338 in render_genshi
  ns_options=('method'), method=method)
File '/usr/lib/python2.6/site-packages/pylons/templating.py', line 249 in cached_template
  return render_func()
File '/usr/lib/python2.6/site-packages/pylons/templating.py', line 334 in render_template
  encoding=None))
File '/usr/lib64/python2.6/site-packages/genshi/core.py', line 179 in render
  return encode(generator, method=method, encoding=encoding, out=out)
File '/usr/lib64/python2.6/site-packages/genshi/output.py', line 60 in encode
  return _encode(u''.join(list(iterator)))
File '/usr/lib64/python2.6/site-packages/genshi/output.py', line 311 in __call__
  for kind, data, pos in stream:
File '/usr/lib64/python2.6/site-packages/genshi/output.py', line 592 in __call__
  for kind, data, pos in stream:
File '/usr/lib64/python2.6/site-packages/genshi/output.py', line 698 in __call__
  for kind, data, pos in chain(stream, [(None, None, None)]):
File '/usr/lib64/python2.6/site-packages/genshi/output.py', line 532 in __call__
  for ev in stream:
File '/usr/lib64/python2.6/site-packages/genshi/core.py', line 283 in _ensure
  for event in stream:
File '/usr/lib64/python2.6/site-packages/genshi/template/base.py', line 569 in _include
  for event in stream:
File '/usr/lib64/python2.6/site-packages/genshi/template/markup.py', line 279 in _match
  content = list(content)
File '/usr/lib64/python2.6/site-packages/genshi/template/base.py', line 569 in _include
  for event in stream:
File '/usr/lib64/python2.6/site-packages/genshi/template/markup.py', line 245 in _match
  for event in stream:
File '/usr/lib64/python2.6/site-packages/genshi/template/markup.py', line 234 in _strip
  event = stream.next()
File '/usr/lib64/python2.6/site-packages/genshi/template/base.py', line 543 in _exec
  for event in stream:
File '/usr/lib64/python2.6/site-packages/genshi/template/base.py', line 533 in _eval
  for event in substream:
File '/usr/lib64/python2.6/site-packages/genshi/template/base.py', line 533 in _eval
  for event in substream:
File '/usr/lib64/python2.6/site-packages/genshi/template/base.py', line 496 in _eval
  for kind, data, pos in stream:
File '/usr/lib64/python2.6/site-packages/genshi/template/base.py', line 551 in _flatten
  for event in stream:
File '/usr/lib64/python2.6/site-packages/genshi/core.py', line 267 in _ensure
  event = stream.next()
File '/usr/lib64/python2.6/site-packages/genshi/template/directives.py', line 316 in function
  for event in _apply_directives(stream, directives, ctxt, **vars):
File '/usr/lib64/python2.6/site-packages/genshi/template/directives.py', line 737 in __call__
  value = _eval_expr(expr, ctxt, **vars)
File '/usr/lib64/python2.6/site-packages/genshi/template/base.py', line 286 in _eval_expr
  retval = expr.evaluate(ctxt)
File '/usr/lib64/python2.6/site-packages/genshi/template/eval.py', line 180 in evaluate
  return eval(self.code, _globals, {'__data__': data})
File '/usr/lib/python2.6/site-packages/luci/templates/resource_list.html', line 5 in <Expression '?'>
  <div py:def="ip_resource(res, form_id, parent_id, isref)" name="IP" id="ip_resource" class="row rescfg"
File '/usr/lib64/python2.6/site-packages/genshi/template/eval.py', line 326 in lookup_attr
  val = cls.undefined(key, owner=obj)
File '/usr/lib64/python2.6/site-packages/genshi/template/eval.py', line 410 in undefined
  raise UndefinedError(key, owner=owner)
UndefinedError: None has no member named "split"


CGI Variables
-------------
  AUTH_TYPE: 'cookie'
  CONTENT_LENGTH: '0'
  HTTP_ACCEPT: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
  HTTP_ACCEPT_CHARSET: 'ISO-8859-1,utf-8;q=0.7,*;q=0.7'
  HTTP_ACCEPT_ENCODING: 'gzip,deflate'
  HTTP_ACCEPT_LANGUAGE: 'en-us,en;q=0.5'
  HTTP_CONNECTION: 'keep-alive'
  HTTP_COOKIE: 'tabCookie=0; auth_tkt="7098ad359f922d395a737dfd3bfb7bcc4c86835broot!userid_type:unicode"'
  HTTP_HOST: 'leo:8084'
  HTTP_KEEP_ALIVE: '115'
  HTTP_REFERER: 'https://leo:8084/cluster/gecco/services'
  HTTP_USER_AGENT: 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.8) Gecko/20100723 Ubuntu/10.04 (lucid) Firefox/3.6.8'
  PATH_INFO: '/cluster/gecco/services/Blog'
  REMOTE_ADDR: '192.168.1.32'
  REMOTE_USER: u'root'
  REMOTE_USER_DATA: 'userid_type:unicode'
  REMOTE_USER_TOKENS: ['']
  REQUEST_METHOD: 'GET'
  SERVER_NAME: '0.0.0.0'
  SERVER_PORT: '8084'
  SERVER_PROTOCOL: 'HTTP/1.1'


WSGI Variables
--------------
  application: <function remover at 0x348ee60>
  beaker.cache: <beaker.cache.CacheManager object at 0x3492950>
  beaker.get_session: <bound method SessionMiddleware._get_session of <beaker.middleware.SessionMiddleware object at 0x34928d0>>
  beaker.session: {'_accessed_time': 1283888186.690752, '_creation_time': 1283888186.690752}
  paste.cookies: (<SimpleCookie: auth_tkt='7098ad359f922d395a737dfd3bfb7bcc4c86835broot!userid_type:unicode' tabCookie='0'>, 'tabCookie=0; auth_tkt="7098ad359f922d395a737dfd3bfb7bcc4c86835broot!userid_type:unicode"')
  paste.httpserver.thread_pool: <paste.httpserver.ThreadPool object at 0x1fe6150>
  paste.registry: <paste.registry.Registry object at 0x7f677c152910>
  paste.throw_errors: True
  pylons.action_method: <bound method RootController.routes_placeholder of <luci.controllers.root.RootController object at 0x3883150>>
  pylons.controller: <luci.controllers.root.RootController object at 0x3883150>
  pylons.environ_config: {'session': 'beaker.session', 'cache': 'beaker.cache'}
  pylons.pylons: <pylons.util.PylonsContext object at 0x3883f50>
  pylons.routes_dict: {'url': u'/cluster/gecco/services/Blog', 'action': u'routes_placeholder', 'controller': u'root'}
  repoze.tm.active: True
  repoze.what.credentials: {'repoze.what.userid': u'root', 'groups': ['managers'], 'permissions': ['manage']}
  repoze.who.identity: <repoze.who identity (hidden, dict-like) at 140082372675552>
  repoze.who.logger: <logging.Logger instance at 0x34e4950>
  repoze.who.plugins: {'luci.lib.pamplugin:PAMPlugin': <luci.lib.pamplugin.PAMPlugin object at 0x349bc90>, 'friendlyform': <FriendlyFormPlugin 55136656>, 'auth_tkt': <AuthTktCookiePlugin 55163984>}
  routes.route: <routes.route.Route object at 0x3290790>
  routes.url: <routes.util.URLGenerator object at 0x38836d0>
  toscawidgets.framework: <tw.mods.base.HostFramework object at 0x34929d0>
  toscawidgets.javascript.require_once: False
  toscawidgets.prefix: '/toscawidgets'
  webob._parsed_query_vars: (GET([]), '')
  webob.adhoc_attrs: {'controller_state': <tg.controllers.dispatcher.DispatchState object at 0x7f67800b11d0>, 'language': 'en-us', 'start_response': <function repl_start_response at 0x7f67782ef050>, 'response_type': None, 'response_ext': None, 'identity': <repoze.who identity (hidden, dict-like) at 140082372675552>}
  wsgi process: 'Multithreaded'
  wsgiorg.routing_args: (<routes.util.URLGenerator object at 0x38836d0>, {'url': u'/cluster/gecco/services/Blog', 'action': u'routes_placeholder', 'controller': u'root'})
------------------------------------------------------------

Comment 1 Michael Hagmann 2010-09-09 18:24:52 UTC
after I delete the Service and create a new one, the error was gone

Michael

Comment 2 Michael Hagmann 2010-09-09 18:27:31 UTC
The Error reoccurred when I had to restart the Cluster because of a cman connection problem:

https://bugzilla.redhat.com/show_bug.cgi?id=632319

I try to access the cluster over luci, I get this error in the luci.log:


WSGI Variables
--------------
  application: <function remover at 0x35d8e60>
  beaker.cache: <beaker.cache.CacheManager object at 0x35dc950>
  beaker.get_session: <bound method SessionMiddleware._get_session of <beaker.middleware.SessionMiddleware object at 0x35dc8d0>>
  beaker.session: {'_accessed_time': 1284056556.4298439, '_creation_time': 1284056556.4298439}
  paste.cookies: (<SimpleCookie: auth_tkt='35e334272df70cf9b49c4c6d9706d9184c890f7droot!userid_type:unicode' tabCookie='3'>, 'tabCookie=3; auth_tkt="35e334272df70cf9b49c4c6d9706d9184c890f7droot!userid_type:unicode"')
  paste.httpserver.thread_pool: <paste.httpserver.ThreadPool object at 0x2131150>
  paste.registry: <paste.registry.Registry object at 0x7fb814a8fb90>
  paste.throw_errors: True
  pylons.action_method: <bound method RootController.routes_placeholder of <luci.controllers.root.RootController object at 0x7fb814b731d0>>
  pylons.controller: <luci.controllers.root.RootController object at 0x7fb814b731d0>
  pylons.environ_config: {'session': 'beaker.session', 'cache': 'beaker.cache'}
  pylons.pylons: <pylons.util.PylonsContext object at 0x7fb814b78750>
  pylons.routes_dict: {'url': u'/cluster/gecco/', 'action': u'routes_placeholder', 'controller': u'root'}
  repoze.tm.active: True
  repoze.what.credentials: {'repoze.what.userid': u'root', 'groups': ['managers'], 'permissions': ['manage']}
  repoze.who.identity: <repoze.who identity (hidden, dict-like) at 140429123141296>
  repoze.who.logger: <logging.Logger instance at 0x362e950>
  repoze.who.plugins: {'luci.lib.pamplugin:PAMPlugin': <luci.lib.pamplugin.PAMPlugin object at 0x35e5c90>, 'friendlyform': <FriendlyFormPlugin 56488336>, 'auth_tkt': <AuthTktCookiePlugin 56515664>}
  routes.route: <routes.route.Route object at 0x33db890>
  routes.url: <routes.util.URLGenerator object at 0x7fb814b78f50>
  toscawidgets.framework: <tw.mods.base.HostFramework object at 0x35dc9d0>
  toscawidgets.javascript.require_once: False
  toscawidgets.prefix: '/toscawidgets'
  webob._parsed_query_vars: (GET([]), '')
  webob.adhoc_attrs: {'controller_state': <tg.controllers.dispatcher.DispatchState object at 0x7fb814b73510>, 'language': 'en-us', 'start_response': <function repl_start_response at 0x7fb814b67ed8>, 'response_type': None, 'response_ext': None, 'identity': <repoze.who identity (hidden, dict-like) at 140429123141296>}
  wsgi process: 'Multithreaded'
  wsgiorg.routing_args: (<routes.util.URLGenerator object at 0x7fb814b78f50>, {'url': u'/cluster/gecco/', 'action': u'routes_placeholder', 'controller': u'root'})
------------------------------------------------------------

I also try to restart luci but nothing happen.

I can access the webinterface but noth the cluster tab with the config ?

thanks for Help

Comment 3 Michael Hagmann 2010-09-09 18:30:23 UTC
I try to restart ricci and luci but nothing happen:

WSGI Variables
--------------
  application: <function remover at 0x3c8de60>
  beaker.cache: <beaker.cache.CacheManager object at 0x3c91950>
  beaker.get_session: <bound method SessionMiddleware._get_session of <beaker.middleware.SessionMiddleware object at 0x3c918d0>>
  beaker.session: {'_accessed_time': 1284056967.815238, '_creation_time': 1284056967.815238}
  paste.cookies: (<SimpleCookie: auth_tkt='62c450cc7f39f4bb8da2751ddbe583d44c892774root!userid_type:unicode' tabCookie='3'>, 'tabCookie=3; auth_tkt="62c450cc7f39f4bb8da2751ddbe583d44c892774root!userid_type:unicode"')
  paste.httpserver.thread_pool: <paste.httpserver.ThreadPool object at 0x27e5150>
  paste.registry: <paste.registry.Registry object at 0x7f000c022890>
  paste.throw_errors: True
  pylons.action_method: <bound method RootController.routes_placeholder of <luci.controllers.root.RootController object at 0x7f000c0298d0>>
  pylons.controller: <luci.controllers.root.RootController object at 0x7f000c0298d0>
  pylons.environ_config: {'session': 'beaker.session', 'cache': 'beaker.cache'}
  pylons.pylons: <pylons.util.PylonsContext object at 0x7f000c029a90>
  pylons.routes_dict: {'url': u'/cluster/gecco/', 'action': u'routes_placeholder', 'controller': u'root'}
  repoze.tm.active: True
  repoze.what.credentials: {'repoze.what.userid': u'root', 'groups': ['managers'], 'permissions': ['manage']}
  repoze.who.identity: <repoze.who identity (hidden, dict-like) at 139638649610848>
  repoze.who.logger: <logging.Logger instance at 0x3ce3950>
  repoze.who.plugins: {'luci.lib.pamplugin:PAMPlugin': <luci.lib.pamplugin.PAMPlugin object at 0x3c9ac90>, 'friendlyform': <FriendlyFormPlugin 63521168>, 'auth_tkt': <AuthTktCookiePlugin 63548496>}
  routes.route: <routes.route.Route object at 0x3a8f890>
  routes.url: <routes.util.URLGenerator object at 0x7f000c029d90>
  toscawidgets.framework: <tw.mods.base.HostFramework object at 0x3c919d0>
  toscawidgets.javascript.require_once: False
  toscawidgets.prefix: '/toscawidgets'
  webob._parsed_query_vars: (GET([]), '')
  webob.adhoc_attrs: {'controller_state': <tg.controllers.dispatcher.DispatchState object at 0x7f000c029110>, 'language': 'en-us', 'start_response': <function repl_start_response at 0x4019140>, 'response_type': None, 'response_ext': None, 'identity': <repoze.who identity (hidden, dict-like) at 139638649610848>}
  wsgi process: 'Multithreaded'
  wsgiorg.routing_args: (<routes.util.URLGenerator object at 0x7f000c029d90>, {'url': u'/cluster/gecco/', 'action': u'routes_placeholder', 'controller': u'root'})
------------------------------------------------------------

Comment 4 Michael Hagmann 2010-09-09 18:31:33 UTC
Created attachment 446333 [details]
Sosreport from Luci Server node Leo

Comment 5 Michael Hagmann 2010-09-09 18:35:39 UTC
I restart cman,rgmanager,ricci, luci on all nodes.

The cluster looks fine but luci don't work!

thanks for Help

Michael

Comment 6 Michael Hagmann 2010-09-09 19:33:30 UTC
looks like luci has a problem with the cluster.conf

https://bugzilla.redhat.com/show_bug.cgi?id=632319#c4

after delete the fence stuff it works again

Michael

Comment 7 Fabio Massimo Di Nitto 2010-09-09 20:17:26 UTC
(In reply to comment #6)
> looks like luci has a problem with the cluster.conf
> 
> https://bugzilla.redhat.com/show_bug.cgi?id=632319#c4
> 
> after delete the fence stuff it works again
> 
> Michael

Hi Michael,

it is possible that the 500 error you are getting is because luci in Fedora does not know how to deal with all the fence agents in fedora. The list of agents needs to be update as I mentioned via email and it is one of the next steps.

Quickly looking at what happened also in the other bug, I would investigate luci/ricci on why one node got out of configuration sync. At a first glance it appears that one node got a configuration update, the other one didn't (probably related to the timeout traceback I saw in this bug).

At the point the node with the older config has to halt operations and the nodes continuing operations will wait a certain amount of time before fencing the node with the old config. Fencing was not configured in your setup, so the node was simply not allowed to rejoin (unless using fence_ack_manual on the surviving node).

Thanks for all the help!
Fabio

Comment 8 Michael Hagmann 2010-09-09 21:00:52 UTC
Hi Fabio

I also face a 500 with a Service problem.

Sounds reasonable.

I create all with luci, maybe something gone wrong with the inital config.

I will recheck the setup.

Michael

Comment 9 Bug Zapper 2011-05-31 14:11:36 UTC
This message is a reminder that Fedora 13 is nearing its end of life.
Approximately 30 (thirty) days from now Fedora will stop maintaining
and issuing updates for Fedora 13.  It is Fedora's policy to close all
bug reports from releases that are no longer maintained.  At that time
this bug will be closed as WONTFIX if it remains open with a Fedora 
'version' of '13'.

Package Maintainer: If you wish for this bug to remain open because you
plan to fix it in a currently maintained version, simply change the 'version' 
to a later Fedora version prior to Fedora 13's end of life.

Bug Reporter: Thank you for reporting this issue and we are sorry that 
we may not be able to fix it before Fedora 13 is end of life.  If you 
would still like to see this bug fixed and are able to reproduce it 
against a later version of Fedora please change the 'version' of this 
bug to the applicable version.  If you are unable to change the version, 
please add a comment here and someone will do it for you.

Although we aim to fix as many bugs as possible during every release's 
lifetime, sometimes those efforts are overtaken by events.  Often a 
more recent Fedora release includes newer upstream software that fixes 
bugs or makes them obsolete.

The process we are following is described here: 
http://fedoraproject.org/wiki/BugZappers/HouseKeeping

Comment 10 Bug Zapper 2011-06-28 13:14:59 UTC
Fedora 13 changed to end-of-life (EOL) status on 2011-06-25. Fedora 13 is 
no longer maintained, which means that it will not receive any further 
security or bug fix updates. As a result we are closing this bug.

If you can reproduce this bug against a currently maintained version of 
Fedora please feel free to reopen this bug against that version.

Thank you for reporting this bug and we are sorry it could not be fixed.


Note You need to log in before you can comment on or make changes to this bug.