Hello community,

here is the log from the commit of package pacemaker-mgmt for openSUSE:Factory 
checked in at 2011-11-02 12:10:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pacemaker-mgmt (Old)
 and      /work/SRC/openSUSE:Factory/.pacemaker-mgmt.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "pacemaker-mgmt", Maintainer is "[email protected]"

Changes:
--------
--- /work/SRC/openSUSE:Factory/pacemaker-mgmt/pacemaker-mgmt.changes    
2011-09-23 12:21:29.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.pacemaker-mgmt.new/pacemaker-mgmt.changes       
2011-11-02 12:10:21.000000000 +0100
@@ -1,0 +2,13 @@
+Tue Nov  1 09:57:29 UTC 2011 - [email protected]
+
+- New version: 2.1.0
+- Medium: haclient: Show gray icons for resources with "failure ignored" 
(bnc#711002)
+- Medium: snmp_subagent: Additional check for pending messages from heartbeat 
(lf#2604)
+- High: haclient: Support resource template
+- Medium: haclient: Fill existing resource templates' IDs into the drop-down 
lists where they can be referenced
+- High: haclient: Correctly get and process metadata for the resources 
referencing templates
+- High: haclient: Change the condition for verifying a primitive's attributes
+- Medium: haclient: Tuning for support of rsc_ticket
+- Upstream version cs: 57bab9d281ef8714bb6ec20ab0a4846aa188ec6f
+
+-------------------------------------------------------------------

Old:
----
  pacemaker-mgmt.tar.gz

New:
----
  pacemaker-mgmt.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ pacemaker-mgmt.spec ++++++
--- /var/tmp/diff_new_pack.5ea9pS/_old  2011-11-02 12:10:22.000000000 +0100
+++ /var/tmp/diff_new_pack.5ea9pS/_new  2011-11-02 12:10:22.000000000 +0100
@@ -36,12 +36,12 @@
 
 Name:           pacemaker-mgmt
 Summary:        Management Tools for Pacemaker based HA solution
-Version:        2.0.0
-Release:        6
+Version:        2.1.0
+Release:        0
 License:        GPLv2+
 Url:            http://hg.clusterlabs.org/pacemaker/pygui
 Group:          Productivity/Clustering/HA
-Source:         pacemaker-mgmt.tar.gz
+Source:         pacemaker-mgmt.tar.bz2
 Source1:        pacemaker_starter.py
 Source2:        pacemaker-starter.glade
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build

++++++ pacemaker-mgmt.tar.gz -> pacemaker-mgmt.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pacemaker-mgmt/.hg_archival.txt 
new/pacemaker-mgmt/.hg_archival.txt
--- old/pacemaker-mgmt/.hg_archival.txt 2011-06-01 10:32:23.000000000 +0200
+++ new/pacemaker-mgmt/.hg_archival.txt 1970-01-01 01:00:00.000000000 +0100
@@ -1,5 +0,0 @@
-repo: 7e60b32757e4dcb3f87092467b42de754fc2eabc
-node: 1a1d9055abec035fc9352a5b96e3dddb3a18e757
-branch: default
-latesttag: pacemaker-mgmt-2.0.0 (compatible with pacemaker-1.0.x)
-latesttagdistance: 34
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pacemaker-mgmt/.hgtags new/pacemaker-mgmt/.hgtags
--- old/pacemaker-mgmt/.hgtags  2011-06-01 10:32:23.000000000 +0200
+++ new/pacemaker-mgmt/.hgtags  1970-01-01 01:00:00.000000000 +0100
@@ -1,35 +0,0 @@
-17f9cfe9a03e6a7bf4b40d8387725cc355e65171 SLE10-SP1
-17f9cfe9a03e6a7bf4b40d8387725cc355e65171 STABLE-2.1.0
-18b9aab5cb77c7fff43f9412f459ec347f6de768 STABLE-2.0.4
-2e2f13c0031aa58c49738bc3bcb48354e9cabaad STABLE-2.0.8
-3498e3c7589138b2ae83494bd041bd4035986ab0 obs-2.1.2-15
-3884c0471649777489d51a879e1250a26abf50e0 obs-2.1.2-1
-3884c0471649777489d51a879e1250a26abf50e0 obs-2.1.2-2
-50a4415330682dd13bf7cb402afcf8de5d2eaab1 STABLE-2.0.1
-50a4415330682dd13bf7cb402afcf8de5d2eaab1 STABLE-2.0.2
-5219fa85a02e80fc17b807f80ee9b8a35102e860 STABLE-2.0.3
-5ffb35cb887244a4c05a9d49f22117a2b6b933cd obs-2.1.2-24
-7347ce61e20fc3bb5083191e9bcf9d82c470d518 obs-2.1.2-4
-768cb2fe018c4a391147d0a7d0b55c119e7115e6 STABLE-2.1.3
-7c4dd01b27b84eff88b4a530b104b6126a68fcef SLES10-GA-2.0.7-1.5
-7c4dd01b27b84eff88b4a530b104b6126a68fcef STABLE-2.0.7
-7e60b32757e4dcb3f87092467b42de754fc2eabc Beta-0.4.9f
-a87d4e121527f70a2514e90439bc3faae3fb68af STABLE-2.0.6
-ac01ffae6d59cd7a2537ab6301291a3bf9d9583f STABLE-1.1.3
-ac01ffae6d59cd7a2537ab6301291a3bf9d9583f STABLE-1.1.5
-ac01ffae6d59cd7a2537ab6301291a3bf9d9583f Series-Root-1.2
-ad523cccc9179b05989c7c915cd01d5cd4d05ce7 STABLE-2.1.1
-b2aad3727cb5e2583d2a9f92c4121e9c8f29b91e STABLE-2.1.2
-b2ef116145dafdeecdb48a7f6745e196fa155072 Series-Root-1.0
-b34961469c52b89821b00e0094555fef11ab8644 STABLE-2.0.5
-ce387a572079ec43fb1dff248c5c5708d99938c9 STABLE-2.0.0
-b80f73a4220e61c276a992855f2e67b94fdb3ffc Conversion-Complete
-d39732d2fe52e2489d41548a168ebf44e5bf33a7 pygui-1.1
-d1490ffc2186da3f3be9bee893eda9ae8ac96f27 pygui-1.2
-46736ff1b944191c2a16a9e79b336b4509e27b85 pygui-1.3
-662b9412662fe8e1bbe9e827a1dc71679a553474 pygui-1.3.1
-4d3288030a84f75b556a85c1e641e6d59834464a pacemaker-pygui-1.4
-0f24c045c82a798fdb94757724dad501e2c51679 pacemaker-mgmt-1.99.0
-2e157aedac0d867b7491326f77d6937559e07971 pacemaker-mgmt-1.99.1
-d870986f397419ab4336f52b4a4590067ebc73ca pacemaker-mgmt-1.99.2
-18332eae086e5c64bf1f2ae80eba52b72c409963 pacemaker-mgmt-2.0.0 (compatible with 
pacemaker-1.0.x)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pacemaker-mgmt/mgmt/client/haclient.py.in 
new/pacemaker-mgmt/mgmt/client/haclient.py.in
--- old/pacemaker-mgmt/mgmt/client/haclient.py.in       2011-06-01 
10:32:23.000000000 +0200
+++ new/pacemaker-mgmt/mgmt/client/haclient.py.in       2011-10-28 
11:13:52.000000000 +0200
@@ -539,6 +539,7 @@
                                "cluster_property_set": gtk.STOCK_PREFERENCES,
                                "node": "node",
                                "primitive": gtk.STOCK_DND,
+                               "template": gtk.STOCK_DND,
                                "group": gtk.STOCK_DND_MULTIPLE,
                                "clone": gtk.STOCK_COPY,
                                "master": gtk.STOCK_COPY,
@@ -546,6 +547,7 @@
                                "rsc_order": gtk.STOCK_PROPERTIES,
                                "rsc_location": gtk.STOCK_PROPERTIES,
                                "rsc_colocation": gtk.STOCK_PROPERTIES,
+                               "rsc_ticket": gtk.STOCK_PROPERTIES,
                                "operations": gtk.STOCK_DIALOG_AUTHENTICATION,
                                "op": gtk.STOCK_DIALOG_AUTHENTICATION,
                                "instance_attributes": gtk.STOCK_PREFERENCES,
@@ -1801,7 +1803,8 @@
                iter_status = 0
                if type == "primitive" :
                        if string.find(status, _("unmanaged")) != -1 \
-                                       or string.find(status, _("unclean")) != 
-1 :
+                                       or string.find(status, _("unclean")) != 
-1 \
+                                       or string.find(status, _("failure 
ignored")) != -1 :
                                iter_status = 2
                        elif string.find(status, _("failed")) != -1 :
                                iter_status = 3
@@ -2961,7 +2964,7 @@
                        obj_box = self.vbox
 
                if has_attr :
-                       if obj_type == "primitive" :
+                       if obj_type in ["primitive", "template"] :
                                obj_attrs = Primitive(self.xml_node, is_newobj, 
self.change_call_back)
                        elif obj_type == "rsc_order" :
                                obj_attrs = RscOrder(self.xml_node, is_newobj, 
self.change_call_back)
@@ -2970,7 +2973,7 @@
                        elif obj_type == "nvpair" :
                                if validate_type == "dtd" :
                                        if 
self.xml_node.parentNode.parentNode.tagName == "instance_attributes" and \
-                                                       
self.xml_node.parentNode.parentNode.parentNode.tagName == "primitive" :
+                                                       
self.xml_node.parentNode.parentNode.parentNode.tagName in ["primitive", 
"template"] :
                                                obj_attrs = 
PrimInstAttrsNV(self.xml_node, is_newobj, self.change_call_back)
                                        elif 
self.xml_node.parentNode.parentNode.tagName == "instance_attributes" and \
                                                        
self.xml_node.parentNode.parentNode.parentNode.tagName == "op" :
@@ -2988,7 +2991,7 @@
                                                obj_attrs = 
ObjectAttrs(self.xml_node, is_newobj, self.change_call_back)
                                else :
                                        if self.xml_node.parentNode.tagName == 
"instance_attributes" and \
-                                                       
self.xml_node.parentNode.parentNode.tagName == "primitive" :
+                                                       
self.xml_node.parentNode.parentNode.tagName in ["primitive", "template"]:
                                                obj_attrs = 
PrimInstAttrsNV(self.xml_node, is_newobj, self.change_call_back)
                                        elif self.xml_node.parentNode.tagName 
== "instance_attributes" and \
                                                        
self.xml_node.parentNode.parentNode.tagName == "op" :
@@ -3844,7 +3847,7 @@
                                        or (validate_type != "dtd" and 
option_list[0][0][1].getAttribute("name") != "lifetime")) :
                        obj_type = option_list[0]
                elif not invoked_by_wizard and mode_level == 0 and (
-                                       self.obj_type in ["node", "primitive", 
"group"]
+                                       self.obj_type in ["node", "primitive", 
"template", "group"]
                                        or (self.obj_type in ["clone", "master"]
                                                and 
(self.pages.count("primitive") > 0 
                                                        or 
self.pages.count("group") > 0))
@@ -4402,6 +4405,7 @@
 
                meta_attributes_options = {
                "primitive": common_options,
+               "template": common_options,
                "group": common_options,
                "clone": common_options + clone_basic_options + 
clone_other_options,
                "master": common_options + clone_basic_options + 
master_basic_options + clone_other_options,
@@ -4439,7 +4443,7 @@
                separator.show()
                dialog.vbox.pack_start(separator, False, padding = 2)
 
-               if self.obj_type == "primitive" :
+               if self.obj_type in ["primitive", "template"] :
                        obj_attrs = Primitive(self.xml_node, True, 
hide_optional = True)
                else :
                        obj_attrs = obj_attrs = ObjectAttrs(self.xml_node, 
True, hide_optional = True)
@@ -4549,7 +4553,7 @@
                widget_group = WidgetGroup(widgets)
                self.widget_group = widget_group
 
-               if self.obj_type == "primitive" :
+               if self.obj_type in ["primitive", "template"]:
                        label = gtk.Label(_("Add monitor operation"))
                        self.monitor_checkbutton = gtk.CheckButton()
                        self.monitor_checkbutton.add(label)
@@ -4576,7 +4580,7 @@
                tmp_meta_attributes.update(meta_attributes)
                self.widget_group.show_values(tmp_meta_attributes)
 
-               if self.obj_type == "primitive" :
+               if self.obj_type in ["primitive", "template"]:
                        monitors = self.get_monitors()
                        if len(monitors) > 0 :
                                self.monitor_checkbutton.set_active(True)
@@ -4601,7 +4605,7 @@
                                top_window = save_top_window
 
                                self.set_meta_attributes()
-                               if self.obj_type == "primitive" :
+                               if self.obj_type in ["primitive", "template"] :
                                        meta = self.get_rsc_meta()
                                        self.set_monitor(meta)
                                        self.set_inst_attributes(meta)
@@ -4671,14 +4675,15 @@
                return monitors
 
        def get_rsc_meta(self) :
-               primitive_class = str(self.xml_node.getAttribute("class"))
-               primitive_type = str(self.xml_node.getAttribute("type"))
-               primitive_provider = str(self.xml_node.getAttribute("provider"))
+               primitive_attrs = manager.get_rsc_attrs(self.xml_node, 
["class", "type", "provider"])
+               primitive_class = str(primitive_attrs.get("class", ""))
+               primitive_type = str(primitive_attrs.get("type", ""))
+               primitive_provider = str(primitive_attrs.get("provider", ""))
                meta = manager.get_rsc_meta(primitive_class, primitive_type, 
primitive_provider)
                return meta
 
        def set_monitor(self, meta) :
-               if self.obj_type != "primitive" or meta == None :
+               if self.obj_type not in ["primitive", "template"] or meta == 
None :
                        return
 
                monitors = self.get_monitors()
@@ -4812,7 +4817,7 @@
                                        break
                                iter = model.iter_next(iter)
 
-               if self.obj_type == "primitive" :
+               if self.obj_type in ["primitive", "template"] :
                        self.monitor_checkbutton.set_active(True)
 
                return self.first_page_run()
@@ -4855,7 +4860,7 @@
 
                dialog.vbox.show_all()
 
-               if self.obj_type != "primitive" and add_prompt :
+               if self.obj_type not in ["primitive", "template"] and 
add_prompt :
                        if rsc_id != "" :
                                title_suffix = _("Sub-resource For 
\"%s\"")%rsc_id
                        else :
@@ -8076,12 +8081,53 @@
                for resources_node in 
manager.xml_nodes["cib"].getElementsByTagName("resources") :
                        for primitive_node in 
resources_node.getElementsByTagName("primitive") :
                                if primitive_node.getAttribute("id") == rsc_id :
-                                       rsc_class = 
str(primitive_node.getAttribute("class"))
-                                       rsc_type = 
str(primitive_node.getAttribute("type"))
-                                       rsc_provider = 
str(primitive_node.getAttribute("provider"))
+                                       primitive_attrs = 
self.get_rsc_attrs(primitive_node, ["class", "type", "provider"])
+                                       rsc_class = 
str(primitive_attrs.get("class", ""))
+                                       rsc_type = 
str(primitive_attrs.get("type", ""))
+                                       rsc_provider = 
str(primitive_attrs.get("provider", ""))
                                        return (rsc_class, rsc_type, 
rsc_provider)
                return None
 
+       def get_rsc_attrs(self, primitive_node, attr_names) :
+               attrs ={}
+
+               ref_node = primitive_node
+               while ref_node and ref_node.nodeType == 
xml.dom.Node.ELEMENT_NODE :
+                       for attr_name in attr_names :
+                               if attrs.get(attr_name) :
+                                       continue
+
+                               attr_value = ref_node.getAttribute(attr_name)
+                               if attr_value :
+                                       attrs[attr_name] = str(attr_value)
+
+                       template_id = ref_node.getAttribute("template")
+                       if template_id :
+                               ref_node = self.get_template(template_id)
+                       else :
+                               break
+
+               return attrs
+
+       def get_template(self, template_id) :
+               if not template_id :
+                       return None
+
+               for resources_node in 
manager.xml_nodes["cib"].getElementsByTagName("resources") :
+                       for template_node in 
resources_node.getElementsByTagName("template") :
+                               if template_node.getAttribute("id") == 
template_id :
+                                       return template_node
+               return None
+
+       def get_all_templates(self) :
+               templates = []
+               for resources_node in 
manager.xml_nodes["cib"].getElementsByTagName("resources") :
+                       for template_node in 
resources_node.getElementsByTagName("template") :
+                               template_id = template_node.getAttribute("id")
+                               if template_id and template_id not in templates:
+                                       templates.append(template_id)
+               return templates
+
        def get_locale_desc(self, node, tag) :
                desc_en = ""
                desc_match = ""
@@ -8430,8 +8476,8 @@
 
                else :
                        if self.is_newobj and not self.id_is_idref and 
self.obj_type not in \
-                                       ["node", "primitive", "group", "clone", 
"master","master_slave", \
-                                       "rsc_location", "rsc_colocation", 
"rsc_order", "acl_user", "acl_role"] :
+                                       ["node", "primitive", "template", 
"group", "clone", "master","master_slave", \
+                                       "rsc_location", "rsc_colocation", 
"rsc_order", "rsc_ticket", "acl_user", "acl_role"] :
                                if self.widgets.has_key("combo_entries") and 
self.widgets["combo_entries"].has_key("id") \
                                                and 
len(self.widgets["combo_entries"]["id"].child.get_text()) == 0 :
                                        obj_id = 
manager.auto_unique_id(self.xml_node, self.obj_type)
@@ -8956,7 +9002,8 @@
        def auto_fill(self) :
                widgets = self.widgets
                rsc_store = gtk.ListStore(str, str)
-               for rsc in manager.get_all_real_rsc() :
+               all_real_rsc = manager.get_all_real_rsc()
+               for rsc in all_real_rsc :
                        rsc_store.append([rsc, ""])
 
                node_list = manager.get_normal_nodes()
@@ -8964,13 +9011,27 @@
                        node_list = []
                node_store = [[node, ""] for node in node_list]
 
+               all_templates = manager.get_all_templates()
+               template_store = [[template, ""] for template in all_templates]
+
+               rsc_refs = all_real_rsc[:]
+               rsc_refs.extend(all_templates)
+               rsc_refs_store = [[rsc, ""] for rsc in rsc_refs]
+
                if widgets.has_key("combo_entries") :
                        for key in ["rsc", "with-rsc", "first", "then", "from", 
"to"] :
                                if widgets["combo_entries"].has_key(key) :
-                                       
self.combobox_store_append(widgets["combo_entries"][key], rsc_store)
+                                       if self.obj_type == "rsc_location" :
+                                               
self.combobox_store_append(widgets["combo_entries"][key], rsc_store)
+                                       else :
+                                               
self.combobox_store_append(widgets["combo_entries"][key], rsc_refs_store)
                        if widgets["combo_entries"].has_key("id") and 
self.id_is_idref :
                                
self.combobox_store_append(widgets["combo_entries"]["id"], rsc_store)
 
+                       for key in ["template"] :
+                               if widgets["combo_entries"].has_key(key) :
+                                       
self.combobox_store_append(widgets["combo_entries"][key], template_store)
+
                        for key in ["node"] :
                                if widgets["combo_entries"].has_key(key) :
                                        
self.combobox_store_append(widgets["combo_entries"][key], node_store)
@@ -9507,13 +9568,32 @@
                                and widget == 
widgets["combo_entries"]["provider"] :
                        desc = self.get_meta_desc()
 
+               if widgets.has_key("combo_entries") and 
widgets["combo_entries"].has_key("template") \
+                               and widget == 
widgets["combo_entries"]["template"] :
+                       desc = self.get_meta_desc()
+
                return desc
 
        def get_meta_desc(self) :
                primitive = self.get_values()
-               primitive_class = primitive.get("class", "")
-               primitive_type = primitive.get("type", "")
-               primitive_provider = primitive.get("provider", "heartbeat")
+               primitive_template = primitive.get("template")
+
+               title = ""
+               if not primitive_template :
+                       primitive_class = primitive.get("class", "")
+                       primitive_type = primitive.get("type", "")
+                       primitive_provider = primitive.get("provider", 
"heartbeat")
+               else :
+                       template_node = manager.get_template(primitive_template)
+                       if template_node == None :
+                               return [""]
+
+                       primitive_attrs = manager.get_rsc_attrs(template_node, 
["class", "type", "provider"])
+                       primitive_class = str(primitive_attrs.get("class", ""))
+                       primitive_type = str(primitive_attrs.get("type", ""))
+                       primitive_provider = 
str(primitive_attrs.get("provider", "heartbeat"))
+
+                       title = "%s:%s:%s\n\n"%(primitive_class, 
primitive_provider, primitive_type)
 
                meta = manager.get_rsc_meta(primitive_class, primitive_type, 
primitive_provider) 
                if meta == None :
@@ -9530,14 +9610,14 @@
                        shortdesc = ""
 
                if len(longdesc) == 0 :
-                       desc = [shortdesc]
+                       desc = [title + shortdesc]
                elif longdesc.find(shortdesc) > -1 :
-                       desc = [longdesc]
+                       desc = [title + longdesc]
                else :
                        if shortdesc.endswith(_(".")) :
-                               desc = [shortdesc + "\n" + longdesc]
+                               desc = [title + shortdesc + "\n" + longdesc]
                        else :
-                               desc = [shortdesc + _(".") + "\n" + longdesc]
+                               desc = [title + shortdesc + _(".") + "\n" + 
longdesc]
                return desc
 
        def verify_values(self) :
@@ -9545,8 +9625,8 @@
                        return False
 
                primitive = self.get_values()
-               if primitive.get("class", "") == "" :
-                       msgbox(_("\"%s\" is required")%_("Class"))
+               if primitive.get("template", "") == "" and 
primitive.get("class", "") == "" :
+                       msgbox(_("\"%s\" or \"%s\" is required")%(_("Class"), 
_("Template")))
                        return False
 
                if primitive.get("class", "") == "ocf" and 
primitive.get("provider", "") == "" :
@@ -9606,6 +9686,7 @@
 
                self.meta_attributes_options = {
                "primitive": common_options + primitive_options,
+               "template": common_options + primitive_options,
                "group": common_options,
                "clone": common_options + clone_basic_options + 
clone_other_options,
                "master": common_options + clone_basic_options + 
master_basic_options + clone_other_options,
@@ -9670,7 +9751,7 @@
                widgets = self.widgets
                attr_store = []
 
-               if self.target_type in ["primitive", "group", "clone", 
"master_slave"] :
+               if self.target_type in ["primitive", "template", "group", 
"clone", "master_slave"] :
                        attr_store.append(["target_role", ""])
 
                for attr_name in self.target_attrlist :
@@ -9840,9 +9921,12 @@
                        primitive_node = 
xml_node.parentNode.parentNode.parentNode
                else :
                        primitive_node = xml_node.parentNode.parentNode
-               primitive_class = str(primitive_node.getAttribute("class"))
-               primitive_type = str(primitive_node.getAttribute("type"))
-               primitive_provider = 
str(primitive_node.getAttribute("provider"))
+
+               primitive_attrs = manager.get_rsc_attrs(primitive_node, 
["class", "type", "provider"])
+               primitive_class = str(primitive_attrs.get("class", ""))
+               primitive_type = str(primitive_attrs.get("type", ""))
+               primitive_provider = str(primitive_attrs.get("provider", ""))
+
                self.meta = manager.get_rsc_meta(primitive_class, 
primitive_type, primitive_provider)
                MetaNV.__init__(self, xml_node, is_newobj, change_call_back)
 
@@ -9977,9 +10061,10 @@
                if mode_level == 0 :
                        self.dynamic_layout = self.dynamic_layout_simple
                primitive_node = xml_node.parentNode.parentNode
-               primitive_class = str(primitive_node.getAttribute("class"))
-               primitive_type = str(primitive_node.getAttribute("type"))
-               primitive_provider = 
str(primitive_node.getAttribute("provider"))
+               primitive_attrs = manager.get_rsc_attrs(primitive_node, 
["class", "type", "provider"])
+               primitive_class = str(primitive_attrs.get("class", ""))
+               primitive_type = str(primitive_attrs.get("type", ""))
+               primitive_provider = str(primitive_attrs.get("provider", ""))
                meta = manager.get_rsc_meta(primitive_class, primitive_type, 
primitive_provider)
                self.meta = meta
                ObjectAttrs.__init__(self, xml_node, is_newobj, 
change_call_back)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pacemaker-mgmt/snmp_subagent/hbagent.c 
new/pacemaker-mgmt/snmp_subagent/hbagent.c
--- old/pacemaker-mgmt/snmp_subagent/hbagent.c  2011-06-01 10:32:23.000000000 
+0200
+++ new/pacemaker-mgmt/snmp_subagent/hbagent.c  2011-10-28 11:13:52.000000000 
+0200
@@ -1669,6 +1669,15 @@
                run_alarms();
                netsnmp_check_outstanding_agent_requests();
 
+#if SUPPORT_HEARTBEAT
+               if (is_heartbeat_cluster()) {
+                       if ((ret = handle_heartbeat_msg()) == HA_FAIL) {
+                               cl_log(LOG_DEBUG, "no heartbeat. quit now.");
+                               hb_already_dead = 1;
+                               break;
+                       }
+               }
+#endif
        }
 
        /* at shutdown time */


-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to