• R/O
  • SSH

pm_diskd: Commit

※ リポジトリは、pm-diskd ブランチが https://github.com/linux-ha-japan/pm_diskd-1.0 へ、pm-diskd-2.0ブランチが https://github.com/linux-ha-japan/pm_diskd へ移行しました。

Pacemaker 対応ディスク故障監視機能。

Pacemaker-1.0公式リポジトリのクローンに対し、パッチ作成用のブランチを作成して管理する。
ブランチ名: pm-diskd

初回 hg clone 実行後は、hg update -r pm-diskd を実行すること。

Heartbeat-2.1.4 用 hb-diskd(*) のPacemaker対応版
(*) http://sourceforge.jp/projects/linux-ha/releases/?package_id=10555


Commit MetaInfo

Revision06d0165545556fb1bf2ab616e7d516de475643e5 (tree)
Zeit2008-07-08 20:44:13
AutorAndrew Beekhof <abeekhof@suse...>
CommiterAndrew Beekhof

Log Message

Hg: Merge in stable-0.6 changes

Ändern Zusammenfassung

Diff

diff -r 34cc17c68183 -r 06d016554555 crm/admin/crm_resource.c
--- a/crm/admin/crm_resource.c Tue Jul 08 13:42:23 2008 +0200
+++ b/crm/admin/crm_resource.c Tue Jul 08 13:44:13 2008 +0200
@@ -655,7 +655,6 @@
655655 xmlNode *expr = NULL;
656656 xmlNode *constraints = NULL;
657657 xmlNode *fragment = NULL;
658- xmlNode *lifetime = NULL;
659658
660659 xmlNode *can_run = NULL;
661660 xmlNode *dont_run = NULL;
@@ -735,23 +734,6 @@
735734 }
736735
737736 crm_xml_add(dont_run, "rsc", rsc_id);
738-
739- if(later_s) {
740- lifetime = create_xml_node(dont_run, "lifetime");
741-
742- rule = create_xml_node(lifetime, XML_TAG_RULE);
743- id = crm_concat("cli-standby-lifetime", rsc_id, '-');
744- crm_xml_add(rule, XML_ATTR_ID, id);
745- crm_free(id);
746-
747- expr = create_xml_node(rule, "date_expression");
748- id = crm_concat("cli-standby-lifetime-end",rsc_id,'-');
749- crm_xml_add(expr, XML_ATTR_ID, id);
750- crm_free(id);
751-
752- crm_xml_add(expr, "operation", "lt");
753- crm_xml_add(expr, "end", later_s);
754- }
755737
756738 rule = create_xml_node(dont_run, XML_TAG_RULE);
757739 expr = create_xml_node(rule, XML_TAG_EXPRESSION);
@@ -760,6 +742,7 @@
760742 crm_free(id);
761743
762744 crm_xml_add(rule, XML_RULE_ATTR_SCORE, MINUS_INFINITY_S);
745+ crm_xml_add(rule, XML_RULE_ATTR_BOOLEAN_OP, "and");
763746
764747 id = crm_concat("cli-standby-expr", rsc_id, '-');
765748 crm_xml_add(expr, XML_ATTR_ID, id);
@@ -769,6 +752,16 @@
769752 crm_xml_add(expr, XML_EXPR_ATTR_OPERATION, "eq");
770753 crm_xml_add(expr, XML_EXPR_ATTR_VALUE, existing_node);
771754 crm_xml_add(expr, XML_EXPR_ATTR_TYPE, "string");
755+
756+ if(later_s) {
757+ expr = create_xml_node(rule, "date_expression");
758+ id = crm_concat("cli-standby-lifetime-end",rsc_id,'-');
759+ crm_xml_add(expr, XML_ATTR_ID, id);
760+ crm_free(id);
761+
762+ crm_xml_add(expr, "operation", "lt");
763+ crm_xml_add(expr, "end", later_s);
764+ }
772765
773766 add_node_copy(constraints, dont_run);
774767 }
@@ -787,23 +780,6 @@
787780 } else {
788781 crm_xml_add(can_run, "rsc", rsc_id);
789782
790- if(later_s) {
791- lifetime = create_xml_node(can_run, "lifetime");
792-
793- rule = create_xml_node(lifetime, XML_TAG_RULE);
794- id = crm_concat("cli-prefer-lifetime", rsc_id, '-');
795- crm_xml_add(rule, XML_ATTR_ID, id);
796- crm_free(id);
797-
798- expr = create_xml_node(rule, "date_expression");
799- id = crm_concat("cli-prefer-lifetime-end", rsc_id, '-');
800- crm_xml_add(expr, XML_ATTR_ID, id);
801- crm_free(id);
802-
803- crm_xml_add(expr, "operation", "lt");
804- crm_xml_add(expr, "end", later_s);
805- }
806-
807783 rule = create_xml_node(can_run, XML_TAG_RULE);
808784 expr = create_xml_node(rule, XML_TAG_EXPRESSION);
809785 id = crm_concat("cli-prefer-rule", rsc_id, '-');
@@ -811,6 +787,7 @@
811787 crm_free(id);
812788
813789 crm_xml_add(rule, XML_RULE_ATTR_SCORE, INFINITY_S);
790+ crm_xml_add(rule, XML_RULE_ATTR_BOOLEAN_OP, "and");
814791
815792 id = crm_concat("cli-prefer-expr", rsc_id, '-');
816793 crm_xml_add(expr, XML_ATTR_ID, id);
@@ -820,6 +797,16 @@
820797 crm_xml_add(expr, XML_EXPR_ATTR_OPERATION, "eq");
821798 crm_xml_add(expr, XML_EXPR_ATTR_VALUE, preferred_node);
822799 crm_xml_add(expr, XML_EXPR_ATTR_TYPE, "string");
800+
801+ if(later_s) {
802+ expr = create_xml_node(rule, "date_expression");
803+ id = crm_concat("cli-prefer-lifetime-end", rsc_id, '-');
804+ crm_xml_add(expr, XML_ATTR_ID, id);
805+ crm_free(id);
806+
807+ crm_xml_add(expr, "operation", "lt");
808+ crm_xml_add(expr, "end", later_s);
809+ }
823810
824811 add_node_copy(constraints, can_run);
825812 }
@@ -839,7 +826,8 @@
839826 }
840827
841828 static int
842-list_resource_operations(const char *rsc_id, const char *host_uname, gboolean active, pe_working_set_t *data_set)
829+list_resource_operations(
830+ const char *rsc_id, const char *host_uname, gboolean active, pe_working_set_t *data_set)
843831 {
844832 resource_t *rsc = NULL;
845833 int opts = pe_print_printf|pe_print_rsconly|pe_print_suppres_nl;
@@ -851,9 +839,7 @@
851839 int status = crm_parse_int(status_s, "0");
852840
853841 rsc = pe_find_resource(data_set->resources, op_rsc);
854-
855842 rsc->fns->print(rsc, "", opts, stdout);
856-
857843
858844 fprintf(stdout, ": %s (node=%s, call=%s, rc=%s",
859845 ID(xml_op),
diff -r 34cc17c68183 -r 06d016554555 cts/CIB.py.in
--- a/cts/CIB.py.in Tue Jul 08 13:42:23 2008 +0200
+++ b/cts/CIB.py.in Tue Jul 08 13:44:13 2008 +0200
@@ -20,7 +20,7 @@
2020 <nvpair id="cib-bootstrap-2" name="stonith-enabled" value="%d"/>
2121 <nvpair id="cib-bootstrap-3" name="pe-input-series-max" value="30000"/>
2222 <nvpair id="cib-bootstrap-4" name="shutdown-escalation" value="5min"/>
23- <nvpair id="cib-bootstrap-6" name="batch-limit" value="1"/>
23+ <nvpair id="cib-bootstrap-6" name="batch-limit" value="10"/>
2424 <!-- *** For CTS testing only *** _NEVER_ make this the default -->
2525 <nvpair id="cib-bootstrap-5" name="startup-fencing" value="false"/>
2626 </attributes>
diff -r 34cc17c68183 -r 06d016554555 lib/crm/cib/cib_utils.c
--- a/lib/crm/cib/cib_utils.c Tue Jul 08 13:42:23 2008 +0200
+++ b/lib/crm/cib/cib_utils.c Tue Jul 08 13:44:13 2008 +0200
@@ -639,14 +639,12 @@
639639 tag = "diff-removed";
640640 tmp = find_xml_node(*diff, tag, FALSE);
641641 if(tmp == NULL) {
642- crm_info("create %s", tag);
643642 tmp = create_xml_node(*diff, tag);
644643 }
645644
646645 tag = XML_TAG_CIB;
647646 top = find_xml_node(tmp, tag, FALSE);
648647 if(top == NULL) {
649- crm_info("create %s", tag);
650648 top = create_xml_node(tmp, tag);
651649 }
652650
@@ -661,14 +659,12 @@
661659 tag = "diff-added";
662660 tmp = find_xml_node(*diff, tag, FALSE);
663661 if(tmp == NULL) {
664- crm_info("create %s", tag);
665662 tmp = create_xml_node(*diff, tag);
666663 }
667664
668665 tag = XML_TAG_CIB;
669666 top = find_xml_node(tmp, tag, FALSE);
670667 if(top == NULL) {
671- crm_info("create %s", tag);
672668 top = create_xml_node(tmp, tag);
673669 }
674670
diff -r 34cc17c68183 -r 06d016554555 pengine/native.c
--- a/pengine/native.c Tue Jul 08 13:42:23 2008 +0200
+++ b/pengine/native.c Tue Jul 08 13:44:13 2008 +0200
@@ -94,19 +94,56 @@
9494 GListPtr nodes = NULL;
9595 node_t *chosen = NULL;
9696
97+ int lpc = 0;
98+ int multiple = 0;
99+ int length = g_list_length(rsc->allowed_nodes);
100+
97101 if(is_not_set(rsc->flags, pe_rsc_provisional)) {
98102 return rsc->allocated_to?TRUE:FALSE;
99103 }
100104
101105 crm_debug_3("Choosing node for %s from %d candidates",
102- rsc->id, g_list_length(rsc->allowed_nodes));
106+ rsc->id, length);
103107
104108 if(rsc->allowed_nodes) {
105- rsc->allowed_nodes = g_list_sort(
106- rsc->allowed_nodes, sort_node_weight);
107- nodes = rsc->allowed_nodes;
108- chosen = g_list_nth_data(nodes, 0);
109+ rsc->allowed_nodes = g_list_sort(rsc->allowed_nodes, sort_node_weight);
110+ nodes = rsc->allowed_nodes;
111+ chosen = g_list_nth_data(nodes, 0);
112+
113+ if(chosen
114+ && chosen->weight > 0
115+ && can_run_resources(chosen)) {
116+ node_t *running = g_list_nth_data(rsc->running_on, 0);
117+ if(can_run_resources(running) == FALSE) {
118+ running = NULL;
119+ }
120+
121+ for(lpc = 1; lpc < length; lpc++) {
122+ node_t *tmp = g_list_nth_data(nodes, lpc);
123+ if(tmp->weight == chosen->weight) {
124+ multiple++;
125+ if(running && tmp->details == running->details) {
126+ /* prefer the existing node if scores are equal */
127+ chosen = tmp;
128+ }
129+ }
130+ }
131+ }
109132 }
133+
134+ if(multiple > 1) {
135+ int log_level = LOG_INFO;
136+ char *score = score2char(chosen->weight);
137+ if(chosen->weight >= INFINITY) {
138+ log_level = LOG_WARNING;
139+ }
140+
141+ do_crm_log(log_level, "%d nodes with equal score (%s) for"
142+ " running %s resources. Chose %s.",
143+ multiple, score, rsc->id, chosen->details->uname);
144+ crm_free(score);
145+ }
146+
110147
111148 return native_assign_node(rsc, nodes, chosen);
112149 }
diff -r 34cc17c68183 -r 06d016554555 pengine/regression.sh
--- a/pengine/regression.sh Tue Jul 08 13:42:23 2008 +0200
+++ b/pengine/regression.sh Tue Jul 08 13:44:13 2008 +0200
@@ -25,6 +25,7 @@
2525 create_mode="true"
2626 echo Generating test outputs for these tests...
2727 # do_test
28+do_test master-depend "Ensure resources that depend on the master don't get allocated until the master does"
2829 echo Done.
2930 echo ""
3031
diff -r 34cc17c68183 -r 06d016554555 pengine/testcases/master-depend.dot
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pengine/testcases/master-depend.dot Tue Jul 08 13:44:13 2008 +0200
@@ -0,0 +1,49 @@
1+digraph "g" {
2+"clvmd:0_monitor_0 vbox4" -> "probe_complete vbox4" [ style = bold]
3+"clvmd:0_monitor_0 vbox4" [ style=bold color="green" fontcolor="black" ]
4+"cman:0_monitor_0 vbox4" -> "probe_complete vbox4" [ style = bold]
5+"cman:0_monitor_0 vbox4" [ style=bold color="green" fontcolor="black" ]
6+"cman:0_start_0 vbox4" -> "cman_clone_running_0" [ style = bold]
7+"cman:0_start_0 vbox4" [ style=bold color="green" fontcolor="black" ]
8+"cman_clone_running_0" [ style=bold color="green" fontcolor="orange" ]
9+"cman_clone_start_0" -> "cman:0_start_0 vbox4" [ style = bold]
10+"cman_clone_start_0" -> "cman_clone_running_0" [ style = bold]
11+"cman_clone_start_0" [ style=bold color="green" fontcolor="orange" ]
12+"drbd0:0_monitor_0 vbox4" -> "probe_complete vbox4" [ style = bold]
13+"drbd0:0_monitor_0 vbox4" [ style=bold color="green" fontcolor="black" ]
14+"drbd0:0_monitor_60000 vbox4" [ style=bold color="green" fontcolor="black" ]
15+"drbd0:0_post_notify_start_0 vbox4" -> "drbd0_confirmed-post_notify_start_0" [ style = bold]
16+"drbd0:0_post_notify_start_0 vbox4" [ style=bold color="green" fontcolor="black" ]
17+"drbd0:0_start_0 vbox4" -> "drbd0:0_monitor_60000 vbox4" [ style = bold]
18+"drbd0:0_start_0 vbox4" -> "drbd0_running_0" [ style = bold]
19+"drbd0:0_start_0 vbox4" [ style=bold color="green" fontcolor="black" ]
20+"drbd0_confirmed-post_notify_start_0" -> "drbd0:0_monitor_60000 vbox4" [ style = bold]
21+"drbd0_confirmed-post_notify_start_0" [ style=bold color="green" fontcolor="orange" ]
22+"drbd0_confirmed-pre_notify_start_0" -> "drbd0_start_0" [ style = bold]
23+"drbd0_confirmed-pre_notify_start_0" [ style=bold color="green" fontcolor="orange" ]
24+"drbd0_post_notify_start_0" -> "drbd0:0_post_notify_start_0 vbox4" [ style = bold]
25+"drbd0_post_notify_start_0" -> "drbd0_confirmed-post_notify_start_0" [ style = bold]
26+"drbd0_post_notify_start_0" [ style=bold color="green" fontcolor="orange" ]
27+"drbd0_pre_notify_start_0" -> "drbd0_confirmed-pre_notify_start_0" [ style = bold]
28+"drbd0_pre_notify_start_0" [ style=bold color="green" fontcolor="orange" ]
29+"drbd0_running_0" -> "drbd0_post_notify_start_0" [ style = bold]
30+"drbd0_running_0" [ style=bold color="green" fontcolor="orange" ]
31+"drbd0_start_0" -> "drbd0:0_start_0 vbox4" [ style = bold]
32+"drbd0_start_0" -> "drbd0_running_0" [ style = bold]
33+"drbd0_start_0" [ style=bold color="green" fontcolor="orange" ]
34+"probe_complete vbox4" -> "probe_complete" [ style = bold]
35+"probe_complete vbox4" [ style=bold color="green" fontcolor="black" ]
36+"probe_complete" -> "cman:0_start_0 vbox4" [ style = bold]
37+"probe_complete" -> "cman_clone_start_0" [ style = bold]
38+"probe_complete" -> "drbd0:0_start_0 vbox4" [ style = bold]
39+"probe_complete" -> "drbd0_start_0" [ style = bold]
40+"probe_complete" [ style=bold color="green" fontcolor="orange" ]
41+"vmnci36_monitor_0 vbox4" -> "probe_complete vbox4" [ style = bold]
42+"vmnci36_monitor_0 vbox4" [ style=bold color="green" fontcolor="black" ]
43+"vmnci37_monitor_0 vbox4" -> "probe_complete vbox4" [ style = bold]
44+"vmnci37_monitor_0 vbox4" [ style=bold color="green" fontcolor="black" ]
45+"vmnci38_monitor_0 vbox4" -> "probe_complete vbox4" [ style = bold]
46+"vmnci38_monitor_0 vbox4" [ style=bold color="green" fontcolor="black" ]
47+"vmnci55_monitor_0 vbox4" -> "probe_complete vbox4" [ style = bold]
48+"vmnci55_monitor_0 vbox4" [ style=bold color="green" fontcolor="black" ]
49+}
diff -r 34cc17c68183 -r 06d016554555 pengine/testcases/master-depend.exp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pengine/testcases/master-depend.exp Tue Jul 08 13:44:13 2008 +0200
@@ -0,0 +1,273 @@
1+ <transition_graph cluster-delay="60s" failed-stop-offset="INFINITY" failed-start-offset="INFINITY" batch-limit="30" transition_id="0">
2+ <synapse id="0">
3+ <action_set>
4+ <rsc_op id="4" operation="monitor" operation_key="drbd0:0_monitor_0" on_node="vbox4" on_node_uuid="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6">
5+ <primitive id="drbd0:0" long-id="drbd0:drbd0:0" class="ocf" provider="heartbeat" type="drbd"/>
6+ <attributes crm_feature_set="2.1" drbd_resource="drbd0" CRM_meta_stateful="true" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_globally_unique="false" CRM_meta_clone="0" CRM_meta_clone_max="2" CRM_meta_clone_node_max="1" CRM_meta_master_max="2" CRM_meta_master_node_max="2"/>
7+ </rsc_op>
8+ </action_set>
9+ <inputs/>
10+ </synapse>
11+ <synapse id="1">
12+ <action_set>
13+ <rsc_op id="11" operation="start" operation_key="drbd0:0_start_0" on_node="vbox4" on_node_uuid="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6">
14+ <primitive id="drbd0:0" long-id="drbd0:drbd0:0" class="ocf" provider="heartbeat" type="drbd"/>
15+ <attributes crm_feature_set="2.1" drbd_resource="drbd0" CRM_meta_stateful="true" CRM_meta_timeout="20000" CRM_meta_notify_start_uname="vbox4 " CRM_meta_notify_start_resource="drbd0:0 " CRM_meta_globally_unique="false" CRM_meta_clone="0" CRM_meta_clone_max="2" CRM_meta_clone_node_max="1" CRM_meta_master_max="2" CRM_meta_master_node_max="2"/>
16+ </rsc_op>
17+ </action_set>
18+ <inputs>
19+ <trigger>
20+ <pseudo_event id="2" operation="probe_complete" operation_key="probe_complete"/>
21+ </trigger>
22+ <trigger>
23+ <pseudo_event id="13" operation="start" operation_key="drbd0_start_0"/>
24+ </trigger>
25+ </inputs>
26+ </synapse>
27+ <synapse id="2">
28+ <action_set>
29+ <rsc_op id="12" operation="monitor" operation_key="drbd0:0_monitor_60000" on_node="vbox4" on_node_uuid="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6">
30+ <primitive id="drbd0:0" long-id="drbd0:drbd0:0" class="ocf" provider="heartbeat" type="drbd"/>
31+ <attributes crm_feature_set="2.1" drbd_resource="drbd0" CRM_meta_stateful="true" CRM_meta_id="drbd0-op2" CRM_meta_role="Slave" CRM_meta_timeout="10000" CRM_meta_name="monitor" CRM_meta_interval="60000" CRM_meta_globally_unique="false" CRM_meta_clone="0" CRM_meta_clone_max="2" CRM_meta_clone_node_max="1" CRM_meta_master_max="2" CRM_meta_master_node_max="2"/>
32+ </rsc_op>
33+ </action_set>
34+ <inputs>
35+ <trigger>
36+ <rsc_op id="11" operation="start" operation_key="drbd0:0_start_0" on_node="vbox4" on_node_uuid="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6"/>
37+ </trigger>
38+ <trigger>
39+ <pseudo_event id="18" operation="notified" operation_key="drbd0_confirmed-post_notify_start_0"/>
40+ </trigger>
41+ </inputs>
42+ </synapse>
43+ <synapse id="3" priority="1000000">
44+ <action_set>
45+ <rsc_op id="65" operation="notify" operation_key="drbd0:0_post_notify_start_0" on_node="vbox4" on_node_uuid="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6">
46+ <primitive id="drbd0:0" long-id="drbd0:drbd0:0" class="ocf" provider="heartbeat" type="drbd"/>
47+ <attributes crm_feature_set="2.1" CRM_meta_notify_operation="start" CRM_meta_timeout="20000" CRM_meta_notify_confirm="yes" CRM_meta_notify_type="post" drbd_resource="drbd0" CRM_meta_stateful="true" CRM_meta_notify_start_uname="vbox4 " CRM_meta_notify_start_resource="drbd0:0 " CRM_meta_globally_unique="false" CRM_meta_clone="0" CRM_meta_clone_max="2" CRM_meta_clone_node_max="1" CRM_meta_master_max="2" CRM_meta_master_node_max="2"/>
48+ </rsc_op>
49+ </action_set>
50+ <inputs>
51+ <trigger>
52+ <pseudo_event id="17" operation="notify" operation_key="drbd0_post_notify_start_0"/>
53+ </trigger>
54+ </inputs>
55+ </synapse>
56+ <synapse id="4">
57+ <action_set>
58+ <pseudo_event id="13" operation="start" operation_key="drbd0_start_0">
59+ <attributes crm_feature_set="2.1" CRM_meta_stateful="true" CRM_meta_timeout="20000" CRM_meta_globally_unique="false" CRM_meta_clone_max="2" CRM_meta_clone_node_max="1" CRM_meta_master_max="2" CRM_meta_master_node_max="2"/>
60+ </pseudo_event>
61+ </action_set>
62+ <inputs>
63+ <trigger>
64+ <pseudo_event id="2" operation="probe_complete" operation_key="probe_complete"/>
65+ </trigger>
66+ <trigger>
67+ <pseudo_event id="16" operation="notified" operation_key="drbd0_confirmed-pre_notify_start_0"/>
68+ </trigger>
69+ </inputs>
70+ </synapse>
71+ <synapse id="5" priority="1000000">
72+ <action_set>
73+ <pseudo_event id="14" operation="running" operation_key="drbd0_running_0">
74+ <attributes crm_feature_set="2.1" CRM_meta_stateful="true" CRM_meta_timeout="20000" CRM_meta_globally_unique="false" CRM_meta_clone_max="2" CRM_meta_clone_node_max="1" CRM_meta_master_max="2" CRM_meta_master_node_max="2"/>
75+ </pseudo_event>
76+ </action_set>
77+ <inputs>
78+ <trigger>
79+ <rsc_op id="11" operation="start" operation_key="drbd0:0_start_0" on_node="vbox4" on_node_uuid="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6"/>
80+ </trigger>
81+ <trigger>
82+ <pseudo_event id="13" operation="start" operation_key="drbd0_start_0"/>
83+ </trigger>
84+ </inputs>
85+ </synapse>
86+ <synapse id="6">
87+ <action_set>
88+ <pseudo_event id="15" operation="notify" operation_key="drbd0_pre_notify_start_0">
89+ <attributes crm_feature_set="2.1" CRM_meta_stateful="true" CRM_meta_timeout="20000" CRM_meta_notify_confirm="yes" CRM_meta_notify_type="pre" CRM_meta_notify_operation="start" CRM_meta_globally_unique="false" CRM_meta_clone_max="2" CRM_meta_clone_node_max="1" CRM_meta_master_max="2" CRM_meta_master_node_max="2"/>
90+ </pseudo_event>
91+ </action_set>
92+ <inputs/>
93+ </synapse>
94+ <synapse id="7">
95+ <action_set>
96+ <pseudo_event id="16" operation="notified" operation_key="drbd0_confirmed-pre_notify_start_0">
97+ <attributes crm_feature_set="2.1" CRM_meta_stateful="true" CRM_meta_timeout="20000" CRM_meta_notify_type="pre" CRM_meta_notify_operation="start" CRM_meta_globally_unique="false" CRM_meta_clone_max="2" CRM_meta_clone_node_max="1" CRM_meta_master_max="2" CRM_meta_master_node_max="2"/>
98+ </pseudo_event>
99+ </action_set>
100+ <inputs>
101+ <trigger>
102+ <pseudo_event id="15" operation="notify" operation_key="drbd0_pre_notify_start_0"/>
103+ </trigger>
104+ </inputs>
105+ </synapse>
106+ <synapse id="8" priority="1000000">
107+ <action_set>
108+ <pseudo_event id="17" operation="notify" operation_key="drbd0_post_notify_start_0">
109+ <attributes crm_feature_set="2.1" CRM_meta_stateful="true" CRM_meta_timeout="20000" CRM_meta_notify_confirm="yes" CRM_meta_notify_type="post" CRM_meta_notify_operation="start" CRM_meta_globally_unique="false" CRM_meta_clone_max="2" CRM_meta_clone_node_max="1" CRM_meta_master_max="2" CRM_meta_master_node_max="2"/>
110+ </pseudo_event>
111+ </action_set>
112+ <inputs>
113+ <trigger>
114+ <pseudo_event id="14" operation="running" operation_key="drbd0_running_0"/>
115+ </trigger>
116+ </inputs>
117+ </synapse>
118+ <synapse id="9" priority="1000000">
119+ <action_set>
120+ <pseudo_event id="18" operation="notified" operation_key="drbd0_confirmed-post_notify_start_0">
121+ <attributes crm_feature_set="2.1" CRM_meta_stateful="true" CRM_meta_timeout="20000" CRM_meta_notify_type="pre" CRM_meta_notify_operation="start" CRM_meta_globally_unique="false" CRM_meta_clone_max="2" CRM_meta_clone_node_max="1" CRM_meta_master_max="2" CRM_meta_master_node_max="2"/>
122+ </pseudo_event>
123+ </action_set>
124+ <inputs>
125+ <trigger>
126+ <pseudo_event id="17" operation="notify" operation_key="drbd0_post_notify_start_0"/>
127+ </trigger>
128+ <trigger>
129+ <rsc_op id="65" operation="notify" operation_key="drbd0:0_post_notify_start_0" on_node="vbox4" on_node_uuid="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6"/>
130+ </trigger>
131+ </inputs>
132+ </synapse>
133+ <synapse id="10">
134+ <action_set>
135+ <rsc_op id="5" operation="monitor" operation_key="cman:0_monitor_0" on_node="vbox4" on_node_uuid="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6">
136+ <primitive id="cman:0" long-id="cman_clone:cman:0" class="lsb" type="cman"/>
137+ <attributes crm_feature_set="2.1" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_globally_unique="false" CRM_meta_clone="0" CRM_meta_clone_max="2" CRM_meta_clone_node_max="1"/>
138+ </rsc_op>
139+ </action_set>
140+ <inputs/>
141+ </synapse>
142+ <synapse id="11">
143+ <action_set>
144+ <rsc_op id="37" operation="start" operation_key="cman:0_start_0" on_node="vbox4" on_node_uuid="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6">
145+ <primitive id="cman:0" long-id="cman_clone:cman:0" class="lsb" type="cman"/>
146+ <attributes crm_feature_set="2.1" CRM_meta_timeout="20000" CRM_meta_globally_unique="false" CRM_meta_clone="0" CRM_meta_clone_max="2" CRM_meta_clone_node_max="1"/>
147+ </rsc_op>
148+ </action_set>
149+ <inputs>
150+ <trigger>
151+ <pseudo_event id="2" operation="probe_complete" operation_key="probe_complete"/>
152+ </trigger>
153+ <trigger>
154+ <pseudo_event id="38" operation="start" operation_key="cman_clone_start_0"/>
155+ </trigger>
156+ </inputs>
157+ </synapse>
158+ <synapse id="12">
159+ <action_set>
160+ <pseudo_event id="38" operation="start" operation_key="cman_clone_start_0">
161+ <attributes crm_feature_set="2.1" CRM_meta_timeout="20000" CRM_meta_globally_unique="false" CRM_meta_clone_max="2" CRM_meta_clone_node_max="1"/>
162+ </pseudo_event>
163+ </action_set>
164+ <inputs>
165+ <trigger>
166+ <pseudo_event id="2" operation="probe_complete" operation_key="probe_complete"/>
167+ </trigger>
168+ </inputs>
169+ </synapse>
170+ <synapse id="13" priority="1000000">
171+ <action_set>
172+ <pseudo_event id="39" operation="running" operation_key="cman_clone_running_0">
173+ <attributes crm_feature_set="2.1" CRM_meta_timeout="20000" CRM_meta_globally_unique="false" CRM_meta_clone_max="2" CRM_meta_clone_node_max="1"/>
174+ </pseudo_event>
175+ </action_set>
176+ <inputs>
177+ <trigger>
178+ <rsc_op id="37" operation="start" operation_key="cman:0_start_0" on_node="vbox4" on_node_uuid="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6"/>
179+ </trigger>
180+ <trigger>
181+ <pseudo_event id="38" operation="start" operation_key="cman_clone_start_0"/>
182+ </trigger>
183+ </inputs>
184+ </synapse>
185+ <synapse id="14">
186+ <action_set>
187+ <rsc_op id="6" operation="monitor" operation_key="clvmd:0_monitor_0" on_node="vbox4" on_node_uuid="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6">
188+ <primitive id="clvmd:0" long-id="clvmd_clone:clvmd:0" class="lsb" type="lxclvmd"/>
189+ <attributes crm_feature_set="2.1" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7" CRM_meta_globally_unique="false" CRM_meta_clone="0" CRM_meta_clone_max="2"/>
190+ </rsc_op>
191+ </action_set>
192+ <inputs/>
193+ </synapse>
194+ <synapse id="15">
195+ <action_set>
196+ <rsc_op id="7" operation="monitor" operation_key="vmnci36_monitor_0" on_node="vbox4" on_node_uuid="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6">
197+ <primitive id="vmnci36" long-id="vmnci36" class="ocf" provider="heartbeat" type="vm"/>
198+ <attributes crm_feature_set="2.1" target_role="started" vmid="vmnci36" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7"/>
199+ </rsc_op>
200+ </action_set>
201+ <inputs/>
202+ </synapse>
203+ <synapse id="16">
204+ <action_set>
205+ <rsc_op id="8" operation="monitor" operation_key="vmnci37_monitor_0" on_node="vbox4" on_node_uuid="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6">
206+ <primitive id="vmnci37" long-id="vmnci37" class="ocf" provider="heartbeat" type="vm"/>
207+ <attributes crm_feature_set="2.1" target_role="stopped" vmid="vmnci37" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7"/>
208+ </rsc_op>
209+ </action_set>
210+ <inputs/>
211+ </synapse>
212+ <synapse id="17">
213+ <action_set>
214+ <rsc_op id="9" operation="monitor" operation_key="vmnci38_monitor_0" on_node="vbox4" on_node_uuid="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6">
215+ <primitive id="vmnci38" long-id="vmnci38" class="ocf" provider="heartbeat" type="vm"/>
216+ <attributes crm_feature_set="2.1" target_role="stopped" vmid="vmnci38" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7"/>
217+ </rsc_op>
218+ </action_set>
219+ <inputs/>
220+ </synapse>
221+ <synapse id="18">
222+ <action_set>
223+ <rsc_op id="10" operation="monitor" operation_key="vmnci55_monitor_0" on_node="vbox4" on_node_uuid="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6">
224+ <primitive id="vmnci55" long-id="vmnci55" class="ocf" provider="heartbeat" type="vm"/>
225+ <attributes crm_feature_set="2.1" target_role="stopped" vmid="vmnci55" CRM_meta_timeout="20000" CRM_meta_op_target_rc="7"/>
226+ </rsc_op>
227+ </action_set>
228+ <inputs/>
229+ </synapse>
230+ <synapse id="19">
231+ <action_set>
232+ <pseudo_event id="2" operation="probe_complete" operation_key="probe_complete">
233+ <attributes crm_feature_set="2.1"/>
234+ </pseudo_event>
235+ </action_set>
236+ <inputs>
237+ <trigger>
238+ <rsc_op id="3" operation="probe_complete" operation_key="probe_complete" on_node="vbox4" on_node_uuid="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6"/>
239+ </trigger>
240+ </inputs>
241+ </synapse>
242+ <synapse id="20" priority="1000000">
243+ <action_set>
244+ <rsc_op id="3" operation="probe_complete" operation_key="probe_complete" on_node="vbox4" on_node_uuid="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6">
245+ <attributes crm_feature_set="2.1" CRM_meta_op_no_wait="true"/>
246+ </rsc_op>
247+ </action_set>
248+ <inputs>
249+ <trigger>
250+ <rsc_op id="4" operation="monitor" operation_key="drbd0:0_monitor_0" on_node="vbox4" on_node_uuid="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6"/>
251+ </trigger>
252+ <trigger>
253+ <rsc_op id="5" operation="monitor" operation_key="cman:0_monitor_0" on_node="vbox4" on_node_uuid="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6"/>
254+ </trigger>
255+ <trigger>
256+ <rsc_op id="6" operation="monitor" operation_key="clvmd:0_monitor_0" on_node="vbox4" on_node_uuid="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6"/>
257+ </trigger>
258+ <trigger>
259+ <rsc_op id="7" operation="monitor" operation_key="vmnci36_monitor_0" on_node="vbox4" on_node_uuid="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6"/>
260+ </trigger>
261+ <trigger>
262+ <rsc_op id="8" operation="monitor" operation_key="vmnci37_monitor_0" on_node="vbox4" on_node_uuid="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6"/>
263+ </trigger>
264+ <trigger>
265+ <rsc_op id="9" operation="monitor" operation_key="vmnci38_monitor_0" on_node="vbox4" on_node_uuid="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6"/>
266+ </trigger>
267+ <trigger>
268+ <rsc_op id="10" operation="monitor" operation_key="vmnci55_monitor_0" on_node="vbox4" on_node_uuid="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6"/>
269+ </trigger>
270+ </inputs>
271+ </synapse>
272+ </transition_graph>
273+
diff -r 34cc17c68183 -r 06d016554555 pengine/testcases/master-depend.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/pengine/testcases/master-depend.xml Tue Jul 08 13:44:13 2008 +0200
@@ -0,0 +1,185 @@
1+ <cib generated="true" admin_epoch="0" ignore_dtd="false" num_peers="1" have_quorum="1" cib_feature_revision="2.0" crm_feature_set="2.1" epoch="165" num_updates="3" cib-last-written="Tue Jun 24 10:33:56 2008" dc_uuid="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6" ccm_transition="1">
2+ <configuration>
3+ <crm_config>
4+ <cluster_property_set id="cib-bootstrap-options">
5+ <attributes>
6+ <nvpair id="cib-bootstrap-options-dc-version" name="dc-version" value="0.6.4-node: 226d8e35692415c56dbd05258a85905414938ce9"/>
7+ <nvpair name="last-lrm-refresh" id="cib-bootstrap-options-last-lrm-refresh" value="1214292810"/>
8+ </attributes>
9+ </cluster_property_set>
10+ </crm_config>
11+ <nodes>
12+ <node id="fdacfc41-e43c-464b-a80e-b3fd1b22ca00" uname="vbox3" type="normal">
13+ <instance_attributes id="nodes-fdacfc41-e43c-464b-a80e-b3fd1b22ca00">
14+ <attributes>
15+ <nvpair id="standby-fdacfc41-e43c-464b-a80e-b3fd1b22ca00" name="standby" value="off"/>
16+ </attributes>
17+ </instance_attributes>
18+ </node>
19+ <node uname="vbox4" type="normal" id="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6">
20+ <instance_attributes id="nodes-a9a4b0ab-fc17-48ab-9d91-29e398e15cb6">
21+ <attributes>
22+ <nvpair name="standby" id="standby-a9a4b0ab-fc17-48ab-9d91-29e398e15cb6" value="off"/>
23+ </attributes>
24+ </instance_attributes>
25+ </node>
26+ </nodes>
27+ <resources>
28+ <master_slave id="drbd0">
29+ <meta_attributes id="ma-drbd0">
30+ <attributes>
31+ <nvpair id="drbd0-clone-max" name="clone_max" value="2"/>
32+ <nvpair id="drbd0-clone-node_max" name="clone_node_max" value="1"/>
33+ <nvpair id="drbd0-master-max" name="master_max" value="2"/>
34+ <nvpair id="drbd0-master-node-max" name="master_node_max" value="2"/>
35+ <nvpair id="drbd0-notify" name="notify" value="yes"/>
36+ <nvpair id="drbd0-globally-unique" name="globally_unique" value="false"/>
37+ <nvpair id="drbd0-target-role" name="target_role" value="started"/>
38+ <nvpair id="drbd0-interleave" name="interleave" value="true"/>
39+ </attributes>
40+ </meta_attributes>
41+ <primitive id="drbd0" class="ocf" provider="heartbeat" type="drbd">
42+ <instance_attributes id="ia-drbd0">
43+ <attributes>
44+ <nvpair id="drbd0-drbd-resource" name="drbd_resource" value="drbd0"/>
45+ </attributes>
46+ </instance_attributes>
47+ <operations>
48+ <op id="drbd0-op1" name="monitor" interval="59s" timeout="10s" role="Master"/>
49+ <op id="drbd0-op2" name="monitor" interval="60s" timeout="10s" role="Slave"/>
50+ </operations>
51+ </primitive>
52+ </master_slave>
53+ <clone id="cman_clone" ordered="false" interleave="true" notify="false">
54+ <meta_attributes id="cman_clone_meta_attr">
55+ <attributes>
56+ <nvpair id="cman_globally_unique" name="globally_unique" value="false"/>
57+ </attributes>
58+ </meta_attributes>
59+ <instance_attributes id="7c15d37b-309e-4462-b9be-c385b3aaf5ae">
60+ <attributes>
61+ <nvpair id="cman_clone_max" name="clone_max" value="2"/>
62+ <nvpair id="cman_clone_node_max" name="clone_node_max" value="1"/>
63+ </attributes>
64+ </instance_attributes>
65+ <primitive id="cman" class="lsb" type="cman"/>
66+ <meta_attributes id="cman_clone-meta-options">
67+ <attributes>
68+ <nvpair id="cman_clone-meta-options-target_role" name="target_role" value="started"/>
69+ </attributes>
70+ </meta_attributes>
71+ </clone>
72+ <clone id="clvmd_clone" ordered="false" interleave="true" notify="false">
73+ <meta_attributes id="clvmd_meta_attr">
74+ <attributes>
75+ <nvpair name="target_role" id="clvmd_target_role" value="started"/>
76+ <nvpair id="clvmd_globally_unique" name="globally_unique" value="false"/>
77+ </attributes>
78+ </meta_attributes>
79+ <instance_attributes id="clvmd_inst_attr">
80+ <attributes>
81+ <nvpair id="clvmd_clone_max" name="clvmd_clone_max" value="2"/>
82+ <nvpair id="clvmd_clone_node_max" name="clvmd_clone_node_max" value="1"/>
83+ </attributes>
84+ </instance_attributes>
85+ <primitive id="clvmd" class="lsb" type="lxclvmd"/>
86+ </clone>
87+ <primitive class="ocf" provider="heartbeat" type="vm" id="vmnci36">
88+ <operations>
89+ <op id="vmnci36_op_1" interval="10s" name="monitor" timeout="60s" prereq="nothing"/>
90+ <op id="vmnci36_op_2" name="start" timeout="60s" start_delay="0"/>
91+ <op id="vmnci36_op_3" name="stop" timeout="300s"/>
92+ </operations>
93+ <instance_attributes id="vmnci36_inst_attr">
94+ <attributes>
95+ <nvpair id="vmnci36_vmid" name="vmid" value="vmnci36"/>
96+ <nvpair name="target_role" id="vmnci36_target_role" value="started"/>
97+ </attributes>
98+ </instance_attributes>
99+ </primitive>
100+ <primitive class="ocf" provider="heartbeat" type="vm" id="vmnci37">
101+ <operations>
102+ <op id="vmnci37_op_1" interval="10s" name="monitor" timeout="60s" prereq="nothing"/>
103+ <op id="vmnci37_op_2" name="start" timeout="60s" start_delay="0"/>
104+ <op id="vmnci37_op_3" name="stop" timeout="300s"/>
105+ </operations>
106+ <instance_attributes id="vmnci37_inst_attr">
107+ <attributes>
108+ <nvpair id="vmnci37_vmid" name="vmid" value="vmnci37"/>
109+ <nvpair name="target_role" id="vmnci37_target_role" value="stopped"/>
110+ </attributes>
111+ </instance_attributes>
112+ </primitive>
113+ <primitive class="ocf" id="vmnci38" provider="heartbeat" type="vm">
114+ <operations>
115+ <op id="vmnci38_op_1" interval="10s" name="monitor" timeout="60s" prereq="nothing"/>
116+ <op id="vmnci38_op_2" name="start" timeout="60s" start_delay="0"/>
117+ <op id="vmnci38_op_3" name="stop" timeout="300s"/>
118+ </operations>
119+ <instance_attributes id="vmnci38_inst_attr">
120+ <attributes>
121+ <nvpair id="vmnci38_vmid" name="vmid" value="vmnci38"/>
122+ <nvpair id="vmnci38_target_role" name="target_role" value="stopped"/>
123+ </attributes>
124+ </instance_attributes>
125+ </primitive>
126+ <primitive class="ocf" provider="heartbeat" type="vm" id="vmnci55">
127+ <operations>
128+ <op id="vmnci55_op_1" interval="10s" name="monitor" timeout="60s" prereq="nothing"/>
129+ <op id="vmnci55_op_2" name="start" timeout="60s" start_delay="0"/>
130+ <op id="vmnci55_op_3" name="stop" timeout="300s"/>
131+ </operations>
132+ <instance_attributes id="vmnci55_inst_attr">
133+ <attributes>
134+ <nvpair id="vmnci55_vmid" name="vmid" value="vmnci55"/>
135+ <nvpair name="target_role" id="vmnci55_target_role" value="stopped"/>
136+ </attributes>
137+ </instance_attributes>
138+ </primitive>
139+ </resources>
140+ <constraints>
141+ <rsc_location id="drbd0_location" rsc="drbd0">
142+ <rule id="drbd0_prefered_location" score="1">
143+ <expression id="drbd0_prefered_location_expr" attribute="#uname" operation="eq" value="vbox3"/>
144+ </rule>
145+ </rsc_location>
146+ <rsc_order id="drbd_before_clvmd" from="clvmd_clone" action="start" to="drbd0" to_action="promote"/>
147+ <!--rsc_order id="drbd_before_vmnci36" from="vmnci36" action="start" to="drbd0" to_action="promote"/-->
148+ <rsc_colocation id="clvmd_on_drbd0" to="drbd0" to_role="Master" from="clvmd_clone" score="INFINITY"/>
149+ <rsc_order id="cman_before_clvmd" from="clvmd_clone" action="start" to="cman_clone" to_action="start"/>
150+ <rsc_colocation id="clvmd_on_cman" to="cman_clone" to_role="Started" from="clvmd_clone" score="INFINITY"/>
151+ <rsc_location id="vmnci36_location" rsc="vmnci36">
152+ <rule id="vmnci36_prefered_location" score="10">
153+ <expression id="vmnci36_prefered_location_expr" attribute="#uname" operation="eq" value="vbox3"/>
154+ </rule>
155+ </rsc_location>
156+ <rsc_order id="clvmd_before_vmnci36" from="vmnci36" action="start" to="clvmd_clone" to_action="start"/>
157+ <rsc_colocation id="vmnci36_on_clvmd" to="clvmd_clone" to_role="Started" from="vmnci36" score="INFINITY"/>
158+ <rsc_location id="vmnci37_location" rsc="vmnci37">
159+ <rule id="vmnci37_prefered_location" score="10">
160+ <expression id="vmnci37_prefered_location_expr" attribute="#uname" operation="eq" value="vbox3"/>
161+ </rule>
162+ </rsc_location>
163+ <rsc_location id="vmnci38_location" rsc="vmnci38">
164+ <rule id="vmnci38_prefered_location" score="10">
165+ <expression id="vmnci38_prefered_location_expr" attribute="#uname" operation="eq" value="vbox3"/>
166+ </rule>
167+ </rsc_location>
168+ <rsc_order id="clvmd_before_vmnci38" from="vmnci38" action="start" to="clvmd_clone" to_action="start"/>
169+ <rsc_location id="vmnci55_location" rsc="vmnci55">
170+ <rule id="vmnci55_prefered_location" score="10">
171+ <expression id="vmnci55_prefered_location_expr" attribute="#uname" operation="eq" value="vbox3"/>
172+ </rule>
173+ </rsc_location>
174+ <rsc_order id="clvmd_before_vmnci55" from="vmnci55" action="start" to="clvmd_clone" to_action="start"/>
175+ <rsc_colocation id="vmnci55_on_clvmd" to="clvmd_clone" to_role="Started" from="vmnci55" score="INFINITY"/>
176+ </constraints>
177+ </configuration>
178+ <status>
179+ <node_state id="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6" uname="vbox4" crmd="online" crm-debug-origin="do_lrm_query" shutdown="0" ha="active" in_ccm="true" join="member" expected="member">
180+ <lrm id="a9a4b0ab-fc17-48ab-9d91-29e398e15cb6">
181+ <lrm_resources/>
182+ </lrm>
183+ </node_state>
184+ </status>
185+ </cib>
diff -r 34cc17c68183 -r 06d016554555 pengine/utils.c
--- a/pengine/utils.c Tue Jul 08 13:42:23 2008 +0200
+++ b/pengine/utils.c Tue Jul 08 13:44:13 2008 +0200
@@ -256,20 +256,10 @@
256256 gboolean
257257 native_assign_node(resource_t *rsc, GListPtr nodes, node_t *chosen)
258258 {
259- int multiple = 0;
260259 CRM_ASSERT(rsc->variant == pe_native);
261260
262261 clear_bit(rsc->flags, pe_rsc_provisional);
263262
264- slist_iter(candidate, node_t, nodes, lpc,
265- if(chosen
266- && chosen->weight > 0
267- && candidate->details->unclean == FALSE
268- && candidate->weight == chosen->weight) {
269- multiple++;
270- }
271- );
272-
273263 if(chosen == NULL) {
274264 crm_debug("Could not allocate a node for %s", rsc->id);
275265 rsc->next_role = RSC_ROLE_STOPPED;
@@ -287,19 +277,6 @@
287277 rsc->next_role = RSC_ROLE_STARTED;
288278 }
289279
290- if(multiple > 1) {
291- int log_level = LOG_INFO;
292- char *score = score2char(chosen->weight);
293- if(chosen->weight >= INFINITY) {
294- log_level = LOG_WARNING;
295- }
296-
297- do_crm_log(log_level, "%d nodes with equal score (%s) for"
298- " running %s resources (chose %s):",
299- multiple, score, rsc->id, chosen->details->uname);
300- crm_free(score);
301- }
302-
303280 /* todo: update the old node for each resource to reflect its
304281 * new resource count
305282 */
Show on old repository browser