Author: tmckay
Date: 2012-01-09 20:13:23 +0000 (Mon, 09 Jan 2012)
New Revision: 5184
Modified:
branches/stability/cumin/python/cumin/inventory/system.py
branches/stability/sage/python/sage/wallaby/wallabyoperations.py
Log:
Return [] from get_tag_names() in wallabyoperations.py if the node object does not
contain a name attribute. This is a catchall to prevent exceptions.
Modify system.py so that an error message is displayed by the Configuration tab in cases
where Sesame data has changed after drilldown from the Inventory tab.
BZ771642
Modified: branches/stability/cumin/python/cumin/inventory/system.py
===================================================================
--- branches/stability/cumin/python/cumin/inventory/system.py 2012-01-04 17:13:48 UTC (rev
5183)
+++ branches/stability/cumin/python/cumin/inventory/system.py 2012-01-09 20:13:23 UTC (rev
5184)
@@ -172,22 +172,50 @@
def __init__(self, app, name, system):
super(SystemTagSet, self).__init__(app, name)
self.system = system
+ self.main_tmpl = WidgetTemplate(self, "html")
def render_title(self, session):
return "Tags"
-
- def render_tags(self, session):
+
+ def _get_name(self, session):
+ node_name = ""
system = self.system.get(session)
try:
node_name = system.nodeName
except:
node_name = self.frame.id.get(session)
- tags = self.app.wallaby.get_tag_names(node_name)
-
+ return node_name
+
+ def render_tags(self, session):
+ node_name = self._get_name(session)
+ try:
+ tags = self.app.wallaby.get_tag_names(node_name)
+ except AttributeError:
+ tags = []
tags_string = ", ".join(tags)
return tags_string
+ def do_render(self, session, *args):
+ if self.defer_enabled and not getattr(session, "background", None):
+ writer = Writer()
+ self.__defer_tmpl.render(writer, session, *args)
+ return writer.to_string()
+ else:
+ writer = Writer()
+ # if we have an object, we're in good shape
+ # otherwise, show the "no content" template
+ node_name = self._get_name(session)
+ if self.frame.object.get(session) or \
+ type(node_name) in (str,unicode) and node_name != "":
+ self.main_tmpl.render(writer, session, *args)
+ else:
+ self.nocontent_tmpl.render(writer, session, *args)
+ return writer.to_string()
+
+ def render_error_msg(self, session, *args):
+ return "Host data may have changed. Return to the Inventory page and try
again"
+
class SystemTags(Widget):
def __init__(self, app, name, system):
super(SystemTags, self).__init__(app, name)
Modified: branches/stability/sage/python/sage/wallaby/wallabyoperations.py
===================================================================
--- branches/stability/sage/python/sage/wallaby/wallabyoperations.py 2012-01-04 17:13:48
UTC (rev 5183)
+++ branches/stability/sage/python/sage/wallaby/wallabyoperations.py 2012-01-09 20:13:23
UTC (rev 5184)
@@ -414,16 +414,20 @@
on the specified node.
'''
names = []
+ n = None
if type(node) in (str, unicode):
n = node
+ elif hasattr(node, "name"):
+ n = node.name
+ if n is None:
+ log.debug("WallabyOperations: get_tag_names(), parameter
'node' yields no name, returning []")
else:
- n = node.name
- self._lock.acquire()
- try:
- if n in self._cache[WBTypes.NODES].data:
- names = self._cache[WBTypes.NODES].data[n].getTags()
- finally:
- self._lock.release()
+ self._lock.acquire()
+ try:
+ if n in self._cache[WBTypes.NODES].data:
+ names = self._cache[WBTypes.NODES].data[n].getTags()
+ finally:
+ self._lock.release()
return names
def create_tags(self, names):
Show replies by date