Skip to content

Commit

Permalink
Merge pull request #602 from davidvossel/master
Browse files Browse the repository at this point in the history
High: pengine: add #kind=remote for baremetal remote-nodes
  • Loading branch information
beekhof committed Oct 23, 2014
2 parents 118ac30 + 69f4015 commit f1f3437
Show file tree
Hide file tree
Showing 11 changed files with 165 additions and 57 deletions.
15 changes: 12 additions & 3 deletions lib/pengine/unpack.c
Original file line number Diff line number Diff line change
Expand Up @@ -309,6 +309,13 @@ create_node(const char *id, const char *uname, const char *type, const char *sco
new_node->details->attrs = g_hash_table_new_full(crm_str_hash, g_str_equal,
g_hash_destroy_str,
g_hash_destroy_str);

if (is_remote_node(new_node)) {
g_hash_table_insert(new_node->details->attrs, strdup("#kind"), strdup("remote"));
} else {
g_hash_table_insert(new_node->details->attrs, strdup("#kind"), strdup("cluster"));
}

new_node->details->utilization =
g_hash_table_new_full(crm_str_hash, g_str_equal, g_hash_destroy_str,
g_hash_destroy_str);
Expand Down Expand Up @@ -658,7 +665,10 @@ link_rsc2remotenode(pe_working_set_t *data_set, resource_t *new_rsc)
* as cluster nodes. */
if (new_rsc->container == NULL) {
handle_startup_fencing(data_set, remote_node);
return;
} else {
/* At this point we know if the remote node is a container or baremetal
* remote node, update the #kind attribute if a container is involved */
g_hash_table_replace(remote_node->details->attrs, strdup("#kind"), strdup("container"));
}
}

