04.07.2013 17:25, Dejan Muhamedagic wrote: > On Wed, Jul 03, 2013 at 04:33:20PM +0300, Vladislav Bogdanov wrote: >> 03.07.2013 15:43, Dejan Muhamedagic wrote: >>> Hi Lars, >>> >>> On Wed, Jul 03, 2013 at 12:05:17PM +0200, Lars Marowsky-Bree wrote: >>>> On 2013-07-03T10:26:09, Dejan Muhamedagic <[email protected]> wrote: >>>> >>>>>> Not sure that is expected by most people. >>>>>> How you then delete attributes? >>>>> Tough call :) Ideas welcome. >>>> >>>> Set them to an empty string, or a magic "#undef" value. >>>> >>>>> It's not only for the nodes. Attributes of resources should be >>>>> merged as well. Perhaps to introduce another load method, say >>>>> merge, which would merge attributes of elements instead of >>>>> replacing them. Though the use would then get more complex (which >>>>> seems to be justified here). >>>> >>>> Well, that leaves open the question of how higher-level objects >>>> (primitives, clones, groups, constraints ...) would be affected/deleted. >>>> >>>> I'm not sure the complexity is really worth it. Merge rules get *really* >>>> complex, quickly. And eventually, one ends with the need to annotate the >>>> input with how one wants a merge to be resolved (such as "#undef" >>>> values). >>> >>> Perhaps I misunderstood the original intention, but the idea was >>> more simple: >>> >>> primitive r1 params p1="v1" p2="v2" meta m1="mv1" >>> >>> primitive r1 params p1="nv1" p3="v3" <- merge >>> >>> --- >>> >>> primitive r1 params p1="nv1" p2="v2" p3="v3" meta m1="mv1" >>> >>> If the attribute already exists, then it is overwritten. The >>> existing attributes are otherwise left intact. New attributes are >>> added. >> >> I'd simplify that logic to sections. > > Must say that it seems to me simpler and easier to grasp on the > attribute level. Besides, code for that already exists, so it > would reduce effort and code size/complexity :) Of course, > I can also see some use cases for the attribute-set level > operations.
Ok, you know it much better ;) > >> * node attributes (except pacemaker internal ones like $id?) >> * node utilization >> * primitive params >> * primitive meta >> * primitive utilization >> * clone/ms meta >> >> If whole section is missing in the update, then leave it as-is. >> Otherwise (also if it exists but empty) replace the whole section. >> >> The only unclear thing is 'op', but this one can be replaced >> unconditionally (like in the current logic). > > I guess that it can be merged just like any other set of > attributes. Note that the user is free to specify the > operation fully if they really want to replace it completely. > > The only question is how to remove existing attributes. Not many choices here I think... Either set to empty or better predefined value (empty value may be still valid and used to override not-empty default one) like Lars suggested or use some additional formatting ( -param_name ). Second way probably requires new load method. > > BTW, did you ever try the configure filter command? Hm.. Not yet :) But how that can help? Vladislav _______________________________________________ Linux-HA mailing list [email protected] http://lists.linux-ha.org/mailman/listinfo/linux-ha See also: http://linux-ha.org/ReportingProblems
