[Pacemaker] [PATCH] crm shell (configure node) for Heartbeat stack

Kazunori INOUE inouekazu at intellilink.co.jp
Wed Jun 22 05:14:04 UTC 2011


Hi Dejan,

Thank you for the response.
All right. We'll wait.

Then, I revised a patch a little.
(The result to be provided is the same as the first patch.)

# hg diff -r 22acba43e041 shell/modules/cibconfig.py
diff -r 22acba43e041 shell/modules/cibconfig.py
--- a/shell/modules/cibconfig.py	Tue Jun 07 17:18:05 2011 +0200
+++ b/shell/modules/cibconfig.py	Wed Jun 22 13:37:31 2011 +0900
@@ -318,6 +318,22 @@
      except: pass
      return []

+def replace_node_id(cli_list):
+    head = cli_list[0]
+    id = find_value(head[1],"id")
+    if head[0] != "node":
+        return
+    common_debug("cli_list: %s"%cli_list)
+    for obj in [obj for obj in cib_factory.cib_objects if obj.obj_type == head[0]]:
+        uname = obj.node.getAttribute("uname")
+        # The following conditions means 'Heartbeat stack' and '$id is not specified'
+        if obj.obj_id != uname and uname == id:
+            for x in [x for x in head[1] if x[0] == "id"]:
+                common_debug("replace node's id: <%s> to <%s>"%(x[1],obj.obj_id))
+                x[1] = obj.obj_id.encode('ascii')
+                common_debug("cli_list: %s"%cli_list)
+                return
+
  class CibObjectSetCli(CibObjectSet):
      '''
      Edit or display a set of cib objects (using cli notation).
@@ -372,6 +388,7 @@
              err_buf.incr_lineno()
              cli_list = cp.parse(cli_text)
              if cli_list:
+                replace_node_id(cli_list)
                  id = find_value(cli_list[0][1],"id")
                  if id:
                      if id in id_list:
@@ -2058,6 +2075,8 @@
          if obj_type == "op":
              return self.add_op(cli_list)
          if obj_type == "node":
+            replace_node_id(cli_list)
+            obj_id = find_value(head[1],"id")
              obj = self.find_object(obj_id)
              # make an exception and allow updating nodes
              if obj:
#

Best Regards,
Kazunori INOUE

(2011/06/21 21:59), Dejan Muhamedagic wrote:
> Hi Kazunori-san,
>
> Apologies for not getting back to you sooner.
>
> On Mon, Jun 06, 2011 at 06:17:31PM +0900, Kazunori INOUE wrote:
>> Hi,
>>
>> (2011/05/27 19:32), Lars Ellenberg wrote:
>>>
>>> Oh no.
>>> Now you have duplicated all nodes, and will always get "unclean" nodes.
>>>
>>> Is this some variant of:
>>> http://www.clusterlabs.org/wiki/Initial_Configuration#A_Special_Note_for_People_Switching_Cluster_Stacks
>>>
>>> Could that be the root cause of your duplicate node instances with
>>> different ids?
>>>
>> Yes.
>> Corosync uses uname (output of 'uname -n') as ID of the node, and
>> Heartbeat uses UUID as ID of the node. Therefore, on Heartbeat stack,
>> unclean node is added when I loaded the following CLI.
>> # cat test1.cli
>> node srv-a1 utilization capacity="1"
>> #
>>
>> Attached "crm_configure_node_for_hb.patch" replaces ID of node (uname)
>> with UUID, after parsing the node ('node srv-a1 utilization capacity="1"')
>> command.
>> # crm -d configure load update test1.cli
>> (snip)
>> DEBUG: 1: cli_list: [['node', [['uname', 'srv-a1'], ['id', 'srv-a1']]], ['utilization', [['capacity', '1']]]]
>> DEBUG: 1: id_replace:<srv-a1>  to<0cd9d2df-13fa-4b11-93d3-27a57192caeb>
>> DEBUG: 1: cli_list: [['node', [['uname', 'srv-a1'], ['id', '0cd9d2df-13fa-4b11-93d3-27a57192caeb']]], ['utilization', [['capacity', '1']]]]
>> (snip)
>>
>> In other words attached patch will get the same result as loading
>> following cli.
>> # cat test2.cli
>> node $id="0cd9d2df-13fa-4b11-93d3-27a57192caeb" utilization capacity="1"
>> #
>> Is not this patch effective?
>
> Took a look at the patch, but I still need to investigate this
> further. Unfortunately, my schedule got really tight lately.
> I'll try to get to it as soon as I can.
>
> Cheers,
>
> Dejan
>
> _______________________________________________
> Pacemaker mailing list: Pacemaker at oss.clusterlabs.org
> http://oss.clusterlabs.org/mailman/listinfo/pacemaker
>
> Project Home: http://www.clusterlabs.org
> Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf
> Bugs: http://developerbugs.linux-foundation.org/enter_bug.cgi?product=Pacemaker




More information about the Pacemaker mailing list