[Pacemaker] [PATCH] crm shell (configure node) for Heartbeat stack
Dejan Muhamedagic
dejanmm at fastmail.fm
Wed Jun 22 07:02:43 UTC 2011
Hi Kazunori-san,
On Wed, Jun 22, 2011 at 02:14:04PM +0900, Kazunori INOUE wrote:
> Hi Dejan,
>
> Thank you for the response.
> All right. We'll wait.
The issue is somewhat more serious, probably. All elements from
the CIB are referenced by the id, which was thought to be
universally the id attribute. But, with nodes, it should be the
uname attribute. Such an exception may be expensive, I'm not sure
yet.
Cheers,
Dejan
> 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
>
> _______________________________________________
> 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