Expand Down Expand Up @@ -3079,8 +3089,7 @@ add_node_attrs(xmlNode * xml_obj, node_t * node, gboolean overwrite, pe_working_

g_hash_table_insert(node->details->attrs,
strdup("#uname"), strdup(node->details->uname));
g_hash_table_insert(node->details->attrs,
strdup("#kind"), strdup(node->details->remote_rsc?"container":"cluster"));

g_hash_table_insert(node->details->attrs, strdup("#" XML_ATTR_ID), strdup(node->details->id));
if (safe_str_eq(node->details->id, data_set->dc_uuid)) {
data_set->dc_node = node;
Expand Down
4 changes: 0 additions & 4 deletions pengine/test10/remote-disable.dot
Original file line number Diff line number Diff line change
@@ -1,8 +1,4 @@
digraph "g" {
"FAKE2_monitor_60000 18builder" [ style=bold color="green" fontcolor="black"]
"FAKE2_start_0 18builder" -> "FAKE2_monitor_60000 18builder" [ style = bold]
"FAKE2_start_0 18builder" [ style=bold color="green" fontcolor="black"]
"FAKE2_stop_0 remote1" -> "FAKE2_start_0 18builder" [ style = bold]
"FAKE2_stop_0 remote1" -> "all_stopped" [ style = bold]
"FAKE2_stop_0 remote1" -> "remote1_stop_0 18builder" [ style = bold]
"FAKE2_stop_0 remote1" [ style=bold color="green" fontcolor="black"]
Expand Down
28 changes: 1 addition & 27 deletions pengine/test10/remote-disable.exp
Original file line number Diff line number Diff line change
Expand Up @@ -13,32 +13,6 @@
</inputs>
</synapse>
<synapse id="1">
<action_set>
<rsc_op id="20" operation="monitor" operation_key="FAKE2_monitor_60000" on_node="18builder" on_node_uuid="5">
<primitive id="FAKE2" class="ocf" provider="heartbeat" type="Dummy"/>
<attributes CRM_meta_interval="60000" CRM_meta_name="monitor" CRM_meta_timeout="20000" />
</rsc_op>
</action_set>
<inputs>
<trigger>
<rsc_op id="19" operation="start" operation_key="FAKE2_start_0" on_node="18builder" on_node_uuid="5"/>
</trigger>
</inputs>
</synapse>
<synapse id="2">
<action_set>
<rsc_op id="19" operation="start" operation_key="FAKE2_start_0" on_node="18builder" on_node_uuid="5">
<primitive id="FAKE2" class="ocf" provider="heartbeat" type="Dummy"/>
<attributes CRM_meta_timeout="20000" />
</rsc_op>
</action_set>
<inputs>
<trigger>
<rsc_op id="18" operation="stop" operation_key="FAKE2_stop_0" on_node="remote1" on_node_uuid="remote1" router_node="18builder"/>
</trigger>
</inputs>
</synapse>
<synapse id="3">
<action_set>
<rsc_op id="18" operation="stop" operation_key="FAKE2_stop_0" on_node="remote1" on_node_uuid="remote1" router_node="18builder">
<primitive id="FAKE2" class="ocf" provider="heartbeat" type="Dummy"/>
Expand All @@ -47,7 +21,7 @@
</action_set>
<inputs/>
</synapse>
<synapse id="4">
<synapse id="2">
<action_set>
<pseudo_event id="7" operation="all_stopped" operation_key="all_stopped">
<attributes />
Expand Down
6 changes: 3 additions & 3 deletions pengine/test10/remote-disable.scores
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ native_color: FAKE1 allocation score on 18builder: 0
native_color: FAKE1 allocation score on 18node1: 0
native_color: FAKE1 allocation score on 18node2: 0
native_color: FAKE1 allocation score on remote1: 0
native_color: FAKE2 allocation score on 18builder: 0
native_color: FAKE2 allocation score on 18node1: 0
native_color: FAKE2 allocation score on 18node2: 0
native_color: FAKE2 allocation score on 18builder: -INFINITY
native_color: FAKE2 allocation score on 18node1: -INFINITY
native_color: FAKE2 allocation score on 18node2: -INFINITY
native_color: FAKE2 allocation score on remote1: 0
native_color: FAKE3 allocation score on 18builder: 0
native_color: FAKE3 allocation score on 18node1: 0
Expand Down
6 changes: 2 additions & 4 deletions pengine/test10/remote-disable.summary
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,12 @@ RemoteOnline: [ remote1 ]

Transition Summary:
* Stop remote1 (18builder)
* Move FAKE2 (Started remote1 -> 18builder)
* Stop FAKE2 (remote1)

Executing cluster transition:
* Resource action: FAKE2 stop on remote1
* Resource action: remote1 stop on 18builder
* Resource action: FAKE2 start on 18builder
* Pseudo action: all_stopped
* Resource action: FAKE2 monitor=60000 on 18builder

Revised cluster status:
Online: [ 18builder 18node1 18node2 ]
Expand All @@ -28,7 +26,7 @@ RemoteOFFLINE: [ remote1 ]
shooter (stonith:fence_xvm): Started 18node1
remote1 (ocf::pacemaker:remote): Stopped
FAKE1 (ocf::heartbeat:Dummy): Started 18node2
FAKE2 (ocf::heartbeat:Dummy): Started 18builder
FAKE2 (ocf::heartbeat:Dummy): Stopped
FAKE3 (ocf::heartbeat:Dummy): Started 18builder
FAKE4 (ocf::heartbeat:Dummy): Started 18node1

8 changes: 7 additions & 1 deletion pengine/test10/remote-disable.xml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,13 @@
</operations>
</primitive>
</resources>
<constraints/>
<constraints>
<rsc_location id="FAKE2-location" rsc="FAKE2">
<rule id="FAKE2-on-remote" score="-INFINITY">
<expression id="FAKE2-on-remote-exp" attribute="#kind" operation="ne" value="remote"/>
</rule>
</rsc_location>
</constraints>
</configuration>
<status>
<node_state id="5" uname="18builder" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
Expand Down
15 changes: 15 additions & 0 deletions pengine/test10/whitebox-start.dot
Original file line number Diff line number Diff line change
@@ -1,4 +1,16 @@
digraph "g" {
"A_monitor_10000 lxc1" [ style=bold color="green" fontcolor="black"]
"A_start_0 lxc1" -> "A_monitor_10000 lxc1" [ style = bold]
"A_start_0 lxc1" [ style=bold color="green" fontcolor="black"]
"A_stop_0 18node1" -> "A_start_0 lxc1" [ style = bold]
"A_stop_0 18node1" -> "all_stopped" [ style = bold]
"A_stop_0 18node1" [ style=bold color="green" fontcolor="black"]
"B_monitor_10000 18node3" [ style=bold color="green" fontcolor="black"]
"B_start_0 18node3" -> "B_monitor_10000 18node3" [ style = bold]
"B_start_0 18node3" [ style=bold color="green" fontcolor="black"]
"B_stop_0 lxc2" -> "B_start_0 18node3" [ style = bold]
"B_stop_0 lxc2" -> "all_stopped" [ style = bold]
"B_stop_0 lxc2" [ style=bold color="green" fontcolor="black"]
"M-clone_running_0" [ style=bold color="green" fontcolor="orange"]
"M-clone_start_0" -> "M-clone_running_0" [ style = bold]
"M-clone_start_0" -> "M_start_0 lxc1" [ style = bold]
Expand All @@ -7,9 +19,12 @@ digraph "g" {
"M_start_0 lxc1" -> "M-clone_running_0" [ style = bold]
"M_start_0 lxc1" -> "M_monitor_10000 lxc1" [ style = bold]
"M_start_0 lxc1" [ style=bold color="green" fontcolor="black"]
"all_stopped" [ style=bold color="green" fontcolor="orange"]
"container1_start_0 18node1" -> "lxc1_start_0 18node1" [ style = bold]
"container1_start_0 18node1" [ style=bold color="green" fontcolor="black"]
"lxc1_monitor_30000 18node1" [ style=bold color="green" fontcolor="black"]
"lxc1_start_0 18node1" -> "A_monitor_10000 lxc1" [ style = bold]
"lxc1_start_0 18node1" -> "A_start_0 lxc1" [ style = bold]
"lxc1_start_0 18node1" -> "M_monitor_10000 lxc1" [ style = bold]
"lxc1_start_0 18node1" -> "M_start_0 lxc1" [ style = bold]
"lxc1_start_0 18node1" -> "lxc1_monitor_30000 18node1" [ style = bold]
Expand Down
104 changes: 97 additions & 7 deletions pengine/test10/whitebox-start.exp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
<rsc_op id="29" operation="start" operation_key="M_start_0" internal_operation_key="M:4_start_0" on_node="lxc1" on_node_uuid="lxc1" router_node="18node1"/>
</trigger>
<trigger>
<rsc_op id="43" operation="start" operation_key="lxc1_start_0" on_node="18node1" on_node_uuid="1"/>
<rsc_op id="45" operation="start" operation_key="lxc1_start_0" on_node="18node1" on_node_uuid="1"/>
</trigger>
</inputs>
</synapse>
Expand All @@ -36,7 +36,7 @@
<pseudo_event id="31" operation="start" operation_key="M-clone_start_0"/>
</trigger>
<trigger>
<rsc_op id="43" operation="start" operation_key="lxc1_start_0" on_node="18node1" on_node_uuid="1"/>
<rsc_op id="45" operation="start" operation_key="lxc1_start_0" on_node="18node1" on_node_uuid="1"/>
</trigger>
</inputs>
</synapse>
Expand Down Expand Up @@ -65,20 +65,96 @@
</synapse>
<synapse id="5">
<action_set>
<rsc_op id="44" operation="monitor" operation_key="lxc1_monitor_30000" on_node="18node1" on_node_uuid="1">
<rsc_op id="37" operation="monitor" operation_key="A_monitor_10000" on_node="lxc1" on_node_uuid="lxc1" router_node="18node1">
<primitive id="A" class="ocf" provider="pacemaker" type="Dummy"/>
<attributes CRM_meta_interval="10000" CRM_meta_name="monitor" CRM_meta_timeout="20000" />
</rsc_op>
</action_set>
<inputs>
<trigger>
<rsc_op id="36" operation="start" operation_key="A_start_0" on_node="lxc1" on_node_uuid="lxc1" router_node="18node1"/>
</trigger>
<trigger>
<rsc_op id="45" operation="start" operation_key="lxc1_start_0" on_node="18node1" on_node_uuid="1"/>
</trigger>
</inputs>
</synapse>
<synapse id="6">
<action_set>
<rsc_op id="36" operation="start" operation_key="A_start_0" on_node="lxc1" on_node_uuid="lxc1" router_node="18node1">
<primitive id="A" class="ocf" provider="pacemaker" type="Dummy"/>
<attributes CRM_meta_timeout="20000" />
</rsc_op>
</action_set>
<inputs>
<trigger>
<rsc_op id="35" operation="stop" operation_key="A_stop_0" on_node="18node1" on_node_uuid="1"/>
</trigger>
<trigger>
<rsc_op id="45" operation="start" operation_key="lxc1_start_0" on_node="18node1" on_node_uuid="1"/>
</trigger>
</inputs>
</synapse>
<synapse id="7">
<action_set>
<rsc_op id="35" operation="stop" operation_key="A_stop_0" on_node="18node1" on_node_uuid="1">
<primitive id="A" class="ocf" provider="pacemaker" type="Dummy"/>
<attributes CRM_meta_timeout="20000" />
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="8">
<action_set>
<rsc_op id="40" operation="monitor" operation_key="B_monitor_10000" on_node="18node3" on_node_uuid="3">
<primitive id="B" class="ocf" provider="pacemaker" type="Dummy"/>
<attributes CRM_meta_interval="10000" CRM_meta_name="monitor" CRM_meta_timeout="20000" />
</rsc_op>
</action_set>
<inputs>
<trigger>
<rsc_op id="39" operation="start" operation_key="B_start_0" on_node="18node3" on_node_uuid="3"/>
</trigger>
</inputs>
</synapse>
<synapse id="9">
<action_set>
<rsc_op id="39" operation="start" operation_key="B_start_0" on_node="18node3" on_node_uuid="3">
<primitive id="B" class="ocf" provider="pacemaker" type="Dummy"/>
<attributes CRM_meta_timeout="20000" />
</rsc_op>
</action_set>
<inputs>
<trigger>
<rsc_op id="38" operation="stop" operation_key="B_stop_0" on_node="lxc2" on_node_uuid="lxc2" router_node="18node2"/>
</trigger>
</inputs>
</synapse>
<synapse id="10">
<action_set>
<rsc_op id="38" operation="stop" operation_key="B_stop_0" on_node="lxc2" on_node_uuid="lxc2" router_node="18node2">
<primitive id="B" class="ocf" provider="pacemaker" type="Dummy"/>
<attributes CRM_meta_timeout="20000" />
</rsc_op>
</action_set>
<inputs/>
</synapse>
<synapse id="11">
<action_set>
<rsc_op id="46" operation="monitor" operation_key="lxc1_monitor_30000" on_node="18node1" on_node_uuid="1">
<primitive id="lxc1" class="ocf" provider="pacemaker" type="remote"/>
<attributes CRM_meta_container="container1" CRM_meta_interval="30000" CRM_meta_name="monitor" CRM_meta_timeout="30000" />
</rsc_op>
</action_set>
<inputs>
<trigger>
<rsc_op id="43" operation="start" operation_key="lxc1_start_0" on_node="18node1" on_node_uuid="1"/>
<rsc_op id="45" operation="start" operation_key="lxc1_start_0" on_node="18node1" on_node_uuid="1"/>
</trigger>
</inputs>
</synapse>
<synapse id="6">
<synapse id="12">
<action_set>
<rsc_op id="43" operation="start" operation_key="lxc1_start_0" on_node="18node1" on_node_uuid="1">
<rsc_op id="45" operation="start" operation_key="lxc1_start_0" on_node="18node1" on_node_uuid="1">
<primitive id="lxc1" class="ocf" provider="pacemaker" type="remote"/>
<attributes CRM_meta_container="container1" CRM_meta_name="start" CRM_meta_timeout="60000" />
</rsc_op>
Expand All @@ -89,5 +165,19 @@
</trigger>
</inputs>
</synapse>
<synapse id="13">
<action_set>
<pseudo_event id="10" operation="all_stopped" operation_key="all_stopped">
<attributes />
</pseudo_event>
</action_set>
<inputs>
<trigger>
<rsc_op id="35" operation="stop" operation_key="A_stop_0" on_node="18node1" on_node_uuid="1"/>
</trigger>
<trigger>
<rsc_op id="38" operation="stop" operation_key="B_stop_0" on_node="lxc2" on_node_uuid="lxc2" router_node="18node2"/>
</trigger>
</inputs>
</synapse>
</transition_graph>

10 changes: 5 additions & 5 deletions pengine/test10/whitebox-start.scores
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,11 @@ clone_color: M:4 allocation score on lxc2: 0
native_color: A allocation score on 18node1: 100
native_color: A allocation score on 18node2: 0
native_color: A allocation score on 18node3: 0
native_color: A allocation score on lxc1: 0
native_color: A allocation score on lxc2: 0
native_color: B allocation score on 18node1: 0
native_color: B allocation score on 18node2: 0
native_color: B allocation score on 18node3: 0
native_color: A allocation score on lxc1: INFINITY
native_color: A allocation score on lxc2: INFINITY
native_color: B allocation score on 18node1: INFINITY
native_color: B allocation score on 18node2: INFINITY
native_color: B allocation score on 18node3: INFINITY
native_color: B allocation score on lxc1: 0
native_color: B allocation score on lxc2: 100
native_color: C allocation score on 18node1: 0
Expand Down
13 changes: 11 additions & 2 deletions pengine/test10/whitebox-start.summary
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,25 @@ Containers: [ lxc2:container2 ]
Transition Summary:
* Start container1 (18node1)
* Start M:4 (lxc1)
* Move A (Started 18node1 -> lxc1)
* Move B (Started lxc2 -> 18node3)
* Start lxc1 (18node1)

Executing cluster transition:
* Resource action: container1 start on 18node1
* Pseudo action: M-clone_start_0
* Resource action: A stop on 18node1
* Resource action: B stop on lxc2
* Resource action: lxc1 start on 18node1
* Pseudo action: all_stopped
* Resource action: M start on lxc1
* Pseudo action: M-clone_running_0
* Resource action: A start on lxc1
* Resource action: B start on 18node3
* Resource action: lxc1 monitor=30000 on 18node1
* Resource action: M monitor=10000 on lxc1
* Resource action: A monitor=10000 on lxc1
* Resource action: B monitor=10000 on 18node3

Revised cluster status:
Online: [ 18node1 18node2 18node3 ]
Expand All @@ -37,8 +46,8 @@ Containers: [ lxc1:container1 lxc2:container2 ]
shoot1 (stonith:fence_xvm): Started 18node3
Clone Set: M-clone [M]
Started: [ 18node1 18node2 18node3 lxc1 lxc2 ]
A (ocf::pacemaker:Dummy): Started 18node1
B (ocf::pacemaker:Dummy): Started lxc2
A (ocf::pacemaker:Dummy): Started lxc1
B (ocf::pacemaker:Dummy): Started 18node3
C (ocf::pacemaker:Dummy): Started lxc2
D (ocf::pacemaker:Dummy): Started 18node1

13 changes: 12 additions & 1 deletion pengine/test10/whitebox-start.xml
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,18 @@
</operations>
</primitive>
</resources>
<constraints/>
<constraints>
<rsc_location id="A-location" rsc="A">
<rule id="A-on-remote" score="INFINITY">
<expression id="A-on-remote-exp" attribute="#kind" operation="eq" value="container"/>
</rule>
</rsc_location>
<rsc_location id="B-location" rsc="B">
<rule id="B-on-cluster" score="INFINITY">
<expression id="B-on-cluster-exp" attribute="#kind" operation="eq" value="cluster"/>
</rule>
</rsc_location>
</constraints>
<rsc_defaults>
<meta_attributes id="rsc_defaults-options">
<nvpair id="rsc_defaults-options-resource-stickiness" name="resource-stickiness" value="100"/>
Expand Down

0 comments on commit f1f3437

Please sign in to comment.