Bug 659014

Summary: Luci returns an Error 500 when accessing node configuration with FQDN names
Product: Red Hat Enterprise Linux 6 Reporter: Carlos Maiolino <cmaiolin>
Component: luciAssignee: Ryan McCabe <rmccabe>
Status: CLOSED ERRATA QA Contact: Cluster QE <mspqa-list>
Severity: medium Docs Contact:
Priority: medium    
Version: 6.0CC: bbrock, chakkerz, cluster-maint, jlabocki, toarney
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: luci-0.23.0-3.el6 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-05-19 13:56:47 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Carlos Maiolino 2010-12-01 19:42:34 UTC
Description of problem:

When opening a node configuration via luci interface, it returns an error 500,




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

0.22.2-14.el6_0.1

How reproducible:

Any time


Steps to Reproduce:
- Install luci
- Create a cluster
- Add a node to the cluster (not necessary more than 1 node)
- open the node settings:
      HomeBase -> Clusters -> <cluster_name> -> <cluster_node>

Actual results:

Error 500 is returned

Expected results:

Access node information to setup node specific settings, like fence devices.

Additional info:


Luci Backtrace:

================================
Error - <class 'genshi.template.eval.UndefinedError'>: {u'node3-r6.maiolino.org': <luci.lib.cluster_status.NodeStatus
 instance at 0x7fbc14585d88>, u'node2-r6.maiolino.org': <luci.lib.cluster_status.NodeStatus instance at 0x7fbc14585a7
0>, u'node1-r6.maiolino.org': <luci.lib.cluster_status.NodeStatus instance at 0x7fbc14585290>} has no member named "node1-r6.maiolino"

URL: https://node1-r6.maiolino.org:8084/cluster/rhel6/node1-r6.maiolino.org
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 655 in wrapper
  return app(environ, start_response)
File '/usr/lib/python2.6/site-packages/tg/configuration.py', line 555 in remover
  return app(environ, start_response)
File '/usr/lib/python2.6/site-packages/repoze/tm/__init__.py', line 19 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/__init__.py', line 1325 in get_response
  application, catch_exc_info=False)
File '/usr/lib/python2.6/site-packages/webob/__init__.py', line 1293 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/__init__.py', line 1325 in get_response
  application, catch_exc_info=False)
File '/usr/lib/python2.6/site-packages/webob/__init__.py', line 1293 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 130 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.py', line 857 in _perform_call
  self, controller, params, remainder=remainder)
File '/usr/lib/python2.6/site-packages/tg/controllers.py', line 182 in _perform_call
  response = self._render_response(controller, output)
File '/usr/lib/python2.6/site-packages/tg/controllers.py', line 358 in _render_response
  template_name=template_name)
File '/usr/lib/python2.6/site-packages/tg/render.py', line 141 in render
  return render_function(template_name, template_vars, **kwargs)
File '/usr/lib/python2.6/site-packages/tg/render.py', line 168 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 496 in _eval
  for kind, data, pos in stream:
File '/usr/lib64/python2.6/site-packages/genshi/template/base.py', line 558 in _flatten
  for event in self._flatten(substream, ctxt, **vars):
File '/usr/lib64/python2.6/site-packages/genshi/template/base.py', line 558 in _flatten
  for event in self._flatten(substream, ctxt, **vars):
File '/usr/lib64/python2.6/site-packages/genshi/template/base.py', line 558 in _flatten
  for event in self._flatten(substream, ctxt, **vars):
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/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/node.html', line 186 in <Expression '?'>
  <py:otherwise py:with="details = cluster_status.nodes[name]">
File '/usr/lib64/python2.6/site-packages/genshi/template/eval.py', line 340 in lookup_item
  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: {u'node3-r6.maiolino.org': <luci.lib.cluster_status.NodeStatus instance at 0x7fbc14585d88>, u'node2-r6.maiolino.org': <luci.lib.cluster_status.NodeStatus instance at 0x7fbc14585a70>, u'node1-r6.maiolino.org': <luci.lib.cluster_status.NodeStatus instance at 0x7fbc14585290>} has no member named "node1-r6.maiolino"
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: 'luci=b83f4bedc7af34222476e01b1a294787c66556626af06f3e7bc58097ff04f274e70db901; auth_tkt="140abe6129a34482e6d193311a60f2924cf69ef6root!"'
  HTTP_HOST: 'node1-r6.maiolino.org:8084'
  HTTP_KEEP_ALIVE: '115'
  HTTP_REFERER: 'https://node1-r6.maiolino.org:8084/cluster/rhel6/nodes'
  HTTP_USER_AGENT: 'Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.12) Gecko/20101027 Red Hat/3.6.12-1.el6_0 Firefox/3.6.12'
  PATH_INFO: '/cluster/rhel6/node1-r6.maiolino.org'
  REMOTE_ADDR: '192.168.100.20'
  REMOTE_USER: 'root'
  REMOTE_USER_TOKENS: ['']
  REQUEST_METHOD: 'GET'
  SERVER_NAME: '0.0.0.0'
  SERVER_PORT: '8084'
  SERVER_PROTOCOL: 'HTTP/1.1'

WSGI Variables
--------------
  application: <function wrapper at 0x383ae60>
  beaker.cache: <beaker.cache.CacheManager object at 0x383cc90>
  beaker.get_session: <bound method SessionMiddleware._get_session of <beaker.middleware.SessionMiddleware object at 0x383cc10>>
  beaker.session: {'_accessed_time': 1291232062.7027099}
  paste.cookies: (<SimpleCookie: auth_tkt='140abe6129a34482e6d193311a60f2924cf69ef6root!' luci='b83f4bedc7af34222476e01b1a294787c66556626af06f3e7bc58097ff04f274e70db901'>, 'luci=b83f4bedc7af34222476e01b1a294787c66556626af06f3e7bc58097ff04f274e70db901; auth_tkt="140abe6129a34482e6d193311a60f2924cf69ef6root!"')
  paste.httpserver.thread_pool: <paste.httpserver.ThreadPool object at 0x3884610>
  paste.registry: <paste.registry.Registry object at 0x388a950>
  paste.throw_errors: True
  pylons.action_method: <bound method RootController.routes_placeholder of <luci.controllers.root.RootController object at 0x7fbbf0d74c10>>
  pylons.controller: <luci.controllers.root.RootController object at 0x7fbbf0d74c10>
  pylons.environ_config: {'session': 'beaker.session', 'cache': 'beaker.cache'}
  pylons.pylons: <pylons.util.PylonsContext object at 0x7fbbf0d74210>
  pylons.routes_dict: {'url': u'cluster/rhel6/node1-r6.maiolino.org', 'action': u'routes_placeholder', 'controller': u'root'}
  repoze.tm.active: True
  repoze.what.credentials: {'repoze.what.userid': 'root', 'groups': ['managers'], 'permissions': ['manage']}
  repoze.who.identity: <repoze.who identity (hidden, dict-like) at 140445699197360>
  repoze.who.logger: <logging.Logger instance at 0x3881c20>
  repoze.who.plugins: {'luci.lib.pamplugin:PAMPlugin': <luci.lib.pamplugin.PAMPlugin object at 0x3846e90>, 'friendlyform': <FriendlyFormPlugin 58991824>, 'auth_tkt': <AuthTktCookiePlugin 59010640>}
  routes.route: <routes.route.Route object at 0x36cea90>
  routes.url: <routes.util.URLGenerator object at 0x7fbbf0d74b10>
  toscawidgets.framework: <tw.mods.base.HostFramework object at 0x383cd10>
  toscawidgets.javascript.require_once: False
  toscawidgets.prefix: '/toscawidgets'
  webob._parsed_query_vars: (MultiDict([]), '')
  webob.adhoc_attrs: {'start_response': <function repl_start_response at 0x7fbc14404a28>, 'response_ext': u'.org', 'identity': <repoze.who identity (hidden, dict-like) at 140445699197360>, 'language': 'en-us', 'response_type': 'application/vnd.lotus-organizer'}
  wsgi process: 'Multithreaded'
  wsgiorg.routing_args: (<routes.util.URLGenerator object at 0x7fbbf0d74b10>, {'url': u'cluster/rhel6/node1-r6.maiolino.org', 'action': u'routes_placeholder', 'controller': u'root'})
=========================

The backtrace says that there is no node named: "node1-r6.maiolino", but my cluster nodes have FQDN names:

node1-r6.maiolino.org
node2-r6.maiolino.org
node3-r6.maiolino.org

Looks like luci does not make requests using the fqdn, it is removing the .org when trying to access.

But the URL luci is trying to access is correct:
https://node1-r6.maiolino.org:8084/cluster/rhel6/node1-r6.maiolino.org

And also, luci shows all nodes named correctly on nodes list.

Comment 2 Carlos Maiolino 2010-12-01 19:56:45 UTC
Ok, the problem is when the nodes have FQDN names.

I tested the environment using common names and it worked normally.

But when using fqdns luci discards the last part of the name.

Comment 3 Ryan McCabe 2010-12-02 06:24:34 UTC
Do you have the hosts defined with the short names in /etc/hosts or something similar? What does 'cman_tool nodes' show when you run it on one of the cluster nodes?

Comment 4 Carlos Maiolino 2010-12-02 15:33:18 UTC
I have my hosts defined on /etc/hosts, I don't use DNS here on my lab.

Here is the hosts config I'm using on all 3 nodes:

10.0.10.10      node1-r6.maiolino.org node1-r6
10.0.10.20      node2-r6.maiolino.org node2-r6
10.0.10.30      node3-r6.maiolino.org node3-r6

Here is the output of clustat and cman_tool nodes

[root@node1-r6 ~]# clustat
Cluster Status for rhel6cluster @ Thu Dec  2 13:31:56 2010
Member Status: Quorate

 Member Name                                                   ID   Status
 ------ ----                                                   ---- ------
 node1-r6.maiolino.org                                             1 Online, Local
 node2-r6.maiolino.org                                             2 Online
 node3-r6.maiolino.org                                             3 Online


[root@node1-r6 ~]# cman_tool nodes
Node  Sts   Inc   Joined               Name
   1   M      4   2010-12-02 13:23:31  node1-r6.maiolino.org
   2   M     12   2010-12-02 13:23:31  node2-r6.maiolino.org
   3   M     12   2010-12-02 13:23:31  node3-r6.maiolino.org

Comment 5 Ryan McCabe 2011-01-16 22:04:17 UTC
*** Bug 666881 has been marked as a duplicate of this bug. ***

Comment 8 errata-xmlrpc 2011-05-19 13:56:47 UTC
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on therefore solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.

http://rhn.redhat.com/errata/RHBA-2011-0655.html

Comment 9 james labocki 2011-06-30 15:08:34 UTC
I am running into this error in the Service

version: luci-0.23.0-13.el6.x86_64

Steps to reproduce: 
In Luci interface select "Service Groups" > and select a service (in this case a virtual machine named Satellite).

Workarounds attempted: 
I have tried short name, FQDN, and IP address with similar results. The same error occurs when adding a new service group. The FQDN and short name resolve correctly on both the host running luci and the host accessing luci via the browser.

output from /var/log/luci/luci.log when trying view details of a service group:

[root@cldmgr01 ~]# tail -f /var/log/luci/luci.log
Error - <class 'genshi.template.eval.UndefinedError'>: <luci.lib.ClusterConf.Vm.Vm object at 0x7fc94011d310> has no member named "getIndependentSubtree"
URL: https://10.0.3.13:8084/cluster/cldmgrcluster01/services/nfsvm
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 655 in wrapper
  return app(environ, start_response)
File '/usr/lib/python2.6/site-packages/tg/configuration.py', line 555 in remover
  return app(environ, start_response)
File '/usr/lib/python2.6/site-packages/repoze/tm/__init__.py', line 19 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/__init__.py', line 1325 in get_response
  application, catch_exc_info=False)
File '/usr/lib/python2.6/site-packages/webob/__init__.py', line 1293 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/__init__.py', line 1325 in get_response
  application, catch_exc_info=False)
File '/usr/lib/python2.6/site-packages/webob/__init__.py', line 1293 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 130 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/lib64/python2.6/site-packages/luci/controllers/root.py', line 48 in __call__
  return BaseController.__call__(self, environ, start_response)
File '/usr/lib64/python2.6/site-packages/luci/lib/base.py', line 48 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.py', line 857 in _perform_call
  self, controller, params, remainder=remainder)
File '/usr/lib/python2.6/site-packages/tg/controllers.py', line 182 in _perform_call
  response = self._render_response(controller, output)
File '/usr/lib/python2.6/site-packages/tg/controllers.py', line 358 in _render_response
  template_name=template_name)
File '/usr/lib/python2.6/site-packages/tg/render.py', line 141 in render
  return render_function(template_name, template_vars, **kwargs)
File '/usr/lib/python2.6/site-packages/tg/render.py', line 168 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 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 558 in _flatten
  for event in self._flatten(substream, ctxt, **vars):
File '/usr/lib64/python2.6/site-packages/genshi/template/base.py', line 558 in _flatten
  for event in self._flatten(substream, ctxt, **vars):
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/template/directives.py', line 175 in _generate
  attrs = _eval_expr(self.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/lib64/python2.6/site-packages/luci/templates/resource_list.html', line 21 in <Expression u"(res and res.getIndependentSubtree()) and {'checked':'checked'} or {}">
  <input type="checkbox" name="independent_subtree" class="checkbox subtree"
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: <luci.lib.ClusterConf.Vm.Vm object at 0x7fc94011d310> has no member named "getIndependentSubtree"


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: 'luci=2a6b74c033e5935646ef784bd3c8aba0a517174bbcc2267e2e956c38286c4c8bc9caa096; auth_tkt="3088256516ad7e26a4961d35d7635c124e0c4786root!"'
  HTTP_HOST: '10.0.3.13:8084'
  HTTP_KEEP_ALIVE: '115'
  HTTP_REFERER: 'https://10.0.3.13:8084/cluster/cldmgrcluster01/services?__logins=0'
  HTTP_USER_AGENT: 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.10) Gecko/20101005 Fedora/3.6.10-1.fc14 Firefox/3.6.10'
  PATH_INFO: '/cluster/cldmgrcluster01/services/nfsvm'
  REMOTE_ADDR: '10.0.1.2'
  REMOTE_USER: 'root'
  REMOTE_USER_TOKENS: ['']
  REQUEST_METHOD: 'GET'
  SERVER_NAME: '10.0.3.13'
  SERVER_PORT: '8084'
  SERVER_PROTOCOL: 'HTTP/1.1'


WSGI Variables
--------------
  application: <function wrapper at 0x307a2a8>
  beaker.cache: <beaker.cache.CacheManager object at 0x307db10>
  beaker.get_session: <bound method SessionMiddleware._get_session of <beaker.middleware.SessionMiddleware object at 0x307da90>>
  beaker.session: {'_accessed_time': 1309427956.354609}
  paste.cookies: (<SimpleCookie: auth_tkt='3088256516ad7e26a4961d35d7635c124e0c4786root!' luci='2a6b74c033e5935646ef784bd3c8aba0a517174bbcc2267e2e956c38286c4c8bc9caa096'>, 'luci=2a6b74c033e5935646ef784bd3c8aba0a517174bbcc2267e2e956c38286c4c8bc9caa096; auth_tkt="3088256516ad7e26a4961d35d7635c124e0c4786root!"')
  paste.httpserver.thread_pool: <paste.httpserver.ThreadPool object at 0x30a75d0>
  paste.registry: <paste.registry.Registry object at 0x7fc9480bf590>
  paste.throw_errors: True
  pylons.action_method: <bound method RootController.routes_placeholder of <luci.controllers.root.RootController object at 0x7fc9388309d0>>
  pylons.controller: <luci.controllers.root.RootController object at 0x7fc9388309d0>
  pylons.environ_config: {'session': 'beaker.session', 'cache': 'beaker.cache'}
  pylons.pylons: <pylons.util.PylonsContext object at 0x7fc94011d690>
  pylons.routes_dict: {'url': u'cluster/cldmgrcluster01/services/nfsvm', 'action': u'routes_placeholder', 'controller': u'root'}
  repoze.tm.active: True
  repoze.what.credentials: {'repoze.what.userid': 'root', 'groups': ['managers'], 'permissions': ['manage']}
  repoze.who.identity: <repoze.who identity (hidden, dict-like) at 140502003430624>
  repoze.who.logger: None
  repoze.who.plugins: {'luci_sasl2auth': <luci.lib.plugin_sasl2auth.Sasl2AuthPlugin object at 0x30a7c90>, 'friendlyform': <FriendlyFormPlugin 51040976>, 'auth_tkt': <AuthTktCookiePlugin 51067600>}
  routes.route: <routes.route.Route object at 0x2f0df50>
  routes.url: <routes.util.URLGenerator object at 0x7fc94011d4d0>
  toscawidgets.framework: <tw.mods.base.HostFramework object at 0x307db90>
  toscawidgets.javascript.require_once: False
  toscawidgets.prefix: '/toscawidgets'
  webob._parsed_cookies: ({'luci': '2a6b74c033e5935646ef784bd3c8aba0a517174bbcc2267e2e956c38286c4c8bc9caa096', 'auth_tkt': '3088256516ad7e26a4961d35d7635c124e0c4786root!'}, 'luci=2a6b74c033e5935646ef784bd3c8aba0a517174bbcc2267e2e956c38286c4c8bc9caa096; auth_tkt="3088256516ad7e26a4961d35d7635c124e0c4786root!"')
  webob._parsed_query_vars: (MultiDict([]), '')
  webob.adhoc_attrs: {'start_response': <function repl_start_response at 0x7fc9481f1230>, 'response_ext': None, 'identity': <repoze.who identity (hidden, dict-like) at 140502003430624>, 'language': 'en-us', 'response_type': None}
  wsgi process: 'Multithreaded'
  wsgiorg.routing_args: (<routes.util.URLGenerator object at 0x7fc94011d4d0>, {'url': u'cluster/cldmgrcluster01/services/nfsvm', 'action': u'routes_placeholder', 'controller': u'root'})
------------------------------------------------------------

Comment 10 Ryan McCabe 2011-06-30 15:27:31 UTC
(In reply to comment #9)
> I am running into this error in the Service
> 
> version: luci-0.23.0-13.el6.x86_64
> 
> Steps to reproduce: 
> In Luci interface select "Service Groups" > and select a service (in this case
> a virtual machine named Satellite).
> 
> Workarounds attempted: 
> I have tried short name, FQDN, and IP address with similar results. The same
> error occurs when adding a new service group. The FQDN and short name resolve
> correctly on both the host running luci and the host accessing luci via the
> browser.
This is bug 711625