dff8d9929d
Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
7990 lines
481 KiB
Diff
7990 lines
481 KiB
Diff
diff --git a/cib/io.c b/cib/io.c
|
|
index e2873a8..4e2b24a 100644
|
|
--- a/cib/io.c
|
|
+++ b/cib/io.c
|
|
@@ -254,9 +254,7 @@ readCibXmlFile(const char *dir, const char *file, gboolean discard_status)
|
|
if (cib_writes_enabled && use_valgrind) {
|
|
if (crm_is_true(use_valgrind) || strstr(use_valgrind, "cib")) {
|
|
cib_writes_enabled = FALSE;
|
|
- crm_err("*********************************************************");
|
|
crm_err("*** Disabling disk writes to avoid confusing Valgrind ***");
|
|
- crm_err("*********************************************************");
|
|
}
|
|
}
|
|
|
|
diff --git a/crmd/crmd_lrm.h b/crmd/crmd_lrm.h
|
|
index 81a53c5..78432df 100644
|
|
--- a/crmd/crmd_lrm.h
|
|
+++ b/crmd/crmd_lrm.h
|
|
@@ -37,6 +37,8 @@ typedef struct resource_history_s {
|
|
GHashTable *stop_params;
|
|
} rsc_history_t;
|
|
|
|
+void history_free(gpointer data);
|
|
+
|
|
/* TDOD - Replace this with lrmd_event_data_t */
|
|
struct recurring_op_s {
|
|
int call_id;
|
|
diff --git a/crmd/lrm.c b/crmd/lrm.c
|
|
index 062f769..418e7cf 100644
|
|
--- a/crmd/lrm.c
|
|
+++ b/crmd/lrm.c
|
|
@@ -103,6 +103,80 @@ copy_meta_keys(gpointer key, gpointer value, gpointer user_data)
|
|
}
|
|
}
|
|
|
|
+/*
|
|
+ * \internal
|
|
+ * \brief Remove a recurring operation from a resource's history
|
|
+ *
|
|
+ * \param[in,out] history Resource history to modify
|
|
+ * \param[in] op Operation to remove
|
|
+ *
|
|
+ * \return TRUE if the operation was found and removed, FALSE otherwise
|
|
+ */
|
|
+static gboolean
|
|
+history_remove_recurring_op(rsc_history_t *history, const lrmd_event_data_t *op)
|
|
+{
|
|
+ GList *iter;
|
|
+
|
|
+ for (iter = history->recurring_op_list; iter != NULL; iter = iter->next) {
|
|
+ lrmd_event_data_t *existing = iter->data;
|
|
+
|
|
+ if ((op->interval == existing->interval)
|
|
+ && crm_str_eq(op->rsc_id, existing->rsc_id, TRUE)
|
|
+ && safe_str_eq(op->op_type, existing->op_type)) {
|
|
+
|
|
+ history->recurring_op_list = g_list_delete_link(history->recurring_op_list, iter);
|
|
+ lrmd_free_event(existing);
|
|
+ return TRUE;
|
|
+ }
|
|
+ }
|
|
+ return FALSE;
|
|
+}
|
|
+
|
|
+/*
|
|
+ * \internal
|
|
+ * \brief Free all recurring operations in resource history
|
|
+ *
|
|
+ * \param[in,out] history Resource history to modify
|
|
+ */
|
|
+static void
|
|
+history_free_recurring_ops(rsc_history_t *history)
|
|
+{
|
|
+ GList *iter;
|
|
+
|
|
+ for (iter = history->recurring_op_list; iter != NULL; iter = iter->next) {
|
|
+ lrmd_free_event(iter->data);
|
|
+ }
|
|
+ g_list_free(history->recurring_op_list);
|
|
+ history->recurring_op_list = NULL;
|
|
+}
|
|
+
|
|
+/*
|
|
+ * \internal
|
|
+ * \brief Free resource history
|
|
+ *
|
|
+ * \param[in,out] history Resource history to free
|
|
+ */
|
|
+void
|
|
+history_free(gpointer data)
|
|
+{
|
|
+ rsc_history_t *history = (rsc_history_t*)data;
|
|
+
|
|
+ if (history->stop_params) {
|
|
+ g_hash_table_destroy(history->stop_params);
|
|
+ }
|
|
+
|
|
+ /* Don't need to free history->rsc.id because it's set to history->id */
|
|
+ free(history->rsc.type);
|
|
+ free(history->rsc.class);
|
|
+ free(history->rsc.provider);
|
|
+
|
|
+ lrmd_free_event(history->failed);
|
|
+ lrmd_free_event(history->last);
|
|
+ free(history->id);
|
|
+ history_free_recurring_ops(history);
|
|
+ free(history);
|
|
+}
|
|
+
|
|
static void
|
|
update_history_cache(lrm_state_t * lrm_state, lrmd_rsc_info_t * rsc, lrmd_event_data_t * op)
|
|
{
|
|
@@ -145,25 +219,10 @@ update_history_cache(lrm_state_t * lrm_state, lrmd_rsc_info_t * rsc, lrmd_event_
|
|
target_rc = rsc_op_expected_rc(op);
|
|
if (op->op_status == PCMK_LRM_OP_CANCELLED) {
|
|
if (op->interval > 0) {
|
|
- GList *gIter, *gIterNext;
|
|
-
|
|
crm_trace("Removing cancelled recurring op: %s_%s_%d", op->rsc_id, op->op_type,
|
|
op->interval);
|
|
-
|
|
- for (gIter = entry->recurring_op_list; gIter != NULL; gIter = gIterNext) {
|
|
- lrmd_event_data_t *existing = gIter->data;
|
|
-
|
|
- gIterNext = gIter->next;
|
|
-
|
|
- if (crm_str_eq(op->rsc_id, existing->rsc_id, TRUE)
|
|
- && safe_str_eq(op->op_type, existing->op_type)
|
|
- && op->interval == existing->interval) {
|
|
- lrmd_free_event(existing);
|
|
- entry->recurring_op_list = g_list_delete_link(entry->recurring_op_list, gIter);
|
|
- }
|
|
- }
|
|
+ history_remove_recurring_op(entry, op);
|
|
return;
|
|
-
|
|
} else {
|
|
crm_trace("Skipping %s_%s_%d rc=%d, status=%d", op->rsc_id, op->op_type, op->interval,
|
|
op->rc, op->op_status);
|
|
@@ -201,32 +260,17 @@ update_history_cache(lrm_state_t * lrm_state, lrmd_rsc_info_t * rsc, lrmd_event_
|
|
}
|
|
|
|
if (op->interval > 0) {
|
|
- GListPtr iter = NULL;
|
|
-
|
|
- for(iter = entry->recurring_op_list; iter; iter = iter->next) {
|
|
- lrmd_event_data_t *o = iter->data;
|
|
-
|
|
- /* op->rsc_id is implied */
|
|
- if(op->interval == o->interval && strcmp(op->op_type, o->op_type) == 0) {
|
|
- crm_trace("Removing existing recurring op entry: %s_%s_%d", op->rsc_id, op->op_type, op->interval);
|
|
- entry->recurring_op_list = g_list_remove(entry->recurring_op_list, o);
|
|
- break;
|
|
- }
|
|
- }
|
|
+ /* Ensure there are no duplicates */
|
|
+ history_remove_recurring_op(entry, op);
|
|
|
|
crm_trace("Adding recurring op: %s_%s_%d", op->rsc_id, op->op_type, op->interval);
|
|
entry->recurring_op_list = g_list_prepend(entry->recurring_op_list, lrmd_copy_event(op));
|
|
|
|
} else if (entry->recurring_op_list && safe_str_eq(op->op_type, RSC_STATUS) == FALSE) {
|
|
- GList *gIter = entry->recurring_op_list;
|
|
-
|
|
crm_trace("Dropping %d recurring ops because of: %s_%s_%d",
|
|
- g_list_length(gIter), op->rsc_id, op->op_type, op->interval);
|
|
- for (; gIter != NULL; gIter = gIter->next) {
|
|
- lrmd_free_event(gIter->data);
|
|
- }
|
|
- g_list_free(entry->recurring_op_list);
|
|
- entry->recurring_op_list = NULL;
|
|
+ g_list_length(entry->recurring_op_list), op->rsc_id,
|
|
+ op->op_type, op->interval);
|
|
+ history_free_recurring_ops(entry);
|
|
}
|
|
}
|
|
|
|
diff --git a/crmd/lrm_state.c b/crmd/lrm_state.c
|
|
index 374c806..162ad03 100644
|
|
--- a/crmd/lrm_state.c
|
|
+++ b/crmd/lrm_state.c
|
|
@@ -32,24 +32,6 @@ int lrmd_internal_proxy_send(lrmd_t * lrmd, xmlNode *msg);
|
|
void lrmd_internal_set_proxy_callback(lrmd_t * lrmd, void *userdata, void (*callback)(lrmd_t *lrmd, void *userdata, xmlNode *msg));
|
|
|
|
static void
|
|
-history_cache_destroy(gpointer data)
|
|
-{
|
|
- rsc_history_t *entry = data;
|
|
-
|
|
- if (entry->stop_params) {
|
|
- g_hash_table_destroy(entry->stop_params);
|
|
- }
|
|
-
|
|
- free(entry->rsc.type);
|
|
- free(entry->rsc.class);
|
|
- free(entry->rsc.provider);
|
|
-
|
|
- lrmd_free_event(entry->failed);
|
|
- lrmd_free_event(entry->last);
|
|
- free(entry->id);
|
|
- free(entry);
|
|
-}
|
|
-static void
|
|
free_rsc_info(gpointer value)
|
|
{
|
|
lrmd_rsc_info_t *rsc_info = value;
|
|
@@ -155,7 +137,7 @@ lrm_state_create(const char *node_name)
|
|
g_str_equal, g_hash_destroy_str, free_recurring_op);
|
|
|
|
state->resource_history = g_hash_table_new_full(crm_str_hash,
|
|
- g_str_equal, NULL, history_cache_destroy);
|
|
+ g_str_equal, NULL, history_free);
|
|
|
|
g_hash_table_insert(lrm_state_table, (char *)state->node_name, state);
|
|
return state;
|
|
diff --git a/cts/CM_ais.py b/cts/CM_ais.py
|
|
index 44f91cd..a34f9b1 100644
|
|
--- a/cts/CM_ais.py
|
|
+++ b/cts/CM_ais.py
|
|
@@ -49,42 +49,46 @@ class crm_ais(crm_lha):
|
|
def NodeUUID(self, node):
|
|
return node
|
|
|
|
- def ais_components(self):
|
|
+ def ais_components(self, extra={}):
|
|
|
|
complist = []
|
|
if not len(self.fullcomplist.keys()):
|
|
for c in ["cib", "lrmd", "crmd", "attrd" ]:
|
|
- self.fullcomplist[c] = Process(
|
|
- self, c,
|
|
- pats = self.templates.get_component(self.name, c),
|
|
- badnews_ignore = self.templates.get_component(self.name, "%s-ignore"%c),
|
|
- common_ignore = self.templates.get_component(self.name, "common-ignore"))
|
|
-
|
|
- self.fullcomplist["pengine"] = Process(
|
|
- self, "pengine",
|
|
- dc_pats = self.templates.get_component(self.name, "pengine"),
|
|
- badnews_ignore = self.templates.get_component(self.name, "pengine-ignore"),
|
|
- common_ignore = self.templates.get_component(self.name, "common-ignore"))
|
|
-
|
|
- self.fullcomplist["stonith-ng"] = Process(
|
|
- self, "stonith-ng", process="stonithd",
|
|
- pats = self.templates.get_component(self.name, "stonith"),
|
|
- badnews_ignore = self.templates.get_component(self.name, "stonith-ignore"),
|
|
- common_ignore = self.templates.get_component(self.name, "common-ignore"))
|
|
-
|
|
+ self.fullcomplist[c] = Process(
|
|
+ self, c,
|
|
+ pats = self.templates.get_component(self.name, c),
|
|
+ badnews_ignore = self.templates.get_component(self.name, "%s-ignore" % c),
|
|
+ common_ignore = self.templates.get_component(self.name, "common-ignore"))
|
|
+
|
|
+ # pengine uses dc_pats instead of pats
|
|
+ self.fullcomplist["pengine"] = Process(
|
|
+ self, "pengine",
|
|
+ dc_pats = self.templates.get_component(self.name, "pengine"),
|
|
+ badnews_ignore = self.templates.get_component(self.name, "pengine-ignore"),
|
|
+ common_ignore = self.templates.get_component(self.name, "common-ignore"))
|
|
+
|
|
+ # stonith-ng's process name is different from its component name
|
|
+ self.fullcomplist["stonith-ng"] = Process(
|
|
+ self, "stonith-ng", process="stonithd",
|
|
+ pats = self.templates.get_component(self.name, "stonith"),
|
|
+ badnews_ignore = self.templates.get_component(self.name, "stonith-ignore"),
|
|
+ common_ignore = self.templates.get_component(self.name, "common-ignore"))
|
|
+
|
|
+ # add (or replace) any extra components passed in
|
|
+ self.fullcomplist.update(extra)
|
|
+
|
|
+ # Processes running under valgrind can't be shot with "killall -9 processname",
|
|
+ # so don't include them in the returned list
|
|
vgrind = self.Env["valgrind-procs"].split()
|
|
for key in self.fullcomplist.keys():
|
|
if self.Env["valgrind-tests"]:
|
|
- if key in vgrind:
|
|
- # Processes running under valgrind can't be shot with "killall -9 processname"
|
|
+ if key in vgrind:
|
|
self.log("Filtering %s from the component list as it is being profiled by valgrind" % key)
|
|
continue
|
|
if key == "stonith-ng" and not self.Env["DoFencing"]:
|
|
continue
|
|
-
|
|
complist.append(self.fullcomplist[key])
|
|
|
|
- #self.complist = [ fullcomplist["pengine"] ]
|
|
return complist
|
|
|
|
|
|
@@ -100,17 +104,14 @@ class crm_cs_v0(crm_ais):
|
|
crm_ais.__init__(self, Environment, randseed=randseed, name=name)
|
|
|
|
def Components(self):
|
|
- self.ais_components()
|
|
- c = "corosync"
|
|
-
|
|
- self.fullcomplist[c] = Process(
|
|
- self, c,
|
|
- pats = self.templates.get_component(self.name, c),
|
|
- badnews_ignore = self.templates.get_component(self.name, "%s-ignore"%c),
|
|
+ extra = {}
|
|
+ extra["corosync"] = Process(
|
|
+ self, "corosync",
|
|
+ pats = self.templates.get_component(self.name, "corosync"),
|
|
+ badnews_ignore = self.templates.get_component(self.name, "corosync-ignore"),
|
|
common_ignore = self.templates.get_component(self.name, "common-ignore")
|
|
)
|
|
-
|
|
- return self.ais_components()
|
|
+ return self.ais_components(extra=extra)
|
|
|
|
|
|
class crm_cs_v1(crm_cs_v0):
|
|
diff --git a/cts/environment.py b/cts/environment.py
|
|
index a3399c3..61d4211 100644
|
|
--- a/cts/environment.py
|
|
+++ b/cts/environment.py
|
|
@@ -59,7 +59,7 @@ class Environment:
|
|
self["stonith-params"] = "hostlist=all,livedangerously=yes"
|
|
self["loop-minutes"] = 60
|
|
self["valgrind-prefix"] = None
|
|
- self["valgrind-procs"] = "cib crmd attrd pengine stonith-ng"
|
|
+ self["valgrind-procs"] = "attrd cib crmd lrmd pengine stonith-ng"
|
|
self["valgrind-opts"] = """--leak-check=full --show-reachable=yes --trace-children=no --num-callers=25 --gen-suppressions=all --suppressions="""+CTSvars.CTS_home+"""/cts.supp"""
|
|
|
|
self["experimental-tests"] = 0
|
|
@@ -578,6 +578,10 @@ class Environment:
|
|
elif args[i] == "--valgrind-tests":
|
|
self["valgrind-tests"] = 1
|
|
|
|
+ elif args[i] == "--valgrind-procs":
|
|
+ self["valgrind-procs"] = args[i+1]
|
|
+ skipthis = 1
|
|
+
|
|
elif args[i] == "--no-loop-tests":
|
|
self["loop-tests"] = 0
|
|
|
|
diff --git a/cts/patterns.py b/cts/patterns.py
|
|
index 1bc05a6..493b690 100644
|
|
--- a/cts/patterns.py
|
|
+++ b/cts/patterns.py
|
|
@@ -7,7 +7,9 @@ class BasePatterns:
|
|
def __init__(self, name):
|
|
self.name = name
|
|
patternvariants[name] = self
|
|
- self.ignore = []
|
|
+ self.ignore = [
|
|
+ "avoid confusing Valgrind",
|
|
+ ]
|
|
self.BadNews = []
|
|
self.components = {}
|
|
self.commands = {
|
|
@@ -140,7 +142,7 @@ class crm_lha(BasePatterns):
|
|
r"Parameters to .* changed",
|
|
]
|
|
|
|
- self.ignore = [
|
|
+ self.ignore = self.ignore + [
|
|
r"(ERROR|error):.*\s+assert\s+at\s+crm_glib_handler:"
|
|
"(ERROR|error): Message hist queue is filling up",
|
|
"stonithd.*CRIT: external_hostlist:.*'vmware gethosts' returned an empty hostlist",
|
|
@@ -177,7 +179,7 @@ class crm_cs_v0(BasePatterns):
|
|
"Pat:PacemakerUp" : "%s\W.*pacemakerd.*Starting Pacemaker",
|
|
})
|
|
|
|
- self.ignore = [
|
|
+ self.ignore = self.ignore + [
|
|
r"crm_mon:",
|
|
r"crmadmin:",
|
|
r"update_trace_data",
|
|
diff --git a/extra/ansible/docker/group_vars/all b/extra/ansible/docker/group_vars/all
|
|
new file mode 100644
|
|
index 0000000..935e88a
|
|
--- /dev/null
|
|
+++ b/extra/ansible/docker/group_vars/all
|
|
@@ -0,0 +1,5 @@
|
|
+max: 4
|
|
+prefix: ansible-pcmk
|
|
+base_image: centos:centos7
|
|
+subnet: 172.17.200
|
|
+pacemaker_authkey: this_is_very_insecure
|
|
\ No newline at end of file
|
|
diff --git a/extra/ansible/docker/hosts b/extra/ansible/docker/hosts
|
|
new file mode 100644
|
|
index 0000000..5b0fb71
|
|
--- /dev/null
|
|
+++ b/extra/ansible/docker/hosts
|
|
@@ -0,0 +1,7 @@
|
|
+[controllers]
|
|
+oss-uk-1.clusterlabs.org
|
|
+
|
|
+[containers]
|
|
+ansible-1
|
|
+ansible-2
|
|
+ansible-3
|
|
diff --git a/extra/ansible/docker/roles/docker-host/files/docker-enter b/extra/ansible/docker/roles/docker-host/files/docker-enter
|
|
new file mode 100644
|
|
index 0000000..04c4822
|
|
--- /dev/null
|
|
+++ b/extra/ansible/docker/roles/docker-host/files/docker-enter
|
|
@@ -0,0 +1,29 @@
|
|
+#! /bin/sh -e
|
|
+
|
|
+case "$1" in
|
|
+ -h|--help)
|
|
+ echo "Usage: docker-enter CONTAINER [COMMAND]"
|
|
+ exit 0
|
|
+ ;;
|
|
+esac
|
|
+
|
|
+if [ $(id -ru) -ne 0 ]; then
|
|
+ echo "You have to be root."
|
|
+ exit 1
|
|
+fi
|
|
+
|
|
+if [ $# -eq 0 ]; then
|
|
+ echo "Usage: docker-enter CONTAINER [COMMAND]"
|
|
+ exit 1
|
|
+fi
|
|
+
|
|
+container=$1; shift
|
|
+PID=$(docker inspect --format {{.State.Pid}} "$container")
|
|
+
|
|
+if [ $# -ne 0 ]; then
|
|
+ nsenter --target $PID --mount --uts --ipc --net --pid -- $*
|
|
+ exit $?
|
|
+fi
|
|
+
|
|
+nsenter --target $PID --mount --uts --ipc --net --pid
|
|
+exit 0
|
|
diff --git a/extra/ansible/docker/roles/docker-host/files/fence_docker_cts b/extra/ansible/docker/roles/docker-host/files/fence_docker_cts
|
|
new file mode 100644
|
|
index 0000000..6d6f025
|
|
--- /dev/null
|
|
+++ b/extra/ansible/docker/roles/docker-host/files/fence_docker_cts
|
|
@@ -0,0 +1,202 @@
|
|
+#!/bin/bash
|
|
+#
|
|
+# Copyright (c) 2014 David Vossel <dvossel@redhat.com>
|
|
+# All Rights Reserved.
|
|
+#
|
|
+# This program is free software; you can redistribute it and/or modify
|
|
+# it under the terms of version 2 of the GNU General Public License as
|
|
+# published by the Free Software Foundation.
|
|
+#
|
|
+# This program is distributed in the hope that it would be useful, but
|
|
+# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
+#
|
|
+# Further, this software is distributed without any warranty that it is
|
|
+# free of the rightful claim of any third person regarding infringement
|
|
+# or the like. Any license provided herein, whether implied or
|
|
+# otherwise, applies only to this software file. Patent licenses, if
|
|
+# any, provided herein do not apply to combinations of this program with
|
|
+# other software, or any other product whatsoever.
|
|
+#
|
|
+# You should have received a copy of the GNU General Public License
|
|
+# along with this program; if not, write the Free Software Foundation,
|
|
+# Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
|
|
+#
|
|
+#######################################################################
|
|
+
|
|
+port=""
|
|
+action="list" # Default fence action
|
|
+
|
|
+function usage()
|
|
+{
|
|
+cat <<EOF
|
|
+`basename $0` - A fencing agent for docker containers for testing purposes
|
|
+
|
|
+Usage: `basename $0` -o|--action [-n|--port] [options]
|
|
+Options:
|
|
+ -h, --help This text
|
|
+ -V, --version Version information
|
|
+
|
|
+Commands:
|
|
+ -o, --action Action to perform: on|off|reboot|status|monitor
|
|
+ -n, --port The name of a container to control/check
|
|
+
|
|
+EOF
|
|
+ exit 0;
|
|
+}
|
|
+
|
|
+function metadata()
|
|
+{
|
|
+cat <<EOF
|
|
+<?xml version="1.0" ?>
|
|
+<resource-agent name="fence_docker_cts" shortdesc="docker fencing agent for testing purposes" >
|
|
+ <longdesc>
|
|
+ fence_docker_cts fences docker containers for testing purposes.
|
|
+ </longdesc>
|
|
+ <parameters>
|
|
+ <parameter name="action" unique="1" required="0">
|
|
+ <getopt mixed="-o, --action=[action]" />
|
|
+ <content type="string" default="reboot" />
|
|
+ <shortdesc lang="en">Fencing Action</shortdesc>
|
|
+ </parameter>
|
|
+ <parameter name="port" unique="1" required="0">
|
|
+ <getopt mixed="-n, --port=[port]" />
|
|
+ <content type="string" />
|
|
+ <shortdesc lang="en">The name/id of docker container to control/check</shortdesc>
|
|
+ </parameter>
|
|
+ </parameters>
|
|
+ <actions>
|
|
+ <action name="on" />
|
|
+ <action name="off" />
|
|
+ <action name="reboot" />
|
|
+ <action name="status" />
|
|
+ <action name="list" />
|
|
+ <action name="monitor" />
|
|
+ <action name="metadata" />
|
|
+ </actions>
|
|
+</resource-agent>
|
|
+EOF
|
|
+ exit 0;
|
|
+}
|
|
+
|
|
+function docker_log() {
|
|
+ if ! [ "$action" = "list" ]; then
|
|
+ printf "$*\n" 1>&2
|
|
+ fi
|
|
+}
|
|
+
|
|
+# stdin option processing
|
|
+if [ -z $1 ]; then
|
|
+ # If there are no command line args, look for options from stdin
|
|
+ while read line; do
|
|
+ for word in $(echo "$line"); do
|
|
+ case $word in
|
|
+ option=*|action=*) action=`echo $word | sed s/.*=//`;;
|
|
+ port=*) port=`echo $word | sed s/.*=//`;;
|
|
+ node=*) port=`echo $word | sed s/.*=//`;;
|
|
+ nodename=*) port=`echo $word | sed s/.*=//`;;
|
|
+ --);;
|
|
+ *) docker_log "Invalid command: $word";;
|
|
+ esac
|
|
+ done
|
|
+ done
|
|
+fi
|
|
+
|
|
+# Command line option processing
|
|
+while true ; do
|
|
+ if [ -z "$1" ]; then
|
|
+ break;
|
|
+ fi
|
|
+ case "$1" in
|
|
+ -o|--action|--option) action=$2; shift; shift;;
|
|
+ -n|--port) port=$2; shift; shift;;
|
|
+ -V|--version) echo "1.0.0"; exit 0;;
|
|
+ --help|-h)
|
|
+ usage;
|
|
+ exit 0;;
|
|
+ --) shift ; break ;;
|
|
+ *) docker_log "Unknown option: $1. See --help for details."; exit 1;;
|
|
+ esac
|
|
+done
|
|
+
|
|
+action=`echo $action | tr 'A-Z' 'a-z'`
|
|
+case $action in
|
|
+ hostlist|list) action=list;;
|
|
+ stat|status) action=status;;
|
|
+ restart|reboot|reset) action=reboot;;
|
|
+ poweron|on) action=start;;
|
|
+ poweroff|off) action=stop;;
|
|
+esac
|
|
+
|
|
+function fence_done()
|
|
+{
|
|
+ if [ $1 -eq 0 ]; then
|
|
+ docker_log "Operation $action (port=$port) passed"
|
|
+ else
|
|
+ docker_log "Operation $action (port=$port) failed: $1"
|
|
+ fi
|
|
+ if [ -z "$returnfile" ]; then
|
|
+ rm -f $returnfile
|
|
+ fi
|
|
+ if [ -z "$helperscript" ]; then
|
|
+ rm -f $helperscript
|
|
+ fi
|
|
+ exit $1
|
|
+}
|
|
+
|
|
+case $action in
|
|
+ metadata) metadata;;
|
|
+esac
|
|
+
|
|
+returnfile=$(mktemp /tmp/fence_docker_cts_returnfileXXXX)
|
|
+returnstring=""
|
|
+helper_script=$(mktemp /tmp/fence_docker_cts_helperXXXX)
|
|
+
|
|
+exec_action()
|
|
+{
|
|
+ echo "#!/bin/bash" > $helper_script
|
|
+ echo "sleep 10000" >> $helper_script
|
|
+ chmod 755 $helper_script
|
|
+ src="$(uname -n)"
|
|
+
|
|
+ $helper_script "$src" "$action" "$returnfile" "$port" > /dev/null 2>&1 &
|
|
+ pid=$!
|
|
+ docker_log "waiting on pid $pid"
|
|
+ wait $pid > /dev/null 2>&1
|
|
+ returnstring=$(cat $returnfile)
|
|
+
|
|
+ if [ -z "$returnstring" ]; then
|
|
+ docker_log "fencing daemon did not respond"
|
|
+ fence_done 1
|
|
+ fi
|
|
+
|
|
+ if [ "$returnstring" == "fail" ]; then
|
|
+ docker_log "fencing daemon failed to execute action [$action on port $port]"
|
|
+ fence_done 1
|
|
+ fi
|
|
+
|
|
+ return 0
|
|
+}
|
|
+
|
|
+exec_action
|
|
+case $action in
|
|
+ list)
|
|
+ cat $returnfile
|
|
+ fence_done 0
|
|
+ ;;
|
|
+
|
|
+ status)
|
|
+ # 0 if container is on
|
|
+ # 1 if container can not be contacted or unknown
|
|
+ # 2 if container is off
|
|
+ if [ "$returnstring" = "true" ]; then
|
|
+ fence_done 0
|
|
+ else
|
|
+ fence_done 2
|
|
+ fi
|
|
+ ;;
|
|
+ monitor|stop|start|reboot) : ;;
|
|
+ *) docker_log "Unknown action: $action"; fence_done 1;;
|
|
+esac
|
|
+
|
|
+fence_done $?
|
|
diff --git a/extra/ansible/docker/roles/docker-host/files/launch.sh b/extra/ansible/docker/roles/docker-host/files/launch.sh
|
|
new file mode 100644
|
|
index 0000000..66bebf4
|
|
--- /dev/null
|
|
+++ b/extra/ansible/docker/roles/docker-host/files/launch.sh
|
|
@@ -0,0 +1,4 @@
|
|
+#!/bin/bash
|
|
+while true; do
|
|
+ sleep 1
|
|
+done
|
|
diff --git a/extra/ansible/docker/roles/docker-host/files/pcmk_remote_start b/extra/ansible/docker/roles/docker-host/files/pcmk_remote_start
|
|
new file mode 100644
|
|
index 0000000..1bf0320
|
|
--- /dev/null
|
|
+++ b/extra/ansible/docker/roles/docker-host/files/pcmk_remote_start
|
|
@@ -0,0 +1,18 @@
|
|
+#!/bin/bash
|
|
+/usr/sbin/ip_start
|
|
+pid=$(pidof pacemaker_remoted)
|
|
+if [ "$?" -ne 0 ]; then
|
|
+ mkdir -p /var/run
|
|
+
|
|
+ export PCMK_debugfile=$pcmklogs
|
|
+ (pacemaker_remoted &) & > /dev/null 2>&1
|
|
+ sleep 5
|
|
+
|
|
+ pid=$(pidof pacemaker_remoted)
|
|
+ if [ "$?" -ne 0 ]; then
|
|
+ echo "startup of pacemaker failed"
|
|
+ exit 1
|
|
+ fi
|
|
+ echo "$pid" > /var/run/pacemaker_remoted.pid
|
|
+fi
|
|
+exit 0
|
|
diff --git a/extra/ansible/docker/roles/docker-host/files/pcmk_remote_stop b/extra/ansible/docker/roles/docker-host/files/pcmk_remote_stop
|
|
new file mode 100644
|
|
index 0000000..074cd59
|
|
--- /dev/null
|
|
+++ b/extra/ansible/docker/roles/docker-host/files/pcmk_remote_stop
|
|
@@ -0,0 +1,36 @@
|
|
+#!/bin/bash
|
|
+status()
|
|
+{
|
|
+ pid=$(pidof $1 2>/dev/null)
|
|
+ rtrn=$?
|
|
+ if [ $rtrn -ne 0 ]; then
|
|
+ echo "$1 is stopped"
|
|
+ else
|
|
+ echo "$1 (pid $pid) is running..."
|
|
+ fi
|
|
+ return $rtrn
|
|
+}
|
|
+stop()
|
|
+{
|
|
+ desc="Pacemaker Remote"
|
|
+ prog=$1
|
|
+ shutdown_prog=$prog
|
|
+
|
|
+ if status $shutdown_prog > /dev/null 2>&1; then
|
|
+ kill -TERM $(pidof $prog) > /dev/null 2>&1
|
|
+
|
|
+ while status $prog > /dev/null 2>&1; do
|
|
+ sleep 1
|
|
+ echo -n "."
|
|
+ done
|
|
+ else
|
|
+ echo -n "$desc is already stopped"
|
|
+ fi
|
|
+
|
|
+ rm -f /var/lock/subsystem/pacemaker
|
|
+ rm -f /var/run/${prog}.pid
|
|
+ killall -q -9 'crmd stonithd attrd cib lrmd pacemakerd pacemaker_remoted'
|
|
+}
|
|
+
|
|
+stop "pacemaker_remoted"
|
|
+exit 0
|
|
diff --git a/extra/ansible/docker/roles/docker-host/files/pcmk_start b/extra/ansible/docker/roles/docker-host/files/pcmk_start
|
|
new file mode 100644
|
|
index 0000000..d8b2ba8
|
|
--- /dev/null
|
|
+++ b/extra/ansible/docker/roles/docker-host/files/pcmk_start
|
|
@@ -0,0 +1,23 @@
|
|
+#!/bin/bash
|
|
+
|
|
+/usr/sbin/ip_start
|
|
+sed -i 's@to_syslog:.*yes@to_logfile: yes\nlogfile: /var/log/pacemaker.log@g' /etc/corosync/corosync.conf
|
|
+
|
|
+/usr/share/corosync/corosync start > /dev/null 2>&1
|
|
+
|
|
+pid=$(pidof pacemakerd)
|
|
+if [ "$?" -ne 0 ]; then
|
|
+ mkdir -p /var/run
|
|
+
|
|
+ export PCMK_debugfile=$pcmklogs
|
|
+ (pacemakerd &) & > /dev/null 2>&1
|
|
+ sleep 5
|
|
+
|
|
+ pid=$(pidof pacemakerd)
|
|
+ if [ "$?" -ne 0 ]; then
|
|
+ echo "startup of pacemaker failed"
|
|
+ exit 1
|
|
+ fi
|
|
+ echo "$pid" > /var/run/pacemakerd.pid
|
|
+fi
|
|
+exit 0
|
|
diff --git a/extra/ansible/docker/roles/docker-host/files/pcmk_stop b/extra/ansible/docker/roles/docker-host/files/pcmk_stop
|
|
new file mode 100644
|
|
index 0000000..a8f395a
|
|
--- /dev/null
|
|
+++ b/extra/ansible/docker/roles/docker-host/files/pcmk_stop
|
|
@@ -0,0 +1,45 @@
|
|
+#!/bin/bash
|
|
+status()
|
|
+{
|
|
+ pid=$(pidof $1 2>/dev/null)
|
|
+ rtrn=$?
|
|
+ if [ $rtrn -ne 0 ]; then
|
|
+ echo "$1 is stopped"
|
|
+ else
|
|
+ echo "$1 (pid $pid) is running..."
|
|
+ fi
|
|
+ return $rtrn
|
|
+}
|
|
+stop()
|
|
+{
|
|
+ desc="Pacemaker Cluster Manager"
|
|
+ prog=$1
|
|
+ shutdown_prog=$prog
|
|
+
|
|
+ if ! status $prog > /dev/null 2>&1; then
|
|
+ shutdown_prog="crmd"
|
|
+ fi
|
|
+
|
|
+ cname=$(crm_node --name)
|
|
+ crm_attribute -N $cname -n standby -v true -l reboot
|
|
+
|
|
+ if status $shutdown_prog > /dev/null 2>&1; then
|
|
+ kill -TERM $(pidof $prog) > /dev/null 2>&1
|
|
+
|
|
+ while status $prog > /dev/null 2>&1; do
|
|
+ sleep 1
|
|
+ echo -n "."
|
|
+ done
|
|
+ else
|
|
+ echo -n "$desc is already stopped"
|
|
+ fi
|
|
+
|
|
+ rm -f /var/lock/subsystem/pacemaker
|
|
+ rm -f /var/run/${prog}.pid
|
|
+ killall -q -9 'crmd stonithd attrd cib lrmd pacemakerd pacemaker_remoted'
|
|
+}
|
|
+
|
|
+stop "pacemakerd"
|
|
+/usr/share/corosync/corosync stop > /dev/null 2>&1
|
|
+killall -q -9 'corosync'
|
|
+exit 0
|
|
diff --git a/extra/ansible/docker/roles/docker-host/tasks/main.yml b/extra/ansible/docker/roles/docker-host/tasks/main.yml
|
|
new file mode 100644
|
|
index 0000000..ce69adf
|
|
--- /dev/null
|
|
+++ b/extra/ansible/docker/roles/docker-host/tasks/main.yml
|
|
@@ -0,0 +1,77 @@
|
|
+---
|
|
+#local_action: command /usr/bin/take_out_of_pool {{ inventory_hostname }}
|
|
+- name: Update docker
|
|
+ yum: pkg=docker state=latest
|
|
+- name: Start docker
|
|
+ service: name=docker state=started enabled=yes
|
|
+- name: Install helper
|
|
+ copy: src=docker-enter dest=/usr/sbin/ mode=0755
|
|
+- name: Download image
|
|
+ shell: docker pull {{ base_image }}
|
|
+- name: Cleanup kill
|
|
+ shell: docker kill $(docker ps -a | grep {{ prefix }} | awk '{print $1}') || echo "Nothing to kill"
|
|
+- name: Cleanup remove
|
|
+ shell: docker rm $(docker ps -a | grep {{ prefix }} | awk '{print $1}') || echo "Nothing to remove"
|
|
+- name: Cleanup docker skeleton
|
|
+ file: path={{ prefix }} state=absent
|
|
+- name: Create docker skeleton
|
|
+ file: path={{ prefix }}/{{ item }} state=directory recurse=yes
|
|
+ with_items:
|
|
+ - rpms
|
|
+ - repos
|
|
+ - bin_files
|
|
+ - launch_scripts
|
|
+- name: Create IP helper
|
|
+ template: src=ip_start.j2 dest={{ prefix }}/bin_files/ip_start mode=0755
|
|
+- name: Copy helper scripts
|
|
+ copy: src={{ item }} dest={{ prefix }}/bin_files/{{ item }} mode=0755
|
|
+ with_items:
|
|
+ - pcmk_stop
|
|
+ - pcmk_start
|
|
+ - pcmk_remote_stop
|
|
+ - pcmk_remote_start
|
|
+ - fence_docker_cts
|
|
+- name: Copy launch script
|
|
+ copy: src=launch.sh dest={{ prefix }}/launch_scripts/launch.sh mode=0755
|
|
+- name: Copy authorized keys
|
|
+ shell: cp /root/.ssh/authorized_keys {{ prefix }}
|
|
+- name: Create docker file
|
|
+ template: src=Dockerfile.j2 dest={{ prefix }}/Dockerfile
|
|
+- name: Making image
|
|
+ shell: docker build -t {{ prefix }} {{ prefix }}
|
|
+- name: Launch images
|
|
+ shell: docker run -d -i -t -P -h {{ prefix }}-{{ item }} --name={{ prefix }}-{{ item }} -p 2200{{ item }}:22 $(docker images | grep {{ prefix }}.*latest | awk '{print $3}') /bin/bash
|
|
+ with_sequence: count={{ max }}
|
|
+- name: Calculate IPs
|
|
+ shell: for n in $(seq {{ max }} ); do echo {{ subnet }}.${n}; done | tr '\n' ' '
|
|
+ register: node_ips
|
|
+- name: Start the IP
|
|
+ shell: docker-enter {{ prefix }}-{{ item }} ip_start
|
|
+ with_sequence: count={{ max }}
|
|
+- name: Configure cluster
|
|
+ shell: docker-enter {{ prefix }}-{{ item }} pcs cluster setup --local --name {{ prefix }} {{ node_ips.stdout }}
|
|
+ with_sequence: count={{ max }}
|
|
+- name: Start the cluster
|
|
+ shell: docker-enter {{ prefix }}-{{ item }} pcmk_start
|
|
+ with_sequence: count={{ max }}
|
|
+- name: Set cluster options
|
|
+ shell: docker-enter {{ prefix }}-1 pcs property set stonith-enabled=false
|
|
+- name: Configure VIP
|
|
+ shell: docker-enter {{ prefix }}-1 pcs resource create ClusterIP ocf:heartbeat:IPaddr2 ip={{ subnet }}.100 cidr_netmask=32 op monitor interval=30s
|
|
+- name: Configure
|
|
+ shell: docker-enter {{ prefix }}-1 pcs resource defaults resource-stickiness=100
|
|
+- name: Configure
|
|
+ shell: docker-enter {{ prefix }}-1 pcs resource create WebSite apache configfile=/etc/httpd/conf/httpd.conf statusurl="http://localhost/server-status" op monitor interval=1min
|
|
+- name: Configure
|
|
+ shell: docker-enter {{ prefix }}-1 pcs constraint colocation add WebSite with ClusterIP INFINITY
|
|
+- name: Configure
|
|
+ shell: docker-enter {{ prefix }}-1 pcs constraint order ClusterIP then WebSite
|
|
+- name: Configure
|
|
+ shell: docker-enter {{ prefix }}-1 pcs constraint location WebSite prefers {{ prefix }}-1=50
|
|
+# TODO: Enable fencing
|
|
+# TODO: Make this a full LAMP stack similar to https://github.com/ansible/ansible-examples/tree/master/lamp_simple
|
|
+# TODO: Create a Pacemaker module?
|
|
+
|
|
+# run_once: true
|
|
+# delegate_to: web01.example.org
|
|
+
|
|
diff --git a/extra/ansible/docker/roles/docker-host/templates/Dockerfile.j2 b/extra/ansible/docker/roles/docker-host/templates/Dockerfile.j2
|
|
new file mode 100644
|
|
index 0000000..1d57175
|
|
--- /dev/null
|
|
+++ b/extra/ansible/docker/roles/docker-host/templates/Dockerfile.j2
|
|
@@ -0,0 +1,16 @@
|
|
+FROM {{ base_image }}
|
|
+ADD /repos /etc/yum.repos.d/
|
|
+#ADD /rpms /root/
|
|
+#RUN yum install -y /root/*.rpm
|
|
+ADD /launch_scripts /root/
|
|
+ADD /bin_files /usr/sbin/
|
|
+
|
|
+RUN mkdir -p /root/.ssh; chmod 700 /root/.ssh
|
|
+ADD authorized_keys /root/.ssh/
|
|
+
|
|
+RUN yum install -y openssh-server net-tools pacemaker pacemaker-cts resource-agents pcs corosync which fence-agents-common sysvinit-tools
|
|
+RUN mkdir -p /etc/pacemaker/
|
|
+RUN echo {{ pacemaker_authkey }} > /etc/pacemaker/authkey
|
|
+RUN /usr/sbin/sshd
|
|
+
|
|
+ENTRYPOINT ["/root/launch.sh"]
|
|
diff --git a/extra/ansible/docker/roles/docker-host/templates/ip_start.j2 b/extra/ansible/docker/roles/docker-host/templates/ip_start.j2
|
|
new file mode 100755
|
|
index 0000000..edbd392
|
|
--- /dev/null
|
|
+++ b/extra/ansible/docker/roles/docker-host/templates/ip_start.j2
|
|
@@ -0,0 +1,3 @@
|
|
+offset=$(hostname | sed s/.*-//)
|
|
+export OCF_ROOT=/usr/lib/ocf/ OCF_RESKEY_ip={{ subnet }}.${offset} OCF_RESKEY_cidr_netmask=32
|
|
+/usr/lib/ocf/resource.d/heartbeat/IPaddr2 start
|
|
diff --git a/extra/ansible/docker/site.yml b/extra/ansible/docker/site.yml
|
|
new file mode 100644
|
|
index 0000000..0cc65e4
|
|
--- /dev/null
|
|
+++ b/extra/ansible/docker/site.yml
|
|
@@ -0,0 +1,12 @@
|
|
+---
|
|
+# See /etc/ansible/hosts or -i hosts
|
|
+- hosts: controllers
|
|
+ remote_user: root
|
|
+ roles:
|
|
+ - docker-host
|
|
+
|
|
+#- hosts: containers
|
|
+# gather_facts: no
|
|
+# remote_user: root
|
|
+# roles:
|
|
+# - docker-container
|
|
diff --git a/include/crm/msg_xml.h b/include/crm/msg_xml.h
|
|
index 42f9003..15f1b3c 100644
|
|
--- a/include/crm/msg_xml.h
|
|
+++ b/include/crm/msg_xml.h
|
|
@@ -194,6 +194,7 @@
|
|
# define XML_RSC_ATTR_INTERLEAVE "interleave"
|
|
# define XML_RSC_ATTR_INCARNATION "clone"
|
|
# define XML_RSC_ATTR_INCARNATION_MAX "clone-max"
|
|
+# define XML_RSC_ATTR_INCARNATION_MIN "clone-min"
|
|
# define XML_RSC_ATTR_INCARNATION_NODEMAX "clone-node-max"
|
|
# define XML_RSC_ATTR_MASTER_MAX "master-max"
|
|
# define XML_RSC_ATTR_MASTER_NODEMAX "master-node-max"
|
|
diff --git a/include/crm/pengine/status.h b/include/crm/pengine/status.h
|
|
index 4214959..b95b1e5 100644
|
|
--- a/include/crm/pengine/status.h
|
|
+++ b/include/crm/pengine/status.h
|
|
@@ -256,7 +256,6 @@ struct resource_s {
|
|
int stickiness;
|
|
int sort_index;
|
|
int failure_timeout;
|
|
- int remote_reconnect_interval;
|
|
int effective_priority;
|
|
int migration_threshold;
|
|
|
|
@@ -295,6 +294,7 @@ struct resource_s {
|
|
|
|
const char *isolation_wrapper;
|
|
gboolean exclusive_discover;
|
|
+ int remote_reconnect_interval;
|
|
};
|
|
|
|
struct pe_action_s {
|
|
@@ -324,6 +324,26 @@ struct pe_action_s {
|
|
GHashTable *meta;
|
|
GHashTable *extra;
|
|
|
|
+ /*
|
|
+ * These two varables are associated with the constraint logic
|
|
+ * that involves first having one or more actions runnable before
|
|
+ * then allowing this action to execute.
|
|
+ *
|
|
+ * These varables are used with features such as 'clone-min' which
|
|
+ * requires at minimum X number of cloned instances to be running
|
|
+ * before an order dependency can run. Another option that uses
|
|
+ * this is 'require-all=false' in ordering constrants. This option
|
|
+ * says "only required one instance of a resource to start before
|
|
+ * allowing dependencies to start" basicall require-all=false is
|
|
+ * the same as clone-min=1.
|
|
+ */
|
|
+
|
|
+ /* current number of known runnable actions in the before list. */
|
|
+ int runnable_before;
|
|
+ /* the number of "before" runnable actions required for this action
|
|
+ * to be considered runnable */
|
|
+ int required_runnable_before;
|
|
+
|
|
GListPtr actions_before; /* action_warpper_t* */
|
|
GListPtr actions_after; /* action_warpper_t* */
|
|
};
|
|
diff --git a/lib/cib/Makefile.am b/lib/cib/Makefile.am
|
|
index e84f4f7..1e50511 100644
|
|
--- a/lib/cib/Makefile.am
|
|
+++ b/lib/cib/Makefile.am
|
|
@@ -28,7 +28,7 @@ noinst_HEADERS =
|
|
libcib_la_SOURCES = cib_ops.c cib_utils.c cib_client.c cib_native.c cib_attrs.c
|
|
libcib_la_SOURCES += cib_file.c cib_remote.c
|
|
|
|
-libcib_la_LDFLAGS = -version-info 4:1:0 -L$(top_builddir)/lib/pengine/.libs
|
|
+libcib_la_LDFLAGS = -version-info 4:2:0 -L$(top_builddir)/lib/pengine/.libs
|
|
libcib_la_LIBADD = $(CRYPTOLIB) $(top_builddir)/lib/pengine/libpe_rules.la $(top_builddir)/lib/common/libcrmcommon.la
|
|
libcib_la_CFLAGS = -I$(top_srcdir)
|
|
|
|
diff --git a/lib/cluster/Makefile.am b/lib/cluster/Makefile.am
|
|
index 29413ba..29daeb2 100644
|
|
--- a/lib/cluster/Makefile.am
|
|
+++ b/lib/cluster/Makefile.am
|
|
@@ -28,7 +28,7 @@ header_HEADERS =
|
|
lib_LTLIBRARIES = libcrmcluster.la
|
|
|
|
libcrmcluster_la_SOURCES = election.c cluster.c membership.c
|
|
-libcrmcluster_la_LDFLAGS = -version-info 4:2:0 $(CLUSTERLIBS)
|
|
+libcrmcluster_la_LDFLAGS = -version-info 5:0:1 $(CLUSTERLIBS)
|
|
libcrmcluster_la_LIBADD = $(top_builddir)/lib/common/libcrmcommon.la $(top_builddir)/lib/fencing/libstonithd.la
|
|
libcrmcluster_la_DEPENDENCIES = $(top_builddir)/lib/common/libcrmcommon.la $(top_builddir)/lib/fencing/libstonithd.la
|
|
|
|
diff --git a/lib/common/Makefile.am b/lib/common/Makefile.am
|
|
index a593f40..f5c0766 100644
|
|
--- a/lib/common/Makefile.am
|
|
+++ b/lib/common/Makefile.am
|
|
@@ -37,7 +37,7 @@ if BUILD_CIBSECRETS
|
|
libcrmcommon_la_SOURCES += cib_secrets.c
|
|
endif
|
|
|
|
-libcrmcommon_la_LDFLAGS = -version-info 7:0:4
|
|
+libcrmcommon_la_LDFLAGS = -version-info 8:0:5
|
|
libcrmcommon_la_LIBADD = @LIBADD_DL@ $(GNUTLSLIBS)
|
|
libcrmcommon_la_SOURCES += $(top_builddir)/lib/gnu/md5.c
|
|
|
|
diff --git a/lib/fencing/Makefile.am b/lib/fencing/Makefile.am
|
|
index 2bdcfeb..fbe02e4 100644
|
|
--- a/lib/fencing/Makefile.am
|
|
+++ b/lib/fencing/Makefile.am
|
|
@@ -25,7 +25,7 @@ AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include \
|
|
lib_LTLIBRARIES = libstonithd.la
|
|
|
|
libstonithd_la_SOURCES = st_client.c
|
|
-libstonithd_la_LDFLAGS = -version-info 3:2:1
|
|
+libstonithd_la_LDFLAGS = -version-info 3:3:1
|
|
libstonithd_la_LIBADD = $(top_builddir)/lib/common/libcrmcommon.la
|
|
|
|
AM_CFLAGS = $(AM_CPPFLAGS)
|
|
diff --git a/lib/lrmd/Makefile.am b/lib/lrmd/Makefile.am
|
|
index f961ae1..820654c 100644
|
|
--- a/lib/lrmd/Makefile.am
|
|
+++ b/lib/lrmd/Makefile.am
|
|
@@ -25,7 +25,7 @@ AM_CPPFLAGS = -I$(top_builddir)/include -I$(top_srcdir)/include \
|
|
lib_LTLIBRARIES = liblrmd.la
|
|
|
|
liblrmd_la_SOURCES = lrmd_client.c proxy_common.c
|
|
-liblrmd_la_LDFLAGS = -version-info 3:0:2
|
|
+liblrmd_la_LDFLAGS = -version-info 3:1:2
|
|
liblrmd_la_LIBADD = $(top_builddir)/lib/common/libcrmcommon.la \
|
|
$(top_builddir)/lib/services/libcrmservice.la \
|
|
$(top_builddir)/lib/fencing/libstonithd.la
|
|
diff --git a/lib/pengine/Makefile.am b/lib/pengine/Makefile.am
|
|
index 78da075..60d1770 100644
|
|
--- a/lib/pengine/Makefile.am
|
|
+++ b/lib/pengine/Makefile.am
|
|
@@ -26,11 +26,11 @@ lib_LTLIBRARIES = libpe_rules.la libpe_status.la
|
|
## SOURCES
|
|
noinst_HEADERS = unpack.h variant.h
|
|
|
|
-libpe_rules_la_LDFLAGS = -version-info 2:4:0
|
|
+libpe_rules_la_LDFLAGS = -version-info 2:5:0
|
|
libpe_rules_la_SOURCES = rules.c common.c
|
|
libpe_rules_la_LIBADD = $(top_builddir)/lib/common/libcrmcommon.la
|
|
|
|
-libpe_status_la_LDFLAGS = -version-info 8:0:4
|
|
+libpe_status_la_LDFLAGS = -version-info 9:0:5
|
|
libpe_status_la_SOURCES = status.c unpack.c utils.c complex.c native.c group.c clone.c rules.c common.c
|
|
libpe_status_la_LIBADD = @CURSESLIBS@ $(top_builddir)/lib/common/libcrmcommon.la
|
|
|
|
diff --git a/lib/services/dbus.c b/lib/services/dbus.c
|
|
index 6341fc5..e2efecb 100644
|
|
--- a/lib/services/dbus.c
|
|
+++ b/lib/services/dbus.c
|
|
@@ -64,11 +64,14 @@ pcmk_dbus_find_error(const char *method, DBusPendingCall* pending, DBusMessage *
|
|
} else {
|
|
DBusMessageIter args;
|
|
int dtype = dbus_message_get_type(reply);
|
|
+ char *sig;
|
|
|
|
switch(dtype) {
|
|
case DBUS_MESSAGE_TYPE_METHOD_RETURN:
|
|
dbus_message_iter_init(reply, &args);
|
|
- crm_trace("Call to %s returned '%s'", method, dbus_message_iter_get_signature(&args));
|
|
+ sig = dbus_message_iter_get_signature(&args);
|
|
+ crm_trace("Call to %s returned '%s'", method, sig);
|
|
+ dbus_free(sig);
|
|
break;
|
|
case DBUS_MESSAGE_TYPE_INVALID:
|
|
error.message = "Invalid reply";
|
|
@@ -217,11 +220,14 @@ bool pcmk_dbus_type_check(DBusMessage *msg, DBusMessageIter *field, int expected
|
|
|
|
if(dtype != expected) {
|
|
DBusMessageIter args;
|
|
+ char *sig;
|
|
|
|
dbus_message_iter_init(msg, &args);
|
|
+ sig = dbus_message_iter_get_signature(&args);
|
|
do_crm_log_alias(LOG_ERR, __FILE__, function, line,
|
|
- "Unexepcted DBus type, expected %c in '%s' instead of %c",
|
|
- expected, dbus_message_iter_get_signature(&args), dtype);
|
|
+ "Unexpected DBus type, expected %c in '%s' instead of %c",
|
|
+ expected, sig, dtype);
|
|
+ dbus_free(sig);
|
|
return FALSE;
|
|
}
|
|
|
|
diff --git a/lib/services/services.c b/lib/services/services.c
|
|
index 08bff88..7e2b9f7 100644
|
|
--- a/lib/services/services.c
|
|
+++ b/lib/services/services.c
|
|
@@ -348,6 +348,34 @@ services_action_create_generic(const char *exec, const char *args[])
|
|
return op;
|
|
}
|
|
|
|
+#if SUPPORT_DBUS
|
|
+/*
|
|
+ * \internal
|
|
+ * \brief Update operation's pending DBus call, unreferencing old one if needed
|
|
+ *
|
|
+ * \param[in,out] op Operation to modify
|
|
+ * \param[in] pending Pending call to set
|
|
+ */
|
|
+void
|
|
+services_set_op_pending(svc_action_t *op, DBusPendingCall *pending)
|
|
+{
|
|
+ if (op->opaque->pending && (op->opaque->pending != pending)) {
|
|
+ if (pending) {
|
|
+ crm_info("Lost pending DBus call (%p)", op->opaque->pending);
|
|
+ } else {
|
|
+ crm_trace("Done with pending DBus call (%p)", op->opaque->pending);
|
|
+ }
|
|
+ dbus_pending_call_unref(op->opaque->pending);
|
|
+ }
|
|
+ op->opaque->pending = pending;
|
|
+ if (pending) {
|
|
+ crm_trace("Updated pending DBus call (%p)", pending);
|
|
+ } else {
|
|
+ crm_trace("Cleared pending DBus call");
|
|
+ }
|
|
+}
|
|
+#endif
|
|
+
|
|
void
|
|
services_action_cleanup(svc_action_t * op)
|
|
{
|
|
diff --git a/lib/services/services_private.h b/lib/services/services_private.h
|
|
index 183afb5..a98cd91 100644
|
|
--- a/lib/services/services_private.h
|
|
+++ b/lib/services/services_private.h
|
|
@@ -63,4 +63,8 @@ void handle_blocked_ops(void);
|
|
|
|
gboolean is_op_blocked(const char *rsc);
|
|
|
|
+#if SUPPORT_DBUS
|
|
+void services_set_op_pending(svc_action_t *op, DBusPendingCall *pending);
|
|
+#endif
|
|
+
|
|
#endif /* __MH_SERVICES_PRIVATE_H__ */
|
|
diff --git a/lib/services/systemd.c b/lib/services/systemd.c
|
|
index 749d61c..e1e1bc9 100644
|
|
--- a/lib/services/systemd.c
|
|
+++ b/lib/services/systemd.c
|
|
@@ -461,7 +461,12 @@ systemd_async_dispatch(DBusPendingCall *pending, void *user_data)
|
|
|
|
if(op) {
|
|
crm_trace("Got result: %p for %p for %s, %s", reply, pending, op->rsc, op->action);
|
|
- op->opaque->pending = NULL;
|
|
+ if (pending == op->opaque->pending) {
|
|
+ op->opaque->pending = NULL;
|
|
+ } else {
|
|
+ crm_info("Received unexpected reply for pending DBus call (%p vs %p)",
|
|
+ op->opaque->pending, pending);
|
|
+ }
|
|
systemd_exec_result(reply, op);
|
|
|
|
} else {
|
|
@@ -499,10 +504,7 @@ systemd_unit_check(const char *name, const char *state, void *userdata)
|
|
}
|
|
|
|
if (op->synchronous == FALSE) {
|
|
- if (op->opaque->pending) {
|
|
- dbus_pending_call_unref(op->opaque->pending);
|
|
- }
|
|
- op->opaque->pending = NULL;
|
|
+ services_set_op_pending(op, NULL);
|
|
operation_finalize(op);
|
|
}
|
|
}
|
|
@@ -535,7 +537,7 @@ systemd_unit_exec_with_unit(svc_action_t * op, const char *unit)
|
|
return op->rc == PCMK_OCF_OK;
|
|
} else if (pending) {
|
|
dbus_pending_call_ref(pending);
|
|
- op->opaque->pending = pending;
|
|
+ services_set_op_pending(op, pending);
|
|
return TRUE;
|
|
}
|
|
|
|
@@ -617,8 +619,7 @@ systemd_unit_exec_with_unit(svc_action_t * op, const char *unit)
|
|
|
|
dbus_message_unref(msg);
|
|
if(pending) {
|
|
- dbus_pending_call_ref(pending);
|
|
- op->opaque->pending = pending;
|
|
+ services_set_op_pending(op, pending);
|
|
return TRUE;
|
|
}
|
|
return FALSE;
|
|
diff --git a/lib/transition/Makefile.am b/lib/transition/Makefile.am
|
|
index 8ce7775..04d18fe 100644
|
|
--- a/lib/transition/Makefile.am
|
|
+++ b/lib/transition/Makefile.am
|
|
@@ -27,7 +27,7 @@ lib_LTLIBRARIES = libtransitioner.la
|
|
noinst_HEADERS =
|
|
libtransitioner_la_SOURCES = unpack.c graph.c utils.c
|
|
|
|
-libtransitioner_la_LDFLAGS = -version-info 2:3:0
|
|
+libtransitioner_la_LDFLAGS = -version-info 2:4:0
|
|
libtransitioner_la_CFLAGS = -I$(top_builddir)
|
|
libtransitioner_la_LIBADD = $(top_builddir)/lib/common/libcrmcommon.la
|
|
|
|
diff --git a/pengine/Makefile.am b/pengine/Makefile.am
|
|
index 31532cf..0e12a1f 100644
|
|
--- a/pengine/Makefile.am
|
|
+++ b/pengine/Makefile.am
|
|
@@ -61,7 +61,7 @@ endif
|
|
noinst_HEADERS = allocate.h utils.h pengine.h
|
|
#utils.h pengine.h
|
|
|
|
-libpengine_la_LDFLAGS = -version-info 8:0:4
|
|
+libpengine_la_LDFLAGS = -version-info 9:0:5
|
|
# -L$(top_builddir)/lib/pils -lpils -export-dynamic -module -avoid-version
|
|
libpengine_la_SOURCES = pengine.c allocate.c utils.c constraints.c
|
|
libpengine_la_SOURCES += native.c group.c clone.c master.c graph.c utilization.c
|
|
diff --git a/pengine/allocate.c b/pengine/allocate.c
|
|
index 68cafd4..ec5a18d 100644
|
|
--- a/pengine/allocate.c
|
|
+++ b/pengine/allocate.c
|
|
@@ -1962,7 +1962,6 @@ expand_node_list(GListPtr list)
|
|
if(node_list) {
|
|
existing_len = strlen(node_list);
|
|
}
|
|
-
|
|
crm_trace("Adding %s (%dc) at offset %d", node->details->uname, len - 2, existing_len);
|
|
node_list = realloc_safe(node_list, len + existing_len);
|
|
sprintf(node_list + existing_len, "%s%s", existing_len == 0 ? "":" ", node->details->uname);
|
|
diff --git a/pengine/allocate.h b/pengine/allocate.h
|
|
index f6602c6..73f750e 100644
|
|
--- a/pengine/allocate.h
|
|
+++ b/pengine/allocate.h
|
|
@@ -171,5 +171,6 @@ extern enum pe_graph_flags clone_update_actions(action_t * first, action_t * the
|
|
enum pe_action_flags filter, enum pe_ordering type);
|
|
|
|
gboolean update_action_flags(action_t * action, enum pe_action_flags flags);
|
|
+gboolean update_action(action_t * action);
|
|
|
|
#endif
|
|
diff --git a/pengine/clone.c b/pengine/clone.c
|
|
index 3840a0a..ebf53ed 100644
|
|
--- a/pengine/clone.c
|
|
+++ b/pengine/clone.c
|
|
@@ -21,6 +21,7 @@
|
|
#include <crm/msg_xml.h>
|
|
#include <allocate.h>
|
|
#include <utils.h>
|
|
+#include <allocate.h>
|
|
|
|
#define VARIANT_CLONE 1
|
|
#include <lib/pengine/variant.h>
|
|
@@ -1338,6 +1339,8 @@ clone_update_actions(action_t * first, action_t * then, node_t * node, enum pe_a
|
|
changed |= native_update_actions(first, then, node, flags, filter, type);
|
|
|
|
for (; gIter != NULL; gIter = gIter->next) {
|
|
+ enum pe_graph_flags child_changed = pe_graph_none;
|
|
+ GListPtr lpc = NULL;
|
|
resource_t *child = (resource_t *) gIter->data;
|
|
action_t *child_action = find_first_action(child->actions, NULL, then->task, node);
|
|
|
|
@@ -1345,9 +1348,17 @@ clone_update_actions(action_t * first, action_t * then, node_t * node, enum pe_a
|
|
enum pe_action_flags child_flags = child->cmds->action_flags(child_action, node);
|
|
|
|
if (is_set(child_flags, pe_action_runnable)) {
|
|
- changed |=
|
|
+
|
|
+ child_changed |=
|
|
child->cmds->update_actions(first, child_action, node, flags, filter, type);
|
|
}
|
|
+ changed |= child_changed;
|
|
+ if (child_changed & pe_graph_updated_then) {
|
|
+ for (lpc = child_action->actions_after; lpc != NULL; lpc = lpc->next) {
|
|
+ action_wrapper_t *other = (action_wrapper_t *) lpc->data;
|
|
+ update_action(other->action);
|
|
+ }
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
diff --git a/pengine/constraints.c b/pengine/constraints.c
|
|
index 1f44811..7527aa6 100644
|
|
--- a/pengine/constraints.c
|
|
+++ b/pengine/constraints.c
|
|
@@ -256,7 +256,7 @@ unpack_simple_rsc_order(xmlNode * xml_obj, pe_working_set_t * data_set)
|
|
resource_t *rsc_then = NULL;
|
|
resource_t *rsc_first = NULL;
|
|
gboolean invert_bool = TRUE;
|
|
- gboolean require_all = TRUE;
|
|
+ int min_required_before = 0;
|
|
enum pe_order_kind kind = pe_order_kind_mandatory;
|
|
enum pe_ordering cons_weight = pe_order_optional;
|
|
|
|
@@ -351,7 +351,15 @@ unpack_simple_rsc_order(xmlNode * xml_obj, pe_working_set_t * data_set)
|
|
&& crm_is_true(require_all_s) == FALSE
|
|
&& rsc_first->variant >= pe_clone) {
|
|
|
|
- require_all = FALSE;
|
|
+ /* require-all=false means only one instance of the clone is required */
|
|
+ min_required_before = 1;
|
|
+ } else if (rsc_first->variant >= pe_clone) {
|
|
+ const char *min_clones_s = g_hash_table_lookup(rsc_first->meta, XML_RSC_ATTR_INCARNATION_MIN);
|
|
+ if (min_clones_s) {
|
|
+ /* if clone min is set, we require at a minimum X number of instances
|
|
+ * to be runnable before allowing dependencies to be runnable. */
|
|
+ min_required_before = crm_parse_int(min_clones_s, "0");
|
|
+ }
|
|
}
|
|
|
|
cons_weight = pe_order_optional;
|
|
@@ -368,22 +376,31 @@ unpack_simple_rsc_order(xmlNode * xml_obj, pe_working_set_t * data_set)
|
|
cons_weight |= get_flags(id, kind, action_first, action_then, FALSE);
|
|
}
|
|
|
|
- if (require_all == FALSE) {
|
|
+ /* If there is a minimum number of instances that must be runnable before
|
|
+ * the 'then' action is runnable, we use a pseudo action as an intermediate step
|
|
+ * start min number of clones -> pseudo action is runnable -> dependency runnable. */
|
|
+ if (min_required_before) {
|
|
GListPtr rIter = NULL;
|
|
char *task = crm_concat(CRM_OP_RELAXED_CLONE, id, ':');
|
|
action_t *unordered_action = get_pseudo_op(task, data_set);
|
|
free(task);
|
|
|
|
+ /* require the pseudo action to have "min_required_before" number of
|
|
+ * actions to be considered runnable before allowing the pseudo action
|
|
+ * to be runnable. */
|
|
+ unordered_action->required_runnable_before = min_required_before;
|
|
update_action_flags(unordered_action, pe_action_requires_any);
|
|
|
|
for (rIter = rsc_first->children; id && rIter; rIter = rIter->next) {
|
|
resource_t *child = rIter->data;
|
|
-
|
|
+ /* order each clone instance before the pseudo action */
|
|
custom_action_order(child, generate_op_key(child->id, action_first, 0), NULL,
|
|
NULL, NULL, unordered_action,
|
|
pe_order_one_or_more | pe_order_implies_then_printed, data_set);
|
|
}
|
|
|
|
+ /* order the "then" dependency to occur after the pseudo action only if
|
|
+ * the pseudo action is runnable */
|
|
order_id = custom_action_order(NULL, NULL, unordered_action,
|
|
rsc_then, generate_op_key(rsc_then->id, action_then, 0), NULL,
|
|
cons_weight | pe_order_runnable_left, data_set);
|
|
diff --git a/pengine/graph.c b/pengine/graph.c
|
|
index 9cfede6..3d832f0 100644
|
|
--- a/pengine/graph.c
|
|
+++ b/pengine/graph.c
|
|
@@ -29,7 +29,6 @@
|
|
#include <allocate.h>
|
|
#include <utils.h>
|
|
|
|
-gboolean update_action(action_t * action);
|
|
void update_colo_start_chain(action_t * action);
|
|
gboolean rsc_update_action(action_t * first, action_t * then, enum pe_ordering type);
|
|
|
|
@@ -261,8 +260,16 @@ graph_update_action(action_t * first, action_t * then, node_t * node, enum pe_ac
|
|
pe_action_runnable, pe_order_one_or_more);
|
|
|
|
} else if (is_set(flags, pe_action_runnable)) {
|
|
- if (update_action_flags(then, pe_action_runnable)) {
|
|
- changed |= pe_graph_updated_then;
|
|
+ /* alright. a "first" action is considered runnable, incremente
|
|
+ * the 'runnable_before' counter */
|
|
+ then->runnable_before++;
|
|
+
|
|
+ /* if the runnable before count for then exceeds the required number
|
|
+ * of "before" runnable actions... mark then as runnable */
|
|
+ if (then->runnable_before >= then->required_runnable_before) {
|
|
+ if (update_action_flags(then, pe_action_runnable)) {
|
|
+ changed |= pe_graph_updated_then;
|
|
+ }
|
|
}
|
|
}
|
|
if (changed) {
|
|
@@ -456,6 +463,18 @@ update_action(action_t * then)
|
|
pe_action_pseudo) ? "pseudo" : then->node ? then->node->details->uname : "");
|
|
|
|
if (is_set(then->flags, pe_action_requires_any)) {
|
|
+ /* initialize current known runnable before actions to 0
|
|
+ * from here as graph_update_action is called for each of
|
|
+ * then's before actions, this number will increment as
|
|
+ * runnable 'first' actions are encountered */
|
|
+ then->runnable_before = 0;
|
|
+
|
|
+ /* for backwards compatibility with previous options that use
|
|
+ * the 'requires_any' flag, initalize required to 1 if it is
|
|
+ * not set. */
|
|
+ if (then->required_runnable_before == 0) {
|
|
+ then->required_runnable_before = 1;
|
|
+ }
|
|
clear_bit(then->flags, pe_action_runnable);
|
|
/* We are relying on the pe_order_one_or_more clause of
|
|
* graph_update_action(), called as part of the:
|
|
diff --git a/pengine/native.c b/pengine/native.c
|
|
index b93f8da..7d5f602 100644
|
|
--- a/pengine/native.c
|
|
+++ b/pengine/native.c
|
|
@@ -2817,8 +2817,7 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete,
|
|
}
|
|
|
|
static void
|
|
-native_start_constraints(resource_t * rsc, action_t * stonith_op, gboolean is_stonith,
|
|
- pe_working_set_t * data_set)
|
|
+native_start_constraints(resource_t * rsc, action_t * stonith_op, pe_working_set_t * data_set)
|
|
{
|
|
node_t *target = stonith_op ? stonith_op->node : NULL;
|
|
|
|
@@ -2893,14 +2892,24 @@ find_fence_target_node_actions(GListPtr search_list, const char *key, node_t *fe
|
|
}
|
|
|
|
static void
|
|
-native_stop_constraints(resource_t * rsc, action_t * stonith_op, gboolean is_stonith,
|
|
- pe_working_set_t * data_set)
|
|
+native_stop_constraints(resource_t * rsc, action_t * stonith_op, pe_working_set_t * data_set)
|
|
{
|
|
char *key = NULL;
|
|
GListPtr gIter = NULL;
|
|
GListPtr action_list = NULL;
|
|
+
|
|
+ action_t *start = NULL;
|
|
resource_t *top = uber_parent(rsc);
|
|
|
|
+ key = start_key(rsc);
|
|
+ action_list = find_actions(rsc->actions, key, NULL);
|
|
+ if(action_list) {
|
|
+ start = action_list->data;
|
|
+ }
|
|
+
|
|
+ g_list_free(action_list);
|
|
+ free(key);
|
|
+
|
|
key = stop_key(rsc);
|
|
action_list = find_fence_target_node_actions(rsc->actions, key, stonith_op->node, data_set);
|
|
free(key);
|
|
@@ -2932,7 +2941,7 @@ native_stop_constraints(resource_t * rsc, action_t * stonith_op, gboolean is_sto
|
|
update_action_flags(action, pe_action_runnable);
|
|
update_action_flags(action, pe_action_implied_by_stonith);
|
|
|
|
- {
|
|
+ if(start == NULL || start->needs > rsc_req_quorum) {
|
|
enum pe_ordering flags = pe_order_optional;
|
|
action_t *parent_stop = find_first_action(top->actions, NULL, RSC_STOP, NULL);
|
|
|
|
@@ -3032,7 +3041,8 @@ native_stop_constraints(resource_t * rsc, action_t * stonith_op, gboolean is_sto
|
|
crm_trace("here - 1");
|
|
update_action_flags(action, pe_action_pseudo);
|
|
update_action_flags(action, pe_action_runnable);
|
|
- if (is_stonith == FALSE) {
|
|
+
|
|
+ if (start == NULL || start->needs > rsc_req_quorum) {
|
|
order_actions(stonith_op, action, pe_order_preserve|pe_order_optional);
|
|
}
|
|
}
|
|
@@ -3044,8 +3054,6 @@ native_stop_constraints(resource_t * rsc, action_t * stonith_op, gboolean is_sto
|
|
void
|
|
rsc_stonith_ordering(resource_t * rsc, action_t * stonith_op, pe_working_set_t * data_set)
|
|
{
|
|
- gboolean is_stonith = FALSE;
|
|
-
|
|
if (rsc->children) {
|
|
GListPtr gIter = NULL;
|
|
|
|
@@ -3063,11 +3071,11 @@ rsc_stonith_ordering(resource_t * rsc, action_t * stonith_op, pe_working_set_t *
|
|
}
|
|
|
|
/* Start constraints */
|
|
- native_start_constraints(rsc, stonith_op, is_stonith, data_set);
|
|
+ native_start_constraints(rsc, stonith_op, data_set);
|
|
|
|
/* Stop constraints */
|
|
if (stonith_op) {
|
|
- native_stop_constraints(rsc, stonith_op, is_stonith, data_set);
|
|
+ native_stop_constraints(rsc, stonith_op, data_set);
|
|
}
|
|
}
|
|
|
|
diff --git a/pengine/regression.sh b/pengine/regression.sh
|
|
index d184798..7f73f92 100755
|
|
--- a/pengine/regression.sh
|
|
+++ b/pengine/regression.sh
|
|
@@ -31,6 +31,20 @@ info Performing the following tests from $io_dir
|
|
create_mode="false"
|
|
|
|
echo ""
|
|
+do_test cloned_start_one "order first clone then clone... first clone_min=2"
|
|
+do_test cloned_start_two "order first clone then clone... first clone_min=2"
|
|
+do_test cloned_stop_one "order first clone then clone... first clone_min=2"
|
|
+do_test cloned_stop_two "order first clone then clone... first clone_min=2"
|
|
+do_test clone_min_interleave_start_one "order first clone then clone... first clone_min=2 and then has interleave=true"
|
|
+do_test clone_min_interleave_start_two "order first clone then clone... first clone_min=2 and then has interleave=true"
|
|
+do_test clone_min_interleave_stop_one "order first clone then clone... first clone_min=2 and then has interleave=true"
|
|
+do_test clone_min_interleave_stop_two "order first clone then clone... first clone_min=2 and then has interleave=true"
|
|
+do_test clone_min_start_one "order first clone then primitive... first clone_min=2"
|
|
+do_test clone_min_start_two "order first clone then primitive... first clone_min=2"
|
|
+do_test clone_min_stop_all "order first clone then primitive... first clone_min=2"
|
|
+do_test clone_min_stop_one "order first clone then primitive... first clone_min=2"
|
|
+do_test clone_min_stop_two "order first clone then primitive... first clone_min=2"
|
|
+
|
|
do_test simple1 "Offline "
|
|
do_test simple2 "Start "
|
|
do_test simple3 "Start 2 "
|
|
diff --git a/pengine/test10/bug-5186-partial-migrate.dot b/pengine/test10/bug-5186-partial-migrate.dot
|
|
index 033d41d..65f5616 100644
|
|
--- a/pengine/test10/bug-5186-partial-migrate.dot
|
|
+++ b/pengine/test10/bug-5186-partial-migrate.dot
|
|
@@ -66,13 +66,10 @@
|
|
"stonith 'reboot' bl460g1n7" -> "clnDiskd1_stop_0" [ style = bold]
|
|
"stonith 'reboot' bl460g1n7" -> "clnDiskd2_stop_0" [ style = bold]
|
|
"stonith 'reboot' bl460g1n7" -> "clnPing_stop_0" [ style = bold]
|
|
-"stonith 'reboot' bl460g1n7" -> "grpStonith8_stop_0" [ style = bold]
|
|
"stonith 'reboot' bl460g1n7" -> "prmDiskd1_stop_0 bl460g1n7" [ style = bold]
|
|
"stonith 'reboot' bl460g1n7" -> "prmDiskd2_stop_0 bl460g1n7" [ style = bold]
|
|
"stonith 'reboot' bl460g1n7" -> "prmDummy_stop_0 bl460g1n7" [ style = bold]
|
|
"stonith 'reboot' bl460g1n7" -> "prmPing_stop_0 bl460g1n7" [ style = bold]
|
|
-"stonith 'reboot' bl460g1n7" -> "prmStonith8-1_stop_0 bl460g1n7" [ style = bold]
|
|
-"stonith 'reboot' bl460g1n7" -> "prmStonith8-2_stop_0 bl460g1n7" [ style = bold]
|
|
"stonith 'reboot' bl460g1n7" -> "prmVM2_stop_0 bl460g1n7" [ style = bold]
|
|
"stonith 'reboot' bl460g1n7" -> "stonith_complete" [ style = bold]
|
|
"stonith 'reboot' bl460g1n7" [ style=bold color="green" fontcolor="black"]
|
|
diff --git a/pengine/test10/bug-5186-partial-migrate.exp b/pengine/test10/bug-5186-partial-migrate.exp
|
|
index 216d962..bc058ea 100644
|
|
--- a/pengine/test10/bug-5186-partial-migrate.exp
|
|
+++ b/pengine/test10/bug-5186-partial-migrate.exp
|
|
@@ -104,11 +104,7 @@
|
|
<attributes CRM_meta_record_pending="true" CRM_meta_timeout="20000" />
|
|
</pseudo_event>
|
|
</action_set>
|
|
- <inputs>
|
|
- <trigger>
|
|
- <crm_event id="75" operation="stonith" operation_key="stonith-bl460g1n7-reboot" on_node="bl460g1n7" on_node_uuid="3232261593"/>
|
|
- </trigger>
|
|
- </inputs>
|
|
+ <inputs/>
|
|
</synapse>
|
|
<synapse id="8">
|
|
<action_set>
|
|
@@ -182,9 +178,6 @@
|
|
<trigger>
|
|
<pseudo_event id="45" operation="stop" operation_key="grpStonith8_stop_0"/>
|
|
</trigger>
|
|
- <trigger>
|
|
- <crm_event id="75" operation="stonith" operation_key="stonith-bl460g1n7-reboot" on_node="bl460g1n7" on_node_uuid="3232261593"/>
|
|
- </trigger>
|
|
</inputs>
|
|
</synapse>
|
|
<synapse id="13">
|
|
@@ -229,9 +222,6 @@
|
|
<trigger>
|
|
<pseudo_event id="45" operation="stop" operation_key="grpStonith8_stop_0"/>
|
|
</trigger>
|
|
- <trigger>
|
|
- <crm_event id="75" operation="stonith" operation_key="stonith-bl460g1n7-reboot" on_node="bl460g1n7" on_node_uuid="3232261593"/>
|
|
- </trigger>
|
|
</inputs>
|
|
</synapse>
|
|
<synapse id="16">
|
|
diff --git a/pengine/test10/bug-5186-partial-migrate.summary b/pengine/test10/bug-5186-partial-migrate.summary
|
|
index f848c97..5e62a23 100644
|
|
--- a/pengine/test10/bug-5186-partial-migrate.summary
|
|
+++ b/pengine/test10/bug-5186-partial-migrate.summary
|
|
@@ -35,18 +35,22 @@ Transition Summary:
|
|
|
|
Executing cluster transition:
|
|
* Resource action: prmVM2 stop on bl460g1n6
|
|
+ * Pseudo action: grpStonith8_stop_0
|
|
+ * Pseudo action: prmStonith8-2_stop_0
|
|
* Fencing bl460g1n7 (reboot)
|
|
* Pseudo action: stonith_complete
|
|
* Pseudo action: prmDummy_stop_0
|
|
* Pseudo action: prmVM2_stop_0
|
|
- * Pseudo action: grpStonith8_stop_0
|
|
- * Pseudo action: prmStonith8-2_stop_0
|
|
+ * Pseudo action: prmStonith8-1_stop_0
|
|
* Pseudo action: clnDiskd1_stop_0
|
|
* Pseudo action: clnDiskd2_stop_0
|
|
* Pseudo action: clnPing_stop_0
|
|
* Resource action: prmDummy start on bl460g1n6
|
|
* Resource action: prmVM2 start on bl460g1n8
|
|
- * Pseudo action: prmStonith8-1_stop_0
|
|
+ * Pseudo action: grpStonith8_stopped_0
|
|
+ * Pseudo action: grpStonith8_start_0
|
|
+ * Resource action: prmStonith8-1 start on bl460g1n6
|
|
+ * Resource action: prmStonith8-2 start on bl460g1n6
|
|
* Pseudo action: prmDiskd1_stop_0
|
|
* Pseudo action: clnDiskd1_stopped_0
|
|
* Pseudo action: prmDiskd2_stop_0
|
|
@@ -55,10 +59,6 @@ Executing cluster transition:
|
|
* Pseudo action: clnPing_stopped_0
|
|
* Pseudo action: all_stopped
|
|
* Resource action: prmVM2 monitor=10000 on bl460g1n8
|
|
- * Pseudo action: grpStonith8_stopped_0
|
|
- * Pseudo action: grpStonith8_start_0
|
|
- * Resource action: prmStonith8-1 start on bl460g1n6
|
|
- * Resource action: prmStonith8-2 start on bl460g1n6
|
|
* Pseudo action: grpStonith8_running_0
|
|
* Resource action: prmStonith8-1 monitor=10000 on bl460g1n6
|
|
* Resource action: prmStonith8-2 monitor=3600000 on bl460g1n6
|
|
diff --git a/pengine/test10/bug-lf-2551.dot b/pengine/test10/bug-lf-2551.dot
|
|
index ed80e15..18bca44 100644
|
|
--- a/pengine/test10/bug-lf-2551.dot
|
|
+++ b/pengine/test10/bug-lf-2551.dot
|
|
@@ -56,7 +56,6 @@ digraph "g" {
|
|
"stonith 'reboot' hex-9" -> "cmirrord:3_stop_0 hex-9" [ style = bold]
|
|
"stonith 'reboot' hex-9" -> "dlm:3_stop_0 hex-9" [ style = bold]
|
|
"stonith 'reboot' hex-9" -> "dummy1_stop_0 hex-9" [ style = bold]
|
|
-"stonith 'reboot' hex-9" -> "fencing-sbd_stop_0 hex-9" [ style = bold]
|
|
"stonith 'reboot' hex-9" -> "o2cb:3_stop_0 hex-9" [ style = bold]
|
|
"stonith 'reboot' hex-9" -> "ocfs2-1:3_stop_0 hex-9" [ style = bold]
|
|
"stonith 'reboot' hex-9" -> "stonith_complete" [ style = bold]
|
|
diff --git a/pengine/test10/bug-lf-2551.exp b/pengine/test10/bug-lf-2551.exp
|
|
index 0af9010..d6266e1 100644
|
|
--- a/pengine/test10/bug-lf-2551.exp
|
|
+++ b/pengine/test10/bug-lf-2551.exp
|
|
@@ -18,11 +18,7 @@
|
|
<attributes CRM_meta_record_pending="false" CRM_meta_timeout="240000" sbd_device="/dev/disk/by-id/dm-uuid-part1-mpath-3600508b400105b5a0001500000250000"/>
|
|
</pseudo_event>
|
|
</action_set>
|
|
- <inputs>
|
|
- <trigger>
|
|
- <crm_event id="249" operation="stonith" operation_key="stonith-hex-9-reboot" on_node="hex-9" on_node_uuid="hex-9"/>
|
|
- </trigger>
|
|
- </inputs>
|
|
+ <inputs/>
|
|
</synapse>
|
|
<synapse id="2">
|
|
<action_set>
|
|
diff --git a/pengine/test10/bug-lf-2551.summary b/pengine/test10/bug-lf-2551.summary
|
|
index f8d861c..158eb73 100644
|
|
--- a/pengine/test10/bug-lf-2551.summary
|
|
+++ b/pengine/test10/bug-lf-2551.summary
|
|
@@ -107,6 +107,7 @@ Transition Summary:
|
|
* Stop vm-61 (hex-9)
|
|
|
|
Executing cluster transition:
|
|
+ * Pseudo action: fencing-sbd_stop_0
|
|
* Resource action: dummy1 monitor=300000 on hex-8
|
|
* Resource action: dummy1 monitor=300000 on hex-7
|
|
* Fencing hex-9 (reboot)
|
|
@@ -114,7 +115,7 @@ Executing cluster transition:
|
|
* Pseudo action: load_stopped_hex-8
|
|
* Pseudo action: load_stopped_hex-7
|
|
* Pseudo action: load_stopped_hex-0
|
|
- * Pseudo action: fencing-sbd_stop_0
|
|
+ * Resource action: fencing-sbd start on hex-0
|
|
* Pseudo action: dummy1_stop_0
|
|
* Pseudo action: vm-03_stop_0
|
|
* Pseudo action: vm-06_stop_0
|
|
@@ -133,7 +134,6 @@ Executing cluster transition:
|
|
* Pseudo action: vm-57_stop_0
|
|
* Pseudo action: vm-61_stop_0
|
|
* Pseudo action: load_stopped_hex-9
|
|
- * Resource action: fencing-sbd start on hex-0
|
|
* Resource action: dummy1 start on hex-0
|
|
* Pseudo action: base-clone_stop_0
|
|
* Resource action: dummy1 monitor=30000 on hex-0
|
|
diff --git a/pengine/test10/clone_min_interleave_start_one.dot b/pengine/test10/clone_min_interleave_start_one.dot
|
|
new file mode 100644
|
|
index 0000000..15ac9be
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_interleave_start_one.dot
|
|
@@ -0,0 +1,50 @@
|
|
+ digraph "g" {
|
|
+"FAKE1-clone_running_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKE1-clone_start_0" -> "FAKE1-clone_running_0" [ style = bold]
|
|
+"FAKE1-clone_start_0" -> "FAKE1_start_0 c7auto1" [ style = bold]
|
|
+"FAKE1-clone_start_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKE1_monitor_10000 c7auto1" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE1_start_0 c7auto1" -> "FAKE1-clone_running_0" [ style = bold]
|
|
+"FAKE1_start_0 c7auto1" -> "FAKE1_monitor_10000 c7auto1" [ style = bold]
|
|
+"FAKE1_start_0 c7auto1" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE2-clone_running_0" -> "FAKE3-clone_start_0" [ style = dashed]
|
|
+"FAKE2-clone_running_0" [ style=dashed color="red" fontcolor="orange"]
|
|
+"FAKE2-clone_start_0" -> "FAKE2-clone_running_0" [ style = dashed]
|
|
+"FAKE2-clone_start_0" -> "FAKE2:1_start_0 c7auto3" [ style = dashed]
|
|
+"FAKE2-clone_start_0" -> "FAKE2:2_start_0 c7auto1" [ style = dashed]
|
|
+"FAKE2-clone_start_0" -> "FAKE2_start_0 c7auto2" [ style = dashed]
|
|
+"FAKE2-clone_start_0" [ style=dashed color="red" fontcolor="orange"]
|
|
+"FAKE2:1_monitor_10000 c7auto3" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE2:1_start_0 c7auto3" -> "FAKE2-clone_running_0" [ style = dashed]
|
|
+"FAKE2:1_start_0 c7auto3" -> "FAKE2:1_monitor_10000 c7auto3" [ style = dashed]
|
|
+"FAKE2:1_start_0 c7auto3" -> "FAKE3:1_start_0 c7auto3" [ style = dashed]
|
|
+"FAKE2:1_start_0 c7auto3" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE2:2_monitor_10000 c7auto1" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE2:2_start_0 c7auto1" -> "FAKE2-clone_running_0" [ style = dashed]
|
|
+"FAKE2:2_start_0 c7auto1" -> "FAKE2:2_monitor_10000 c7auto1" [ style = dashed]
|
|
+"FAKE2:2_start_0 c7auto1" -> "FAKE3:2_start_0 c7auto1" [ style = dashed]
|
|
+"FAKE2:2_start_0 c7auto1" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE2_monitor_10000 c7auto2" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE2_start_0 c7auto2" -> "FAKE2-clone_running_0" [ style = dashed]
|
|
+"FAKE2_start_0 c7auto2" -> "FAKE2_monitor_10000 c7auto2" [ style = dashed]
|
|
+"FAKE2_start_0 c7auto2" -> "FAKE3_start_0 c7auto2" [ style = dashed]
|
|
+"FAKE2_start_0 c7auto2" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE3-clone_running_0" [ style=dashed color="red" fontcolor="orange"]
|
|
+"FAKE3-clone_start_0" -> "FAKE3-clone_running_0" [ style = dashed]
|
|
+"FAKE3-clone_start_0" -> "FAKE3:1_start_0 c7auto3" [ style = dashed]
|
|
+"FAKE3-clone_start_0" -> "FAKE3:2_start_0 c7auto1" [ style = dashed]
|
|
+"FAKE3-clone_start_0" -> "FAKE3_start_0 c7auto2" [ style = dashed]
|
|
+"FAKE3-clone_start_0" [ style=dashed color="red" fontcolor="orange"]
|
|
+"FAKE3:1_monitor_10000 c7auto3" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE3:1_start_0 c7auto3" -> "FAKE3-clone_running_0" [ style = dashed]
|
|
+"FAKE3:1_start_0 c7auto3" -> "FAKE3:1_monitor_10000 c7auto3" [ style = dashed]
|
|
+"FAKE3:1_start_0 c7auto3" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE3:2_monitor_10000 c7auto1" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE3:2_start_0 c7auto1" -> "FAKE3-clone_running_0" [ style = dashed]
|
|
+"FAKE3:2_start_0 c7auto1" -> "FAKE3:2_monitor_10000 c7auto1" [ style = dashed]
|
|
+"FAKE3:2_start_0 c7auto1" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE3_monitor_10000 c7auto2" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE3_start_0 c7auto2" -> "FAKE3-clone_running_0" [ style = dashed]
|
|
+"FAKE3_start_0 c7auto2" -> "FAKE3_monitor_10000 c7auto2" [ style = dashed]
|
|
+"FAKE3_start_0 c7auto2" [ style=dashed color="red" fontcolor="black"]
|
|
+}
|
|
diff --git a/pengine/test10/clone_min_interleave_start_one.exp b/pengine/test10/clone_min_interleave_start_one.exp
|
|
new file mode 100644
|
|
index 0000000..b6e0c5d
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_interleave_start_one.exp
|
|
@@ -0,0 +1,51 @@
|
|
+<transition_graph cluster-delay="60s" stonith-timeout="60s" failed-stop-offset="INFINITY" failed-start-offset="INFINITY" transition_id="0">
|
|
+ <synapse id="0">
|
|
+ <action_set>
|
|
+ <rsc_op id="11" operation="monitor" operation_key="FAKE1_monitor_10000" internal_operation_key="FAKE1:0_monitor_10000" on_node="c7auto1" on_node_uuid="1">
|
|
+ <primitive id="FAKE1" long-id="FAKE1:0" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="0" CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_interval="10000" CRM_meta_name="monitor" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="10" operation="start" operation_key="FAKE1_start_0" internal_operation_key="FAKE1:0_start_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="1">
|
|
+ <action_set>
|
|
+ <rsc_op id="10" operation="start" operation_key="FAKE1_start_0" internal_operation_key="FAKE1:0_start_0" on_node="c7auto1" on_node_uuid="1">
|
|
+ <primitive id="FAKE1" long-id="FAKE1:0" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="0" CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="start" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="12" operation="start" operation_key="FAKE1-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="2" priority="1000000">
|
|
+ <action_set>
|
|
+ <pseudo_event id="13" operation="running" operation_key="FAKE1-clone_running_0">
|
|
+ <attributes CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="10" operation="start" operation_key="FAKE1_start_0" internal_operation_key="FAKE1:0_start_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <pseudo_event id="12" operation="start" operation_key="FAKE1-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="3">
|
|
+ <action_set>
|
|
+ <pseudo_event id="12" operation="start" operation_key="FAKE1-clone_start_0">
|
|
+ <attributes CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs/>
|
|
+ </synapse>
|
|
+</transition_graph>
|
|
diff --git a/pengine/test10/clone_min_interleave_start_one.scores b/pengine/test10/clone_min_interleave_start_one.scores
|
|
new file mode 100644
|
|
index 0000000..03de018
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_interleave_start_one.scores
|
|
@@ -0,0 +1,67 @@
|
|
+Allocation scores:
|
|
+clone_color: FAKE1-clone allocation score on c7auto1: 0
|
|
+clone_color: FAKE1-clone allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKE1-clone allocation score on c7auto3: -INFINITY
|
|
+clone_color: FAKE1:0 allocation score on c7auto1: 0
|
|
+clone_color: FAKE1:0 allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKE1:0 allocation score on c7auto3: -INFINITY
|
|
+clone_color: FAKE1:1 allocation score on c7auto1: 0
|
|
+clone_color: FAKE1:1 allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKE1:1 allocation score on c7auto3: -INFINITY
|
|
+clone_color: FAKE1:2 allocation score on c7auto1: 0
|
|
+clone_color: FAKE1:2 allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKE1:2 allocation score on c7auto3: -INFINITY
|
|
+clone_color: FAKE2-clone allocation score on c7auto1: 0
|
|
+clone_color: FAKE2-clone allocation score on c7auto2: 0
|
|
+clone_color: FAKE2-clone allocation score on c7auto3: 0
|
|
+clone_color: FAKE2:0 allocation score on c7auto1: 0
|
|
+clone_color: FAKE2:0 allocation score on c7auto2: 0
|
|
+clone_color: FAKE2:0 allocation score on c7auto3: 0
|
|
+clone_color: FAKE2:1 allocation score on c7auto1: 0
|
|
+clone_color: FAKE2:1 allocation score on c7auto2: 0
|
|
+clone_color: FAKE2:1 allocation score on c7auto3: 0
|
|
+clone_color: FAKE2:2 allocation score on c7auto1: 0
|
|
+clone_color: FAKE2:2 allocation score on c7auto2: 0
|
|
+clone_color: FAKE2:2 allocation score on c7auto3: 0
|
|
+clone_color: FAKE3-clone allocation score on c7auto1: 0
|
|
+clone_color: FAKE3-clone allocation score on c7auto2: 0
|
|
+clone_color: FAKE3-clone allocation score on c7auto3: 0
|
|
+clone_color: FAKE3:0 allocation score on c7auto1: 0
|
|
+clone_color: FAKE3:0 allocation score on c7auto2: 0
|
|
+clone_color: FAKE3:0 allocation score on c7auto3: 0
|
|
+clone_color: FAKE3:1 allocation score on c7auto1: 0
|
|
+clone_color: FAKE3:1 allocation score on c7auto2: 0
|
|
+clone_color: FAKE3:1 allocation score on c7auto3: 0
|
|
+clone_color: FAKE3:2 allocation score on c7auto1: 0
|
|
+clone_color: FAKE3:2 allocation score on c7auto2: 0
|
|
+clone_color: FAKE3:2 allocation score on c7auto3: 0
|
|
+native_color: FAKE1:0 allocation score on c7auto1: 0
|
|
+native_color: FAKE1:0 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKE1:0 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKE1:1 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKE1:1 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKE1:1 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKE1:2 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKE1:2 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKE1:2 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKE2:0 allocation score on c7auto1: 0
|
|
+native_color: FAKE2:0 allocation score on c7auto2: 0
|
|
+native_color: FAKE2:0 allocation score on c7auto3: 0
|
|
+native_color: FAKE2:1 allocation score on c7auto1: 0
|
|
+native_color: FAKE2:1 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKE2:1 allocation score on c7auto3: 0
|
|
+native_color: FAKE2:2 allocation score on c7auto1: 0
|
|
+native_color: FAKE2:2 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKE2:2 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKE3:0 allocation score on c7auto1: 0
|
|
+native_color: FAKE3:0 allocation score on c7auto2: 0
|
|
+native_color: FAKE3:0 allocation score on c7auto3: 0
|
|
+native_color: FAKE3:1 allocation score on c7auto1: 0
|
|
+native_color: FAKE3:1 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKE3:1 allocation score on c7auto3: 0
|
|
+native_color: FAKE3:2 allocation score on c7auto1: 0
|
|
+native_color: FAKE3:2 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKE3:2 allocation score on c7auto3: -INFINITY
|
|
+native_color: shooter allocation score on c7auto1: 0
|
|
+native_color: shooter allocation score on c7auto2: 0
|
|
+native_color: shooter allocation score on c7auto3: 0
|
|
diff --git a/pengine/test10/clone_min_interleave_start_one.summary b/pengine/test10/clone_min_interleave_start_one.summary
|
|
new file mode 100644
|
|
index 0000000..b15f68a
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_interleave_start_one.summary
|
|
@@ -0,0 +1,39 @@
|
|
+
|
|
+Current cluster status:
|
|
+Online: [ c7auto1 c7auto2 c7auto3 ]
|
|
+
|
|
+ shooter (stonith:fence_phd_kvm): Started c7auto1
|
|
+ Clone Set: FAKE1-clone [FAKE1]
|
|
+ Stopped: [ c7auto1 c7auto2 c7auto3 ]
|
|
+ Clone Set: FAKE2-clone [FAKE2]
|
|
+ Stopped: [ c7auto1 c7auto2 c7auto3 ]
|
|
+ Clone Set: FAKE3-clone [FAKE3]
|
|
+ Stopped: [ c7auto1 c7auto2 c7auto3 ]
|
|
+
|
|
+Transition Summary:
|
|
+ * Start FAKE1:0 (c7auto1)
|
|
+ * Start FAKE2:0 (c7auto2 - blocked)
|
|
+ * Start FAKE2:1 (c7auto3 - blocked)
|
|
+ * Start FAKE2:2 (c7auto1 - blocked)
|
|
+ * Start FAKE3:0 (c7auto2 - blocked)
|
|
+ * Start FAKE3:1 (c7auto3 - blocked)
|
|
+ * Start FAKE3:2 (c7auto1 - blocked)
|
|
+
|
|
+Executing cluster transition:
|
|
+ * Pseudo action: FAKE1-clone_start_0
|
|
+ * Resource action: FAKE1 start on c7auto1
|
|
+ * Pseudo action: FAKE1-clone_running_0
|
|
+ * Resource action: FAKE1 monitor=10000 on c7auto1
|
|
+
|
|
+Revised cluster status:
|
|
+Online: [ c7auto1 c7auto2 c7auto3 ]
|
|
+
|
|
+ shooter (stonith:fence_phd_kvm): Started c7auto1
|
|
+ Clone Set: FAKE1-clone [FAKE1]
|
|
+ Started: [ c7auto1 ]
|
|
+ Stopped: [ c7auto2 c7auto3 ]
|
|
+ Clone Set: FAKE2-clone [FAKE2]
|
|
+ Stopped: [ c7auto1 c7auto2 c7auto3 ]
|
|
+ Clone Set: FAKE3-clone [FAKE3]
|
|
+ Stopped: [ c7auto1 c7auto2 c7auto3 ]
|
|
+
|
|
diff --git a/pengine/test10/clone_min_interleave_start_one.xml b/pengine/test10/clone_min_interleave_start_one.xml
|
|
new file mode 100644
|
|
index 0000000..fbe99de
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_interleave_start_one.xml
|
|
@@ -0,0 +1,155 @@
|
|
+<cib crm_feature_set="3.0.10" validate-with="pacemaker-2.3" epoch="15" num_updates="0" admin_epoch="0" cib-last-written="Fri Jul 17 11:44:12 2015" update-origin="c7auto1" update-client="crm_resource" update-user="root" have-quorum="1" dc-uuid="3">
|
|
+ <configuration>
|
|
+ <crm_config>
|
|
+ <cluster_property_set id="cib-bootstrap-options">
|
|
+ <nvpair id="cib-bootstrap-options-have-watchdog" name="have-watchdog" value="false"/>
|
|
+ <nvpair id="cib-bootstrap-options-dc-version" name="dc-version" value="1.1.12-ef86b49"/>
|
|
+ <nvpair id="cib-bootstrap-options-cluster-infrastructure" name="cluster-infrastructure" value="corosync"/>
|
|
+ <nvpair id="cib-bootstrap-options-cluster-name" name="cluster-name" value="phd"/>
|
|
+ </cluster_property_set>
|
|
+ </crm_config>
|
|
+ <nodes>
|
|
+ <node id="1" uname="c7auto1"/>
|
|
+ <node id="2" uname="c7auto2"/>
|
|
+ <node id="3" uname="c7auto3"/>
|
|
+ </nodes>
|
|
+ <resources>
|
|
+ <primitive class="stonith" id="shooter" type="fence_phd_kvm">
|
|
+ <instance_attributes id="shooter-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="shooter-monitor-interval-60s" interval="60s" name="monitor"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <clone id="FAKE1-clone">
|
|
+ <primitive class="ocf" id="FAKE1" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKE1-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKE1-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKE1-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKE1-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <meta_attributes id="FAKE1-clone-meta">
|
|
+ <nvpair id="FAKE1-clone-min" name="clone-min" value="2"/>
|
|
+ </meta_attributes>
|
|
+ <meta_attributes id="FAKE1-clone-meta_attributes"/>
|
|
+ </clone>
|
|
+ <clone id="FAKE2-clone">
|
|
+ <primitive class="ocf" id="FAKE2" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKE2-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKE2-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKE2-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKE2-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <meta_attributes id="FAKE2-clone-meta">
|
|
+ <nvpair id="FAKE2-interleave" name="interleave" value="true"/>
|
|
+ </meta_attributes>
|
|
+ </clone>
|
|
+ <clone id="FAKE3-clone">
|
|
+ <primitive class="ocf" id="FAKE3" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKE3-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKE3-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKE3-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKE3-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <meta_attributes id="FAKE3-clone-meta">
|
|
+ <nvpair id="FAKE3-interleave" name="interleave" value="true"/>
|
|
+ </meta_attributes>
|
|
+ </clone>
|
|
+ </resources>
|
|
+ <constraints>
|
|
+ <rsc_order first="FAKE1-clone" first-action="start" id="order-FAKE1-clone-FAKE2-clone-mandatory" then="FAKE2-clone" then-action="start"/>
|
|
+ <rsc_order first="FAKE2-clone" first-action="start" id="order-FAKE2-clone-FAKE3-clone-mandatory" then="FAKE3-clone" then-action="start"/>
|
|
+ <rsc_location id="cli-ban-FAKE1-clone-on-c7auto3" rsc="FAKE1-clone" role="Started" node="c7auto3" score="-INFINITY"/>
|
|
+ <rsc_location id="cli-ban-FAKE1-clone-on-c7auto2" rsc="FAKE1-clone" role="Started" node="c7auto2" score="-INFINITY"/>
|
|
+ </constraints>
|
|
+ </configuration>
|
|
+ <status>
|
|
+ <node_state id="3" uname="c7auto3" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="3">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="8:4:7:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:7;8:4:7:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437146780" last-rc-change="1437146780" exec-time="998" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE1" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE1_last_0" operation_key="FAKE1_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="18:10:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;18:10:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="32" rc-code="0" op-status="0" interval="0" last-run="1437147852" last-rc-change="1437147852" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE1_monitor_10000" operation_key="FAKE1_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="15:5:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;15:5:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="12" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147006" exec-time="9" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE2_last_0" operation_key="FAKE2_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="25:10:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;25:10:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="30" rc-code="0" op-status="0" interval="0" last-run="1437147852" last-rc-change="1437147852" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE2_monitor_10000" operation_key="FAKE2_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="28:6:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;28:6:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="19" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147019" exec-time="8" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE3" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE3_last_0" operation_key="FAKE3_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="35:10:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;35:10:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="28" rc-code="0" op-status="0" interval="0" last-run="1437147852" last-rc-change="1437147852" exec-time="10" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE3_monitor_10000" operation_key="FAKE3_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="41:7:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;41:7:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="26" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147024" exec-time="8" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="3">
|
|
+ <instance_attributes id="status-3">
|
|
+ <nvpair id="status-3-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-3-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ <node_state id="1" uname="c7auto1" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="1">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="9:4:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;9:4:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="6" rc-code="0" op-status="0" interval="0" last-run="1437146782" last-rc-change="1437146782" exec-time="5" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="shooter_monitor_60000" operation_key="shooter_monitor_60000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="10:4:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;10:4:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="7" rc-code="0" op-status="0" interval="60000" last-rc-change="1437146783" exec-time="5" queue-time="1" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE1" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE1_last_0" operation_key="FAKE1_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="19:10:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;19:10:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="34" rc-code="0" op-status="0" interval="0" last-run="1437147852" last-rc-change="1437147852" exec-time="7" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE1_monitor_10000" operation_key="FAKE1_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="17:5:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;17:5:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="14" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147007" exec-time="6" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE2_last_0" operation_key="FAKE2_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="27:10:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;27:10:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="32" rc-code="0" op-status="0" interval="0" last-run="1437147852" last-rc-change="1437147852" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE2_monitor_10000" operation_key="FAKE2_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="30:6:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;30:6:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="21" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147019" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE3" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE3_last_0" operation_key="FAKE3_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="37:10:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;37:10:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="30" rc-code="0" op-status="0" interval="0" last-run="1437147852" last-rc-change="1437147852" exec-time="7" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE3_monitor_10000" operation_key="FAKE3_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="43:7:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;43:7:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="28" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147024" exec-time="6" queue-time="1" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="1">
|
|
+ <instance_attributes id="status-1">
|
|
+ <nvpair id="status-1-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-1-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ <node_state id="2" uname="c7auto2" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="2">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="6:4:7:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:7;6:4:7:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437146780" last-rc-change="1437146780" exec-time="994" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE1" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE1_last_0" operation_key="FAKE1_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="20:10:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;20:10:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="32" rc-code="0" op-status="0" interval="0" last-run="1437147852" last-rc-change="1437147852" exec-time="7" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE1_monitor_10000" operation_key="FAKE1_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="13:5:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;13:5:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="12" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147007" exec-time="8" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE2_last_0" operation_key="FAKE2_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="29:10:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;29:10:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="30" rc-code="0" op-status="0" interval="0" last-run="1437147852" last-rc-change="1437147852" exec-time="7" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE2_monitor_10000" operation_key="FAKE2_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="26:6:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;26:6:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="19" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147019" exec-time="6" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE3" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE3_last_0" operation_key="FAKE3_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="39:10:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;39:10:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="28" rc-code="0" op-status="0" interval="0" last-run="1437147852" last-rc-change="1437147852" exec-time="9" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE3_monitor_10000" operation_key="FAKE3_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="39:7:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;39:7:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="26" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147024" exec-time="8" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="2">
|
|
+ <instance_attributes id="status-2">
|
|
+ <nvpair id="status-2-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-2-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ </status>
|
|
+</cib>
|
|
diff --git a/pengine/test10/clone_min_interleave_start_two.dot b/pengine/test10/clone_min_interleave_start_two.dot
|
|
new file mode 100644
|
|
index 0000000..f99ce32
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_interleave_start_two.dot
|
|
@@ -0,0 +1,59 @@
|
|
+ digraph "g" {
|
|
+"FAKE1-clone_running_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKE1-clone_start_0" -> "FAKE1-clone_running_0" [ style = bold]
|
|
+"FAKE1-clone_start_0" -> "FAKE1:1_start_0 c7auto1" [ style = bold]
|
|
+"FAKE1-clone_start_0" -> "FAKE1_start_0 c7auto2" [ style = bold]
|
|
+"FAKE1-clone_start_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKE1:1_monitor_10000 c7auto1" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE1:1_start_0 c7auto1" -> "FAKE1-clone_running_0" [ style = bold]
|
|
+"FAKE1:1_start_0 c7auto1" -> "FAKE1:1_monitor_10000 c7auto1" [ style = bold]
|
|
+"FAKE1:1_start_0 c7auto1" -> "clone-one-or-more:order-FAKE1-clone-FAKE2-clone-mandatory" [ style = bold]
|
|
+"FAKE1:1_start_0 c7auto1" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE1_monitor_10000 c7auto2" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE1_start_0 c7auto2" -> "FAKE1-clone_running_0" [ style = bold]
|
|
+"FAKE1_start_0 c7auto2" -> "FAKE1_monitor_10000 c7auto2" [ style = bold]
|
|
+"FAKE1_start_0 c7auto2" -> "clone-one-or-more:order-FAKE1-clone-FAKE2-clone-mandatory" [ style = bold]
|
|
+"FAKE1_start_0 c7auto2" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE2-clone_running_0" -> "FAKE3-clone_start_0" [ style = bold]
|
|
+"FAKE2-clone_running_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKE2-clone_start_0" -> "FAKE2-clone_running_0" [ style = bold]
|
|
+"FAKE2-clone_start_0" -> "FAKE2:1_start_0 c7auto2" [ style = bold]
|
|
+"FAKE2-clone_start_0" -> "FAKE2:2_start_0 c7auto1" [ style = bold]
|
|
+"FAKE2-clone_start_0" -> "FAKE2_start_0 c7auto3" [ style = bold]
|
|
+"FAKE2-clone_start_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKE2:1_monitor_10000 c7auto2" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE2:1_start_0 c7auto2" -> "FAKE2-clone_running_0" [ style = bold]
|
|
+"FAKE2:1_start_0 c7auto2" -> "FAKE2:1_monitor_10000 c7auto2" [ style = bold]
|
|
+"FAKE2:1_start_0 c7auto2" -> "FAKE3:1_start_0 c7auto2" [ style = bold]
|
|
+"FAKE2:1_start_0 c7auto2" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE2:2_monitor_10000 c7auto1" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE2:2_start_0 c7auto1" -> "FAKE2-clone_running_0" [ style = bold]
|
|
+"FAKE2:2_start_0 c7auto1" -> "FAKE2:2_monitor_10000 c7auto1" [ style = bold]
|
|
+"FAKE2:2_start_0 c7auto1" -> "FAKE3:2_start_0 c7auto1" [ style = bold]
|
|
+"FAKE2:2_start_0 c7auto1" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE2_monitor_10000 c7auto3" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE2_start_0 c7auto3" -> "FAKE2-clone_running_0" [ style = bold]
|
|
+"FAKE2_start_0 c7auto3" -> "FAKE2_monitor_10000 c7auto3" [ style = bold]
|
|
+"FAKE2_start_0 c7auto3" -> "FAKE3_start_0 c7auto3" [ style = bold]
|
|
+"FAKE2_start_0 c7auto3" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE3-clone_running_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKE3-clone_start_0" -> "FAKE3-clone_running_0" [ style = bold]
|
|
+"FAKE3-clone_start_0" -> "FAKE3:1_start_0 c7auto2" [ style = bold]
|
|
+"FAKE3-clone_start_0" -> "FAKE3:2_start_0 c7auto1" [ style = bold]
|
|
+"FAKE3-clone_start_0" -> "FAKE3_start_0 c7auto3" [ style = bold]
|
|
+"FAKE3-clone_start_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKE3:1_monitor_10000 c7auto2" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE3:1_start_0 c7auto2" -> "FAKE3-clone_running_0" [ style = bold]
|
|
+"FAKE3:1_start_0 c7auto2" -> "FAKE3:1_monitor_10000 c7auto2" [ style = bold]
|
|
+"FAKE3:1_start_0 c7auto2" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE3:2_monitor_10000 c7auto1" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE3:2_start_0 c7auto1" -> "FAKE3-clone_running_0" [ style = bold]
|
|
+"FAKE3:2_start_0 c7auto1" -> "FAKE3:2_monitor_10000 c7auto1" [ style = bold]
|
|
+"FAKE3:2_start_0 c7auto1" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE3_monitor_10000 c7auto3" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE3_start_0 c7auto3" -> "FAKE3-clone_running_0" [ style = bold]
|
|
+"FAKE3_start_0 c7auto3" -> "FAKE3_monitor_10000 c7auto3" [ style = bold]
|
|
+"FAKE3_start_0 c7auto3" [ style=bold color="green" fontcolor="black"]
|
|
+"clone-one-or-more:order-FAKE1-clone-FAKE2-clone-mandatory" -> "FAKE2-clone_start_0" [ style = bold]
|
|
+"clone-one-or-more:order-FAKE1-clone-FAKE2-clone-mandatory" [ style=bold color="green" fontcolor="orange"]
|
|
+}
|
|
diff --git a/pengine/test10/clone_min_interleave_start_two.exp b/pengine/test10/clone_min_interleave_start_two.exp
|
|
new file mode 100644
|
|
index 0000000..9846072
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_interleave_start_two.exp
|
|
@@ -0,0 +1,326 @@
|
|
+<transition_graph cluster-delay="60s" stonith-timeout="60s" failed-stop-offset="INFINITY" failed-start-offset="INFINITY" transition_id="0">
|
|
+ <synapse id="0">
|
|
+ <action_set>
|
|
+ <rsc_op id="11" operation="monitor" operation_key="FAKE1_monitor_10000" internal_operation_key="FAKE1:0_monitor_10000" on_node="c7auto2" on_node_uuid="2">
|
|
+ <primitive id="FAKE1" long-id="FAKE1:0" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="0" CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_interval="10000" CRM_meta_name="monitor" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="10" operation="start" operation_key="FAKE1_start_0" internal_operation_key="FAKE1:0_start_0" on_node="c7auto2" on_node_uuid="2"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="1">
|
|
+ <action_set>
|
|
+ <rsc_op id="10" operation="start" operation_key="FAKE1_start_0" internal_operation_key="FAKE1:0_start_0" on_node="c7auto2" on_node_uuid="2">
|
|
+ <primitive id="FAKE1" long-id="FAKE1:0" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="0" CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="start" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="14" operation="start" operation_key="FAKE1-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="2">
|
|
+ <action_set>
|
|
+ <rsc_op id="13" operation="monitor" operation_key="FAKE1:1_monitor_10000" on_node="c7auto1" on_node_uuid="1">
|
|
+ <primitive id="FAKE1" long-id="FAKE1:1" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="1" CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_interval="10000" CRM_meta_name="monitor" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="12" operation="start" operation_key="FAKE1:1_start_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="3">
|
|
+ <action_set>
|
|
+ <rsc_op id="12" operation="start" operation_key="FAKE1:1_start_0" on_node="c7auto1" on_node_uuid="1">
|
|
+ <primitive id="FAKE1" long-id="FAKE1:1" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="1" CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="start" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="14" operation="start" operation_key="FAKE1-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="4" priority="1000000">
|
|
+ <action_set>
|
|
+ <pseudo_event id="15" operation="running" operation_key="FAKE1-clone_running_0">
|
|
+ <attributes CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="10" operation="start" operation_key="FAKE1_start_0" internal_operation_key="FAKE1:0_start_0" on_node="c7auto2" on_node_uuid="2"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="12" operation="start" operation_key="FAKE1:1_start_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <pseudo_event id="14" operation="start" operation_key="FAKE1-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="5">
|
|
+ <action_set>
|
|
+ <pseudo_event id="14" operation="start" operation_key="FAKE1-clone_start_0">
|
|
+ <attributes CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs/>
|
|
+ </synapse>
|
|
+ <synapse id="6">
|
|
+ <action_set>
|
|
+ <rsc_op id="19" operation="monitor" operation_key="FAKE2_monitor_10000" internal_operation_key="FAKE2:0_monitor_10000" on_node="c7auto3" on_node_uuid="3">
|
|
+ <primitive id="FAKE2" long-id="FAKE2:0" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="0" CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_interval="10000" CRM_meta_name="monitor" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="18" operation="start" operation_key="FAKE2_start_0" internal_operation_key="FAKE2:0_start_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="7">
|
|
+ <action_set>
|
|
+ <rsc_op id="18" operation="start" operation_key="FAKE2_start_0" internal_operation_key="FAKE2:0_start_0" on_node="c7auto3" on_node_uuid="3">
|
|
+ <primitive id="FAKE2" long-id="FAKE2:0" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="0" CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="start" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="24" operation="start" operation_key="FAKE2-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="8">
|
|
+ <action_set>
|
|
+ <rsc_op id="21" operation="monitor" operation_key="FAKE2:1_monitor_10000" on_node="c7auto2" on_node_uuid="2">
|
|
+ <primitive id="FAKE2" long-id="FAKE2:1" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="1" CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_interval="10000" CRM_meta_name="monitor" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="20" operation="start" operation_key="FAKE2:1_start_0" on_node="c7auto2" on_node_uuid="2"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="9">
|
|
+ <action_set>
|
|
+ <rsc_op id="20" operation="start" operation_key="FAKE2:1_start_0" on_node="c7auto2" on_node_uuid="2">
|
|
+ <primitive id="FAKE2" long-id="FAKE2:1" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="1" CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="start" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="24" operation="start" operation_key="FAKE2-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="10">
|
|
+ <action_set>
|
|
+ <rsc_op id="23" operation="monitor" operation_key="FAKE2:2_monitor_10000" on_node="c7auto1" on_node_uuid="1">
|
|
+ <primitive id="FAKE2" long-id="FAKE2:2" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="2" CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_interval="10000" CRM_meta_name="monitor" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="22" operation="start" operation_key="FAKE2:2_start_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="11">
|
|
+ <action_set>
|
|
+ <rsc_op id="22" operation="start" operation_key="FAKE2:2_start_0" on_node="c7auto1" on_node_uuid="1">
|
|
+ <primitive id="FAKE2" long-id="FAKE2:2" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="2" CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="start" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="24" operation="start" operation_key="FAKE2-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="12" priority="1000000">
|
|
+ <action_set>
|
|
+ <pseudo_event id="25" operation="running" operation_key="FAKE2-clone_running_0">
|
|
+ <attributes CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="18" operation="start" operation_key="FAKE2_start_0" internal_operation_key="FAKE2:0_start_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="20" operation="start" operation_key="FAKE2:1_start_0" on_node="c7auto2" on_node_uuid="2"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="22" operation="start" operation_key="FAKE2:2_start_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <pseudo_event id="24" operation="start" operation_key="FAKE2-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="13">
|
|
+ <action_set>
|
|
+ <pseudo_event id="24" operation="start" operation_key="FAKE2-clone_start_0">
|
|
+ <attributes CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="2" operation="clone-one-or-more:order-FAKE1-clone-FAKE2-clone-mandatory" operation_key="clone-one-or-more:order-FAKE1-clone-FAKE2-clone-mandatory"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="14">
|
|
+ <action_set>
|
|
+ <rsc_op id="29" operation="monitor" operation_key="FAKE3_monitor_10000" internal_operation_key="FAKE3:0_monitor_10000" on_node="c7auto3" on_node_uuid="3">
|
|
+ <primitive id="FAKE3" long-id="FAKE3:0" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="0" CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_interval="10000" CRM_meta_name="monitor" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="28" operation="start" operation_key="FAKE3_start_0" internal_operation_key="FAKE3:0_start_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="15">
|
|
+ <action_set>
|
|
+ <rsc_op id="28" operation="start" operation_key="FAKE3_start_0" internal_operation_key="FAKE3:0_start_0" on_node="c7auto3" on_node_uuid="3">
|
|
+ <primitive id="FAKE3" long-id="FAKE3:0" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="0" CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="start" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="18" operation="start" operation_key="FAKE2_start_0" internal_operation_key="FAKE2:0_start_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <pseudo_event id="34" operation="start" operation_key="FAKE3-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="16">
|
|
+ <action_set>
|
|
+ <rsc_op id="31" operation="monitor" operation_key="FAKE3:1_monitor_10000" on_node="c7auto2" on_node_uuid="2">
|
|
+ <primitive id="FAKE3" long-id="FAKE3:1" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="1" CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_interval="10000" CRM_meta_name="monitor" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="30" operation="start" operation_key="FAKE3:1_start_0" on_node="c7auto2" on_node_uuid="2"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="17">
|
|
+ <action_set>
|
|
+ <rsc_op id="30" operation="start" operation_key="FAKE3:1_start_0" on_node="c7auto2" on_node_uuid="2">
|
|
+ <primitive id="FAKE3" long-id="FAKE3:1" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="1" CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="start" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="20" operation="start" operation_key="FAKE2:1_start_0" on_node="c7auto2" on_node_uuid="2"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <pseudo_event id="34" operation="start" operation_key="FAKE3-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="18">
|
|
+ <action_set>
|
|
+ <rsc_op id="33" operation="monitor" operation_key="FAKE3:2_monitor_10000" on_node="c7auto1" on_node_uuid="1">
|
|
+ <primitive id="FAKE3" long-id="FAKE3:2" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="2" CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_interval="10000" CRM_meta_name="monitor" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="32" operation="start" operation_key="FAKE3:2_start_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="19">
|
|
+ <action_set>
|
|
+ <rsc_op id="32" operation="start" operation_key="FAKE3:2_start_0" on_node="c7auto1" on_node_uuid="1">
|
|
+ <primitive id="FAKE3" long-id="FAKE3:2" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="2" CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="start" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="22" operation="start" operation_key="FAKE2:2_start_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <pseudo_event id="34" operation="start" operation_key="FAKE3-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="20" priority="1000000">
|
|
+ <action_set>
|
|
+ <pseudo_event id="35" operation="running" operation_key="FAKE3-clone_running_0">
|
|
+ <attributes CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="28" operation="start" operation_key="FAKE3_start_0" internal_operation_key="FAKE3:0_start_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="30" operation="start" operation_key="FAKE3:1_start_0" on_node="c7auto2" on_node_uuid="2"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="32" operation="start" operation_key="FAKE3:2_start_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <pseudo_event id="34" operation="start" operation_key="FAKE3-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="21">
|
|
+ <action_set>
|
|
+ <pseudo_event id="34" operation="start" operation_key="FAKE3-clone_start_0">
|
|
+ <attributes CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="25" operation="running" operation_key="FAKE2-clone_running_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="22">
|
|
+ <action_set>
|
|
+ <pseudo_event id="2" operation="clone-one-or-more:order-FAKE1-clone-FAKE2-clone-mandatory" operation_key="clone-one-or-more:order-FAKE1-clone-FAKE2-clone-mandatory">
|
|
+ <attributes />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="10" operation="start" operation_key="FAKE1_start_0" internal_operation_key="FAKE1:0_start_0" on_node="c7auto2" on_node_uuid="2"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="12" operation="start" operation_key="FAKE1:1_start_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+</transition_graph>
|
|
diff --git a/pengine/test10/clone_min_interleave_start_two.scores b/pengine/test10/clone_min_interleave_start_two.scores
|
|
new file mode 100644
|
|
index 0000000..d443c58
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_interleave_start_two.scores
|
|
@@ -0,0 +1,67 @@
|
|
+Allocation scores:
|
|
+clone_color: FAKE1-clone allocation score on c7auto1: 0
|
|
+clone_color: FAKE1-clone allocation score on c7auto2: 0
|
|
+clone_color: FAKE1-clone allocation score on c7auto3: -INFINITY
|
|
+clone_color: FAKE1:0 allocation score on c7auto1: 0
|
|
+clone_color: FAKE1:0 allocation score on c7auto2: 0
|
|
+clone_color: FAKE1:0 allocation score on c7auto3: -INFINITY
|
|
+clone_color: FAKE1:1 allocation score on c7auto1: 0
|
|
+clone_color: FAKE1:1 allocation score on c7auto2: 0
|
|
+clone_color: FAKE1:1 allocation score on c7auto3: -INFINITY
|
|
+clone_color: FAKE1:2 allocation score on c7auto1: 0
|
|
+clone_color: FAKE1:2 allocation score on c7auto2: 0
|
|
+clone_color: FAKE1:2 allocation score on c7auto3: -INFINITY
|
|
+clone_color: FAKE2-clone allocation score on c7auto1: 0
|
|
+clone_color: FAKE2-clone allocation score on c7auto2: 0
|
|
+clone_color: FAKE2-clone allocation score on c7auto3: 0
|
|
+clone_color: FAKE2:0 allocation score on c7auto1: 0
|
|
+clone_color: FAKE2:0 allocation score on c7auto2: 0
|
|
+clone_color: FAKE2:0 allocation score on c7auto3: 0
|
|
+clone_color: FAKE2:1 allocation score on c7auto1: 0
|
|
+clone_color: FAKE2:1 allocation score on c7auto2: 0
|
|
+clone_color: FAKE2:1 allocation score on c7auto3: 0
|
|
+clone_color: FAKE2:2 allocation score on c7auto1: 0
|
|
+clone_color: FAKE2:2 allocation score on c7auto2: 0
|
|
+clone_color: FAKE2:2 allocation score on c7auto3: 0
|
|
+clone_color: FAKE3-clone allocation score on c7auto1: 0
|
|
+clone_color: FAKE3-clone allocation score on c7auto2: 0
|
|
+clone_color: FAKE3-clone allocation score on c7auto3: 0
|
|
+clone_color: FAKE3:0 allocation score on c7auto1: 0
|
|
+clone_color: FAKE3:0 allocation score on c7auto2: 0
|
|
+clone_color: FAKE3:0 allocation score on c7auto3: 0
|
|
+clone_color: FAKE3:1 allocation score on c7auto1: 0
|
|
+clone_color: FAKE3:1 allocation score on c7auto2: 0
|
|
+clone_color: FAKE3:1 allocation score on c7auto3: 0
|
|
+clone_color: FAKE3:2 allocation score on c7auto1: 0
|
|
+clone_color: FAKE3:2 allocation score on c7auto2: 0
|
|
+clone_color: FAKE3:2 allocation score on c7auto3: 0
|
|
+native_color: FAKE1:0 allocation score on c7auto1: 0
|
|
+native_color: FAKE1:0 allocation score on c7auto2: 0
|
|
+native_color: FAKE1:0 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKE1:1 allocation score on c7auto1: 0
|
|
+native_color: FAKE1:1 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKE1:1 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKE1:2 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKE1:2 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKE1:2 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKE2:0 allocation score on c7auto1: 0
|
|
+native_color: FAKE2:0 allocation score on c7auto2: 0
|
|
+native_color: FAKE2:0 allocation score on c7auto3: 0
|
|
+native_color: FAKE2:1 allocation score on c7auto1: 0
|
|
+native_color: FAKE2:1 allocation score on c7auto2: 0
|
|
+native_color: FAKE2:1 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKE2:2 allocation score on c7auto1: 0
|
|
+native_color: FAKE2:2 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKE2:2 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKE3:0 allocation score on c7auto1: 0
|
|
+native_color: FAKE3:0 allocation score on c7auto2: 0
|
|
+native_color: FAKE3:0 allocation score on c7auto3: 0
|
|
+native_color: FAKE3:1 allocation score on c7auto1: 0
|
|
+native_color: FAKE3:1 allocation score on c7auto2: 0
|
|
+native_color: FAKE3:1 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKE3:2 allocation score on c7auto1: 0
|
|
+native_color: FAKE3:2 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKE3:2 allocation score on c7auto3: -INFINITY
|
|
+native_color: shooter allocation score on c7auto1: 0
|
|
+native_color: shooter allocation score on c7auto2: 0
|
|
+native_color: shooter allocation score on c7auto3: 0
|
|
diff --git a/pengine/test10/clone_min_interleave_start_two.summary b/pengine/test10/clone_min_interleave_start_two.summary
|
|
new file mode 100644
|
|
index 0000000..9f928f2
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_interleave_start_two.summary
|
|
@@ -0,0 +1,59 @@
|
|
+
|
|
+Current cluster status:
|
|
+Online: [ c7auto1 c7auto2 c7auto3 ]
|
|
+
|
|
+ shooter (stonith:fence_phd_kvm): Started c7auto1
|
|
+ Clone Set: FAKE1-clone [FAKE1]
|
|
+ Stopped: [ c7auto1 c7auto2 c7auto3 ]
|
|
+ Clone Set: FAKE2-clone [FAKE2]
|
|
+ Stopped: [ c7auto1 c7auto2 c7auto3 ]
|
|
+ Clone Set: FAKE3-clone [FAKE3]
|
|
+ Stopped: [ c7auto1 c7auto2 c7auto3 ]
|
|
+
|
|
+Transition Summary:
|
|
+ * Start FAKE1:0 (c7auto2)
|
|
+ * Start FAKE1:1 (c7auto1)
|
|
+ * Start FAKE2:0 (c7auto3)
|
|
+ * Start FAKE2:1 (c7auto2)
|
|
+ * Start FAKE2:2 (c7auto1)
|
|
+ * Start FAKE3:0 (c7auto3)
|
|
+ * Start FAKE3:1 (c7auto2)
|
|
+ * Start FAKE3:2 (c7auto1)
|
|
+
|
|
+Executing cluster transition:
|
|
+ * Pseudo action: FAKE1-clone_start_0
|
|
+ * Resource action: FAKE1 start on c7auto2
|
|
+ * Resource action: FAKE1 start on c7auto1
|
|
+ * Pseudo action: FAKE1-clone_running_0
|
|
+ * Pseudo action: clone-one-or-more:order-FAKE1-clone-FAKE2-clone-mandatory
|
|
+ * Resource action: FAKE1 monitor=10000 on c7auto2
|
|
+ * Resource action: FAKE1 monitor=10000 on c7auto1
|
|
+ * Pseudo action: FAKE2-clone_start_0
|
|
+ * Resource action: FAKE2 start on c7auto3
|
|
+ * Resource action: FAKE2 start on c7auto2
|
|
+ * Resource action: FAKE2 start on c7auto1
|
|
+ * Pseudo action: FAKE2-clone_running_0
|
|
+ * Pseudo action: FAKE3-clone_start_0
|
|
+ * Resource action: FAKE2 monitor=10000 on c7auto3
|
|
+ * Resource action: FAKE2 monitor=10000 on c7auto2
|
|
+ * Resource action: FAKE2 monitor=10000 on c7auto1
|
|
+ * Resource action: FAKE3 start on c7auto3
|
|
+ * Resource action: FAKE3 start on c7auto2
|
|
+ * Resource action: FAKE3 start on c7auto1
|
|
+ * Pseudo action: FAKE3-clone_running_0
|
|
+ * Resource action: FAKE3 monitor=10000 on c7auto3
|
|
+ * Resource action: FAKE3 monitor=10000 on c7auto2
|
|
+ * Resource action: FAKE3 monitor=10000 on c7auto1
|
|
+
|
|
+Revised cluster status:
|
|
+Online: [ c7auto1 c7auto2 c7auto3 ]
|
|
+
|
|
+ shooter (stonith:fence_phd_kvm): Started c7auto1
|
|
+ Clone Set: FAKE1-clone [FAKE1]
|
|
+ Started: [ c7auto1 c7auto2 ]
|
|
+ Stopped: [ c7auto3 ]
|
|
+ Clone Set: FAKE2-clone [FAKE2]
|
|
+ Started: [ c7auto1 c7auto2 c7auto3 ]
|
|
+ Clone Set: FAKE3-clone [FAKE3]
|
|
+ Started: [ c7auto1 c7auto2 c7auto3 ]
|
|
+
|
|
diff --git a/pengine/test10/clone_min_interleave_start_two.xml b/pengine/test10/clone_min_interleave_start_two.xml
|
|
new file mode 100644
|
|
index 0000000..2507018
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_interleave_start_two.xml
|
|
@@ -0,0 +1,154 @@
|
|
+<cib crm_feature_set="3.0.10" validate-with="pacemaker-2.3" epoch="15" num_updates="0" admin_epoch="0" cib-last-written="Fri Jul 17 11:44:12 2015" update-origin="c7auto1" update-client="crm_resource" update-user="root" have-quorum="1" dc-uuid="3">
|
|
+ <configuration>
|
|
+ <crm_config>
|
|
+ <cluster_property_set id="cib-bootstrap-options">
|
|
+ <nvpair id="cib-bootstrap-options-have-watchdog" name="have-watchdog" value="false"/>
|
|
+ <nvpair id="cib-bootstrap-options-dc-version" name="dc-version" value="1.1.12-ef86b49"/>
|
|
+ <nvpair id="cib-bootstrap-options-cluster-infrastructure" name="cluster-infrastructure" value="corosync"/>
|
|
+ <nvpair id="cib-bootstrap-options-cluster-name" name="cluster-name" value="phd"/>
|
|
+ </cluster_property_set>
|
|
+ </crm_config>
|
|
+ <nodes>
|
|
+ <node id="1" uname="c7auto1"/>
|
|
+ <node id="2" uname="c7auto2"/>
|
|
+ <node id="3" uname="c7auto3"/>
|
|
+ </nodes>
|
|
+ <resources>
|
|
+ <primitive class="stonith" id="shooter" type="fence_phd_kvm">
|
|
+ <instance_attributes id="shooter-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="shooter-monitor-interval-60s" interval="60s" name="monitor"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <clone id="FAKE1-clone">
|
|
+ <primitive class="ocf" id="FAKE1" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKE1-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKE1-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKE1-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKE1-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <meta_attributes id="FAKE1-clone-meta">
|
|
+ <nvpair id="FAKE1-clone-min" name="clone-min" value="2"/>
|
|
+ </meta_attributes>
|
|
+ <meta_attributes id="FAKE1-clone-meta_attributes"/>
|
|
+ </clone>
|
|
+ <clone id="FAKE2-clone">
|
|
+ <primitive class="ocf" id="FAKE2" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKE2-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKE2-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKE2-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKE2-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <meta_attributes id="FAKE2-clone-meta">
|
|
+ <nvpair id="FAKE2-interleave" name="interleave" value="true"/>
|
|
+ </meta_attributes>
|
|
+ </clone>
|
|
+ <clone id="FAKE3-clone">
|
|
+ <primitive class="ocf" id="FAKE3" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKE3-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKE3-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKE3-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKE3-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <meta_attributes id="FAKE3-clone-meta">
|
|
+ <nvpair id="FAKE3-interleave" name="interleave" value="true"/>
|
|
+ </meta_attributes>
|
|
+ </clone>
|
|
+ </resources>
|
|
+ <constraints>
|
|
+ <rsc_order first="FAKE1-clone" first-action="start" id="order-FAKE1-clone-FAKE2-clone-mandatory" then="FAKE2-clone" then-action="start"/>
|
|
+ <rsc_order first="FAKE2-clone" first-action="start" id="order-FAKE2-clone-FAKE3-clone-mandatory" then="FAKE3-clone" then-action="start"/>
|
|
+ <rsc_location id="cli-ban-FAKE1-clone-on-c7auto3" rsc="FAKE1-clone" role="Started" node="c7auto3" score="-INFINITY"/>
|
|
+ </constraints>
|
|
+ </configuration>
|
|
+ <status>
|
|
+ <node_state id="3" uname="c7auto3" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="3">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="8:4:7:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:7;8:4:7:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437146780" last-rc-change="1437146780" exec-time="998" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE1" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE1_last_0" operation_key="FAKE1_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="18:10:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;18:10:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="32" rc-code="0" op-status="0" interval="0" last-run="1437147852" last-rc-change="1437147852" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE1_monitor_10000" operation_key="FAKE1_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="15:5:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;15:5:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="12" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147006" exec-time="9" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE2_last_0" operation_key="FAKE2_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="25:10:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;25:10:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="30" rc-code="0" op-status="0" interval="0" last-run="1437147852" last-rc-change="1437147852" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE2_monitor_10000" operation_key="FAKE2_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="28:6:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;28:6:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="19" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147019" exec-time="8" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE3" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE3_last_0" operation_key="FAKE3_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="35:10:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;35:10:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="28" rc-code="0" op-status="0" interval="0" last-run="1437147852" last-rc-change="1437147852" exec-time="10" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE3_monitor_10000" operation_key="FAKE3_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="41:7:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;41:7:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="26" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147024" exec-time="8" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="3">
|
|
+ <instance_attributes id="status-3">
|
|
+ <nvpair id="status-3-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-3-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ <node_state id="1" uname="c7auto1" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="1">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="9:4:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;9:4:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="6" rc-code="0" op-status="0" interval="0" last-run="1437146782" last-rc-change="1437146782" exec-time="5" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="shooter_monitor_60000" operation_key="shooter_monitor_60000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="10:4:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;10:4:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="7" rc-code="0" op-status="0" interval="60000" last-rc-change="1437146783" exec-time="5" queue-time="1" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE1" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE1_last_0" operation_key="FAKE1_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="19:10:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;19:10:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="34" rc-code="0" op-status="0" interval="0" last-run="1437147852" last-rc-change="1437147852" exec-time="7" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE1_monitor_10000" operation_key="FAKE1_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="17:5:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;17:5:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="14" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147007" exec-time="6" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE2_last_0" operation_key="FAKE2_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="27:10:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;27:10:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="32" rc-code="0" op-status="0" interval="0" last-run="1437147852" last-rc-change="1437147852" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE2_monitor_10000" operation_key="FAKE2_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="30:6:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;30:6:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="21" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147019" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE3" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE3_last_0" operation_key="FAKE3_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="37:10:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;37:10:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="30" rc-code="0" op-status="0" interval="0" last-run="1437147852" last-rc-change="1437147852" exec-time="7" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE3_monitor_10000" operation_key="FAKE3_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="43:7:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;43:7:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="28" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147024" exec-time="6" queue-time="1" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="1">
|
|
+ <instance_attributes id="status-1">
|
|
+ <nvpair id="status-1-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-1-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ <node_state id="2" uname="c7auto2" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="2">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="6:4:7:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:7;6:4:7:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437146780" last-rc-change="1437146780" exec-time="994" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE1" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE1_last_0" operation_key="FAKE1_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="20:10:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;20:10:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="32" rc-code="0" op-status="0" interval="0" last-run="1437147852" last-rc-change="1437147852" exec-time="7" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE1_monitor_10000" operation_key="FAKE1_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="13:5:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;13:5:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="12" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147007" exec-time="8" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE2_last_0" operation_key="FAKE2_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="29:10:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;29:10:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="30" rc-code="0" op-status="0" interval="0" last-run="1437147852" last-rc-change="1437147852" exec-time="7" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE2_monitor_10000" operation_key="FAKE2_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="26:6:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;26:6:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="19" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147019" exec-time="6" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE3" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE3_last_0" operation_key="FAKE3_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="39:10:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;39:10:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="28" rc-code="0" op-status="0" interval="0" last-run="1437147852" last-rc-change="1437147852" exec-time="9" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE3_monitor_10000" operation_key="FAKE3_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="39:7:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;39:7:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="26" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147024" exec-time="8" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="2">
|
|
+ <instance_attributes id="status-2">
|
|
+ <nvpair id="status-2-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-2-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ </status>
|
|
+</cib>
|
|
diff --git a/pengine/test10/clone_min_interleave_stop_one.dot b/pengine/test10/clone_min_interleave_stop_one.dot
|
|
new file mode 100644
|
|
index 0000000..a66ceb6
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_interleave_stop_one.dot
|
|
@@ -0,0 +1,18 @@
|
|
+ digraph "g" {
|
|
+"FAKE1-clone_running_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKE1-clone_start_0" -> "FAKE1-clone_running_0" [ style = bold]
|
|
+"FAKE1-clone_start_0" -> "FAKE1_start_0 <none>" [ style = dashed]
|
|
+"FAKE1-clone_start_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKE1-clone_stop_0" -> "FAKE1-clone_stopped_0" [ style = bold]
|
|
+"FAKE1-clone_stop_0" -> "FAKE1_stop_0 c7auto3" [ style = bold]
|
|
+"FAKE1-clone_stop_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKE1-clone_stopped_0" -> "FAKE1-clone_start_0" [ style = bold]
|
|
+"FAKE1-clone_stopped_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKE1_start_0 <none>" -> "FAKE1-clone_running_0" [ style = dashed]
|
|
+"FAKE1_start_0 <none>" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE1_stop_0 c7auto3" -> "FAKE1-clone_stopped_0" [ style = bold]
|
|
+"FAKE1_stop_0 c7auto3" -> "FAKE1_start_0 <none>" [ style = dashed]
|
|
+"FAKE1_stop_0 c7auto3" -> "all_stopped" [ style = bold]
|
|
+"FAKE1_stop_0 c7auto3" [ style=bold color="green" fontcolor="black"]
|
|
+"all_stopped" [ style=bold color="green" fontcolor="orange"]
|
|
+}
|
|
diff --git a/pengine/test10/clone_min_interleave_stop_one.exp b/pengine/test10/clone_min_interleave_stop_one.exp
|
|
new file mode 100644
|
|
index 0000000..31a15da
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_interleave_stop_one.exp
|
|
@@ -0,0 +1,74 @@
|
|
+<transition_graph cluster-delay="60s" stonith-timeout="60s" failed-stop-offset="INFINITY" failed-start-offset="INFINITY" transition_id="0">
|
|
+ <synapse id="0">
|
|
+ <action_set>
|
|
+ <rsc_op id="19" operation="stop" operation_key="FAKE1_stop_0" internal_operation_key="FAKE1:0_stop_0" on_node="c7auto3" on_node_uuid="3">
|
|
+ <primitive id="FAKE1" long-id="FAKE1:0" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="0" CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="26" operation="stop" operation_key="FAKE1-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="1" priority="1000000">
|
|
+ <action_set>
|
|
+ <pseudo_event id="27" operation="stopped" operation_key="FAKE1-clone_stopped_0">
|
|
+ <attributes CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="19" operation="stop" operation_key="FAKE1_stop_0" internal_operation_key="FAKE1:0_stop_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <pseudo_event id="26" operation="stop" operation_key="FAKE1-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="2">
|
|
+ <action_set>
|
|
+ <pseudo_event id="26" operation="stop" operation_key="FAKE1-clone_stop_0">
|
|
+ <attributes CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs/>
|
|
+ </synapse>
|
|
+ <synapse id="3" priority="1000000">
|
|
+ <action_set>
|
|
+ <pseudo_event id="25" operation="running" operation_key="FAKE1-clone_running_0">
|
|
+ <attributes CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="24" operation="start" operation_key="FAKE1-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="4">
|
|
+ <action_set>
|
|
+ <pseudo_event id="24" operation="start" operation_key="FAKE1-clone_start_0">
|
|
+ <attributes CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="27" operation="stopped" operation_key="FAKE1-clone_stopped_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="5">
|
|
+ <action_set>
|
|
+ <pseudo_event id="12" operation="all_stopped" operation_key="all_stopped">
|
|
+ <attributes />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="19" operation="stop" operation_key="FAKE1_stop_0" internal_operation_key="FAKE1:0_stop_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+</transition_graph>
|
|
diff --git a/pengine/test10/clone_min_interleave_stop_one.scores b/pengine/test10/clone_min_interleave_stop_one.scores
|
|
new file mode 100644
|
|
index 0000000..1a98230
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_interleave_stop_one.scores
|
|
@@ -0,0 +1,67 @@
|
|
+Allocation scores:
|
|
+clone_color: FAKE1-clone allocation score on c7auto1: 0
|
|
+clone_color: FAKE1-clone allocation score on c7auto2: 0
|
|
+clone_color: FAKE1-clone allocation score on c7auto3: -INFINITY
|
|
+clone_color: FAKE1:0 allocation score on c7auto1: 0
|
|
+clone_color: FAKE1:0 allocation score on c7auto2: 0
|
|
+clone_color: FAKE1:0 allocation score on c7auto3: -INFINITY
|
|
+clone_color: FAKE1:1 allocation score on c7auto1: 1
|
|
+clone_color: FAKE1:1 allocation score on c7auto2: 0
|
|
+clone_color: FAKE1:1 allocation score on c7auto3: -INFINITY
|
|
+clone_color: FAKE1:2 allocation score on c7auto1: 0
|
|
+clone_color: FAKE1:2 allocation score on c7auto2: 1
|
|
+clone_color: FAKE1:2 allocation score on c7auto3: -INFINITY
|
|
+clone_color: FAKE2-clone allocation score on c7auto1: 0
|
|
+clone_color: FAKE2-clone allocation score on c7auto2: 0
|
|
+clone_color: FAKE2-clone allocation score on c7auto3: 0
|
|
+clone_color: FAKE2:0 allocation score on c7auto1: 0
|
|
+clone_color: FAKE2:0 allocation score on c7auto2: 0
|
|
+clone_color: FAKE2:0 allocation score on c7auto3: 1
|
|
+clone_color: FAKE2:1 allocation score on c7auto1: 1
|
|
+clone_color: FAKE2:1 allocation score on c7auto2: 0
|
|
+clone_color: FAKE2:1 allocation score on c7auto3: 0
|
|
+clone_color: FAKE2:2 allocation score on c7auto1: 0
|
|
+clone_color: FAKE2:2 allocation score on c7auto2: 1
|
|
+clone_color: FAKE2:2 allocation score on c7auto3: 0
|
|
+clone_color: FAKE3-clone allocation score on c7auto1: 0
|
|
+clone_color: FAKE3-clone allocation score on c7auto2: 0
|
|
+clone_color: FAKE3-clone allocation score on c7auto3: 0
|
|
+clone_color: FAKE3:0 allocation score on c7auto1: 0
|
|
+clone_color: FAKE3:0 allocation score on c7auto2: 0
|
|
+clone_color: FAKE3:0 allocation score on c7auto3: 1
|
|
+clone_color: FAKE3:1 allocation score on c7auto1: 1
|
|
+clone_color: FAKE3:1 allocation score on c7auto2: 0
|
|
+clone_color: FAKE3:1 allocation score on c7auto3: 0
|
|
+clone_color: FAKE3:2 allocation score on c7auto1: 0
|
|
+clone_color: FAKE3:2 allocation score on c7auto2: 1
|
|
+clone_color: FAKE3:2 allocation score on c7auto3: 0
|
|
+native_color: FAKE1:0 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKE1:0 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKE1:0 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKE1:1 allocation score on c7auto1: 1
|
|
+native_color: FAKE1:1 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKE1:1 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKE1:2 allocation score on c7auto1: 0
|
|
+native_color: FAKE1:2 allocation score on c7auto2: 1
|
|
+native_color: FAKE1:2 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKE2:0 allocation score on c7auto1: 0
|
|
+native_color: FAKE2:0 allocation score on c7auto2: 0
|
|
+native_color: FAKE2:0 allocation score on c7auto3: 1
|
|
+native_color: FAKE2:1 allocation score on c7auto1: 1
|
|
+native_color: FAKE2:1 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKE2:1 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKE2:2 allocation score on c7auto1: 0
|
|
+native_color: FAKE2:2 allocation score on c7auto2: 1
|
|
+native_color: FAKE2:2 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKE3:0 allocation score on c7auto1: 0
|
|
+native_color: FAKE3:0 allocation score on c7auto2: 0
|
|
+native_color: FAKE3:0 allocation score on c7auto3: 1
|
|
+native_color: FAKE3:1 allocation score on c7auto1: 1
|
|
+native_color: FAKE3:1 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKE3:1 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKE3:2 allocation score on c7auto1: 0
|
|
+native_color: FAKE3:2 allocation score on c7auto2: 1
|
|
+native_color: FAKE3:2 allocation score on c7auto3: -INFINITY
|
|
+native_color: shooter allocation score on c7auto1: 0
|
|
+native_color: shooter allocation score on c7auto2: 0
|
|
+native_color: shooter allocation score on c7auto3: 0
|
|
diff --git a/pengine/test10/clone_min_interleave_stop_one.summary b/pengine/test10/clone_min_interleave_stop_one.summary
|
|
new file mode 100644
|
|
index 0000000..9280b7e
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_interleave_stop_one.summary
|
|
@@ -0,0 +1,35 @@
|
|
+
|
|
+Current cluster status:
|
|
+Online: [ c7auto1 c7auto2 c7auto3 ]
|
|
+
|
|
+ shooter (stonith:fence_phd_kvm): Started c7auto1
|
|
+ Clone Set: FAKE1-clone [FAKE1]
|
|
+ Started: [ c7auto1 c7auto2 c7auto3 ]
|
|
+ Clone Set: FAKE2-clone [FAKE2]
|
|
+ Started: [ c7auto1 c7auto2 c7auto3 ]
|
|
+ Clone Set: FAKE3-clone [FAKE3]
|
|
+ Started: [ c7auto1 c7auto2 c7auto3 ]
|
|
+
|
|
+Transition Summary:
|
|
+ * Stop FAKE1:0 (c7auto3)
|
|
+
|
|
+Executing cluster transition:
|
|
+ * Pseudo action: FAKE1-clone_stop_0
|
|
+ * Resource action: FAKE1 stop on c7auto3
|
|
+ * Pseudo action: FAKE1-clone_stopped_0
|
|
+ * Pseudo action: FAKE1-clone_start_0
|
|
+ * Pseudo action: all_stopped
|
|
+ * Pseudo action: FAKE1-clone_running_0
|
|
+
|
|
+Revised cluster status:
|
|
+Online: [ c7auto1 c7auto2 c7auto3 ]
|
|
+
|
|
+ shooter (stonith:fence_phd_kvm): Started c7auto1
|
|
+ Clone Set: FAKE1-clone [FAKE1]
|
|
+ Started: [ c7auto1 c7auto2 ]
|
|
+ Stopped: [ c7auto3 ]
|
|
+ Clone Set: FAKE2-clone [FAKE2]
|
|
+ Started: [ c7auto1 c7auto2 c7auto3 ]
|
|
+ Clone Set: FAKE3-clone [FAKE3]
|
|
+ Started: [ c7auto1 c7auto2 c7auto3 ]
|
|
+
|
|
diff --git a/pengine/test10/clone_min_interleave_stop_one.xml b/pengine/test10/clone_min_interleave_stop_one.xml
|
|
new file mode 100644
|
|
index 0000000..31db5f3
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_interleave_stop_one.xml
|
|
@@ -0,0 +1,153 @@
|
|
+<cib crm_feature_set="3.0.10" validate-with="pacemaker-2.3" epoch="12" num_updates="0" admin_epoch="0" cib-last-written="Fri Jul 17 11:30:45 2015" update-origin="c7auto1" update-client="cibadmin" update-user="root" have-quorum="1" dc-uuid="3">
|
|
+ <configuration>
|
|
+ <crm_config>
|
|
+ <cluster_property_set id="cib-bootstrap-options">
|
|
+ <nvpair id="cib-bootstrap-options-have-watchdog" name="have-watchdog" value="false"/>
|
|
+ <nvpair id="cib-bootstrap-options-dc-version" name="dc-version" value="1.1.12-ef86b49"/>
|
|
+ <nvpair id="cib-bootstrap-options-cluster-infrastructure" name="cluster-infrastructure" value="corosync"/>
|
|
+ <nvpair id="cib-bootstrap-options-cluster-name" name="cluster-name" value="phd"/>
|
|
+ </cluster_property_set>
|
|
+ </crm_config>
|
|
+ <nodes>
|
|
+ <node id="1" uname="c7auto1"/>
|
|
+ <node id="2" uname="c7auto2"/>
|
|
+ <node id="3" uname="c7auto3"/>
|
|
+ </nodes>
|
|
+ <resources>
|
|
+ <primitive class="stonith" id="shooter" type="fence_phd_kvm">
|
|
+ <instance_attributes id="shooter-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="shooter-monitor-interval-60s" interval="60s" name="monitor"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <clone id="FAKE1-clone">
|
|
+ <primitive class="ocf" id="FAKE1" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKE1-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKE1-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKE1-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKE1-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <meta_attributes id="FAKE1-clone-meta">
|
|
+ <nvpair id="FAKE1-clone-min" name="clone-min" value="2"/>
|
|
+ </meta_attributes>
|
|
+ </clone>
|
|
+ <clone id="FAKE2-clone">
|
|
+ <primitive class="ocf" id="FAKE2" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKE2-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKE2-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKE2-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKE2-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <meta_attributes id="FAKE2-clone-meta">
|
|
+ <nvpair id="FAKE2-interleave" name="interleave" value="true"/>
|
|
+ </meta_attributes>
|
|
+ </clone>
|
|
+ <clone id="FAKE3-clone">
|
|
+ <primitive class="ocf" id="FAKE3" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKE3-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKE3-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKE3-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKE3-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <meta_attributes id="FAKE3-clone-meta">
|
|
+ <nvpair id="FAKE3-interleave" name="interleave" value="true"/>
|
|
+ </meta_attributes>
|
|
+ </clone>
|
|
+ </resources>
|
|
+ <constraints>
|
|
+ <rsc_order first="FAKE1-clone" first-action="start" id="order-FAKE1-clone-FAKE2-clone-mandatory" then="FAKE2-clone" then-action="start"/>
|
|
+ <rsc_order first="FAKE2-clone" first-action="start" id="order-FAKE2-clone-FAKE3-clone-mandatory" then="FAKE3-clone" then-action="start"/>
|
|
+ <rsc_location id="cli-ban-FAKE1-clone-on-c7auto3" rsc="FAKE1-clone" role="Started" node="c7auto3" score="-INFINITY"/>
|
|
+ </constraints>
|
|
+ </configuration>
|
|
+ <status>
|
|
+ <node_state id="3" uname="c7auto3" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="3">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="8:4:7:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:7;8:4:7:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437146780" last-rc-change="1437146780" exec-time="998" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE1" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE1_last_0" operation_key="FAKE1_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="14:5:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;14:5:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="11" rc-code="0" op-status="0" interval="0" last-run="1437147006" last-rc-change="1437147006" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE1_monitor_10000" operation_key="FAKE1_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="15:5:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;15:5:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="12" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147006" exec-time="9" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE2_last_0" operation_key="FAKE2_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="27:6:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;27:6:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="18" rc-code="0" op-status="0" interval="0" last-run="1437147019" last-rc-change="1437147019" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE2_monitor_10000" operation_key="FAKE2_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="28:6:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;28:6:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="19" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147019" exec-time="8" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE3" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE3_last_0" operation_key="FAKE3_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="40:7:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;40:7:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="25" rc-code="0" op-status="0" interval="0" last-run="1437147024" last-rc-change="1437147024" exec-time="9" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE3_monitor_10000" operation_key="FAKE3_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="41:7:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;41:7:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="26" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147024" exec-time="8" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="3">
|
|
+ <instance_attributes id="status-3">
|
|
+ <nvpair id="status-3-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-3-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ <node_state id="1" uname="c7auto1" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="1">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="9:4:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;9:4:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="6" rc-code="0" op-status="0" interval="0" last-run="1437146782" last-rc-change="1437146782" exec-time="5" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="shooter_monitor_60000" operation_key="shooter_monitor_60000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="10:4:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;10:4:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="7" rc-code="0" op-status="0" interval="60000" last-rc-change="1437146783" exec-time="5" queue-time="1" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE1" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE1_last_0" operation_key="FAKE1_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="16:5:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;16:5:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="13" rc-code="0" op-status="0" interval="0" last-run="1437147007" last-rc-change="1437147007" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE1_monitor_10000" operation_key="FAKE1_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="17:5:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;17:5:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="14" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147007" exec-time="6" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE2_last_0" operation_key="FAKE2_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="29:6:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;29:6:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="20" rc-code="0" op-status="0" interval="0" last-run="1437147019" last-rc-change="1437147019" exec-time="7" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE2_monitor_10000" operation_key="FAKE2_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="30:6:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;30:6:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="21" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147019" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE3" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE3_last_0" operation_key="FAKE3_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="42:7:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;42:7:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="27" rc-code="0" op-status="0" interval="0" last-run="1437147024" last-rc-change="1437147024" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE3_monitor_10000" operation_key="FAKE3_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="43:7:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;43:7:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="28" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147024" exec-time="6" queue-time="1" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="1">
|
|
+ <instance_attributes id="status-1">
|
|
+ <nvpair id="status-1-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-1-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ <node_state id="2" uname="c7auto2" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="2">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="6:4:7:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:7;6:4:7:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437146780" last-rc-change="1437146780" exec-time="994" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE1" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE1_last_0" operation_key="FAKE1_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="12:5:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;12:5:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="11" rc-code="0" op-status="0" interval="0" last-run="1437147007" last-rc-change="1437147007" exec-time="6" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE1_monitor_10000" operation_key="FAKE1_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="13:5:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;13:5:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="12" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147007" exec-time="8" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE2_last_0" operation_key="FAKE2_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="25:6:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;25:6:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="18" rc-code="0" op-status="0" interval="0" last-run="1437147019" last-rc-change="1437147019" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE2_monitor_10000" operation_key="FAKE2_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="26:6:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;26:6:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="19" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147019" exec-time="6" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE3" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE3_last_0" operation_key="FAKE3_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="38:7:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;38:7:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="25" rc-code="0" op-status="0" interval="0" last-run="1437147024" last-rc-change="1437147024" exec-time="7" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE3_monitor_10000" operation_key="FAKE3_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="39:7:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;39:7:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="26" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147024" exec-time="8" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="2">
|
|
+ <instance_attributes id="status-2">
|
|
+ <nvpair id="status-2-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-2-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ </status>
|
|
+</cib>
|
|
diff --git a/pengine/test10/clone_min_interleave_stop_two.dot b/pengine/test10/clone_min_interleave_stop_two.dot
|
|
new file mode 100644
|
|
index 0000000..73f60dd
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_interleave_stop_two.dot
|
|
@@ -0,0 +1,108 @@
|
|
+ digraph "g" {
|
|
+"FAKE1-clone_running_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKE1-clone_start_0" -> "FAKE1-clone_running_0" [ style = bold]
|
|
+"FAKE1-clone_start_0" -> "FAKE1_start_0 <none>" [ style = dashed]
|
|
+"FAKE1-clone_start_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKE1-clone_stop_0" -> "FAKE1-clone_stopped_0" [ style = bold]
|
|
+"FAKE1-clone_stop_0" -> "FAKE1_stop_0 c7auto2" [ style = bold]
|
|
+"FAKE1-clone_stop_0" -> "FAKE1_stop_0 c7auto3" [ style = bold]
|
|
+"FAKE1-clone_stop_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKE1-clone_stopped_0" -> "FAKE1-clone_start_0" [ style = bold]
|
|
+"FAKE1-clone_stopped_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKE1_start_0 <none>" -> "FAKE1-clone_running_0" [ style = dashed]
|
|
+"FAKE1_start_0 <none>" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE1_stop_0 c7auto2" -> "FAKE1-clone_stopped_0" [ style = bold]
|
|
+"FAKE1_stop_0 c7auto2" -> "FAKE1_start_0 <none>" [ style = dashed]
|
|
+"FAKE1_stop_0 c7auto2" -> "all_stopped" [ style = bold]
|
|
+"FAKE1_stop_0 c7auto2" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE1_stop_0 c7auto3" -> "FAKE1-clone_stopped_0" [ style = bold]
|
|
+"FAKE1_stop_0 c7auto3" -> "FAKE1_start_0 <none>" [ style = dashed]
|
|
+"FAKE1_stop_0 c7auto3" -> "all_stopped" [ style = bold]
|
|
+"FAKE1_stop_0 c7auto3" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE2-clone_running_0" -> "FAKE3-clone_start_0" [ style = dashed]
|
|
+"FAKE2-clone_running_0" [ style=dashed color="red" fontcolor="orange"]
|
|
+"FAKE2-clone_start_0" -> "FAKE2-clone_running_0" [ style = dashed]
|
|
+"FAKE2-clone_start_0" -> "FAKE2_start_0 c7auto1" [ style = dashed]
|
|
+"FAKE2-clone_start_0" -> "FAKE2_start_0 c7auto2" [ style = dashed]
|
|
+"FAKE2-clone_start_0" -> "FAKE2_start_0 c7auto3" [ style = dashed]
|
|
+"FAKE2-clone_start_0" [ style=dashed color="red" fontcolor="orange"]
|
|
+"FAKE2-clone_stop_0" -> "FAKE2-clone_stopped_0" [ style = bold]
|
|
+"FAKE2-clone_stop_0" -> "FAKE2_stop_0 c7auto1" [ style = bold]
|
|
+"FAKE2-clone_stop_0" -> "FAKE2_stop_0 c7auto2" [ style = bold]
|
|
+"FAKE2-clone_stop_0" -> "FAKE2_stop_0 c7auto3" [ style = bold]
|
|
+"FAKE2-clone_stop_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKE2-clone_stopped_0" -> "FAKE1-clone_stop_0" [ style = bold]
|
|
+"FAKE2-clone_stopped_0" -> "FAKE2-clone_start_0" [ style = dashed]
|
|
+"FAKE2-clone_stopped_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKE2_monitor_10000 c7auto1" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE2_monitor_10000 c7auto2" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE2_monitor_10000 c7auto3" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE2_start_0 c7auto1" -> "FAKE2-clone_running_0" [ style = dashed]
|
|
+"FAKE2_start_0 c7auto1" -> "FAKE2_monitor_10000 c7auto1" [ style = dashed]
|
|
+"FAKE2_start_0 c7auto1" -> "FAKE3_start_0 c7auto1" [ style = dashed]
|
|
+"FAKE2_start_0 c7auto1" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE2_start_0 c7auto2" -> "FAKE2-clone_running_0" [ style = dashed]
|
|
+"FAKE2_start_0 c7auto2" -> "FAKE2_monitor_10000 c7auto2" [ style = dashed]
|
|
+"FAKE2_start_0 c7auto2" -> "FAKE3_start_0 c7auto2" [ style = dashed]
|
|
+"FAKE2_start_0 c7auto2" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE2_start_0 c7auto3" -> "FAKE2-clone_running_0" [ style = dashed]
|
|
+"FAKE2_start_0 c7auto3" -> "FAKE2_monitor_10000 c7auto3" [ style = dashed]
|
|
+"FAKE2_start_0 c7auto3" -> "FAKE3_start_0 c7auto3" [ style = dashed]
|
|
+"FAKE2_start_0 c7auto3" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE2_stop_0 c7auto1" -> "FAKE2-clone_stopped_0" [ style = bold]
|
|
+"FAKE2_stop_0 c7auto1" -> "FAKE2_start_0 c7auto1" [ style = dashed]
|
|
+"FAKE2_stop_0 c7auto1" -> "all_stopped" [ style = bold]
|
|
+"FAKE2_stop_0 c7auto1" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE2_stop_0 c7auto2" -> "FAKE1_stop_0 c7auto2" [ style = bold]
|
|
+"FAKE2_stop_0 c7auto2" -> "FAKE2-clone_stopped_0" [ style = bold]
|
|
+"FAKE2_stop_0 c7auto2" -> "FAKE2_start_0 c7auto2" [ style = dashed]
|
|
+"FAKE2_stop_0 c7auto2" -> "all_stopped" [ style = bold]
|
|
+"FAKE2_stop_0 c7auto2" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE2_stop_0 c7auto3" -> "FAKE1_stop_0 c7auto3" [ style = bold]
|
|
+"FAKE2_stop_0 c7auto3" -> "FAKE2-clone_stopped_0" [ style = bold]
|
|
+"FAKE2_stop_0 c7auto3" -> "FAKE2_start_0 c7auto3" [ style = dashed]
|
|
+"FAKE2_stop_0 c7auto3" -> "all_stopped" [ style = bold]
|
|
+"FAKE2_stop_0 c7auto3" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE3-clone_running_0" [ style=dashed color="red" fontcolor="orange"]
|
|
+"FAKE3-clone_start_0" -> "FAKE3-clone_running_0" [ style = dashed]
|
|
+"FAKE3-clone_start_0" -> "FAKE3_start_0 c7auto1" [ style = dashed]
|
|
+"FAKE3-clone_start_0" -> "FAKE3_start_0 c7auto2" [ style = dashed]
|
|
+"FAKE3-clone_start_0" -> "FAKE3_start_0 c7auto3" [ style = dashed]
|
|
+"FAKE3-clone_start_0" [ style=dashed color="red" fontcolor="orange"]
|
|
+"FAKE3-clone_stop_0" -> "FAKE3-clone_stopped_0" [ style = bold]
|
|
+"FAKE3-clone_stop_0" -> "FAKE3_stop_0 c7auto1" [ style = bold]
|
|
+"FAKE3-clone_stop_0" -> "FAKE3_stop_0 c7auto2" [ style = bold]
|
|
+"FAKE3-clone_stop_0" -> "FAKE3_stop_0 c7auto3" [ style = bold]
|
|
+"FAKE3-clone_stop_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKE3-clone_stopped_0" -> "FAKE2-clone_stop_0" [ style = bold]
|
|
+"FAKE3-clone_stopped_0" -> "FAKE3-clone_start_0" [ style = dashed]
|
|
+"FAKE3-clone_stopped_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKE3_monitor_10000 c7auto1" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE3_monitor_10000 c7auto2" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE3_monitor_10000 c7auto3" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE3_start_0 c7auto1" -> "FAKE3-clone_running_0" [ style = dashed]
|
|
+"FAKE3_start_0 c7auto1" -> "FAKE3_monitor_10000 c7auto1" [ style = dashed]
|
|
+"FAKE3_start_0 c7auto1" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE3_start_0 c7auto2" -> "FAKE3-clone_running_0" [ style = dashed]
|
|
+"FAKE3_start_0 c7auto2" -> "FAKE3_monitor_10000 c7auto2" [ style = dashed]
|
|
+"FAKE3_start_0 c7auto2" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE3_start_0 c7auto3" -> "FAKE3-clone_running_0" [ style = dashed]
|
|
+"FAKE3_start_0 c7auto3" -> "FAKE3_monitor_10000 c7auto3" [ style = dashed]
|
|
+"FAKE3_start_0 c7auto3" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE3_stop_0 c7auto1" -> "FAKE2_stop_0 c7auto1" [ style = bold]
|
|
+"FAKE3_stop_0 c7auto1" -> "FAKE3-clone_stopped_0" [ style = bold]
|
|
+"FAKE3_stop_0 c7auto1" -> "FAKE3_start_0 c7auto1" [ style = dashed]
|
|
+"FAKE3_stop_0 c7auto1" -> "all_stopped" [ style = bold]
|
|
+"FAKE3_stop_0 c7auto1" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE3_stop_0 c7auto2" -> "FAKE2_stop_0 c7auto2" [ style = bold]
|
|
+"FAKE3_stop_0 c7auto2" -> "FAKE3-clone_stopped_0" [ style = bold]
|
|
+"FAKE3_stop_0 c7auto2" -> "FAKE3_start_0 c7auto2" [ style = dashed]
|
|
+"FAKE3_stop_0 c7auto2" -> "all_stopped" [ style = bold]
|
|
+"FAKE3_stop_0 c7auto2" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE3_stop_0 c7auto3" -> "FAKE2_stop_0 c7auto3" [ style = bold]
|
|
+"FAKE3_stop_0 c7auto3" -> "FAKE3-clone_stopped_0" [ style = bold]
|
|
+"FAKE3_stop_0 c7auto3" -> "FAKE3_start_0 c7auto3" [ style = dashed]
|
|
+"FAKE3_stop_0 c7auto3" -> "all_stopped" [ style = bold]
|
|
+"FAKE3_stop_0 c7auto3" [ style=bold color="green" fontcolor="black"]
|
|
+"all_stopped" [ style=bold color="green" fontcolor="orange"]
|
|
+}
|
|
diff --git a/pengine/test10/clone_min_interleave_stop_two.exp b/pengine/test10/clone_min_interleave_stop_two.exp
|
|
new file mode 100644
|
|
index 0000000..62fe1e6
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_interleave_stop_two.exp
|
|
@@ -0,0 +1,270 @@
|
|
+<transition_graph cluster-delay="60s" stonith-timeout="60s" failed-stop-offset="INFINITY" failed-start-offset="INFINITY" transition_id="0">
|
|
+ <synapse id="0">
|
|
+ <action_set>
|
|
+ <rsc_op id="19" operation="stop" operation_key="FAKE1_stop_0" internal_operation_key="FAKE1:0_stop_0" on_node="c7auto3" on_node_uuid="3">
|
|
+ <primitive id="FAKE1" long-id="FAKE1:0" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="0" CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="25" operation="stop" operation_key="FAKE1-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="27" operation="stop" operation_key="FAKE2_stop_0" internal_operation_key="FAKE2:0_stop_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="1">
|
|
+ <action_set>
|
|
+ <rsc_op id="22" operation="stop" operation_key="FAKE1_stop_0" internal_operation_key="FAKE1:2_stop_0" on_node="c7auto2" on_node_uuid="2">
|
|
+ <primitive id="FAKE1" long-id="FAKE1:2" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="2" CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="25" operation="stop" operation_key="FAKE1-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="31" operation="stop" operation_key="FAKE2_stop_0" internal_operation_key="FAKE2:2_stop_0" on_node="c7auto2" on_node_uuid="2"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="2" priority="1000000">
|
|
+ <action_set>
|
|
+ <pseudo_event id="26" operation="stopped" operation_key="FAKE1-clone_stopped_0">
|
|
+ <attributes CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="19" operation="stop" operation_key="FAKE1_stop_0" internal_operation_key="FAKE1:0_stop_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="22" operation="stop" operation_key="FAKE1_stop_0" internal_operation_key="FAKE1:2_stop_0" on_node="c7auto2" on_node_uuid="2"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <pseudo_event id="25" operation="stop" operation_key="FAKE1-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="3">
|
|
+ <action_set>
|
|
+ <pseudo_event id="25" operation="stop" operation_key="FAKE1-clone_stop_0">
|
|
+ <attributes CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="36" operation="stopped" operation_key="FAKE2-clone_stopped_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="4" priority="1000000">
|
|
+ <action_set>
|
|
+ <pseudo_event id="24" operation="running" operation_key="FAKE1-clone_running_0">
|
|
+ <attributes CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="23" operation="start" operation_key="FAKE1-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="5">
|
|
+ <action_set>
|
|
+ <pseudo_event id="23" operation="start" operation_key="FAKE1-clone_start_0">
|
|
+ <attributes CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="26" operation="stopped" operation_key="FAKE1-clone_stopped_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="6">
|
|
+ <action_set>
|
|
+ <rsc_op id="27" operation="stop" operation_key="FAKE2_stop_0" internal_operation_key="FAKE2:0_stop_0" on_node="c7auto3" on_node_uuid="3">
|
|
+ <primitive id="FAKE2" long-id="FAKE2:0" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="0" CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="35" operation="stop" operation_key="FAKE2-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="37" operation="stop" operation_key="FAKE3_stop_0" internal_operation_key="FAKE3:0_stop_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="7">
|
|
+ <action_set>
|
|
+ <rsc_op id="29" operation="stop" operation_key="FAKE2_stop_0" internal_operation_key="FAKE2:1_stop_0" on_node="c7auto1" on_node_uuid="1">
|
|
+ <primitive id="FAKE2" long-id="FAKE2:1" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="1" CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="35" operation="stop" operation_key="FAKE2-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="39" operation="stop" operation_key="FAKE3_stop_0" internal_operation_key="FAKE3:1_stop_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="8">
|
|
+ <action_set>
|
|
+ <rsc_op id="31" operation="stop" operation_key="FAKE2_stop_0" internal_operation_key="FAKE2:2_stop_0" on_node="c7auto2" on_node_uuid="2">
|
|
+ <primitive id="FAKE2" long-id="FAKE2:2" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="2" CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="35" operation="stop" operation_key="FAKE2-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="41" operation="stop" operation_key="FAKE3_stop_0" internal_operation_key="FAKE3:2_stop_0" on_node="c7auto2" on_node_uuid="2"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="9" priority="1000000">
|
|
+ <action_set>
|
|
+ <pseudo_event id="36" operation="stopped" operation_key="FAKE2-clone_stopped_0">
|
|
+ <attributes CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="27" operation="stop" operation_key="FAKE2_stop_0" internal_operation_key="FAKE2:0_stop_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="29" operation="stop" operation_key="FAKE2_stop_0" internal_operation_key="FAKE2:1_stop_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="31" operation="stop" operation_key="FAKE2_stop_0" internal_operation_key="FAKE2:2_stop_0" on_node="c7auto2" on_node_uuid="2"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <pseudo_event id="35" operation="stop" operation_key="FAKE2-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="10">
|
|
+ <action_set>
|
|
+ <pseudo_event id="35" operation="stop" operation_key="FAKE2-clone_stop_0">
|
|
+ <attributes CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="46" operation="stopped" operation_key="FAKE3-clone_stopped_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="11">
|
|
+ <action_set>
|
|
+ <rsc_op id="37" operation="stop" operation_key="FAKE3_stop_0" internal_operation_key="FAKE3:0_stop_0" on_node="c7auto3" on_node_uuid="3">
|
|
+ <primitive id="FAKE3" long-id="FAKE3:0" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="0" CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="45" operation="stop" operation_key="FAKE3-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="12">
|
|
+ <action_set>
|
|
+ <rsc_op id="39" operation="stop" operation_key="FAKE3_stop_0" internal_operation_key="FAKE3:1_stop_0" on_node="c7auto1" on_node_uuid="1">
|
|
+ <primitive id="FAKE3" long-id="FAKE3:1" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="1" CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="45" operation="stop" operation_key="FAKE3-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="13">
|
|
+ <action_set>
|
|
+ <rsc_op id="41" operation="stop" operation_key="FAKE3_stop_0" internal_operation_key="FAKE3:2_stop_0" on_node="c7auto2" on_node_uuid="2">
|
|
+ <primitive id="FAKE3" long-id="FAKE3:2" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="2" CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="45" operation="stop" operation_key="FAKE3-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="14" priority="1000000">
|
|
+ <action_set>
|
|
+ <pseudo_event id="46" operation="stopped" operation_key="FAKE3-clone_stopped_0">
|
|
+ <attributes CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="37" operation="stop" operation_key="FAKE3_stop_0" internal_operation_key="FAKE3:0_stop_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="39" operation="stop" operation_key="FAKE3_stop_0" internal_operation_key="FAKE3:1_stop_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="41" operation="stop" operation_key="FAKE3_stop_0" internal_operation_key="FAKE3:2_stop_0" on_node="c7auto2" on_node_uuid="2"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <pseudo_event id="45" operation="stop" operation_key="FAKE3-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="15">
|
|
+ <action_set>
|
|
+ <pseudo_event id="45" operation="stop" operation_key="FAKE3-clone_stop_0">
|
|
+ <attributes CRM_meta_clone_max="3" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs/>
|
|
+ </synapse>
|
|
+ <synapse id="16">
|
|
+ <action_set>
|
|
+ <pseudo_event id="12" operation="all_stopped" operation_key="all_stopped">
|
|
+ <attributes />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="19" operation="stop" operation_key="FAKE1_stop_0" internal_operation_key="FAKE1:0_stop_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="22" operation="stop" operation_key="FAKE1_stop_0" internal_operation_key="FAKE1:2_stop_0" on_node="c7auto2" on_node_uuid="2"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="27" operation="stop" operation_key="FAKE2_stop_0" internal_operation_key="FAKE2:0_stop_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="29" operation="stop" operation_key="FAKE2_stop_0" internal_operation_key="FAKE2:1_stop_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="31" operation="stop" operation_key="FAKE2_stop_0" internal_operation_key="FAKE2:2_stop_0" on_node="c7auto2" on_node_uuid="2"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="37" operation="stop" operation_key="FAKE3_stop_0" internal_operation_key="FAKE3:0_stop_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="39" operation="stop" operation_key="FAKE3_stop_0" internal_operation_key="FAKE3:1_stop_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="41" operation="stop" operation_key="FAKE3_stop_0" internal_operation_key="FAKE3:2_stop_0" on_node="c7auto2" on_node_uuid="2"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+</transition_graph>
|
|
diff --git a/pengine/test10/clone_min_interleave_stop_two.scores b/pengine/test10/clone_min_interleave_stop_two.scores
|
|
new file mode 100644
|
|
index 0000000..ee7df92
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_interleave_stop_two.scores
|
|
@@ -0,0 +1,67 @@
|
|
+Allocation scores:
|
|
+clone_color: FAKE1-clone allocation score on c7auto1: 0
|
|
+clone_color: FAKE1-clone allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKE1-clone allocation score on c7auto3: -INFINITY
|
|
+clone_color: FAKE1:0 allocation score on c7auto1: 0
|
|
+clone_color: FAKE1:0 allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKE1:0 allocation score on c7auto3: -INFINITY
|
|
+clone_color: FAKE1:1 allocation score on c7auto1: 1
|
|
+clone_color: FAKE1:1 allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKE1:1 allocation score on c7auto3: -INFINITY
|
|
+clone_color: FAKE1:2 allocation score on c7auto1: 0
|
|
+clone_color: FAKE1:2 allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKE1:2 allocation score on c7auto3: -INFINITY
|
|
+clone_color: FAKE2-clone allocation score on c7auto1: 0
|
|
+clone_color: FAKE2-clone allocation score on c7auto2: 0
|
|
+clone_color: FAKE2-clone allocation score on c7auto3: 0
|
|
+clone_color: FAKE2:0 allocation score on c7auto1: 0
|
|
+clone_color: FAKE2:0 allocation score on c7auto2: 0
|
|
+clone_color: FAKE2:0 allocation score on c7auto3: 1
|
|
+clone_color: FAKE2:1 allocation score on c7auto1: 1
|
|
+clone_color: FAKE2:1 allocation score on c7auto2: 0
|
|
+clone_color: FAKE2:1 allocation score on c7auto3: 0
|
|
+clone_color: FAKE2:2 allocation score on c7auto1: 0
|
|
+clone_color: FAKE2:2 allocation score on c7auto2: 1
|
|
+clone_color: FAKE2:2 allocation score on c7auto3: 0
|
|
+clone_color: FAKE3-clone allocation score on c7auto1: 0
|
|
+clone_color: FAKE3-clone allocation score on c7auto2: 0
|
|
+clone_color: FAKE3-clone allocation score on c7auto3: 0
|
|
+clone_color: FAKE3:0 allocation score on c7auto1: 0
|
|
+clone_color: FAKE3:0 allocation score on c7auto2: 0
|
|
+clone_color: FAKE3:0 allocation score on c7auto3: 1
|
|
+clone_color: FAKE3:1 allocation score on c7auto1: 1
|
|
+clone_color: FAKE3:1 allocation score on c7auto2: 0
|
|
+clone_color: FAKE3:1 allocation score on c7auto3: 0
|
|
+clone_color: FAKE3:2 allocation score on c7auto1: 0
|
|
+clone_color: FAKE3:2 allocation score on c7auto2: 1
|
|
+clone_color: FAKE3:2 allocation score on c7auto3: 0
|
|
+native_color: FAKE1:0 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKE1:0 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKE1:0 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKE1:1 allocation score on c7auto1: 1
|
|
+native_color: FAKE1:1 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKE1:1 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKE1:2 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKE1:2 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKE1:2 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKE2:0 allocation score on c7auto1: 0
|
|
+native_color: FAKE2:0 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKE2:0 allocation score on c7auto3: 1
|
|
+native_color: FAKE2:1 allocation score on c7auto1: 1
|
|
+native_color: FAKE2:1 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKE2:1 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKE2:2 allocation score on c7auto1: 0
|
|
+native_color: FAKE2:2 allocation score on c7auto2: 1
|
|
+native_color: FAKE2:2 allocation score on c7auto3: 0
|
|
+native_color: FAKE3:0 allocation score on c7auto1: 0
|
|
+native_color: FAKE3:0 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKE3:0 allocation score on c7auto3: 1
|
|
+native_color: FAKE3:1 allocation score on c7auto1: 1
|
|
+native_color: FAKE3:1 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKE3:1 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKE3:2 allocation score on c7auto1: 0
|
|
+native_color: FAKE3:2 allocation score on c7auto2: 1
|
|
+native_color: FAKE3:2 allocation score on c7auto3: 0
|
|
+native_color: shooter allocation score on c7auto1: 0
|
|
+native_color: shooter allocation score on c7auto2: 0
|
|
+native_color: shooter allocation score on c7auto3: 0
|
|
diff --git a/pengine/test10/clone_min_interleave_stop_two.summary b/pengine/test10/clone_min_interleave_stop_two.summary
|
|
new file mode 100644
|
|
index 0000000..fb28e0d
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_interleave_stop_two.summary
|
|
@@ -0,0 +1,53 @@
|
|
+
|
|
+Current cluster status:
|
|
+Online: [ c7auto1 c7auto2 c7auto3 ]
|
|
+
|
|
+ shooter (stonith:fence_phd_kvm): Started c7auto1
|
|
+ Clone Set: FAKE1-clone [FAKE1]
|
|
+ Started: [ c7auto1 c7auto2 c7auto3 ]
|
|
+ Clone Set: FAKE2-clone [FAKE2]
|
|
+ Started: [ c7auto1 c7auto2 c7auto3 ]
|
|
+ Clone Set: FAKE3-clone [FAKE3]
|
|
+ Started: [ c7auto1 c7auto2 c7auto3 ]
|
|
+
|
|
+Transition Summary:
|
|
+ * Stop FAKE1:0 (c7auto3)
|
|
+ * Stop FAKE1:2 (c7auto2)
|
|
+ * Stop FAKE2:0 (Started c7auto3)
|
|
+ * Stop FAKE2:1 (Started c7auto1)
|
|
+ * Stop FAKE2:2 (Started c7auto2)
|
|
+ * Stop FAKE3:0 (Started c7auto3)
|
|
+ * Stop FAKE3:1 (Started c7auto1)
|
|
+ * Stop FAKE3:2 (Started c7auto2)
|
|
+
|
|
+Executing cluster transition:
|
|
+ * Pseudo action: FAKE3-clone_stop_0
|
|
+ * Resource action: FAKE3 stop on c7auto3
|
|
+ * Resource action: FAKE3 stop on c7auto1
|
|
+ * Resource action: FAKE3 stop on c7auto2
|
|
+ * Pseudo action: FAKE3-clone_stopped_0
|
|
+ * Pseudo action: FAKE2-clone_stop_0
|
|
+ * Resource action: FAKE2 stop on c7auto3
|
|
+ * Resource action: FAKE2 stop on c7auto1
|
|
+ * Resource action: FAKE2 stop on c7auto2
|
|
+ * Pseudo action: FAKE2-clone_stopped_0
|
|
+ * Pseudo action: FAKE1-clone_stop_0
|
|
+ * Resource action: FAKE1 stop on c7auto3
|
|
+ * Resource action: FAKE1 stop on c7auto2
|
|
+ * Pseudo action: FAKE1-clone_stopped_0
|
|
+ * Pseudo action: FAKE1-clone_start_0
|
|
+ * Pseudo action: all_stopped
|
|
+ * Pseudo action: FAKE1-clone_running_0
|
|
+
|
|
+Revised cluster status:
|
|
+Online: [ c7auto1 c7auto2 c7auto3 ]
|
|
+
|
|
+ shooter (stonith:fence_phd_kvm): Started c7auto1
|
|
+ Clone Set: FAKE1-clone [FAKE1]
|
|
+ Started: [ c7auto1 ]
|
|
+ Stopped: [ c7auto2 c7auto3 ]
|
|
+ Clone Set: FAKE2-clone [FAKE2]
|
|
+ Stopped: [ c7auto1 c7auto2 c7auto3 ]
|
|
+ Clone Set: FAKE3-clone [FAKE3]
|
|
+ Stopped: [ c7auto1 c7auto2 c7auto3 ]
|
|
+
|
|
diff --git a/pengine/test10/clone_min_interleave_stop_two.xml b/pengine/test10/clone_min_interleave_stop_two.xml
|
|
new file mode 100644
|
|
index 0000000..32c2b3b
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_interleave_stop_two.xml
|
|
@@ -0,0 +1,154 @@
|
|
+<cib crm_feature_set="3.0.10" validate-with="pacemaker-2.3" epoch="13" num_updates="0" admin_epoch="0" cib-last-written="Fri Jul 17 11:30:45 2015" update-origin="c7auto1" update-client="cibadmin" update-user="root" have-quorum="1" dc-uuid="3">
|
|
+ <configuration>
|
|
+ <crm_config>
|
|
+ <cluster_property_set id="cib-bootstrap-options">
|
|
+ <nvpair id="cib-bootstrap-options-have-watchdog" name="have-watchdog" value="false"/>
|
|
+ <nvpair id="cib-bootstrap-options-dc-version" name="dc-version" value="1.1.12-ef86b49"/>
|
|
+ <nvpair id="cib-bootstrap-options-cluster-infrastructure" name="cluster-infrastructure" value="corosync"/>
|
|
+ <nvpair id="cib-bootstrap-options-cluster-name" name="cluster-name" value="phd"/>
|
|
+ </cluster_property_set>
|
|
+ </crm_config>
|
|
+ <nodes>
|
|
+ <node id="1" uname="c7auto1"/>
|
|
+ <node id="2" uname="c7auto2"/>
|
|
+ <node id="3" uname="c7auto3"/>
|
|
+ </nodes>
|
|
+ <resources>
|
|
+ <primitive class="stonith" id="shooter" type="fence_phd_kvm">
|
|
+ <instance_attributes id="shooter-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="shooter-monitor-interval-60s" interval="60s" name="monitor"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <clone id="FAKE1-clone">
|
|
+ <primitive class="ocf" id="FAKE1" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKE1-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKE1-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKE1-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKE1-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <meta_attributes id="FAKE1-clone-meta">
|
|
+ <nvpair id="FAKE1-clone-min" name="clone-min" value="2"/>
|
|
+ </meta_attributes>
|
|
+ </clone>
|
|
+ <clone id="FAKE2-clone">
|
|
+ <primitive class="ocf" id="FAKE2" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKE2-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKE2-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKE2-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKE2-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <meta_attributes id="FAKE2-clone-meta">
|
|
+ <nvpair id="FAKE2-interleave" name="interleave" value="true"/>
|
|
+ </meta_attributes>
|
|
+ </clone>
|
|
+ <clone id="FAKE3-clone">
|
|
+ <primitive class="ocf" id="FAKE3" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKE3-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKE3-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKE3-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKE3-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <meta_attributes id="FAKE3-clone-meta">
|
|
+ <nvpair id="FAKE3-interleave" name="interleave" value="true"/>
|
|
+ </meta_attributes>
|
|
+ </clone>
|
|
+ </resources>
|
|
+ <constraints>
|
|
+ <rsc_order first="FAKE1-clone" first-action="start" id="order-FAKE1-clone-FAKE2-clone-mandatory" then="FAKE2-clone" then-action="start"/>
|
|
+ <rsc_order first="FAKE2-clone" first-action="start" id="order-FAKE2-clone-FAKE3-clone-mandatory" then="FAKE3-clone" then-action="start"/>
|
|
+ <rsc_location id="cli-ban-FAKE1-clone-on-c7auto3" rsc="FAKE1-clone" role="Started" node="c7auto3" score="-INFINITY"/>
|
|
+ <rsc_location id="cli-ban-FAKE1-clone-on-c7auto2" rsc="FAKE1-clone" role="Started" node="c7auto2" score="-INFINITY"/>
|
|
+ </constraints>
|
|
+ </configuration>
|
|
+ <status>
|
|
+ <node_state id="3" uname="c7auto3" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="3">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="8:4:7:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:7;8:4:7:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437146780" last-rc-change="1437146780" exec-time="998" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE1" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE1_last_0" operation_key="FAKE1_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="14:5:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;14:5:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="11" rc-code="0" op-status="0" interval="0" last-run="1437147006" last-rc-change="1437147006" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE1_monitor_10000" operation_key="FAKE1_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="15:5:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;15:5:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="12" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147006" exec-time="9" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE2_last_0" operation_key="FAKE2_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="27:6:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;27:6:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="18" rc-code="0" op-status="0" interval="0" last-run="1437147019" last-rc-change="1437147019" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE2_monitor_10000" operation_key="FAKE2_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="28:6:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;28:6:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="19" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147019" exec-time="8" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE3" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE3_last_0" operation_key="FAKE3_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="40:7:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;40:7:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="25" rc-code="0" op-status="0" interval="0" last-run="1437147024" last-rc-change="1437147024" exec-time="9" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE3_monitor_10000" operation_key="FAKE3_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="41:7:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;41:7:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto3" call-id="26" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147024" exec-time="8" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="3">
|
|
+ <instance_attributes id="status-3">
|
|
+ <nvpair id="status-3-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-3-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ <node_state id="1" uname="c7auto1" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="1">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="9:4:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;9:4:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="6" rc-code="0" op-status="0" interval="0" last-run="1437146782" last-rc-change="1437146782" exec-time="5" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="shooter_monitor_60000" operation_key="shooter_monitor_60000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="10:4:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;10:4:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="7" rc-code="0" op-status="0" interval="60000" last-rc-change="1437146783" exec-time="5" queue-time="1" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE1" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE1_last_0" operation_key="FAKE1_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="16:5:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;16:5:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="13" rc-code="0" op-status="0" interval="0" last-run="1437147007" last-rc-change="1437147007" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE1_monitor_10000" operation_key="FAKE1_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="17:5:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;17:5:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="14" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147007" exec-time="6" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE2_last_0" operation_key="FAKE2_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="29:6:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;29:6:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="20" rc-code="0" op-status="0" interval="0" last-run="1437147019" last-rc-change="1437147019" exec-time="7" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE2_monitor_10000" operation_key="FAKE2_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="30:6:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;30:6:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="21" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147019" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE3" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE3_last_0" operation_key="FAKE3_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="42:7:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;42:7:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="27" rc-code="0" op-status="0" interval="0" last-run="1437147024" last-rc-change="1437147024" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE3_monitor_10000" operation_key="FAKE3_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="43:7:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;43:7:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto1" call-id="28" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147024" exec-time="6" queue-time="1" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="1">
|
|
+ <instance_attributes id="status-1">
|
|
+ <nvpair id="status-1-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-1-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ <node_state id="2" uname="c7auto2" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="2">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="6:4:7:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:7;6:4:7:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437146780" last-rc-change="1437146780" exec-time="994" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE1" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE1_last_0" operation_key="FAKE1_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="12:5:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;12:5:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="11" rc-code="0" op-status="0" interval="0" last-run="1437147007" last-rc-change="1437147007" exec-time="6" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE1_monitor_10000" operation_key="FAKE1_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="13:5:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;13:5:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="12" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147007" exec-time="8" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE2_last_0" operation_key="FAKE2_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="25:6:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;25:6:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="18" rc-code="0" op-status="0" interval="0" last-run="1437147019" last-rc-change="1437147019" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE2_monitor_10000" operation_key="FAKE2_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="26:6:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;26:6:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="19" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147019" exec-time="6" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE3" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE3_last_0" operation_key="FAKE3_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="38:7:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;38:7:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="25" rc-code="0" op-status="0" interval="0" last-run="1437147024" last-rc-change="1437147024" exec-time="7" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE3_monitor_10000" operation_key="FAKE3_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="39:7:0:9d56c099-7067-4908-9f99-89a103eff57b" transition-magic="0:0;39:7:0:9d56c099-7067-4908-9f99-89a103eff57b" on_node="c7auto2" call-id="26" rc-code="0" op-status="0" interval="10000" last-rc-change="1437147024" exec-time="8" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="2">
|
|
+ <instance_attributes id="status-2">
|
|
+ <nvpair id="status-2-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-2-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ </status>
|
|
+</cib>
|
|
diff --git a/pengine/test10/clone_min_start_one.dot b/pengine/test10/clone_min_start_one.dot
|
|
new file mode 100644
|
|
index 0000000..3940361
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_start_one.dot
|
|
@@ -0,0 +1,20 @@
|
|
+ digraph "g" {
|
|
+"FAKECLONE-clone_running_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE-clone_start_0" -> "FAKECLONE-clone_running_0" [ style = bold]
|
|
+"FAKECLONE-clone_start_0" -> "FAKECLONE_start_0 c7auto3" [ style = bold]
|
|
+"FAKECLONE-clone_start_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE_monitor_10000 c7auto3" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKECLONE_start_0 c7auto3" -> "FAKECLONE-clone_running_0" [ style = bold]
|
|
+"FAKECLONE_start_0 c7auto3" -> "FAKECLONE_monitor_10000 c7auto3" [ style = bold]
|
|
+"FAKECLONE_start_0 c7auto3" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE_monitor_10000 c7auto4" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE_start_0 c7auto4" -> "FAKE_monitor_10000 c7auto4" [ style = dashed]
|
|
+"FAKE_start_0 c7auto4" [ style=dashed color="red" fontcolor="black"]
|
|
+"all_stopped" [ style=bold color="green" fontcolor="orange"]
|
|
+"shooter_monitor_60000 c7auto3" [ style=bold color="green" fontcolor="black"]
|
|
+"shooter_start_0 c7auto3" -> "shooter_monitor_60000 c7auto3" [ style = bold]
|
|
+"shooter_start_0 c7auto3" [ style=bold color="green" fontcolor="black"]
|
|
+"shooter_stop_0 c7auto1" -> "all_stopped" [ style = bold]
|
|
+"shooter_stop_0 c7auto1" -> "shooter_start_0 c7auto3" [ style = bold]
|
|
+"shooter_stop_0 c7auto1" [ style=bold color="green" fontcolor="black"]
|
|
+}
|
|
diff --git a/pengine/test10/clone_min_start_one.exp b/pengine/test10/clone_min_start_one.exp
|
|
new file mode 100644
|
|
index 0000000..a6868f6
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_start_one.exp
|
|
@@ -0,0 +1,98 @@
|
|
+<transition_graph cluster-delay="60s" stonith-timeout="60s" failed-stop-offset="INFINITY" failed-start-offset="INFINITY" transition_id="0">
|
|
+ <synapse id="0">
|
|
+ <action_set>
|
|
+ <rsc_op id="11" operation="monitor" operation_key="shooter_monitor_60000" on_node="c7auto3" on_node_uuid="3">
|
|
+ <primitive id="shooter" class="stonith" type="fence_phd_kvm"/>
|
|
+ <attributes CRM_meta_interval="60000" CRM_meta_name="monitor" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="10" operation="start" operation_key="shooter_start_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="1">
|
|
+ <action_set>
|
|
+ <rsc_op id="10" operation="start" operation_key="shooter_start_0" on_node="c7auto3" on_node_uuid="3">
|
|
+ <primitive id="shooter" class="stonith" type="fence_phd_kvm"/>
|
|
+ <attributes CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="9" operation="stop" operation_key="shooter_stop_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="2">
|
|
+ <action_set>
|
|
+ <rsc_op id="9" operation="stop" operation_key="shooter_stop_0" on_node="c7auto1" on_node_uuid="1">
|
|
+ <primitive id="shooter" class="stonith" type="fence_phd_kvm"/>
|
|
+ <attributes CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs/>
|
|
+ </synapse>
|
|
+ <synapse id="3">
|
|
+ <action_set>
|
|
+ <rsc_op id="13" operation="monitor" operation_key="FAKECLONE_monitor_10000" internal_operation_key="FAKECLONE:0_monitor_10000" on_node="c7auto3" on_node_uuid="3">
|
|
+ <primitive id="FAKECLONE" long-id="FAKECLONE:0" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="0" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_interval="10000" CRM_meta_name="monitor" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="12" operation="start" operation_key="FAKECLONE_start_0" internal_operation_key="FAKECLONE:0_start_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="4">
|
|
+ <action_set>
|
|
+ <rsc_op id="12" operation="start" operation_key="FAKECLONE_start_0" internal_operation_key="FAKECLONE:0_start_0" on_node="c7auto3" on_node_uuid="3">
|
|
+ <primitive id="FAKECLONE" long-id="FAKECLONE:0" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="0" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="start" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="14" operation="start" operation_key="FAKECLONE-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="5" priority="1000000">
|
|
+ <action_set>
|
|
+ <pseudo_event id="15" operation="running" operation_key="FAKECLONE-clone_running_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="12" operation="start" operation_key="FAKECLONE_start_0" internal_operation_key="FAKECLONE:0_start_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <pseudo_event id="14" operation="start" operation_key="FAKECLONE-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="6">
|
|
+ <action_set>
|
|
+ <pseudo_event id="14" operation="start" operation_key="FAKECLONE-clone_start_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs/>
|
|
+ </synapse>
|
|
+ <synapse id="7">
|
|
+ <action_set>
|
|
+ <pseudo_event id="3" operation="all_stopped" operation_key="all_stopped">
|
|
+ <attributes />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="9" operation="stop" operation_key="shooter_stop_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+</transition_graph>
|
|
diff --git a/pengine/test10/clone_min_start_one.scores b/pengine/test10/clone_min_start_one.scores
|
|
new file mode 100644
|
|
index 0000000..668689e
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_start_one.scores
|
|
@@ -0,0 +1,45 @@
|
|
+Allocation scores:
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKE allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKE allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKE allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKE allocation score on c7auto4: 0
|
|
+native_color: FAKECLONE:0 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE:0 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:0 allocation score on c7auto3: 0
|
|
+native_color: FAKECLONE:0 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto4: -INFINITY
|
|
+native_color: shooter allocation score on c7auto1: 0
|
|
+native_color: shooter allocation score on c7auto2: 0
|
|
+native_color: shooter allocation score on c7auto3: 0
|
|
+native_color: shooter allocation score on c7auto4: 0
|
|
diff --git a/pengine/test10/clone_min_start_one.summary b/pengine/test10/clone_min_start_one.summary
|
|
new file mode 100644
|
|
index 0000000..ee33e01
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_start_one.summary
|
|
@@ -0,0 +1,37 @@
|
|
+
|
|
+Current cluster status:
|
|
+Node c7auto1 (1): standby
|
|
+Node c7auto2 (2): standby
|
|
+Online: [ c7auto3 c7auto4 ]
|
|
+
|
|
+ shooter (stonith:fence_phd_kvm): Started c7auto1
|
|
+ Clone Set: FAKECLONE-clone [FAKECLONE]
|
|
+ Stopped: [ c7auto1 c7auto2 c7auto3 c7auto4 ]
|
|
+ FAKE (ocf::heartbeat:Dummy): Stopped
|
|
+
|
|
+Transition Summary:
|
|
+ * Move shooter (Started c7auto1 -> c7auto3)
|
|
+ * Start FAKECLONE:0 (c7auto3)
|
|
+ * Start FAKE (c7auto4 - blocked)
|
|
+
|
|
+Executing cluster transition:
|
|
+ * Resource action: shooter stop on c7auto1
|
|
+ * Pseudo action: FAKECLONE-clone_start_0
|
|
+ * Pseudo action: all_stopped
|
|
+ * Resource action: shooter start on c7auto3
|
|
+ * Resource action: FAKECLONE start on c7auto3
|
|
+ * Pseudo action: FAKECLONE-clone_running_0
|
|
+ * Resource action: shooter monitor=60000 on c7auto3
|
|
+ * Resource action: FAKECLONE monitor=10000 on c7auto3
|
|
+
|
|
+Revised cluster status:
|
|
+Node c7auto1 (1): standby
|
|
+Node c7auto2 (2): standby
|
|
+Online: [ c7auto3 c7auto4 ]
|
|
+
|
|
+ shooter (stonith:fence_phd_kvm): Started c7auto3
|
|
+ Clone Set: FAKECLONE-clone [FAKECLONE]
|
|
+ Started: [ c7auto3 ]
|
|
+ Stopped: [ c7auto1 c7auto2 c7auto4 ]
|
|
+ FAKE (ocf::heartbeat:Dummy): Stopped
|
|
+
|
|
diff --git a/pengine/test10/clone_min_start_one.xml b/pengine/test10/clone_min_start_one.xml
|
|
new file mode 100644
|
|
index 0000000..dfb9379
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_start_one.xml
|
|
@@ -0,0 +1,155 @@
|
|
+<cib crm_feature_set="3.0.10" validate-with="pacemaker-2.3" epoch="17" num_updates="0" admin_epoch="0" cib-last-written="Thu Jul 16 15:37:54 2015" update-origin="c7auto1" update-client="crm_resource" update-user="root" have-quorum="1" dc-uuid="2">
|
|
+ <configuration>
|
|
+ <crm_config>
|
|
+ <cluster_property_set id="cib-bootstrap-options">
|
|
+ <nvpair id="cib-bootstrap-options-have-watchdog" name="have-watchdog" value="false"/>
|
|
+ <nvpair id="cib-bootstrap-options-dc-version" name="dc-version" value="1.1.12-ef86b49"/>
|
|
+ <nvpair id="cib-bootstrap-options-cluster-infrastructure" name="cluster-infrastructure" value="corosync"/>
|
|
+ <nvpair id="cib-bootstrap-options-cluster-name" name="cluster-name" value="phd"/>
|
|
+ </cluster_property_set>
|
|
+ </crm_config>
|
|
+ <nodes>
|
|
+ <node id="1" uname="c7auto1">
|
|
+ <instance_attributes id="nodes-1">
|
|
+ <nvpair id="nodes-1-standby" name="standby" value="on"/>
|
|
+ </instance_attributes>
|
|
+ </node>
|
|
+ <node id="2" uname="c7auto2">
|
|
+ <instance_attributes id="nodes-2">
|
|
+ <nvpair id="nodes-2-standby" name="standby" value="on"/>
|
|
+ </instance_attributes>
|
|
+ </node>
|
|
+ <node id="3" uname="c7auto3"/>
|
|
+ <node id="4" uname="c7auto4"/>
|
|
+ </nodes>
|
|
+ <resources>
|
|
+ <primitive class="stonith" id="shooter" type="fence_phd_kvm">
|
|
+ <instance_attributes id="shooter-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="shooter-monitor-interval-60s" interval="60s" name="monitor"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <clone id="FAKECLONE-clone">
|
|
+ <primitive class="ocf" id="FAKECLONE" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKECLONE-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKECLONE-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKECLONE-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKECLONE-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <meta_attributes id="FAKECLONE-clone-meta">
|
|
+ <nvpair id="FAKECLONE-clone-min" name="clone-min" value="2"/>
|
|
+ </meta_attributes>
|
|
+ <meta_attributes id="FAKECLONE-clone-meta_attributes"/>
|
|
+ </clone>
|
|
+ <primitive class="ocf" id="FAKE" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKE-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKE-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKE-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKE-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ </resources>
|
|
+ <constraints>
|
|
+ <rsc_location id="location-FAKECLONE-clone-c7auto4--INFINITY" node="c7auto4" rsc="FAKECLONE-clone" score="-INFINITY"/>
|
|
+ <rsc_location id="location-FAKE-c7auto1--INFINITY" node="c7auto1" rsc="FAKE" score="-INFINITY"/>
|
|
+ <rsc_location id="location-FAKE-c7auto2--INFINITY" node="c7auto2" rsc="FAKE" score="-INFINITY"/>
|
|
+ <rsc_location id="location-FAKE-c7auto3--INFINITY" node="c7auto3" rsc="FAKE" score="-INFINITY"/>
|
|
+ <rsc_order first="FAKECLONE-clone" first-action="start" id="order-FAKECLONE-clone-FAKE-mandatory" then="FAKE" then-action="start"/>
|
|
+ </constraints>
|
|
+ </configuration>
|
|
+ <status>
|
|
+ <node_state id="1" uname="c7auto1" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="1">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="11:0:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;11:0:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="6" rc-code="0" op-status="0" interval="0" last-run="1437073991" last-rc-change="1437073991" exec-time="9" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="shooter_monitor_60000" operation_key="shooter_monitor_60000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="9:1:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;9:1:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="7" rc-code="0" op-status="0" interval="60000" last-rc-change="1437073992" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="14:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;14:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="20" rc-code="0" op-status="0" interval="0" last-run="1437075474" last-rc-change="1437075474" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE_monitor_10000" operation_key="FAKECLONE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="21:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;21:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="14" rc-code="0" op-status="0" interval="10000" last-rc-change="1437074829" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE_last_0" operation_key="FAKE_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="8:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;8:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="18" rc-code="7" op-status="0" interval="0" last-run="1437074871" last-rc-change="1437074871" exec-time="7" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="1">
|
|
+ <instance_attributes id="status-1">
|
|
+ <nvpair id="status-1-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-1-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ <node_state id="2" uname="c7auto2" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="2">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="6:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;6:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437073988" last-rc-change="1437073988" exec-time="964" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="15:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;15:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="18" rc-code="0" op-status="0" interval="0" last-run="1437075473" last-rc-change="1437075473" exec-time="13" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE_monitor_10000" operation_key="FAKECLONE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="15:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;15:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="12" rc-code="0" op-status="0" interval="10000" last-rc-change="1437074829" exec-time="10" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE_last_0" operation_key="FAKE_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="10:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;10:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="16" rc-code="7" op-status="0" interval="0" last-run="1437074871" last-rc-change="1437074871" exec-time="10" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="2">
|
|
+ <instance_attributes id="status-2">
|
|
+ <nvpair id="status-2-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-2-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ <node_state id="3" uname="c7auto3" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="3">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="8:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;8:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437073988" last-rc-change="1437073988" exec-time="963" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="16:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;16:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="18" rc-code="0" op-status="0" interval="0" last-run="1437075473" last-rc-change="1437075473" exec-time="12" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE_monitor_10000" operation_key="FAKECLONE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="17:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;17:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="12" rc-code="0" op-status="0" interval="10000" last-rc-change="1437074828" exec-time="10" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE_last_0" operation_key="FAKE_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="12:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;12:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="16" rc-code="7" op-status="0" interval="0" last-run="1437074870" last-rc-change="1437074870" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="3">
|
|
+ <instance_attributes id="status-3">
|
|
+ <nvpair id="status-3-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-3-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ <node_state id="4" uname="c7auto4" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="4">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="10:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;10:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437073988" last-rc-change="1437073988" exec-time="963" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="20:3:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;20:3:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="14" rc-code="0" op-status="0" interval="0" last-run="1437074856" last-rc-change="1437074856" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE_monitor_10000" operation_key="FAKECLONE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="19:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;19:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="12" rc-code="0" op-status="0" interval="10000" last-rc-change="1437074829" exec-time="6" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE_last_0" operation_key="FAKE_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="21:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;21:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="22" rc-code="0" op-status="0" interval="0" last-run="1437075473" last-rc-change="1437075473" exec-time="6" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE_monitor_10000" operation_key="FAKE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="28:4:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;28:4:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="20" rc-code="0" op-status="0" interval="10000" last-rc-change="1437074871" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="4">
|
|
+ <instance_attributes id="status-4">
|
|
+ <nvpair id="status-4-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-4-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ </status>
|
|
+</cib>
|
|
diff --git a/pengine/test10/clone_min_start_two.dot b/pengine/test10/clone_min_start_two.dot
|
|
new file mode 100644
|
|
index 0000000..3fe0062
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_start_two.dot
|
|
@@ -0,0 +1,22 @@
|
|
+ digraph "g" {
|
|
+"FAKECLONE-clone_running_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE-clone_start_0" -> "FAKECLONE-clone_running_0" [ style = bold]
|
|
+"FAKECLONE-clone_start_0" -> "FAKECLONE:1_start_0 c7auto1" [ style = bold]
|
|
+"FAKECLONE-clone_start_0" -> "FAKECLONE_start_0 c7auto3" [ style = bold]
|
|
+"FAKECLONE-clone_start_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE:1_monitor_10000 c7auto1" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKECLONE:1_start_0 c7auto1" -> "FAKECLONE-clone_running_0" [ style = bold]
|
|
+"FAKECLONE:1_start_0 c7auto1" -> "FAKECLONE:1_monitor_10000 c7auto1" [ style = bold]
|
|
+"FAKECLONE:1_start_0 c7auto1" -> "clone-one-or-more:order-FAKECLONE-clone-FAKE-mandatory" [ style = bold]
|
|
+"FAKECLONE:1_start_0 c7auto1" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKECLONE_monitor_10000 c7auto3" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKECLONE_start_0 c7auto3" -> "FAKECLONE-clone_running_0" [ style = bold]
|
|
+"FAKECLONE_start_0 c7auto3" -> "FAKECLONE_monitor_10000 c7auto3" [ style = bold]
|
|
+"FAKECLONE_start_0 c7auto3" -> "clone-one-or-more:order-FAKECLONE-clone-FAKE-mandatory" [ style = bold]
|
|
+"FAKECLONE_start_0 c7auto3" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE_monitor_10000 c7auto4" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE_start_0 c7auto4" -> "FAKE_monitor_10000 c7auto4" [ style = bold]
|
|
+"FAKE_start_0 c7auto4" [ style=bold color="green" fontcolor="black"]
|
|
+"clone-one-or-more:order-FAKECLONE-clone-FAKE-mandatory" -> "FAKE_start_0 c7auto4" [ style = bold]
|
|
+"clone-one-or-more:order-FAKECLONE-clone-FAKE-mandatory" [ style=bold color="green" fontcolor="orange"]
|
|
+}
|
|
diff --git a/pengine/test10/clone_min_start_two.exp b/pengine/test10/clone_min_start_two.exp
|
|
new file mode 100644
|
|
index 0000000..f7a053c
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_start_two.exp
|
|
@@ -0,0 +1,121 @@
|
|
+<transition_graph cluster-delay="60s" stonith-timeout="60s" failed-stop-offset="INFINITY" failed-start-offset="INFINITY" transition_id="0">
|
|
+ <synapse id="0">
|
|
+ <action_set>
|
|
+ <rsc_op id="12" operation="monitor" operation_key="FAKECLONE_monitor_10000" internal_operation_key="FAKECLONE:0_monitor_10000" on_node="c7auto3" on_node_uuid="3">
|
|
+ <primitive id="FAKECLONE" long-id="FAKECLONE:0" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="0" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_interval="10000" CRM_meta_name="monitor" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="11" operation="start" operation_key="FAKECLONE_start_0" internal_operation_key="FAKECLONE:0_start_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="1">
|
|
+ <action_set>
|
|
+ <rsc_op id="11" operation="start" operation_key="FAKECLONE_start_0" internal_operation_key="FAKECLONE:0_start_0" on_node="c7auto3" on_node_uuid="3">
|
|
+ <primitive id="FAKECLONE" long-id="FAKECLONE:0" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="0" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="start" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="15" operation="start" operation_key="FAKECLONE-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="2">
|
|
+ <action_set>
|
|
+ <rsc_op id="14" operation="monitor" operation_key="FAKECLONE:1_monitor_10000" on_node="c7auto1" on_node_uuid="1">
|
|
+ <primitive id="FAKECLONE" long-id="FAKECLONE:1" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="1" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_interval="10000" CRM_meta_name="monitor" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="13" operation="start" operation_key="FAKECLONE:1_start_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="3">
|
|
+ <action_set>
|
|
+ <rsc_op id="13" operation="start" operation_key="FAKECLONE:1_start_0" on_node="c7auto1" on_node_uuid="1">
|
|
+ <primitive id="FAKECLONE" long-id="FAKECLONE:1" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="1" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="start" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="15" operation="start" operation_key="FAKECLONE-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="4" priority="1000000">
|
|
+ <action_set>
|
|
+ <pseudo_event id="16" operation="running" operation_key="FAKECLONE-clone_running_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="11" operation="start" operation_key="FAKECLONE_start_0" internal_operation_key="FAKECLONE:0_start_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="13" operation="start" operation_key="FAKECLONE:1_start_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <pseudo_event id="15" operation="start" operation_key="FAKECLONE-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="5">
|
|
+ <action_set>
|
|
+ <pseudo_event id="15" operation="start" operation_key="FAKECLONE-clone_start_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs/>
|
|
+ </synapse>
|
|
+ <synapse id="6">
|
|
+ <action_set>
|
|
+ <rsc_op id="20" operation="monitor" operation_key="FAKE_monitor_10000" on_node="c7auto4" on_node_uuid="4">
|
|
+ <primitive id="FAKE" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_interval="10000" CRM_meta_name="monitor" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="19" operation="start" operation_key="FAKE_start_0" on_node="c7auto4" on_node_uuid="4"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="7">
|
|
+ <action_set>
|
|
+ <rsc_op id="19" operation="start" operation_key="FAKE_start_0" on_node="c7auto4" on_node_uuid="4">
|
|
+ <primitive id="FAKE" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_name="start" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="2" operation="clone-one-or-more:order-FAKECLONE-clone-FAKE-mandatory" operation_key="clone-one-or-more:order-FAKECLONE-clone-FAKE-mandatory"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="8">
|
|
+ <action_set>
|
|
+ <pseudo_event id="2" operation="clone-one-or-more:order-FAKECLONE-clone-FAKE-mandatory" operation_key="clone-one-or-more:order-FAKECLONE-clone-FAKE-mandatory">
|
|
+ <attributes />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="11" operation="start" operation_key="FAKECLONE_start_0" internal_operation_key="FAKECLONE:0_start_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="13" operation="start" operation_key="FAKECLONE:1_start_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+</transition_graph>
|
|
diff --git a/pengine/test10/clone_min_start_two.scores b/pengine/test10/clone_min_start_two.scores
|
|
new file mode 100644
|
|
index 0000000..b3bcac0
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_start_two.scores
|
|
@@ -0,0 +1,45 @@
|
|
+Allocation scores:
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKE allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKE allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKE allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKE allocation score on c7auto4: 0
|
|
+native_color: FAKECLONE:0 allocation score on c7auto1: 0
|
|
+native_color: FAKECLONE:0 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:0 allocation score on c7auto3: 0
|
|
+native_color: FAKECLONE:0 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto1: 0
|
|
+native_color: FAKECLONE:1 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto4: -INFINITY
|
|
+native_color: shooter allocation score on c7auto1: 0
|
|
+native_color: shooter allocation score on c7auto2: 0
|
|
+native_color: shooter allocation score on c7auto3: 0
|
|
+native_color: shooter allocation score on c7auto4: 0
|
|
diff --git a/pengine/test10/clone_min_start_two.summary b/pengine/test10/clone_min_start_two.summary
|
|
new file mode 100644
|
|
index 0000000..f0c649c
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_start_two.summary
|
|
@@ -0,0 +1,36 @@
|
|
+
|
|
+Current cluster status:
|
|
+Node c7auto2 (2): standby
|
|
+Online: [ c7auto1 c7auto3 c7auto4 ]
|
|
+
|
|
+ shooter (stonith:fence_phd_kvm): Started c7auto1
|
|
+ Clone Set: FAKECLONE-clone [FAKECLONE]
|
|
+ Stopped: [ c7auto1 c7auto2 c7auto3 c7auto4 ]
|
|
+ FAKE (ocf::heartbeat:Dummy): Stopped
|
|
+
|
|
+Transition Summary:
|
|
+ * Start FAKECLONE:0 (c7auto3)
|
|
+ * Start FAKECLONE:1 (c7auto1)
|
|
+ * Start FAKE (c7auto4)
|
|
+
|
|
+Executing cluster transition:
|
|
+ * Pseudo action: FAKECLONE-clone_start_0
|
|
+ * Resource action: FAKECLONE start on c7auto3
|
|
+ * Resource action: FAKECLONE start on c7auto1
|
|
+ * Pseudo action: FAKECLONE-clone_running_0
|
|
+ * Pseudo action: clone-one-or-more:order-FAKECLONE-clone-FAKE-mandatory
|
|
+ * Resource action: FAKECLONE monitor=10000 on c7auto3
|
|
+ * Resource action: FAKECLONE monitor=10000 on c7auto1
|
|
+ * Resource action: FAKE start on c7auto4
|
|
+ * Resource action: FAKE monitor=10000 on c7auto4
|
|
+
|
|
+Revised cluster status:
|
|
+Node c7auto2 (2): standby
|
|
+Online: [ c7auto1 c7auto3 c7auto4 ]
|
|
+
|
|
+ shooter (stonith:fence_phd_kvm): Started c7auto1
|
|
+ Clone Set: FAKECLONE-clone [FAKECLONE]
|
|
+ Started: [ c7auto1 c7auto3 ]
|
|
+ Stopped: [ c7auto2 c7auto4 ]
|
|
+ FAKE (ocf::heartbeat:Dummy): Started c7auto4
|
|
+
|
|
diff --git a/pengine/test10/clone_min_start_two.xml b/pengine/test10/clone_min_start_two.xml
|
|
new file mode 100644
|
|
index 0000000..ae84425
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_start_two.xml
|
|
@@ -0,0 +1,153 @@
|
|
+<cib crm_feature_set="3.0.10" validate-with="pacemaker-2.3" epoch="18" num_updates="0" admin_epoch="0" cib-last-written="Thu Jul 16 15:37:54 2015" update-origin="c7auto1" update-client="crm_resource" update-user="root" have-quorum="1" dc-uuid="2">
|
|
+ <configuration>
|
|
+ <crm_config>
|
|
+ <cluster_property_set id="cib-bootstrap-options">
|
|
+ <nvpair id="cib-bootstrap-options-have-watchdog" name="have-watchdog" value="false"/>
|
|
+ <nvpair id="cib-bootstrap-options-dc-version" name="dc-version" value="1.1.12-ef86b49"/>
|
|
+ <nvpair id="cib-bootstrap-options-cluster-infrastructure" name="cluster-infrastructure" value="corosync"/>
|
|
+ <nvpair id="cib-bootstrap-options-cluster-name" name="cluster-name" value="phd"/>
|
|
+ </cluster_property_set>
|
|
+ </crm_config>
|
|
+ <nodes>
|
|
+ <node id="1" uname="c7auto1">
|
|
+ <instance_attributes id="nodes-1"/>
|
|
+ </node>
|
|
+ <node id="2" uname="c7auto2">
|
|
+ <instance_attributes id="nodes-2">
|
|
+ <nvpair id="nodes-2-standby" name="standby" value="on"/>
|
|
+ </instance_attributes>
|
|
+ </node>
|
|
+ <node id="3" uname="c7auto3"/>
|
|
+ <node id="4" uname="c7auto4"/>
|
|
+ </nodes>
|
|
+ <resources>
|
|
+ <primitive class="stonith" id="shooter" type="fence_phd_kvm">
|
|
+ <instance_attributes id="shooter-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="shooter-monitor-interval-60s" interval="60s" name="monitor"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <clone id="FAKECLONE-clone">
|
|
+ <primitive class="ocf" id="FAKECLONE" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKECLONE-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKECLONE-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKECLONE-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKECLONE-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <meta_attributes id="FAKECLONE-clone-meta">
|
|
+ <nvpair id="FAKECLONE-clone-min" name="clone-min" value="2"/>
|
|
+ </meta_attributes>
|
|
+ <meta_attributes id="FAKECLONE-clone-meta_attributes"/>
|
|
+ </clone>
|
|
+ <primitive class="ocf" id="FAKE" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKE-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKE-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKE-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKE-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ </resources>
|
|
+ <constraints>
|
|
+ <rsc_location id="location-FAKECLONE-clone-c7auto4--INFINITY" node="c7auto4" rsc="FAKECLONE-clone" score="-INFINITY"/>
|
|
+ <rsc_location id="location-FAKE-c7auto1--INFINITY" node="c7auto1" rsc="FAKE" score="-INFINITY"/>
|
|
+ <rsc_location id="location-FAKE-c7auto2--INFINITY" node="c7auto2" rsc="FAKE" score="-INFINITY"/>
|
|
+ <rsc_location id="location-FAKE-c7auto3--INFINITY" node="c7auto3" rsc="FAKE" score="-INFINITY"/>
|
|
+ <rsc_order first="FAKECLONE-clone" first-action="start" id="order-FAKECLONE-clone-FAKE-mandatory" then="FAKE" then-action="start"/>
|
|
+ </constraints>
|
|
+ </configuration>
|
|
+ <status>
|
|
+ <node_state id="1" uname="c7auto1" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="1">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="11:0:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;11:0:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="6" rc-code="0" op-status="0" interval="0" last-run="1437073991" last-rc-change="1437073991" exec-time="9" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="shooter_monitor_60000" operation_key="shooter_monitor_60000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="9:1:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;9:1:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="7" rc-code="0" op-status="0" interval="60000" last-rc-change="1437073992" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="14:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;14:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="20" rc-code="0" op-status="0" interval="0" last-run="1437075474" last-rc-change="1437075474" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE_monitor_10000" operation_key="FAKECLONE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="21:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;21:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="14" rc-code="0" op-status="0" interval="10000" last-rc-change="1437074829" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE_last_0" operation_key="FAKE_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="8:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;8:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="18" rc-code="7" op-status="0" interval="0" last-run="1437074871" last-rc-change="1437074871" exec-time="7" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="1">
|
|
+ <instance_attributes id="status-1">
|
|
+ <nvpair id="status-1-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-1-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ <node_state id="2" uname="c7auto2" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="2">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="6:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;6:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437073988" last-rc-change="1437073988" exec-time="964" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="15:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;15:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="18" rc-code="0" op-status="0" interval="0" last-run="1437075473" last-rc-change="1437075473" exec-time="13" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE_monitor_10000" operation_key="FAKECLONE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="15:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;15:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="12" rc-code="0" op-status="0" interval="10000" last-rc-change="1437074829" exec-time="10" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE_last_0" operation_key="FAKE_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="10:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;10:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="16" rc-code="7" op-status="0" interval="0" last-run="1437074871" last-rc-change="1437074871" exec-time="10" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="2">
|
|
+ <instance_attributes id="status-2">
|
|
+ <nvpair id="status-2-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-2-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ <node_state id="3" uname="c7auto3" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="3">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="8:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;8:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437073988" last-rc-change="1437073988" exec-time="963" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="16:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;16:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="18" rc-code="0" op-status="0" interval="0" last-run="1437075473" last-rc-change="1437075473" exec-time="12" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE_monitor_10000" operation_key="FAKECLONE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="17:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;17:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="12" rc-code="0" op-status="0" interval="10000" last-rc-change="1437074828" exec-time="10" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE_last_0" operation_key="FAKE_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="12:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;12:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="16" rc-code="7" op-status="0" interval="0" last-run="1437074870" last-rc-change="1437074870" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="3">
|
|
+ <instance_attributes id="status-3">
|
|
+ <nvpair id="status-3-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-3-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ <node_state id="4" uname="c7auto4" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="4">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="10:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;10:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437073988" last-rc-change="1437073988" exec-time="963" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="20:3:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;20:3:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="14" rc-code="0" op-status="0" interval="0" last-run="1437074856" last-rc-change="1437074856" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE_monitor_10000" operation_key="FAKECLONE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="19:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;19:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="12" rc-code="0" op-status="0" interval="10000" last-rc-change="1437074829" exec-time="6" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE_last_0" operation_key="FAKE_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="21:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;21:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="22" rc-code="0" op-status="0" interval="0" last-run="1437075473" last-rc-change="1437075473" exec-time="6" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE_monitor_10000" operation_key="FAKE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="28:4:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;28:4:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="20" rc-code="0" op-status="0" interval="10000" last-rc-change="1437074871" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="4">
|
|
+ <instance_attributes id="status-4">
|
|
+ <nvpair id="status-4-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-4-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ </status>
|
|
+</cib>
|
|
diff --git a/pengine/test10/clone_min_stop_all.dot b/pengine/test10/clone_min_stop_all.dot
|
|
new file mode 100644
|
|
index 0000000..254e889
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_stop_all.dot
|
|
@@ -0,0 +1,41 @@
|
|
+ digraph "g" {
|
|
+"FAKECLONE-clone_running_0" [ style=dashed color="red" fontcolor="orange"]
|
|
+"FAKECLONE-clone_start_0" -> "FAKECLONE-clone_running_0" [ style = dashed]
|
|
+"FAKECLONE-clone_start_0" -> "FAKECLONE_start_0 <none>" [ style = dashed]
|
|
+"FAKECLONE-clone_start_0" [ style=dashed color="red" fontcolor="orange"]
|
|
+"FAKECLONE-clone_stop_0" -> "FAKECLONE-clone_stopped_0" [ style = bold]
|
|
+"FAKECLONE-clone_stop_0" -> "FAKECLONE_stop_0 c7auto1" [ style = bold]
|
|
+"FAKECLONE-clone_stop_0" -> "FAKECLONE_stop_0 c7auto2" [ style = bold]
|
|
+"FAKECLONE-clone_stop_0" -> "FAKECLONE_stop_0 c7auto3" [ style = bold]
|
|
+"FAKECLONE-clone_stop_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE-clone_stopped_0" -> "FAKECLONE-clone_start_0" [ style = dashed]
|
|
+"FAKECLONE-clone_stopped_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE_start_0 <none>" -> "FAKECLONE-clone_running_0" [ style = dashed]
|
|
+"FAKECLONE_start_0 <none>" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKECLONE_stop_0 c7auto1" -> "FAKECLONE-clone_stopped_0" [ style = bold]
|
|
+"FAKECLONE_stop_0 c7auto1" -> "FAKECLONE_start_0 <none>" [ style = dashed]
|
|
+"FAKECLONE_stop_0 c7auto1" -> "all_stopped" [ style = bold]
|
|
+"FAKECLONE_stop_0 c7auto1" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKECLONE_stop_0 c7auto2" -> "FAKECLONE-clone_stopped_0" [ style = bold]
|
|
+"FAKECLONE_stop_0 c7auto2" -> "FAKECLONE_start_0 <none>" [ style = dashed]
|
|
+"FAKECLONE_stop_0 c7auto2" -> "all_stopped" [ style = bold]
|
|
+"FAKECLONE_stop_0 c7auto2" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKECLONE_stop_0 c7auto3" -> "FAKECLONE-clone_stopped_0" [ style = bold]
|
|
+"FAKECLONE_stop_0 c7auto3" -> "FAKECLONE_start_0 <none>" [ style = dashed]
|
|
+"FAKECLONE_stop_0 c7auto3" -> "all_stopped" [ style = bold]
|
|
+"FAKECLONE_stop_0 c7auto3" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE_monitor_10000 c7auto4" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE_start_0 c7auto4" -> "FAKE_monitor_10000 c7auto4" [ style = dashed]
|
|
+"FAKE_start_0 c7auto4" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE_stop_0 c7auto4" -> "FAKECLONE-clone_stop_0" [ style = bold]
|
|
+"FAKE_stop_0 c7auto4" -> "FAKE_start_0 c7auto4" [ style = dashed]
|
|
+"FAKE_stop_0 c7auto4" -> "all_stopped" [ style = bold]
|
|
+"FAKE_stop_0 c7auto4" [ style=bold color="green" fontcolor="black"]
|
|
+"all_stopped" [ style=bold color="green" fontcolor="orange"]
|
|
+"shooter_monitor_60000 c7auto4" [ style=bold color="green" fontcolor="black"]
|
|
+"shooter_start_0 c7auto4" -> "shooter_monitor_60000 c7auto4" [ style = bold]
|
|
+"shooter_start_0 c7auto4" [ style=bold color="green" fontcolor="black"]
|
|
+"shooter_stop_0 c7auto1" -> "all_stopped" [ style = bold]
|
|
+"shooter_stop_0 c7auto1" -> "shooter_start_0 c7auto4" [ style = bold]
|
|
+"shooter_stop_0 c7auto1" [ style=bold color="green" fontcolor="black"]
|
|
+}
|
|
diff --git a/pengine/test10/clone_min_stop_all.exp b/pengine/test10/clone_min_stop_all.exp
|
|
new file mode 100644
|
|
index 0000000..1b8c9ce
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_stop_all.exp
|
|
@@ -0,0 +1,142 @@
|
|
+<transition_graph cluster-delay="60s" stonith-timeout="60s" failed-stop-offset="INFINITY" failed-start-offset="INFINITY" transition_id="0">
|
|
+ <synapse id="0">
|
|
+ <action_set>
|
|
+ <rsc_op id="15" operation="monitor" operation_key="shooter_monitor_60000" on_node="c7auto4" on_node_uuid="4">
|
|
+ <primitive id="shooter" class="stonith" type="fence_phd_kvm"/>
|
|
+ <attributes CRM_meta_interval="60000" CRM_meta_name="monitor" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="14" operation="start" operation_key="shooter_start_0" on_node="c7auto4" on_node_uuid="4"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="1">
|
|
+ <action_set>
|
|
+ <rsc_op id="14" operation="start" operation_key="shooter_start_0" on_node="c7auto4" on_node_uuid="4">
|
|
+ <primitive id="shooter" class="stonith" type="fence_phd_kvm"/>
|
|
+ <attributes CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="13" operation="stop" operation_key="shooter_stop_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="2">
|
|
+ <action_set>
|
|
+ <rsc_op id="13" operation="stop" operation_key="shooter_stop_0" on_node="c7auto1" on_node_uuid="1">
|
|
+ <primitive id="shooter" class="stonith" type="fence_phd_kvm"/>
|
|
+ <attributes CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs/>
|
|
+ </synapse>
|
|
+ <synapse id="3">
|
|
+ <action_set>
|
|
+ <rsc_op id="16" operation="stop" operation_key="FAKECLONE_stop_0" internal_operation_key="FAKECLONE:0_stop_0" on_node="c7auto1" on_node_uuid="1">
|
|
+ <primitive id="FAKECLONE" long-id="FAKECLONE:0" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="0" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="21" operation="stop" operation_key="FAKECLONE-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="4">
|
|
+ <action_set>
|
|
+ <rsc_op id="17" operation="stop" operation_key="FAKECLONE_stop_0" internal_operation_key="FAKECLONE:1_stop_0" on_node="c7auto2" on_node_uuid="2">
|
|
+ <primitive id="FAKECLONE" long-id="FAKECLONE:1" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="1" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="21" operation="stop" operation_key="FAKECLONE-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="5">
|
|
+ <action_set>
|
|
+ <rsc_op id="18" operation="stop" operation_key="FAKECLONE_stop_0" internal_operation_key="FAKECLONE:2_stop_0" on_node="c7auto3" on_node_uuid="3">
|
|
+ <primitive id="FAKECLONE" long-id="FAKECLONE:2" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="2" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="21" operation="stop" operation_key="FAKECLONE-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="6" priority="1000000">
|
|
+ <action_set>
|
|
+ <pseudo_event id="22" operation="stopped" operation_key="FAKECLONE-clone_stopped_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="16" operation="stop" operation_key="FAKECLONE_stop_0" internal_operation_key="FAKECLONE:0_stop_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="17" operation="stop" operation_key="FAKECLONE_stop_0" internal_operation_key="FAKECLONE:1_stop_0" on_node="c7auto2" on_node_uuid="2"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="18" operation="stop" operation_key="FAKECLONE_stop_0" internal_operation_key="FAKECLONE:2_stop_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <pseudo_event id="21" operation="stop" operation_key="FAKECLONE-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="7">
|
|
+ <action_set>
|
|
+ <pseudo_event id="21" operation="stop" operation_key="FAKECLONE-clone_stop_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="23" operation="stop" operation_key="FAKE_stop_0" on_node="c7auto4" on_node_uuid="4"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="8">
|
|
+ <action_set>
|
|
+ <rsc_op id="23" operation="stop" operation_key="FAKE_stop_0" on_node="c7auto4" on_node_uuid="4">
|
|
+ <primitive id="FAKE" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_name="stop" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs/>
|
|
+ </synapse>
|
|
+ <synapse id="9">
|
|
+ <action_set>
|
|
+ <pseudo_event id="7" operation="all_stopped" operation_key="all_stopped">
|
|
+ <attributes />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="13" operation="stop" operation_key="shooter_stop_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="16" operation="stop" operation_key="FAKECLONE_stop_0" internal_operation_key="FAKECLONE:0_stop_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="17" operation="stop" operation_key="FAKECLONE_stop_0" internal_operation_key="FAKECLONE:1_stop_0" on_node="c7auto2" on_node_uuid="2"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="18" operation="stop" operation_key="FAKECLONE_stop_0" internal_operation_key="FAKECLONE:2_stop_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="23" operation="stop" operation_key="FAKE_stop_0" on_node="c7auto4" on_node_uuid="4"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+</transition_graph>
|
|
diff --git a/pengine/test10/clone_min_stop_all.scores b/pengine/test10/clone_min_stop_all.scores
|
|
new file mode 100644
|
|
index 0000000..0bcbb1f
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_stop_all.scores
|
|
@@ -0,0 +1,45 @@
|
|
+Allocation scores:
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto1: 1
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto2: 1
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto3: 1
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKE allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKE allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKE allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKE allocation score on c7auto4: 0
|
|
+native_color: FAKECLONE:0 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE:0 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:0 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:0 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto4: -INFINITY
|
|
+native_color: shooter allocation score on c7auto1: 0
|
|
+native_color: shooter allocation score on c7auto2: 0
|
|
+native_color: shooter allocation score on c7auto3: 0
|
|
+native_color: shooter allocation score on c7auto4: 0
|
|
diff --git a/pengine/test10/clone_min_stop_all.summary b/pengine/test10/clone_min_stop_all.summary
|
|
new file mode 100644
|
|
index 0000000..eb2944f
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_stop_all.summary
|
|
@@ -0,0 +1,43 @@
|
|
+
|
|
+Current cluster status:
|
|
+Node c7auto1 (1): standby
|
|
+Node c7auto2 (2): standby
|
|
+Node c7auto3 (3): standby
|
|
+Online: [ c7auto4 ]
|
|
+
|
|
+ shooter (stonith:fence_phd_kvm): Started c7auto1
|
|
+ Clone Set: FAKECLONE-clone [FAKECLONE]
|
|
+ Started: [ c7auto1 c7auto2 c7auto3 ]
|
|
+ Stopped: [ c7auto4 ]
|
|
+ FAKE (ocf::heartbeat:Dummy): Started c7auto4
|
|
+
|
|
+Transition Summary:
|
|
+ * Move shooter (Started c7auto1 -> c7auto4)
|
|
+ * Stop FAKECLONE:0 (c7auto1)
|
|
+ * Stop FAKECLONE:1 (c7auto2)
|
|
+ * Stop FAKECLONE:2 (c7auto3)
|
|
+ * Stop FAKE (Started c7auto4)
|
|
+
|
|
+Executing cluster transition:
|
|
+ * Resource action: shooter stop on c7auto1
|
|
+ * Resource action: FAKE stop on c7auto4
|
|
+ * Resource action: shooter start on c7auto4
|
|
+ * Pseudo action: FAKECLONE-clone_stop_0
|
|
+ * Resource action: shooter monitor=60000 on c7auto4
|
|
+ * Resource action: FAKECLONE stop on c7auto1
|
|
+ * Resource action: FAKECLONE stop on c7auto2
|
|
+ * Resource action: FAKECLONE stop on c7auto3
|
|
+ * Pseudo action: FAKECLONE-clone_stopped_0
|
|
+ * Pseudo action: all_stopped
|
|
+
|
|
+Revised cluster status:
|
|
+Node c7auto1 (1): standby
|
|
+Node c7auto2 (2): standby
|
|
+Node c7auto3 (3): standby
|
|
+Online: [ c7auto4 ]
|
|
+
|
|
+ shooter (stonith:fence_phd_kvm): Started c7auto4
|
|
+ Clone Set: FAKECLONE-clone [FAKECLONE]
|
|
+ Stopped: [ c7auto1 c7auto2 c7auto3 c7auto4 ]
|
|
+ FAKE (ocf::heartbeat:Dummy): Stopped
|
|
+
|
|
diff --git a/pengine/test10/clone_min_stop_all.xml b/pengine/test10/clone_min_stop_all.xml
|
|
new file mode 100644
|
|
index 0000000..70e8a96
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_stop_all.xml
|
|
@@ -0,0 +1,158 @@
|
|
+<cib crm_feature_set="3.0.10" validate-with="pacemaker-2.3" epoch="18" num_updates="0" admin_epoch="0" cib-last-written="Thu Jul 16 15:28:22 2015" update-origin="c7auto1" update-client="cibadmin" update-user="root" have-quorum="1" dc-uuid="2">
|
|
+ <configuration>
|
|
+ <crm_config>
|
|
+ <cluster_property_set id="cib-bootstrap-options">
|
|
+ <nvpair id="cib-bootstrap-options-have-watchdog" name="have-watchdog" value="false"/>
|
|
+ <nvpair id="cib-bootstrap-options-dc-version" name="dc-version" value="1.1.12-ef86b49"/>
|
|
+ <nvpair id="cib-bootstrap-options-cluster-infrastructure" name="cluster-infrastructure" value="corosync"/>
|
|
+ <nvpair id="cib-bootstrap-options-cluster-name" name="cluster-name" value="phd"/>
|
|
+ </cluster_property_set>
|
|
+ </crm_config>
|
|
+ <nodes>
|
|
+ <node id="1" uname="c7auto1">
|
|
+ <instance_attributes id="nodes-1">
|
|
+ <nvpair id="nodes-1-standby" name="standby" value="on"/>
|
|
+ </instance_attributes>
|
|
+ </node>
|
|
+ <node id="2" uname="c7auto2">
|
|
+ <instance_attributes id="nodes-2">
|
|
+ <nvpair id="nodes-2-standby" name="standby" value="on"/>
|
|
+ </instance_attributes>
|
|
+ </node>
|
|
+ <node id="3" uname="c7auto3">
|
|
+ <instance_attributes id="nodes-3">
|
|
+ <nvpair id="nodes-3-standby" name="standby" value="on"/>
|
|
+ </instance_attributes>
|
|
+ </node>
|
|
+ <node id="4" uname="c7auto4"/>
|
|
+ </nodes>
|
|
+ <resources>
|
|
+ <primitive class="stonith" id="shooter" type="fence_phd_kvm">
|
|
+ <instance_attributes id="shooter-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="shooter-monitor-interval-60s" interval="60s" name="monitor"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <clone id="FAKECLONE-clone">
|
|
+ <primitive class="ocf" id="FAKECLONE" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKECLONE-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKECLONE-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKECLONE-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKECLONE-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <meta_attributes id="FAKECLONE-clone-meta">
|
|
+ <nvpair id="FAKECLONE-clone-min" name="clone-min" value="2"/>
|
|
+ </meta_attributes>
|
|
+ </clone>
|
|
+ <primitive class="ocf" id="FAKE" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKE-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKE-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKE-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKE-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ </resources>
|
|
+ <constraints>
|
|
+ <rsc_location id="location-FAKECLONE-clone-c7auto4--INFINITY" node="c7auto4" rsc="FAKECLONE-clone" score="-INFINITY"/>
|
|
+ <rsc_location id="location-FAKE-c7auto1--INFINITY" node="c7auto1" rsc="FAKE" score="-INFINITY"/>
|
|
+ <rsc_location id="location-FAKE-c7auto2--INFINITY" node="c7auto2" rsc="FAKE" score="-INFINITY"/>
|
|
+ <rsc_location id="location-FAKE-c7auto3--INFINITY" node="c7auto3" rsc="FAKE" score="-INFINITY"/>
|
|
+ <rsc_order first="FAKECLONE-clone" first-action="start" id="order-FAKECLONE-clone-FAKE-mandatory" then="FAKE" then-action="start"/>
|
|
+ </constraints>
|
|
+ </configuration>
|
|
+ <status>
|
|
+ <node_state id="1" uname="c7auto1" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="1">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="11:0:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;11:0:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="6" rc-code="0" op-status="0" interval="0" last-run="1437073991" last-rc-change="1437073991" exec-time="9" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="shooter_monitor_60000" operation_key="shooter_monitor_60000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="9:1:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;9:1:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="7" rc-code="0" op-status="0" interval="60000" last-rc-change="1437073992" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="20:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;20:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="13" rc-code="0" op-status="0" interval="0" last-run="1437074829" last-rc-change="1437074829" exec-time="7" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE_monitor_10000" operation_key="FAKECLONE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="21:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;21:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="14" rc-code="0" op-status="0" interval="10000" last-rc-change="1437074829" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE_last_0" operation_key="FAKE_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="8:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;8:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="18" rc-code="7" op-status="0" interval="0" last-run="1437074871" last-rc-change="1437074871" exec-time="7" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="1">
|
|
+ <instance_attributes id="status-1">
|
|
+ <nvpair id="status-1-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-1-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ <node_state id="2" uname="c7auto2" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="2">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="6:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;6:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437073988" last-rc-change="1437073988" exec-time="964" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="14:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;14:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="11" rc-code="0" op-status="0" interval="0" last-run="1437074829" last-rc-change="1437074829" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE_monitor_10000" operation_key="FAKECLONE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="15:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;15:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="12" rc-code="0" op-status="0" interval="10000" last-rc-change="1437074829" exec-time="10" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE_last_0" operation_key="FAKE_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="10:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;10:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="16" rc-code="7" op-status="0" interval="0" last-run="1437074871" last-rc-change="1437074871" exec-time="10" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="2">
|
|
+ <instance_attributes id="status-2">
|
|
+ <nvpair id="status-2-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-2-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ <node_state id="3" uname="c7auto3" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="3">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="8:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;8:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437073988" last-rc-change="1437073988" exec-time="963" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="16:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;16:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="11" rc-code="0" op-status="0" interval="0" last-run="1437074828" last-rc-change="1437074828" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE_monitor_10000" operation_key="FAKECLONE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="17:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;17:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="12" rc-code="0" op-status="0" interval="10000" last-rc-change="1437074828" exec-time="10" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE_last_0" operation_key="FAKE_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="12:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;12:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="16" rc-code="7" op-status="0" interval="0" last-run="1437074870" last-rc-change="1437074870" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="3">
|
|
+ <instance_attributes id="status-3">
|
|
+ <nvpair id="status-3-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-3-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ <node_state id="4" uname="c7auto4" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="4">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="10:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;10:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437073988" last-rc-change="1437073988" exec-time="963" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="20:3:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;20:3:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="14" rc-code="0" op-status="0" interval="0" last-run="1437074856" last-rc-change="1437074856" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE_monitor_10000" operation_key="FAKECLONE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="19:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;19:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="12" rc-code="0" op-status="0" interval="10000" last-rc-change="1437074829" exec-time="6" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE_last_0" operation_key="FAKE_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="27:4:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;27:4:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="19" rc-code="0" op-status="0" interval="0" last-run="1437074871" last-rc-change="1437074871" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE_monitor_10000" operation_key="FAKE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="28:4:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;28:4:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="20" rc-code="0" op-status="0" interval="10000" last-rc-change="1437074871" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="4">
|
|
+ <instance_attributes id="status-4">
|
|
+ <nvpair id="status-4-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-4-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ </status>
|
|
+</cib>
|
|
diff --git a/pengine/test10/clone_min_stop_one.dot b/pengine/test10/clone_min_stop_one.dot
|
|
new file mode 100644
|
|
index 0000000..19f84cc
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_stop_one.dot
|
|
@@ -0,0 +1,18 @@
|
|
+ digraph "g" {
|
|
+"FAKECLONE-clone_running_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE-clone_start_0" -> "FAKECLONE-clone_running_0" [ style = bold]
|
|
+"FAKECLONE-clone_start_0" -> "FAKECLONE_start_0 <none>" [ style = dashed]
|
|
+"FAKECLONE-clone_start_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE-clone_stop_0" -> "FAKECLONE-clone_stopped_0" [ style = bold]
|
|
+"FAKECLONE-clone_stop_0" -> "FAKECLONE_stop_0 c7auto2" [ style = bold]
|
|
+"FAKECLONE-clone_stop_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE-clone_stopped_0" -> "FAKECLONE-clone_start_0" [ style = bold]
|
|
+"FAKECLONE-clone_stopped_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE_start_0 <none>" -> "FAKECLONE-clone_running_0" [ style = dashed]
|
|
+"FAKECLONE_start_0 <none>" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKECLONE_stop_0 c7auto2" -> "FAKECLONE-clone_stopped_0" [ style = bold]
|
|
+"FAKECLONE_stop_0 c7auto2" -> "FAKECLONE_start_0 <none>" [ style = dashed]
|
|
+"FAKECLONE_stop_0 c7auto2" -> "all_stopped" [ style = bold]
|
|
+"FAKECLONE_stop_0 c7auto2" [ style=bold color="green" fontcolor="black"]
|
|
+"all_stopped" [ style=bold color="green" fontcolor="orange"]
|
|
+}
|
|
diff --git a/pengine/test10/clone_min_stop_one.exp b/pengine/test10/clone_min_stop_one.exp
|
|
new file mode 100644
|
|
index 0000000..4e6edb8
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_stop_one.exp
|
|
@@ -0,0 +1,74 @@
|
|
+<transition_graph cluster-delay="60s" stonith-timeout="60s" failed-stop-offset="INFINITY" failed-start-offset="INFINITY" transition_id="0">
|
|
+ <synapse id="0">
|
|
+ <action_set>
|
|
+ <rsc_op id="17" operation="stop" operation_key="FAKECLONE_stop_0" internal_operation_key="FAKECLONE:1_stop_0" on_node="c7auto2" on_node_uuid="2">
|
|
+ <primitive id="FAKECLONE" long-id="FAKECLONE:1" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="1" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="22" operation="stop" operation_key="FAKECLONE-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="1" priority="1000000">
|
|
+ <action_set>
|
|
+ <pseudo_event id="23" operation="stopped" operation_key="FAKECLONE-clone_stopped_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="17" operation="stop" operation_key="FAKECLONE_stop_0" internal_operation_key="FAKECLONE:1_stop_0" on_node="c7auto2" on_node_uuid="2"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <pseudo_event id="22" operation="stop" operation_key="FAKECLONE-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="2">
|
|
+ <action_set>
|
|
+ <pseudo_event id="22" operation="stop" operation_key="FAKECLONE-clone_stop_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs/>
|
|
+ </synapse>
|
|
+ <synapse id="3" priority="1000000">
|
|
+ <action_set>
|
|
+ <pseudo_event id="21" operation="running" operation_key="FAKECLONE-clone_running_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="20" operation="start" operation_key="FAKECLONE-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="4">
|
|
+ <action_set>
|
|
+ <pseudo_event id="20" operation="start" operation_key="FAKECLONE-clone_start_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="23" operation="stopped" operation_key="FAKECLONE-clone_stopped_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="5">
|
|
+ <action_set>
|
|
+ <pseudo_event id="7" operation="all_stopped" operation_key="all_stopped">
|
|
+ <attributes />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="17" operation="stop" operation_key="FAKECLONE_stop_0" internal_operation_key="FAKECLONE:1_stop_0" on_node="c7auto2" on_node_uuid="2"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+</transition_graph>
|
|
diff --git a/pengine/test10/clone_min_stop_one.scores b/pengine/test10/clone_min_stop_one.scores
|
|
new file mode 100644
|
|
index 0000000..1f28932
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_stop_one.scores
|
|
@@ -0,0 +1,45 @@
|
|
+Allocation scores:
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto1: 1
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto2: 1
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto3: 1
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKE allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKE allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKE allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKE allocation score on c7auto4: 0
|
|
+native_color: FAKECLONE:0 allocation score on c7auto1: 1
|
|
+native_color: FAKECLONE:0 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:0 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:0 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto1: 0
|
|
+native_color: FAKECLONE:2 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto3: 1
|
|
+native_color: FAKECLONE:2 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto4: -INFINITY
|
|
+native_color: shooter allocation score on c7auto1: 0
|
|
+native_color: shooter allocation score on c7auto2: 0
|
|
+native_color: shooter allocation score on c7auto3: 0
|
|
+native_color: shooter allocation score on c7auto4: 0
|
|
diff --git a/pengine/test10/clone_min_stop_one.summary b/pengine/test10/clone_min_stop_one.summary
|
|
new file mode 100644
|
|
index 0000000..9206a0d
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_stop_one.summary
|
|
@@ -0,0 +1,32 @@
|
|
+
|
|
+Current cluster status:
|
|
+Node c7auto2 (2): standby
|
|
+Online: [ c7auto1 c7auto3 c7auto4 ]
|
|
+
|
|
+ shooter (stonith:fence_phd_kvm): Started c7auto1
|
|
+ Clone Set: FAKECLONE-clone [FAKECLONE]
|
|
+ Started: [ c7auto1 c7auto2 c7auto3 ]
|
|
+ Stopped: [ c7auto4 ]
|
|
+ FAKE (ocf::heartbeat:Dummy): Started c7auto4
|
|
+
|
|
+Transition Summary:
|
|
+ * Stop FAKECLONE:1 (c7auto2)
|
|
+
|
|
+Executing cluster transition:
|
|
+ * Pseudo action: FAKECLONE-clone_stop_0
|
|
+ * Resource action: FAKECLONE stop on c7auto2
|
|
+ * Pseudo action: FAKECLONE-clone_stopped_0
|
|
+ * Pseudo action: FAKECLONE-clone_start_0
|
|
+ * Pseudo action: all_stopped
|
|
+ * Pseudo action: FAKECLONE-clone_running_0
|
|
+
|
|
+Revised cluster status:
|
|
+Node c7auto2 (2): standby
|
|
+Online: [ c7auto1 c7auto3 c7auto4 ]
|
|
+
|
|
+ shooter (stonith:fence_phd_kvm): Started c7auto1
|
|
+ Clone Set: FAKECLONE-clone [FAKECLONE]
|
|
+ Started: [ c7auto1 c7auto3 ]
|
|
+ Stopped: [ c7auto2 c7auto4 ]
|
|
+ FAKE (ocf::heartbeat:Dummy): Started c7auto4
|
|
+
|
|
diff --git a/pengine/test10/clone_min_stop_one.xml b/pengine/test10/clone_min_stop_one.xml
|
|
new file mode 100644
|
|
index 0000000..eb05803
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_stop_one.xml
|
|
@@ -0,0 +1,152 @@
|
|
+<cib crm_feature_set="3.0.10" validate-with="pacemaker-2.3" epoch="16" num_updates="0" admin_epoch="0" cib-last-written="Thu Jul 16 15:28:22 2015" update-origin="c7auto1" update-client="cibadmin" update-user="root" have-quorum="1" dc-uuid="2">
|
|
+ <configuration>
|
|
+ <crm_config>
|
|
+ <cluster_property_set id="cib-bootstrap-options">
|
|
+ <nvpair id="cib-bootstrap-options-have-watchdog" name="have-watchdog" value="false"/>
|
|
+ <nvpair id="cib-bootstrap-options-dc-version" name="dc-version" value="1.1.12-ef86b49"/>
|
|
+ <nvpair id="cib-bootstrap-options-cluster-infrastructure" name="cluster-infrastructure" value="corosync"/>
|
|
+ <nvpair id="cib-bootstrap-options-cluster-name" name="cluster-name" value="phd"/>
|
|
+ </cluster_property_set>
|
|
+ </crm_config>
|
|
+ <nodes>
|
|
+ <node id="1" uname="c7auto1">
|
|
+ <instance_attributes id="nodes-1"/>
|
|
+ </node>
|
|
+ <node id="2" uname="c7auto2">
|
|
+ <instance_attributes id="nodes-2">
|
|
+ <nvpair id="nodes-2-standby" name="standby" value="on"/>
|
|
+ </instance_attributes>
|
|
+ </node>
|
|
+ <node id="3" uname="c7auto3"/>
|
|
+ <node id="4" uname="c7auto4"/>
|
|
+ </nodes>
|
|
+ <resources>
|
|
+ <primitive class="stonith" id="shooter" type="fence_phd_kvm">
|
|
+ <instance_attributes id="shooter-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="shooter-monitor-interval-60s" interval="60s" name="monitor"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <clone id="FAKECLONE-clone">
|
|
+ <primitive class="ocf" id="FAKECLONE" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKECLONE-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKECLONE-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKECLONE-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKECLONE-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <meta_attributes id="FAKECLONE-clone-meta">
|
|
+ <nvpair id="FAKECLONE-clone-min" name="clone-min" value="2"/>
|
|
+ </meta_attributes>
|
|
+ </clone>
|
|
+ <primitive class="ocf" id="FAKE" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKE-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKE-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKE-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKE-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ </resources>
|
|
+ <constraints>
|
|
+ <rsc_location id="location-FAKECLONE-clone-c7auto4--INFINITY" node="c7auto4" rsc="FAKECLONE-clone" score="-INFINITY"/>
|
|
+ <rsc_location id="location-FAKE-c7auto1--INFINITY" node="c7auto1" rsc="FAKE" score="-INFINITY"/>
|
|
+ <rsc_location id="location-FAKE-c7auto2--INFINITY" node="c7auto2" rsc="FAKE" score="-INFINITY"/>
|
|
+ <rsc_location id="location-FAKE-c7auto3--INFINITY" node="c7auto3" rsc="FAKE" score="-INFINITY"/>
|
|
+ <rsc_order first="FAKECLONE-clone" first-action="start" id="order-FAKECLONE-clone-FAKE-mandatory" then="FAKE" then-action="start"/>
|
|
+ </constraints>
|
|
+ </configuration>
|
|
+ <status>
|
|
+ <node_state id="1" uname="c7auto1" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="1">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="11:0:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;11:0:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="6" rc-code="0" op-status="0" interval="0" last-run="1437073991" last-rc-change="1437073991" exec-time="9" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="shooter_monitor_60000" operation_key="shooter_monitor_60000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="9:1:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;9:1:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="7" rc-code="0" op-status="0" interval="60000" last-rc-change="1437073992" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="20:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;20:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="13" rc-code="0" op-status="0" interval="0" last-run="1437074829" last-rc-change="1437074829" exec-time="7" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE_monitor_10000" operation_key="FAKECLONE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="21:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;21:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="14" rc-code="0" op-status="0" interval="10000" last-rc-change="1437074829" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE_last_0" operation_key="FAKE_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="8:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;8:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="18" rc-code="7" op-status="0" interval="0" last-run="1437074871" last-rc-change="1437074871" exec-time="7" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="1">
|
|
+ <instance_attributes id="status-1">
|
|
+ <nvpair id="status-1-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-1-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ <node_state id="2" uname="c7auto2" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="2">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="6:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;6:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437073988" last-rc-change="1437073988" exec-time="964" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="14:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;14:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="11" rc-code="0" op-status="0" interval="0" last-run="1437074829" last-rc-change="1437074829" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE_monitor_10000" operation_key="FAKECLONE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="15:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;15:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="12" rc-code="0" op-status="0" interval="10000" last-rc-change="1437074829" exec-time="10" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE_last_0" operation_key="FAKE_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="10:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;10:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="16" rc-code="7" op-status="0" interval="0" last-run="1437074871" last-rc-change="1437074871" exec-time="10" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="2">
|
|
+ <instance_attributes id="status-2">
|
|
+ <nvpair id="status-2-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-2-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ <node_state id="3" uname="c7auto3" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="3">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="8:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;8:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437073988" last-rc-change="1437073988" exec-time="963" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="16:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;16:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="11" rc-code="0" op-status="0" interval="0" last-run="1437074828" last-rc-change="1437074828" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE_monitor_10000" operation_key="FAKECLONE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="17:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;17:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="12" rc-code="0" op-status="0" interval="10000" last-rc-change="1437074828" exec-time="10" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE_last_0" operation_key="FAKE_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="12:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;12:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="16" rc-code="7" op-status="0" interval="0" last-run="1437074870" last-rc-change="1437074870" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="3">
|
|
+ <instance_attributes id="status-3">
|
|
+ <nvpair id="status-3-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-3-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ <node_state id="4" uname="c7auto4" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="4">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="10:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;10:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437073988" last-rc-change="1437073988" exec-time="963" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="20:3:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;20:3:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="14" rc-code="0" op-status="0" interval="0" last-run="1437074856" last-rc-change="1437074856" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE_monitor_10000" operation_key="FAKECLONE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="19:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;19:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="12" rc-code="0" op-status="0" interval="10000" last-rc-change="1437074829" exec-time="6" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE_last_0" operation_key="FAKE_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="27:4:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;27:4:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="19" rc-code="0" op-status="0" interval="0" last-run="1437074871" last-rc-change="1437074871" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE_monitor_10000" operation_key="FAKE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="28:4:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;28:4:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="20" rc-code="0" op-status="0" interval="10000" last-rc-change="1437074871" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="4">
|
|
+ <instance_attributes id="status-4">
|
|
+ <nvpair id="status-4-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-4-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ </status>
|
|
+</cib>
|
|
diff --git a/pengine/test10/clone_min_stop_two.dot b/pengine/test10/clone_min_stop_two.dot
|
|
new file mode 100644
|
|
index 0000000..11640f4
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_stop_two.dot
|
|
@@ -0,0 +1,36 @@
|
|
+ digraph "g" {
|
|
+"FAKECLONE-clone_running_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE-clone_start_0" -> "FAKECLONE-clone_running_0" [ style = bold]
|
|
+"FAKECLONE-clone_start_0" -> "FAKECLONE_start_0 <none>" [ style = dashed]
|
|
+"FAKECLONE-clone_start_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE-clone_stop_0" -> "FAKECLONE-clone_stopped_0" [ style = bold]
|
|
+"FAKECLONE-clone_stop_0" -> "FAKECLONE_stop_0 c7auto1" [ style = bold]
|
|
+"FAKECLONE-clone_stop_0" -> "FAKECLONE_stop_0 c7auto2" [ style = bold]
|
|
+"FAKECLONE-clone_stop_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE-clone_stopped_0" -> "FAKECLONE-clone_start_0" [ style = bold]
|
|
+"FAKECLONE-clone_stopped_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE_start_0 <none>" -> "FAKECLONE-clone_running_0" [ style = dashed]
|
|
+"FAKECLONE_start_0 <none>" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKECLONE_stop_0 c7auto1" -> "FAKECLONE-clone_stopped_0" [ style = bold]
|
|
+"FAKECLONE_stop_0 c7auto1" -> "FAKECLONE_start_0 <none>" [ style = dashed]
|
|
+"FAKECLONE_stop_0 c7auto1" -> "all_stopped" [ style = bold]
|
|
+"FAKECLONE_stop_0 c7auto1" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKECLONE_stop_0 c7auto2" -> "FAKECLONE-clone_stopped_0" [ style = bold]
|
|
+"FAKECLONE_stop_0 c7auto2" -> "FAKECLONE_start_0 <none>" [ style = dashed]
|
|
+"FAKECLONE_stop_0 c7auto2" -> "all_stopped" [ style = bold]
|
|
+"FAKECLONE_stop_0 c7auto2" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKE_monitor_10000 c7auto4" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE_start_0 c7auto4" -> "FAKE_monitor_10000 c7auto4" [ style = dashed]
|
|
+"FAKE_start_0 c7auto4" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKE_stop_0 c7auto4" -> "FAKECLONE-clone_stop_0" [ style = bold]
|
|
+"FAKE_stop_0 c7auto4" -> "FAKE_start_0 c7auto4" [ style = dashed]
|
|
+"FAKE_stop_0 c7auto4" -> "all_stopped" [ style = bold]
|
|
+"FAKE_stop_0 c7auto4" [ style=bold color="green" fontcolor="black"]
|
|
+"all_stopped" [ style=bold color="green" fontcolor="orange"]
|
|
+"shooter_monitor_60000 c7auto3" [ style=bold color="green" fontcolor="black"]
|
|
+"shooter_start_0 c7auto3" -> "shooter_monitor_60000 c7auto3" [ style = bold]
|
|
+"shooter_start_0 c7auto3" [ style=bold color="green" fontcolor="black"]
|
|
+"shooter_stop_0 c7auto1" -> "all_stopped" [ style = bold]
|
|
+"shooter_stop_0 c7auto1" -> "shooter_start_0 c7auto3" [ style = bold]
|
|
+"shooter_stop_0 c7auto1" [ style=bold color="green" fontcolor="black"]
|
|
+}
|
|
diff --git a/pengine/test10/clone_min_stop_two.exp b/pengine/test10/clone_min_stop_two.exp
|
|
new file mode 100644
|
|
index 0000000..5697611
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_stop_two.exp
|
|
@@ -0,0 +1,147 @@
|
|
+<transition_graph cluster-delay="60s" stonith-timeout="60s" failed-stop-offset="INFINITY" failed-start-offset="INFINITY" transition_id="0">
|
|
+ <synapse id="0">
|
|
+ <action_set>
|
|
+ <rsc_op id="15" operation="monitor" operation_key="shooter_monitor_60000" on_node="c7auto3" on_node_uuid="3">
|
|
+ <primitive id="shooter" class="stonith" type="fence_phd_kvm"/>
|
|
+ <attributes CRM_meta_interval="60000" CRM_meta_name="monitor" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="14" operation="start" operation_key="shooter_start_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="1">
|
|
+ <action_set>
|
|
+ <rsc_op id="14" operation="start" operation_key="shooter_start_0" on_node="c7auto3" on_node_uuid="3">
|
|
+ <primitive id="shooter" class="stonith" type="fence_phd_kvm"/>
|
|
+ <attributes CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="13" operation="stop" operation_key="shooter_stop_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="2">
|
|
+ <action_set>
|
|
+ <rsc_op id="13" operation="stop" operation_key="shooter_stop_0" on_node="c7auto1" on_node_uuid="1">
|
|
+ <primitive id="shooter" class="stonith" type="fence_phd_kvm"/>
|
|
+ <attributes CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs/>
|
|
+ </synapse>
|
|
+ <synapse id="3">
|
|
+ <action_set>
|
|
+ <rsc_op id="16" operation="stop" operation_key="FAKECLONE_stop_0" internal_operation_key="FAKECLONE:0_stop_0" on_node="c7auto1" on_node_uuid="1">
|
|
+ <primitive id="FAKECLONE" long-id="FAKECLONE:0" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="0" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="22" operation="stop" operation_key="FAKECLONE-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="4">
|
|
+ <action_set>
|
|
+ <rsc_op id="17" operation="stop" operation_key="FAKECLONE_stop_0" internal_operation_key="FAKECLONE:1_stop_0" on_node="c7auto2" on_node_uuid="2">
|
|
+ <primitive id="FAKECLONE" long-id="FAKECLONE:1" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="1" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="22" operation="stop" operation_key="FAKECLONE-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="5" priority="1000000">
|
|
+ <action_set>
|
|
+ <pseudo_event id="23" operation="stopped" operation_key="FAKECLONE-clone_stopped_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="16" operation="stop" operation_key="FAKECLONE_stop_0" internal_operation_key="FAKECLONE:0_stop_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="17" operation="stop" operation_key="FAKECLONE_stop_0" internal_operation_key="FAKECLONE:1_stop_0" on_node="c7auto2" on_node_uuid="2"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <pseudo_event id="22" operation="stop" operation_key="FAKECLONE-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="6">
|
|
+ <action_set>
|
|
+ <pseudo_event id="22" operation="stop" operation_key="FAKECLONE-clone_stop_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="24" operation="stop" operation_key="FAKE_stop_0" on_node="c7auto4" on_node_uuid="4"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="7" priority="1000000">
|
|
+ <action_set>
|
|
+ <pseudo_event id="21" operation="running" operation_key="FAKECLONE-clone_running_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="20" operation="start" operation_key="FAKECLONE-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="8">
|
|
+ <action_set>
|
|
+ <pseudo_event id="20" operation="start" operation_key="FAKECLONE-clone_start_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="23" operation="stopped" operation_key="FAKECLONE-clone_stopped_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="9">
|
|
+ <action_set>
|
|
+ <rsc_op id="24" operation="stop" operation_key="FAKE_stop_0" on_node="c7auto4" on_node_uuid="4">
|
|
+ <primitive id="FAKE" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_name="stop" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs/>
|
|
+ </synapse>
|
|
+ <synapse id="10">
|
|
+ <action_set>
|
|
+ <pseudo_event id="7" operation="all_stopped" operation_key="all_stopped">
|
|
+ <attributes />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="13" operation="stop" operation_key="shooter_stop_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="16" operation="stop" operation_key="FAKECLONE_stop_0" internal_operation_key="FAKECLONE:0_stop_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="17" operation="stop" operation_key="FAKECLONE_stop_0" internal_operation_key="FAKECLONE:1_stop_0" on_node="c7auto2" on_node_uuid="2"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="24" operation="stop" operation_key="FAKE_stop_0" on_node="c7auto4" on_node_uuid="4"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+</transition_graph>
|
|
diff --git a/pengine/test10/clone_min_stop_two.scores b/pengine/test10/clone_min_stop_two.scores
|
|
new file mode 100644
|
|
index 0000000..ce43eb9
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_stop_two.scores
|
|
@@ -0,0 +1,45 @@
|
|
+Allocation scores:
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto1: 1
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto2: 1
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto3: 1
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKE allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKE allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKE allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKE allocation score on c7auto4: 0
|
|
+native_color: FAKECLONE:0 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE:0 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:0 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:0 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto3: 1
|
|
+native_color: FAKECLONE:2 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto4: -INFINITY
|
|
+native_color: shooter allocation score on c7auto1: 0
|
|
+native_color: shooter allocation score on c7auto2: 0
|
|
+native_color: shooter allocation score on c7auto3: 0
|
|
+native_color: shooter allocation score on c7auto4: 0
|
|
diff --git a/pengine/test10/clone_min_stop_two.summary b/pengine/test10/clone_min_stop_two.summary
|
|
new file mode 100644
|
|
index 0000000..c009d7d
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_stop_two.summary
|
|
@@ -0,0 +1,42 @@
|
|
+
|
|
+Current cluster status:
|
|
+Node c7auto1 (1): standby
|
|
+Node c7auto2 (2): standby
|
|
+Online: [ c7auto3 c7auto4 ]
|
|
+
|
|
+ shooter (stonith:fence_phd_kvm): Started c7auto1
|
|
+ Clone Set: FAKECLONE-clone [FAKECLONE]
|
|
+ Started: [ c7auto1 c7auto2 c7auto3 ]
|
|
+ Stopped: [ c7auto4 ]
|
|
+ FAKE (ocf::heartbeat:Dummy): Started c7auto4
|
|
+
|
|
+Transition Summary:
|
|
+ * Move shooter (Started c7auto1 -> c7auto3)
|
|
+ * Stop FAKECLONE:0 (c7auto1)
|
|
+ * Stop FAKECLONE:1 (c7auto2)
|
|
+ * Stop FAKE (Started c7auto4)
|
|
+
|
|
+Executing cluster transition:
|
|
+ * Resource action: shooter stop on c7auto1
|
|
+ * Resource action: FAKE stop on c7auto4
|
|
+ * Resource action: shooter start on c7auto3
|
|
+ * Pseudo action: FAKECLONE-clone_stop_0
|
|
+ * Resource action: shooter monitor=60000 on c7auto3
|
|
+ * Resource action: FAKECLONE stop on c7auto1
|
|
+ * Resource action: FAKECLONE stop on c7auto2
|
|
+ * Pseudo action: FAKECLONE-clone_stopped_0
|
|
+ * Pseudo action: FAKECLONE-clone_start_0
|
|
+ * Pseudo action: all_stopped
|
|
+ * Pseudo action: FAKECLONE-clone_running_0
|
|
+
|
|
+Revised cluster status:
|
|
+Node c7auto1 (1): standby
|
|
+Node c7auto2 (2): standby
|
|
+Online: [ c7auto3 c7auto4 ]
|
|
+
|
|
+ shooter (stonith:fence_phd_kvm): Started c7auto3
|
|
+ Clone Set: FAKECLONE-clone [FAKECLONE]
|
|
+ Started: [ c7auto3 ]
|
|
+ Stopped: [ c7auto1 c7auto2 c7auto4 ]
|
|
+ FAKE (ocf::heartbeat:Dummy): Stopped
|
|
+
|
|
diff --git a/pengine/test10/clone_min_stop_two.xml b/pengine/test10/clone_min_stop_two.xml
|
|
new file mode 100644
|
|
index 0000000..8d085ad
|
|
--- /dev/null
|
|
+++ b/pengine/test10/clone_min_stop_two.xml
|
|
@@ -0,0 +1,154 @@
|
|
+<cib crm_feature_set="3.0.10" validate-with="pacemaker-2.3" epoch="15" num_updates="0" admin_epoch="0" cib-last-written="Thu Jul 16 15:28:22 2015" update-origin="c7auto1" update-client="cibadmin" update-user="root" have-quorum="1" dc-uuid="2">
|
|
+ <configuration>
|
|
+ <crm_config>
|
|
+ <cluster_property_set id="cib-bootstrap-options">
|
|
+ <nvpair id="cib-bootstrap-options-have-watchdog" name="have-watchdog" value="false"/>
|
|
+ <nvpair id="cib-bootstrap-options-dc-version" name="dc-version" value="1.1.12-ef86b49"/>
|
|
+ <nvpair id="cib-bootstrap-options-cluster-infrastructure" name="cluster-infrastructure" value="corosync"/>
|
|
+ <nvpair id="cib-bootstrap-options-cluster-name" name="cluster-name" value="phd"/>
|
|
+ </cluster_property_set>
|
|
+ </crm_config>
|
|
+ <nodes>
|
|
+ <node id="1" uname="c7auto1">
|
|
+ <instance_attributes id="nodes-1">
|
|
+ <nvpair id="nodes-1-standby" name="standby" value="on"/>
|
|
+ </instance_attributes>
|
|
+ </node>
|
|
+ <node id="2" uname="c7auto2">
|
|
+ <instance_attributes id="nodes-2">
|
|
+ <nvpair id="nodes-2-standby" name="standby" value="on"/>
|
|
+ </instance_attributes>
|
|
+ </node>
|
|
+ <node id="3" uname="c7auto3"/>
|
|
+ <node id="4" uname="c7auto4"/>
|
|
+ </nodes>
|
|
+ <resources>
|
|
+ <primitive class="stonith" id="shooter" type="fence_phd_kvm">
|
|
+ <instance_attributes id="shooter-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="shooter-monitor-interval-60s" interval="60s" name="monitor"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <clone id="FAKECLONE-clone">
|
|
+ <primitive class="ocf" id="FAKECLONE" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKECLONE-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKECLONE-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKECLONE-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKECLONE-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <meta_attributes id="FAKECLONE-clone-meta">
|
|
+ <nvpair id="FAKECLONE-clone-min" name="clone-min" value="2"/>
|
|
+ </meta_attributes>
|
|
+ </clone>
|
|
+ <primitive class="ocf" id="FAKE" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKE-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKE-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKE-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKE-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ </resources>
|
|
+ <constraints>
|
|
+ <rsc_location id="location-FAKECLONE-clone-c7auto4--INFINITY" node="c7auto4" rsc="FAKECLONE-clone" score="-INFINITY"/>
|
|
+ <rsc_location id="location-FAKE-c7auto1--INFINITY" node="c7auto1" rsc="FAKE" score="-INFINITY"/>
|
|
+ <rsc_location id="location-FAKE-c7auto2--INFINITY" node="c7auto2" rsc="FAKE" score="-INFINITY"/>
|
|
+ <rsc_location id="location-FAKE-c7auto3--INFINITY" node="c7auto3" rsc="FAKE" score="-INFINITY"/>
|
|
+ <rsc_order first="FAKECLONE-clone" first-action="start" id="order-FAKECLONE-clone-FAKE-mandatory" then="FAKE" then-action="start"/>
|
|
+ </constraints>
|
|
+ </configuration>
|
|
+ <status>
|
|
+ <node_state id="1" uname="c7auto1" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="1">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="11:0:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;11:0:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="6" rc-code="0" op-status="0" interval="0" last-run="1437073991" last-rc-change="1437073991" exec-time="9" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="shooter_monitor_60000" operation_key="shooter_monitor_60000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="9:1:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;9:1:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="7" rc-code="0" op-status="0" interval="60000" last-rc-change="1437073992" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="20:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;20:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="13" rc-code="0" op-status="0" interval="0" last-run="1437074829" last-rc-change="1437074829" exec-time="7" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE_monitor_10000" operation_key="FAKECLONE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="21:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;21:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="14" rc-code="0" op-status="0" interval="10000" last-rc-change="1437074829" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE_last_0" operation_key="FAKE_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="8:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;8:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="18" rc-code="7" op-status="0" interval="0" last-run="1437074871" last-rc-change="1437074871" exec-time="7" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="1">
|
|
+ <instance_attributes id="status-1">
|
|
+ <nvpair id="status-1-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-1-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ <node_state id="2" uname="c7auto2" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="2">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="6:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;6:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437073988" last-rc-change="1437073988" exec-time="964" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="14:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;14:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="11" rc-code="0" op-status="0" interval="0" last-run="1437074829" last-rc-change="1437074829" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE_monitor_10000" operation_key="FAKECLONE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="15:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;15:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="12" rc-code="0" op-status="0" interval="10000" last-rc-change="1437074829" exec-time="10" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE_last_0" operation_key="FAKE_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="10:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;10:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="16" rc-code="7" op-status="0" interval="0" last-run="1437074871" last-rc-change="1437074871" exec-time="10" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="2">
|
|
+ <instance_attributes id="status-2">
|
|
+ <nvpair id="status-2-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-2-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ <node_state id="3" uname="c7auto3" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="3">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="8:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;8:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437073988" last-rc-change="1437073988" exec-time="963" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="16:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;16:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="11" rc-code="0" op-status="0" interval="0" last-run="1437074828" last-rc-change="1437074828" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE_monitor_10000" operation_key="FAKECLONE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="17:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;17:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="12" rc-code="0" op-status="0" interval="10000" last-rc-change="1437074828" exec-time="10" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE_last_0" operation_key="FAKE_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="12:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;12:4:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="16" rc-code="7" op-status="0" interval="0" last-run="1437074870" last-rc-change="1437074870" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="3">
|
|
+ <instance_attributes id="status-3">
|
|
+ <nvpair id="status-3-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-3-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ <node_state id="4" uname="c7auto4" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <lrm id="4">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="10:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;10:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437073988" last-rc-change="1437073988" exec-time="963" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_stop_0" operation="stop" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="20:3:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;20:3:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="14" rc-code="0" op-status="0" interval="0" last-run="1437074856" last-rc-change="1437074856" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE_monitor_10000" operation_key="FAKECLONE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="19:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;19:2:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="12" rc-code="0" op-status="0" interval="10000" last-rc-change="1437074829" exec-time="6" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKE_last_0" operation_key="FAKE_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="27:4:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;27:4:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="19" rc-code="0" op-status="0" interval="0" last-run="1437074871" last-rc-change="1437074871" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKE_monitor_10000" operation_key="FAKE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="28:4:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;28:4:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="20" rc-code="0" op-status="0" interval="10000" last-rc-change="1437074871" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ <transient_attributes id="4">
|
|
+ <instance_attributes id="status-4">
|
|
+ <nvpair id="status-4-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-4-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ </node_state>
|
|
+ </status>
|
|
+</cib>
|
|
diff --git a/pengine/test10/cloned_start_one.dot b/pengine/test10/cloned_start_one.dot
|
|
new file mode 100644
|
|
index 0000000..b3c254c
|
|
--- /dev/null
|
|
+++ b/pengine/test10/cloned_start_one.dot
|
|
@@ -0,0 +1,32 @@
|
|
+ digraph "g" {
|
|
+"FAKECLONE-clone_running_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE-clone_start_0" -> "FAKECLONE-clone_running_0" [ style = bold]
|
|
+"FAKECLONE-clone_start_0" -> "FAKECLONE_start_0 c7auto1" [ style = bold]
|
|
+"FAKECLONE-clone_start_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE2-clone_running_0" [ style=dashed color="red" fontcolor="orange"]
|
|
+"FAKECLONE2-clone_start_0" -> "FAKECLONE2-clone_running_0" [ style = dashed]
|
|
+"FAKECLONE2-clone_start_0" -> "FAKECLONE2_start_0 c7auto4" [ style = dashed]
|
|
+"FAKECLONE2-clone_start_0" [ style=dashed color="red" fontcolor="orange"]
|
|
+"FAKECLONE2-clone_stop_0" -> "FAKECLONE2-clone_stopped_0" [ style = bold]
|
|
+"FAKECLONE2-clone_stop_0" -> "FAKECLONE2_stop_0 c7auto3" [ style = bold]
|
|
+"FAKECLONE2-clone_stop_0" -> "FAKECLONE2_stop_0 c7auto4" [ style = bold]
|
|
+"FAKECLONE2-clone_stop_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE2-clone_stopped_0" -> "FAKECLONE2-clone_start_0" [ style = dashed]
|
|
+"FAKECLONE2-clone_stopped_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE2_monitor_10000 c7auto4" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKECLONE2_start_0 c7auto4" -> "FAKECLONE2-clone_running_0" [ style = dashed]
|
|
+"FAKECLONE2_start_0 c7auto4" -> "FAKECLONE2_monitor_10000 c7auto4" [ style = dashed]
|
|
+"FAKECLONE2_start_0 c7auto4" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKECLONE2_stop_0 c7auto3" -> "FAKECLONE2-clone_stopped_0" [ style = bold]
|
|
+"FAKECLONE2_stop_0 c7auto3" -> "all_stopped" [ style = bold]
|
|
+"FAKECLONE2_stop_0 c7auto3" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKECLONE2_stop_0 c7auto4" -> "FAKECLONE2-clone_stopped_0" [ style = bold]
|
|
+"FAKECLONE2_stop_0 c7auto4" -> "FAKECLONE2_start_0 c7auto4" [ style = dashed]
|
|
+"FAKECLONE2_stop_0 c7auto4" -> "all_stopped" [ style = bold]
|
|
+"FAKECLONE2_stop_0 c7auto4" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKECLONE_monitor_10000 c7auto1" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKECLONE_start_0 c7auto1" -> "FAKECLONE-clone_running_0" [ style = bold]
|
|
+"FAKECLONE_start_0 c7auto1" -> "FAKECLONE_monitor_10000 c7auto1" [ style = bold]
|
|
+"FAKECLONE_start_0 c7auto1" [ style=bold color="green" fontcolor="black"]
|
|
+"all_stopped" [ style=bold color="green" fontcolor="orange"]
|
|
+}
|
|
diff --git a/pengine/test10/cloned_start_one.exp b/pengine/test10/cloned_start_one.exp
|
|
new file mode 100644
|
|
index 0000000..636ccd8
|
|
--- /dev/null
|
|
+++ b/pengine/test10/cloned_start_one.exp
|
|
@@ -0,0 +1,118 @@
|
|
+<transition_graph cluster-delay="60s" stonith-timeout="60s" failed-stop-offset="INFINITY" failed-start-offset="INFINITY" transition_id="0">
|
|
+ <synapse id="0">
|
|
+ <action_set>
|
|
+ <rsc_op id="14" operation="monitor" operation_key="FAKECLONE_monitor_10000" internal_operation_key="FAKECLONE:0_monitor_10000" on_node="c7auto1" on_node_uuid="1">
|
|
+ <primitive id="FAKECLONE" long-id="FAKECLONE:0" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="0" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_interval="10000" CRM_meta_name="monitor" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="13" operation="start" operation_key="FAKECLONE_start_0" internal_operation_key="FAKECLONE:0_start_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="1">
|
|
+ <action_set>
|
|
+ <rsc_op id="13" operation="start" operation_key="FAKECLONE_start_0" internal_operation_key="FAKECLONE:0_start_0" on_node="c7auto1" on_node_uuid="1">
|
|
+ <primitive id="FAKECLONE" long-id="FAKECLONE:0" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="0" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="start" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="15" operation="start" operation_key="FAKECLONE-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="2" priority="1000000">
|
|
+ <action_set>
|
|
+ <pseudo_event id="16" operation="running" operation_key="FAKECLONE-clone_running_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="13" operation="start" operation_key="FAKECLONE_start_0" internal_operation_key="FAKECLONE:0_start_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <pseudo_event id="15" operation="start" operation_key="FAKECLONE-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="3">
|
|
+ <action_set>
|
|
+ <pseudo_event id="15" operation="start" operation_key="FAKECLONE-clone_start_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs/>
|
|
+ </synapse>
|
|
+ <synapse id="4">
|
|
+ <action_set>
|
|
+ <rsc_op id="19" operation="stop" operation_key="FAKECLONE2_stop_0" internal_operation_key="FAKECLONE2:0_stop_0" on_node="c7auto3" on_node_uuid="3">
|
|
+ <primitive id="FAKECLONE2" long-id="FAKECLONE2:0" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="0" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="24" operation="stop" operation_key="FAKECLONE2-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="5">
|
|
+ <action_set>
|
|
+ <rsc_op id="20" operation="stop" operation_key="FAKECLONE2_stop_0" internal_operation_key="FAKECLONE2:1_stop_0" on_node="c7auto4" on_node_uuid="4">
|
|
+ <primitive id="FAKECLONE2" long-id="FAKECLONE2:1" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="1" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="24" operation="stop" operation_key="FAKECLONE2-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="6" priority="1000000">
|
|
+ <action_set>
|
|
+ <pseudo_event id="25" operation="stopped" operation_key="FAKECLONE2-clone_stopped_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="19" operation="stop" operation_key="FAKECLONE2_stop_0" internal_operation_key="FAKECLONE2:0_stop_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="20" operation="stop" operation_key="FAKECLONE2_stop_0" internal_operation_key="FAKECLONE2:1_stop_0" on_node="c7auto4" on_node_uuid="4"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <pseudo_event id="24" operation="stop" operation_key="FAKECLONE2-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="7">
|
|
+ <action_set>
|
|
+ <pseudo_event id="24" operation="stop" operation_key="FAKECLONE2-clone_stop_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs/>
|
|
+ </synapse>
|
|
+ <synapse id="8">
|
|
+ <action_set>
|
|
+ <pseudo_event id="5" operation="all_stopped" operation_key="all_stopped">
|
|
+ <attributes />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="19" operation="stop" operation_key="FAKECLONE2_stop_0" internal_operation_key="FAKECLONE2:0_stop_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="20" operation="stop" operation_key="FAKECLONE2_stop_0" internal_operation_key="FAKECLONE2:1_stop_0" on_node="c7auto4" on_node_uuid="4"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+</transition_graph>
|
|
diff --git a/pengine/test10/cloned_start_one.scores b/pengine/test10/cloned_start_one.scores
|
|
new file mode 100644
|
|
index 0000000..3dc6ab8
|
|
--- /dev/null
|
|
+++ b/pengine/test10/cloned_start_one.scores
|
|
@@ -0,0 +1,77 @@
|
|
+Allocation scores:
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE2-clone allocation score on c7auto1: -INFINITY
|
|
+clone_color: FAKECLONE2-clone allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKECLONE2-clone allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE2-clone allocation score on c7auto4: 0
|
|
+clone_color: FAKECLONE2:0 allocation score on c7auto1: -INFINITY
|
|
+clone_color: FAKECLONE2:0 allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKECLONE2:0 allocation score on c7auto3: 1
|
|
+clone_color: FAKECLONE2:0 allocation score on c7auto4: 0
|
|
+clone_color: FAKECLONE2:1 allocation score on c7auto1: -INFINITY
|
|
+clone_color: FAKECLONE2:1 allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKECLONE2:1 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE2:1 allocation score on c7auto4: 1
|
|
+clone_color: FAKECLONE2:2 allocation score on c7auto1: -INFINITY
|
|
+clone_color: FAKECLONE2:2 allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKECLONE2:2 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE2:2 allocation score on c7auto4: 0
|
|
+clone_color: FAKECLONE2:3 allocation score on c7auto1: -INFINITY
|
|
+clone_color: FAKECLONE2:3 allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKECLONE2:3 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE2:3 allocation score on c7auto4: 0
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE2:0 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE2:0 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE2:0 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE2:0 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE2:1 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE2:1 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE2:1 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE2:1 allocation score on c7auto4: 1
|
|
+native_color: FAKECLONE2:2 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE2:2 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE2:2 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE2:2 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE2:3 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE2:3 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE2:3 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE2:3 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:0 allocation score on c7auto1: 0
|
|
+native_color: FAKECLONE:0 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:0 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:0 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto4: -INFINITY
|
|
+native_color: shooter allocation score on c7auto1: 0
|
|
+native_color: shooter allocation score on c7auto2: 0
|
|
+native_color: shooter allocation score on c7auto3: 0
|
|
+native_color: shooter allocation score on c7auto4: 0
|
|
diff --git a/pengine/test10/cloned_start_one.summary b/pengine/test10/cloned_start_one.summary
|
|
new file mode 100644
|
|
index 0000000..20ac58f
|
|
--- /dev/null
|
|
+++ b/pengine/test10/cloned_start_one.summary
|
|
@@ -0,0 +1,41 @@
|
|
+
|
|
+Current cluster status:
|
|
+Node c7auto2 (2): standby
|
|
+Node c7auto3 (3): standby
|
|
+Online: [ c7auto1 c7auto4 ]
|
|
+
|
|
+ shooter (stonith:fence_phd_kvm): Started c7auto1
|
|
+ Clone Set: FAKECLONE-clone [FAKECLONE]
|
|
+ Stopped: [ c7auto1 c7auto2 c7auto3 c7auto4 ]
|
|
+ Clone Set: FAKECLONE2-clone [FAKECLONE2]
|
|
+ Started: [ c7auto3 c7auto4 ]
|
|
+ Stopped: [ c7auto1 c7auto2 ]
|
|
+
|
|
+Transition Summary:
|
|
+ * Start FAKECLONE:0 (c7auto1)
|
|
+ * Stop FAKECLONE2:0 (c7auto3)
|
|
+ * Stop FAKECLONE2:1 (Started c7auto4)
|
|
+
|
|
+Executing cluster transition:
|
|
+ * Pseudo action: FAKECLONE-clone_start_0
|
|
+ * Pseudo action: FAKECLONE2-clone_stop_0
|
|
+ * Resource action: FAKECLONE start on c7auto1
|
|
+ * Pseudo action: FAKECLONE-clone_running_0
|
|
+ * Resource action: FAKECLONE2 stop on c7auto3
|
|
+ * Resource action: FAKECLONE2 stop on c7auto4
|
|
+ * Pseudo action: FAKECLONE2-clone_stopped_0
|
|
+ * Pseudo action: all_stopped
|
|
+ * Resource action: FAKECLONE monitor=10000 on c7auto1
|
|
+
|
|
+Revised cluster status:
|
|
+Node c7auto2 (2): standby
|
|
+Node c7auto3 (3): standby
|
|
+Online: [ c7auto1 c7auto4 ]
|
|
+
|
|
+ shooter (stonith:fence_phd_kvm): Started c7auto1
|
|
+ Clone Set: FAKECLONE-clone [FAKECLONE]
|
|
+ Started: [ c7auto1 ]
|
|
+ Stopped: [ c7auto2 c7auto3 c7auto4 ]
|
|
+ Clone Set: FAKECLONE2-clone [FAKECLONE2]
|
|
+ Stopped: [ c7auto1 c7auto2 c7auto3 c7auto4 ]
|
|
+
|
|
diff --git a/pengine/test10/cloned_start_one.xml b/pengine/test10/cloned_start_one.xml
|
|
new file mode 100644
|
|
index 0000000..6c2bfe1
|
|
--- /dev/null
|
|
+++ b/pengine/test10/cloned_start_one.xml
|
|
@@ -0,0 +1,154 @@
|
|
+<cib crm_feature_set="3.0.10" validate-with="pacemaker-2.3" epoch="30" num_updates="0" admin_epoch="0" cib-last-written="Thu Jul 16 17:55:58 2015" update-origin="c7auto1" update-client="cibadmin" update-user="root" have-quorum="1" dc-uuid="2">
|
|
+ <configuration>
|
|
+ <crm_config>
|
|
+ <cluster_property_set id="cib-bootstrap-options">
|
|
+ <nvpair id="cib-bootstrap-options-have-watchdog" name="have-watchdog" value="false"/>
|
|
+ <nvpair id="cib-bootstrap-options-dc-version" name="dc-version" value="1.1.12-ef86b49"/>
|
|
+ <nvpair id="cib-bootstrap-options-cluster-infrastructure" name="cluster-infrastructure" value="corosync"/>
|
|
+ <nvpair id="cib-bootstrap-options-cluster-name" name="cluster-name" value="phd"/>
|
|
+ </cluster_property_set>
|
|
+ </crm_config>
|
|
+ <nodes>
|
|
+ <node id="1" uname="c7auto1"/>
|
|
+ <node id="2" uname="c7auto2">
|
|
+ <instance_attributes id="nodes-2">
|
|
+ <nvpair id="nodes-2-standby" name="standby" value="on"/>
|
|
+ </instance_attributes>
|
|
+ </node>
|
|
+ <node id="3" uname="c7auto3">
|
|
+ <instance_attributes id="nodes-3">
|
|
+ <nvpair id="nodes-3-standby" name="standby" value="on"/>
|
|
+ </instance_attributes>
|
|
+ </node>
|
|
+ <node id="4" uname="c7auto4"/>
|
|
+ </nodes>
|
|
+ <resources>
|
|
+ <primitive class="stonith" id="shooter" type="fence_phd_kvm">
|
|
+ <instance_attributes id="shooter-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="shooter-monitor-interval-60s" interval="60s" name="monitor"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <clone id="FAKECLONE-clone">
|
|
+ <primitive class="ocf" id="FAKECLONE" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKECLONE-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKECLONE-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKECLONE-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKECLONE-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <meta_attributes id="FAKECLONE-clone-meta">
|
|
+ <nvpair id="FAKECLONE-clone-min" name="clone-min" value="2"/>
|
|
+ </meta_attributes>
|
|
+ <meta_attributes id="FAKECLONE-clone-meta_attributes"/>
|
|
+ </clone>
|
|
+ <clone id="FAKECLONE2-clone">
|
|
+ <primitive class="ocf" id="FAKECLONE2" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKECLONE2-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKECLONE2-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKECLONE2-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKECLONE2-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <meta_attributes id="FAKECLONE2-clone-meta"/>
|
|
+ </clone>
|
|
+ </resources>
|
|
+ <constraints>
|
|
+ <rsc_location id="location-FAKECLONE-clone-c7auto4--INFINITY" node="c7auto4" rsc="FAKECLONE-clone" score="-INFINITY"/>
|
|
+ <rsc_location id="location-FAKECLONE2-clone-c7auto1--INFINITY" node="c7auto1" rsc="FAKECLONE2-clone" score="-INFINITY"/>
|
|
+ <rsc_location id="location-FAKECLONE2-clone-c7auto2--INFINITY" node="c7auto2" rsc="FAKECLONE2-clone" score="-INFINITY"/>
|
|
+ <rsc_order first="FAKECLONE-clone" first-action="start" id="order-FAKECLONE-clone-FAKECLONE2-clone-mandatory" then="FAKECLONE2-clone" then-action="start"/>
|
|
+ </constraints>
|
|
+ </configuration>
|
|
+ <status>
|
|
+ <node_state id="1" uname="c7auto1" in_ccm="true" crmd="online" crm-debug-origin="do_state_transition" join="member" expected="member">
|
|
+ <transient_attributes id="1">
|
|
+ <instance_attributes id="status-1">
|
|
+ <nvpair id="status-1-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-1-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ <lrm id="1">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="FAKECLONE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE2_last_0" operation_key="FAKECLONE2_stop_0" operation="stop" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="17:28:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;17:28:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="30" rc-code="0" op-status="0" interval="0" last-run="1437083676" last-rc-change="1437083676" exec-time="12" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="11:0:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;11:0:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="6" rc-code="0" op-status="0" interval="0" last-run="1437073991" last-rc-change="1437073991" exec-time="9" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="shooter_monitor_60000" operation_key="shooter_monitor_60000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="9:1:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;9:1:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="7" rc-code="0" op-status="0" interval="60000" last-rc-change="1437073992" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_stop_0" operation="stop" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="14:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;14:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="20" rc-code="0" op-status="0" interval="0" last-run="1437075474" last-rc-change="1437075474" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ </node_state>
|
|
+ <node_state id="2" uname="c7auto2" in_ccm="true" crmd="online" crm-debug-origin="do_state_transition" join="member" expected="member">
|
|
+ <transient_attributes id="2">
|
|
+ <instance_attributes id="status-2">
|
|
+ <nvpair id="status-2-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-2-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ <lrm id="2">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="FAKECLONE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE2_last_0" operation_key="FAKECLONE2_stop_0" operation="stop" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="16:29:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;16:29:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="32" rc-code="0" op-status="0" interval="0" last-run="1437083678" last-rc-change="1437083678" exec-time="10" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="6:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;6:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437073988" last-rc-change="1437073988" exec-time="964" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_stop_0" operation="stop" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="15:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;15:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="18" rc-code="0" op-status="0" interval="0" last-run="1437075473" last-rc-change="1437075473" exec-time="13" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ </node_state>
|
|
+ <node_state id="3" uname="c7auto3" in_ccm="true" crmd="online" crm-debug-origin="do_state_transition" join="member" expected="member">
|
|
+ <transient_attributes id="3">
|
|
+ <instance_attributes id="status-3">
|
|
+ <nvpair id="status-3-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-3-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ <lrm id="3">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="FAKECLONE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE2_last_0" operation_key="FAKECLONE2_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="17:30:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;17:30:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="29" rc-code="0" op-status="0" interval="0" last-run="1437083710" last-rc-change="1437083710" exec-time="6" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE2_monitor_10000" operation_key="FAKECLONE2_monitor_10000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="18:30:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;18:30:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="30" rc-code="0" op-status="0" interval="10000" last-rc-change="1437083710" exec-time="6" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="8:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;8:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437073988" last-rc-change="1437073988" exec-time="963" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_stop_0" operation="stop" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="16:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;16:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="18" rc-code="0" op-status="0" interval="0" last-run="1437075473" last-rc-change="1437075473" exec-time="12" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ </node_state>
|
|
+ <node_state id="4" uname="c7auto4" in_ccm="true" crmd="online" crm-debug-origin="do_state_transition" join="member" expected="member">
|
|
+ <transient_attributes id="4">
|
|
+ <instance_attributes id="status-4">
|
|
+ <nvpair id="status-4-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-4-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ <lrm id="4">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="FAKECLONE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE2_last_0" operation_key="FAKECLONE2_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="22:26:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;22:26:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="29" rc-code="0" op-status="0" interval="0" last-run="1437083649" last-rc-change="1437083649" exec-time="7" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE2_monitor_10000" operation_key="FAKECLONE2_monitor_10000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="23:26:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;23:26:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="30" rc-code="0" op-status="0" interval="10000" last-rc-change="1437083649" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="10:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;10:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437073988" last-rc-change="1437073988" exec-time="963" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_stop_0" operation="stop" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="20:3:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;20:3:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="14" rc-code="0" op-status="0" interval="0" last-run="1437074856" last-rc-change="1437074856" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ </node_state>
|
|
+ </status>
|
|
+</cib>
|
|
diff --git a/pengine/test10/cloned_start_two.dot b/pengine/test10/cloned_start_two.dot
|
|
new file mode 100644
|
|
index 0000000..348d435
|
|
--- /dev/null
|
|
+++ b/pengine/test10/cloned_start_two.dot
|
|
@@ -0,0 +1,26 @@
|
|
+ digraph "g" {
|
|
+"FAKECLONE-clone_running_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE-clone_start_0" -> "FAKECLONE-clone_running_0" [ style = bold]
|
|
+"FAKECLONE-clone_start_0" -> "FAKECLONE:1_start_0 c7auto1" [ style = bold]
|
|
+"FAKECLONE-clone_start_0" -> "FAKECLONE_start_0 c7auto2" [ style = bold]
|
|
+"FAKECLONE-clone_start_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE2-clone_stop_0" -> "FAKECLONE2-clone_stopped_0" [ style = bold]
|
|
+"FAKECLONE2-clone_stop_0" -> "FAKECLONE2_stop_0 c7auto3" [ style = bold]
|
|
+"FAKECLONE2-clone_stop_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE2-clone_stopped_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE2_stop_0 c7auto3" -> "FAKECLONE2-clone_stopped_0" [ style = bold]
|
|
+"FAKECLONE2_stop_0 c7auto3" -> "all_stopped" [ style = bold]
|
|
+"FAKECLONE2_stop_0 c7auto3" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKECLONE:1_monitor_10000 c7auto1" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKECLONE:1_start_0 c7auto1" -> "FAKECLONE-clone_running_0" [ style = bold]
|
|
+"FAKECLONE:1_start_0 c7auto1" -> "FAKECLONE:1_monitor_10000 c7auto1" [ style = bold]
|
|
+"FAKECLONE:1_start_0 c7auto1" -> "clone-one-or-more:order-FAKECLONE-clone-FAKECLONE2-clone-mandatory" [ style = bold]
|
|
+"FAKECLONE:1_start_0 c7auto1" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKECLONE_monitor_10000 c7auto2" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKECLONE_start_0 c7auto2" -> "FAKECLONE-clone_running_0" [ style = bold]
|
|
+"FAKECLONE_start_0 c7auto2" -> "FAKECLONE_monitor_10000 c7auto2" [ style = bold]
|
|
+"FAKECLONE_start_0 c7auto2" -> "clone-one-or-more:order-FAKECLONE-clone-FAKECLONE2-clone-mandatory" [ style = bold]
|
|
+"FAKECLONE_start_0 c7auto2" [ style=bold color="green" fontcolor="black"]
|
|
+"all_stopped" [ style=bold color="green" fontcolor="orange"]
|
|
+"clone-one-or-more:order-FAKECLONE-clone-FAKECLONE2-clone-mandatory" [ style=bold color="green" fontcolor="orange"]
|
|
+}
|
|
diff --git a/pengine/test10/cloned_start_two.exp b/pengine/test10/cloned_start_two.exp
|
|
new file mode 100644
|
|
index 0000000..ee82324
|
|
--- /dev/null
|
|
+++ b/pengine/test10/cloned_start_two.exp
|
|
@@ -0,0 +1,143 @@
|
|
+<transition_graph cluster-delay="60s" stonith-timeout="60s" failed-stop-offset="INFINITY" failed-start-offset="INFINITY" transition_id="0">
|
|
+ <synapse id="0">
|
|
+ <action_set>
|
|
+ <rsc_op id="14" operation="monitor" operation_key="FAKECLONE_monitor_10000" internal_operation_key="FAKECLONE:0_monitor_10000" on_node="c7auto2" on_node_uuid="2">
|
|
+ <primitive id="FAKECLONE" long-id="FAKECLONE:0" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="0" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_interval="10000" CRM_meta_name="monitor" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="13" operation="start" operation_key="FAKECLONE_start_0" internal_operation_key="FAKECLONE:0_start_0" on_node="c7auto2" on_node_uuid="2"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="1">
|
|
+ <action_set>
|
|
+ <rsc_op id="13" operation="start" operation_key="FAKECLONE_start_0" internal_operation_key="FAKECLONE:0_start_0" on_node="c7auto2" on_node_uuid="2">
|
|
+ <primitive id="FAKECLONE" long-id="FAKECLONE:0" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="0" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="start" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="17" operation="start" operation_key="FAKECLONE-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="2">
|
|
+ <action_set>
|
|
+ <rsc_op id="16" operation="monitor" operation_key="FAKECLONE:1_monitor_10000" on_node="c7auto1" on_node_uuid="1">
|
|
+ <primitive id="FAKECLONE" long-id="FAKECLONE:1" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="1" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_interval="10000" CRM_meta_name="monitor" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="15" operation="start" operation_key="FAKECLONE:1_start_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="3">
|
|
+ <action_set>
|
|
+ <rsc_op id="15" operation="start" operation_key="FAKECLONE:1_start_0" on_node="c7auto1" on_node_uuid="1">
|
|
+ <primitive id="FAKECLONE" long-id="FAKECLONE:1" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="1" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="start" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="17" operation="start" operation_key="FAKECLONE-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="4" priority="1000000">
|
|
+ <action_set>
|
|
+ <pseudo_event id="18" operation="running" operation_key="FAKECLONE-clone_running_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="13" operation="start" operation_key="FAKECLONE_start_0" internal_operation_key="FAKECLONE:0_start_0" on_node="c7auto2" on_node_uuid="2"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="15" operation="start" operation_key="FAKECLONE:1_start_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <pseudo_event id="17" operation="start" operation_key="FAKECLONE-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="5">
|
|
+ <action_set>
|
|
+ <pseudo_event id="17" operation="start" operation_key="FAKECLONE-clone_start_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs/>
|
|
+ </synapse>
|
|
+ <synapse id="6">
|
|
+ <action_set>
|
|
+ <rsc_op id="21" operation="stop" operation_key="FAKECLONE2_stop_0" internal_operation_key="FAKECLONE2:0_stop_0" on_node="c7auto3" on_node_uuid="3">
|
|
+ <primitive id="FAKECLONE2" long-id="FAKECLONE2:0" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="0" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="26" operation="stop" operation_key="FAKECLONE2-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="7" priority="1000000">
|
|
+ <action_set>
|
|
+ <pseudo_event id="27" operation="stopped" operation_key="FAKECLONE2-clone_stopped_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="21" operation="stop" operation_key="FAKECLONE2_stop_0" internal_operation_key="FAKECLONE2:0_stop_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <pseudo_event id="26" operation="stop" operation_key="FAKECLONE2-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="8">
|
|
+ <action_set>
|
|
+ <pseudo_event id="26" operation="stop" operation_key="FAKECLONE2-clone_stop_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs/>
|
|
+ </synapse>
|
|
+ <synapse id="9">
|
|
+ <action_set>
|
|
+ <pseudo_event id="5" operation="all_stopped" operation_key="all_stopped">
|
|
+ <attributes />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="21" operation="stop" operation_key="FAKECLONE2_stop_0" internal_operation_key="FAKECLONE2:0_stop_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="10">
|
|
+ <action_set>
|
|
+ <pseudo_event id="4" operation="clone-one-or-more:order-FAKECLONE-clone-FAKECLONE2-clone-mandatory" operation_key="clone-one-or-more:order-FAKECLONE-clone-FAKECLONE2-clone-mandatory">
|
|
+ <attributes />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="13" operation="start" operation_key="FAKECLONE_start_0" internal_operation_key="FAKECLONE:0_start_0" on_node="c7auto2" on_node_uuid="2"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="15" operation="start" operation_key="FAKECLONE:1_start_0" on_node="c7auto1" on_node_uuid="1"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+</transition_graph>
|
|
diff --git a/pengine/test10/cloned_start_two.scores b/pengine/test10/cloned_start_two.scores
|
|
new file mode 100644
|
|
index 0000000..dae3b5d
|
|
--- /dev/null
|
|
+++ b/pengine/test10/cloned_start_two.scores
|
|
@@ -0,0 +1,77 @@
|
|
+Allocation scores:
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE2-clone allocation score on c7auto1: -INFINITY
|
|
+clone_color: FAKECLONE2-clone allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKECLONE2-clone allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE2-clone allocation score on c7auto4: 0
|
|
+clone_color: FAKECLONE2:0 allocation score on c7auto1: -INFINITY
|
|
+clone_color: FAKECLONE2:0 allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKECLONE2:0 allocation score on c7auto3: 1
|
|
+clone_color: FAKECLONE2:0 allocation score on c7auto4: 0
|
|
+clone_color: FAKECLONE2:1 allocation score on c7auto1: -INFINITY
|
|
+clone_color: FAKECLONE2:1 allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKECLONE2:1 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE2:1 allocation score on c7auto4: 1
|
|
+clone_color: FAKECLONE2:2 allocation score on c7auto1: -INFINITY
|
|
+clone_color: FAKECLONE2:2 allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKECLONE2:2 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE2:2 allocation score on c7auto4: 0
|
|
+clone_color: FAKECLONE2:3 allocation score on c7auto1: -INFINITY
|
|
+clone_color: FAKECLONE2:3 allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKECLONE2:3 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE2:3 allocation score on c7auto4: 0
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE2:0 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE2:0 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE2:0 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE2:0 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE2:1 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE2:1 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE2:1 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE2:1 allocation score on c7auto4: 1
|
|
+native_color: FAKECLONE2:2 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE2:2 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE2:2 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE2:2 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE2:3 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE2:3 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE2:3 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE2:3 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:0 allocation score on c7auto1: 0
|
|
+native_color: FAKECLONE:0 allocation score on c7auto2: 0
|
|
+native_color: FAKECLONE:0 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:0 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto1: 0
|
|
+native_color: FAKECLONE:1 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto4: -INFINITY
|
|
+native_color: shooter allocation score on c7auto1: 0
|
|
+native_color: shooter allocation score on c7auto2: 0
|
|
+native_color: shooter allocation score on c7auto3: 0
|
|
+native_color: shooter allocation score on c7auto4: 0
|
|
diff --git a/pengine/test10/cloned_start_two.summary b/pengine/test10/cloned_start_two.summary
|
|
new file mode 100644
|
|
index 0000000..bea4609
|
|
--- /dev/null
|
|
+++ b/pengine/test10/cloned_start_two.summary
|
|
@@ -0,0 +1,42 @@
|
|
+
|
|
+Current cluster status:
|
|
+Node c7auto3 (3): standby
|
|
+Online: [ c7auto1 c7auto2 c7auto4 ]
|
|
+
|
|
+ shooter (stonith:fence_phd_kvm): Started c7auto1
|
|
+ Clone Set: FAKECLONE-clone [FAKECLONE]
|
|
+ Stopped: [ c7auto1 c7auto2 c7auto3 c7auto4 ]
|
|
+ Clone Set: FAKECLONE2-clone [FAKECLONE2]
|
|
+ Started: [ c7auto3 c7auto4 ]
|
|
+ Stopped: [ c7auto1 c7auto2 ]
|
|
+
|
|
+Transition Summary:
|
|
+ * Start FAKECLONE:0 (c7auto2)
|
|
+ * Start FAKECLONE:1 (c7auto1)
|
|
+ * Stop FAKECLONE2:0 (c7auto3)
|
|
+
|
|
+Executing cluster transition:
|
|
+ * Pseudo action: FAKECLONE-clone_start_0
|
|
+ * Pseudo action: FAKECLONE2-clone_stop_0
|
|
+ * Resource action: FAKECLONE start on c7auto2
|
|
+ * Resource action: FAKECLONE start on c7auto1
|
|
+ * Pseudo action: FAKECLONE-clone_running_0
|
|
+ * Resource action: FAKECLONE2 stop on c7auto3
|
|
+ * Pseudo action: FAKECLONE2-clone_stopped_0
|
|
+ * Pseudo action: all_stopped
|
|
+ * Pseudo action: clone-one-or-more:order-FAKECLONE-clone-FAKECLONE2-clone-mandatory
|
|
+ * Resource action: FAKECLONE monitor=10000 on c7auto2
|
|
+ * Resource action: FAKECLONE monitor=10000 on c7auto1
|
|
+
|
|
+Revised cluster status:
|
|
+Node c7auto3 (3): standby
|
|
+Online: [ c7auto1 c7auto2 c7auto4 ]
|
|
+
|
|
+ shooter (stonith:fence_phd_kvm): Started c7auto1
|
|
+ Clone Set: FAKECLONE-clone [FAKECLONE]
|
|
+ Started: [ c7auto1 c7auto2 ]
|
|
+ Stopped: [ c7auto3 c7auto4 ]
|
|
+ Clone Set: FAKECLONE2-clone [FAKECLONE2]
|
|
+ Started: [ c7auto4 ]
|
|
+ Stopped: [ c7auto1 c7auto2 c7auto3 ]
|
|
+
|
|
diff --git a/pengine/test10/cloned_start_two.xml b/pengine/test10/cloned_start_two.xml
|
|
new file mode 100644
|
|
index 0000000..be78317
|
|
--- /dev/null
|
|
+++ b/pengine/test10/cloned_start_two.xml
|
|
@@ -0,0 +1,152 @@
|
|
+<cib crm_feature_set="3.0.10" validate-with="pacemaker-2.3" epoch="31" num_updates="0" admin_epoch="0" cib-last-written="Thu Jul 16 17:55:58 2015" update-origin="c7auto1" update-client="cibadmin" update-user="root" have-quorum="1" dc-uuid="2">
|
|
+ <configuration>
|
|
+ <crm_config>
|
|
+ <cluster_property_set id="cib-bootstrap-options">
|
|
+ <nvpair id="cib-bootstrap-options-have-watchdog" name="have-watchdog" value="false"/>
|
|
+ <nvpair id="cib-bootstrap-options-dc-version" name="dc-version" value="1.1.12-ef86b49"/>
|
|
+ <nvpair id="cib-bootstrap-options-cluster-infrastructure" name="cluster-infrastructure" value="corosync"/>
|
|
+ <nvpair id="cib-bootstrap-options-cluster-name" name="cluster-name" value="phd"/>
|
|
+ </cluster_property_set>
|
|
+ </crm_config>
|
|
+ <nodes>
|
|
+ <node id="1" uname="c7auto1"/>
|
|
+ <node id="2" uname="c7auto2">
|
|
+ <instance_attributes id="nodes-2"/>
|
|
+ </node>
|
|
+ <node id="3" uname="c7auto3">
|
|
+ <instance_attributes id="nodes-3">
|
|
+ <nvpair id="nodes-3-standby" name="standby" value="on"/>
|
|
+ </instance_attributes>
|
|
+ </node>
|
|
+ <node id="4" uname="c7auto4"/>
|
|
+ </nodes>
|
|
+ <resources>
|
|
+ <primitive class="stonith" id="shooter" type="fence_phd_kvm">
|
|
+ <instance_attributes id="shooter-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="shooter-monitor-interval-60s" interval="60s" name="monitor"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <clone id="FAKECLONE-clone">
|
|
+ <primitive class="ocf" id="FAKECLONE" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKECLONE-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKECLONE-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKECLONE-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKECLONE-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <meta_attributes id="FAKECLONE-clone-meta">
|
|
+ <nvpair id="FAKECLONE-clone-min" name="clone-min" value="2"/>
|
|
+ </meta_attributes>
|
|
+ <meta_attributes id="FAKECLONE-clone-meta_attributes"/>
|
|
+ </clone>
|
|
+ <clone id="FAKECLONE2-clone">
|
|
+ <primitive class="ocf" id="FAKECLONE2" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKECLONE2-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKECLONE2-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKECLONE2-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKECLONE2-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <meta_attributes id="FAKECLONE2-clone-meta"/>
|
|
+ </clone>
|
|
+ </resources>
|
|
+ <constraints>
|
|
+ <rsc_location id="location-FAKECLONE-clone-c7auto4--INFINITY" node="c7auto4" rsc="FAKECLONE-clone" score="-INFINITY"/>
|
|
+ <rsc_location id="location-FAKECLONE2-clone-c7auto1--INFINITY" node="c7auto1" rsc="FAKECLONE2-clone" score="-INFINITY"/>
|
|
+ <rsc_location id="location-FAKECLONE2-clone-c7auto2--INFINITY" node="c7auto2" rsc="FAKECLONE2-clone" score="-INFINITY"/>
|
|
+ <rsc_order first="FAKECLONE-clone" first-action="start" id="order-FAKECLONE-clone-FAKECLONE2-clone-mandatory" then="FAKECLONE2-clone" then-action="start"/>
|
|
+ </constraints>
|
|
+ </configuration>
|
|
+ <status>
|
|
+ <node_state id="1" uname="c7auto1" in_ccm="true" crmd="online" crm-debug-origin="do_state_transition" join="member" expected="member">
|
|
+ <transient_attributes id="1">
|
|
+ <instance_attributes id="status-1">
|
|
+ <nvpair id="status-1-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-1-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ <lrm id="1">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="FAKECLONE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE2_last_0" operation_key="FAKECLONE2_stop_0" operation="stop" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="17:28:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;17:28:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="30" rc-code="0" op-status="0" interval="0" last-run="1437083676" last-rc-change="1437083676" exec-time="12" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="11:0:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;11:0:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="6" rc-code="0" op-status="0" interval="0" last-run="1437073991" last-rc-change="1437073991" exec-time="9" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="shooter_monitor_60000" operation_key="shooter_monitor_60000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="9:1:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;9:1:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="7" rc-code="0" op-status="0" interval="60000" last-rc-change="1437073992" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_stop_0" operation="stop" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="14:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;14:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="20" rc-code="0" op-status="0" interval="0" last-run="1437075474" last-rc-change="1437075474" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ </node_state>
|
|
+ <node_state id="2" uname="c7auto2" in_ccm="true" crmd="online" crm-debug-origin="do_state_transition" join="member" expected="member">
|
|
+ <transient_attributes id="2">
|
|
+ <instance_attributes id="status-2">
|
|
+ <nvpair id="status-2-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-2-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ <lrm id="2">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="FAKECLONE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE2_last_0" operation_key="FAKECLONE2_stop_0" operation="stop" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="16:29:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;16:29:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="32" rc-code="0" op-status="0" interval="0" last-run="1437083678" last-rc-change="1437083678" exec-time="10" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="6:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;6:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437073988" last-rc-change="1437073988" exec-time="964" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_stop_0" operation="stop" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="15:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;15:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="18" rc-code="0" op-status="0" interval="0" last-run="1437075473" last-rc-change="1437075473" exec-time="13" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ </node_state>
|
|
+ <node_state id="3" uname="c7auto3" in_ccm="true" crmd="online" crm-debug-origin="do_state_transition" join="member" expected="member">
|
|
+ <transient_attributes id="3">
|
|
+ <instance_attributes id="status-3">
|
|
+ <nvpair id="status-3-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-3-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ <lrm id="3">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="FAKECLONE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE2_last_0" operation_key="FAKECLONE2_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="17:30:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;17:30:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="29" rc-code="0" op-status="0" interval="0" last-run="1437083710" last-rc-change="1437083710" exec-time="6" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE2_monitor_10000" operation_key="FAKECLONE2_monitor_10000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="18:30:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;18:30:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="30" rc-code="0" op-status="0" interval="10000" last-rc-change="1437083710" exec-time="6" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="8:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;8:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437073988" last-rc-change="1437073988" exec-time="963" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_stop_0" operation="stop" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="16:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;16:9:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="18" rc-code="0" op-status="0" interval="0" last-run="1437075473" last-rc-change="1437075473" exec-time="12" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ </node_state>
|
|
+ <node_state id="4" uname="c7auto4" in_ccm="true" crmd="online" crm-debug-origin="do_state_transition" join="member" expected="member">
|
|
+ <transient_attributes id="4">
|
|
+ <instance_attributes id="status-4">
|
|
+ <nvpair id="status-4-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-4-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ <lrm id="4">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="FAKECLONE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE2_last_0" operation_key="FAKECLONE2_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="22:26:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;22:26:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="29" rc-code="0" op-status="0" interval="0" last-run="1437083649" last-rc-change="1437083649" exec-time="7" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE2_monitor_10000" operation_key="FAKECLONE2_monitor_10000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="23:26:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;23:26:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="30" rc-code="0" op-status="0" interval="10000" last-rc-change="1437083649" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="10:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;10:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437073988" last-rc-change="1437073988" exec-time="963" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_stop_0" operation="stop" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="20:3:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;20:3:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="14" rc-code="0" op-status="0" interval="0" last-run="1437074856" last-rc-change="1437074856" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ </node_state>
|
|
+ </status>
|
|
+</cib>
|
|
diff --git a/pengine/test10/cloned_stop_one.dot b/pengine/test10/cloned_stop_one.dot
|
|
new file mode 100644
|
|
index 0000000..d181135
|
|
--- /dev/null
|
|
+++ b/pengine/test10/cloned_stop_one.dot
|
|
@@ -0,0 +1,26 @@
|
|
+ digraph "g" {
|
|
+"FAKECLONE-clone_running_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE-clone_start_0" -> "FAKECLONE-clone_running_0" [ style = bold]
|
|
+"FAKECLONE-clone_start_0" -> "FAKECLONE_start_0 <none>" [ style = dashed]
|
|
+"FAKECLONE-clone_start_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE-clone_stop_0" -> "FAKECLONE-clone_stopped_0" [ style = bold]
|
|
+"FAKECLONE-clone_stop_0" -> "FAKECLONE_stop_0 c7auto3" [ style = bold]
|
|
+"FAKECLONE-clone_stop_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE-clone_stopped_0" -> "FAKECLONE-clone_start_0" [ style = bold]
|
|
+"FAKECLONE-clone_stopped_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE2-clone_stop_0" -> "FAKECLONE2-clone_stopped_0" [ style = bold]
|
|
+"FAKECLONE2-clone_stop_0" -> "FAKECLONE2_stop_0 c7auto3" [ style = bold]
|
|
+"FAKECLONE2-clone_stop_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE2-clone_stopped_0" -> "FAKECLONE-clone_stop_0" [ style = bold]
|
|
+"FAKECLONE2-clone_stopped_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE2_stop_0 c7auto3" -> "FAKECLONE2-clone_stopped_0" [ style = bold]
|
|
+"FAKECLONE2_stop_0 c7auto3" -> "all_stopped" [ style = bold]
|
|
+"FAKECLONE2_stop_0 c7auto3" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKECLONE_start_0 <none>" -> "FAKECLONE-clone_running_0" [ style = dashed]
|
|
+"FAKECLONE_start_0 <none>" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKECLONE_stop_0 c7auto3" -> "FAKECLONE-clone_stopped_0" [ style = bold]
|
|
+"FAKECLONE_stop_0 c7auto3" -> "FAKECLONE_start_0 <none>" [ style = dashed]
|
|
+"FAKECLONE_stop_0 c7auto3" -> "all_stopped" [ style = bold]
|
|
+"FAKECLONE_stop_0 c7auto3" [ style=bold color="green" fontcolor="black"]
|
|
+"all_stopped" [ style=bold color="green" fontcolor="orange"]
|
|
+}
|
|
diff --git a/pengine/test10/cloned_stop_one.exp b/pengine/test10/cloned_stop_one.exp
|
|
new file mode 100644
|
|
index 0000000..9613d6f
|
|
--- /dev/null
|
|
+++ b/pengine/test10/cloned_stop_one.exp
|
|
@@ -0,0 +1,117 @@
|
|
+<transition_graph cluster-delay="60s" stonith-timeout="60s" failed-stop-offset="INFINITY" failed-start-offset="INFINITY" transition_id="0">
|
|
+ <synapse id="0">
|
|
+ <action_set>
|
|
+ <rsc_op id="20" operation="stop" operation_key="FAKECLONE_stop_0" internal_operation_key="FAKECLONE:2_stop_0" on_node="c7auto3" on_node_uuid="3">
|
|
+ <primitive id="FAKECLONE" long-id="FAKECLONE:2" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="2" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="23" operation="stop" operation_key="FAKECLONE-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="1" priority="1000000">
|
|
+ <action_set>
|
|
+ <pseudo_event id="24" operation="stopped" operation_key="FAKECLONE-clone_stopped_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="20" operation="stop" operation_key="FAKECLONE_stop_0" internal_operation_key="FAKECLONE:2_stop_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <pseudo_event id="23" operation="stop" operation_key="FAKECLONE-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="2">
|
|
+ <action_set>
|
|
+ <pseudo_event id="23" operation="stop" operation_key="FAKECLONE-clone_stop_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="31" operation="stopped" operation_key="FAKECLONE2-clone_stopped_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="3" priority="1000000">
|
|
+ <action_set>
|
|
+ <pseudo_event id="22" operation="running" operation_key="FAKECLONE-clone_running_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="21" operation="start" operation_key="FAKECLONE-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="4">
|
|
+ <action_set>
|
|
+ <pseudo_event id="21" operation="start" operation_key="FAKECLONE-clone_start_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="24" operation="stopped" operation_key="FAKECLONE-clone_stopped_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="5">
|
|
+ <action_set>
|
|
+ <rsc_op id="25" operation="stop" operation_key="FAKECLONE2_stop_0" internal_operation_key="FAKECLONE2:0_stop_0" on_node="c7auto3" on_node_uuid="3">
|
|
+ <primitive id="FAKECLONE2" long-id="FAKECLONE2:0" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="0" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="30" operation="stop" operation_key="FAKECLONE2-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="6" priority="1000000">
|
|
+ <action_set>
|
|
+ <pseudo_event id="31" operation="stopped" operation_key="FAKECLONE2-clone_stopped_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="25" operation="stop" operation_key="FAKECLONE2_stop_0" internal_operation_key="FAKECLONE2:0_stop_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <pseudo_event id="30" operation="stop" operation_key="FAKECLONE2-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="7">
|
|
+ <action_set>
|
|
+ <pseudo_event id="30" operation="stop" operation_key="FAKECLONE2-clone_stop_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs/>
|
|
+ </synapse>
|
|
+ <synapse id="8">
|
|
+ <action_set>
|
|
+ <pseudo_event id="8" operation="all_stopped" operation_key="all_stopped">
|
|
+ <attributes />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="20" operation="stop" operation_key="FAKECLONE_stop_0" internal_operation_key="FAKECLONE:2_stop_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="25" operation="stop" operation_key="FAKECLONE2_stop_0" internal_operation_key="FAKECLONE2:0_stop_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+</transition_graph>
|
|
diff --git a/pengine/test10/cloned_stop_one.scores b/pengine/test10/cloned_stop_one.scores
|
|
new file mode 100644
|
|
index 0000000..6d66638
|
|
--- /dev/null
|
|
+++ b/pengine/test10/cloned_stop_one.scores
|
|
@@ -0,0 +1,77 @@
|
|
+Allocation scores:
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE2-clone allocation score on c7auto1: -INFINITY
|
|
+clone_color: FAKECLONE2-clone allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKECLONE2-clone allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE2-clone allocation score on c7auto4: 0
|
|
+clone_color: FAKECLONE2:0 allocation score on c7auto1: -INFINITY
|
|
+clone_color: FAKECLONE2:0 allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKECLONE2:0 allocation score on c7auto3: 1
|
|
+clone_color: FAKECLONE2:0 allocation score on c7auto4: 0
|
|
+clone_color: FAKECLONE2:1 allocation score on c7auto1: -INFINITY
|
|
+clone_color: FAKECLONE2:1 allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKECLONE2:1 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE2:1 allocation score on c7auto4: 1
|
|
+clone_color: FAKECLONE2:2 allocation score on c7auto1: -INFINITY
|
|
+clone_color: FAKECLONE2:2 allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKECLONE2:2 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE2:2 allocation score on c7auto4: 0
|
|
+clone_color: FAKECLONE2:3 allocation score on c7auto1: -INFINITY
|
|
+clone_color: FAKECLONE2:3 allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKECLONE2:3 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE2:3 allocation score on c7auto4: 0
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto1: 1
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto2: 1
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto3: 1
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE2:0 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE2:0 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE2:0 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE2:0 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE2:1 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE2:1 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE2:1 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE2:1 allocation score on c7auto4: 1
|
|
+native_color: FAKECLONE2:2 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE2:2 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE2:2 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE2:2 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE2:3 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE2:3 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE2:3 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE2:3 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:0 allocation score on c7auto1: 1
|
|
+native_color: FAKECLONE:0 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:0 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:0 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto1: 0
|
|
+native_color: FAKECLONE:1 allocation score on c7auto2: 1
|
|
+native_color: FAKECLONE:1 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto4: -INFINITY
|
|
+native_color: shooter allocation score on c7auto1: 0
|
|
+native_color: shooter allocation score on c7auto2: 0
|
|
+native_color: shooter allocation score on c7auto3: 0
|
|
+native_color: shooter allocation score on c7auto4: 0
|
|
diff --git a/pengine/test10/cloned_stop_one.summary b/pengine/test10/cloned_stop_one.summary
|
|
new file mode 100644
|
|
index 0000000..1a952a2
|
|
--- /dev/null
|
|
+++ b/pengine/test10/cloned_stop_one.summary
|
|
@@ -0,0 +1,40 @@
|
|
+
|
|
+Current cluster status:
|
|
+Node c7auto3 (3): standby
|
|
+Online: [ c7auto1 c7auto2 c7auto4 ]
|
|
+
|
|
+ shooter (stonith:fence_phd_kvm): Started c7auto1
|
|
+ Clone Set: FAKECLONE-clone [FAKECLONE]
|
|
+ Started: [ c7auto1 c7auto2 c7auto3 ]
|
|
+ Stopped: [ c7auto4 ]
|
|
+ Clone Set: FAKECLONE2-clone [FAKECLONE2]
|
|
+ Started: [ c7auto3 c7auto4 ]
|
|
+ Stopped: [ c7auto1 c7auto2 ]
|
|
+
|
|
+Transition Summary:
|
|
+ * Stop FAKECLONE:2 (c7auto3)
|
|
+ * Stop FAKECLONE2:0 (c7auto3)
|
|
+
|
|
+Executing cluster transition:
|
|
+ * Pseudo action: FAKECLONE2-clone_stop_0
|
|
+ * Resource action: FAKECLONE2 stop on c7auto3
|
|
+ * Pseudo action: FAKECLONE2-clone_stopped_0
|
|
+ * Pseudo action: FAKECLONE-clone_stop_0
|
|
+ * Resource action: FAKECLONE stop on c7auto3
|
|
+ * Pseudo action: FAKECLONE-clone_stopped_0
|
|
+ * Pseudo action: FAKECLONE-clone_start_0
|
|
+ * Pseudo action: all_stopped
|
|
+ * Pseudo action: FAKECLONE-clone_running_0
|
|
+
|
|
+Revised cluster status:
|
|
+Node c7auto3 (3): standby
|
|
+Online: [ c7auto1 c7auto2 c7auto4 ]
|
|
+
|
|
+ shooter (stonith:fence_phd_kvm): Started c7auto1
|
|
+ Clone Set: FAKECLONE-clone [FAKECLONE]
|
|
+ Started: [ c7auto1 c7auto2 ]
|
|
+ Stopped: [ c7auto3 c7auto4 ]
|
|
+ Clone Set: FAKECLONE2-clone [FAKECLONE2]
|
|
+ Started: [ c7auto4 ]
|
|
+ Stopped: [ c7auto1 c7auto2 c7auto3 ]
|
|
+
|
|
diff --git a/pengine/test10/cloned_stop_one.xml b/pengine/test10/cloned_stop_one.xml
|
|
new file mode 100644
|
|
index 0000000..2e2fdfd
|
|
--- /dev/null
|
|
+++ b/pengine/test10/cloned_stop_one.xml
|
|
@@ -0,0 +1,153 @@
|
|
+<cib crm_feature_set="3.0.10" validate-with="pacemaker-2.3" epoch="29" num_updates="0" admin_epoch="0" cib-last-written="Thu Jul 16 18:03:09 2015" update-origin="c7auto1" update-client="cibadmin" update-user="root" have-quorum="1" dc-uuid="2">
|
|
+ <configuration>
|
|
+ <crm_config>
|
|
+ <cluster_property_set id="cib-bootstrap-options">
|
|
+ <nvpair id="cib-bootstrap-options-have-watchdog" name="have-watchdog" value="false"/>
|
|
+ <nvpair id="cib-bootstrap-options-dc-version" name="dc-version" value="1.1.12-ef86b49"/>
|
|
+ <nvpair id="cib-bootstrap-options-cluster-infrastructure" name="cluster-infrastructure" value="corosync"/>
|
|
+ <nvpair id="cib-bootstrap-options-cluster-name" name="cluster-name" value="phd"/>
|
|
+ </cluster_property_set>
|
|
+ </crm_config>
|
|
+ <nodes>
|
|
+ <node id="1" uname="c7auto1"/>
|
|
+ <node id="2" uname="c7auto2"/>
|
|
+ <node id="3" uname="c7auto3">
|
|
+ <instance_attributes id="nodes-3">
|
|
+ <nvpair id="nodes-3-standby" name="standby" value="on"/>
|
|
+ </instance_attributes>
|
|
+ </node>
|
|
+ <node id="4" uname="c7auto4"/>
|
|
+ </nodes>
|
|
+ <resources>
|
|
+ <primitive class="stonith" id="shooter" type="fence_phd_kvm">
|
|
+ <instance_attributes id="shooter-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="shooter-monitor-interval-60s" interval="60s" name="monitor"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <clone id="FAKECLONE-clone">
|
|
+ <primitive class="ocf" id="FAKECLONE" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKECLONE-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKECLONE-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKECLONE-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKECLONE-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <meta_attributes id="FAKECLONE-clone-meta">
|
|
+ <nvpair id="FAKECLONE-clone-min" name="clone-min" value="2"/>
|
|
+ </meta_attributes>
|
|
+ <meta_attributes id="FAKECLONE-clone-meta_attributes"/>
|
|
+ </clone>
|
|
+ <clone id="FAKECLONE2-clone">
|
|
+ <primitive class="ocf" id="FAKECLONE2" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKECLONE2-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKECLONE2-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKECLONE2-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKECLONE2-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <meta_attributes id="FAKECLONE2-clone-meta"/>
|
|
+ </clone>
|
|
+ </resources>
|
|
+ <constraints>
|
|
+ <rsc_location id="location-FAKECLONE-clone-c7auto4--INFINITY" node="c7auto4" rsc="FAKECLONE-clone" score="-INFINITY"/>
|
|
+ <rsc_location id="location-FAKECLONE2-clone-c7auto1--INFINITY" node="c7auto1" rsc="FAKECLONE2-clone" score="-INFINITY"/>
|
|
+ <rsc_location id="location-FAKECLONE2-clone-c7auto2--INFINITY" node="c7auto2" rsc="FAKECLONE2-clone" score="-INFINITY"/>
|
|
+ <rsc_order first="FAKECLONE-clone" first-action="start" id="order-FAKECLONE-clone-FAKECLONE2-clone-mandatory" then="FAKECLONE2-clone" then-action="start"/>
|
|
+ </constraints>
|
|
+ </configuration>
|
|
+ <status>
|
|
+ <node_state id="1" uname="c7auto1" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <transient_attributes id="1">
|
|
+ <instance_attributes id="status-1">
|
|
+ <nvpair id="status-1-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-1-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ <lrm id="1">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="FAKECLONE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE2_last_0" operation_key="FAKECLONE2_stop_0" operation="stop" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="17:28:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;17:28:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="30" rc-code="0" op-status="0" interval="0" last-run="1437083676" last-rc-change="1437083676" exec-time="12" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="11:0:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;11:0:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="6" rc-code="0" op-status="0" interval="0" last-run="1437073991" last-rc-change="1437073991" exec-time="9" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="shooter_monitor_60000" operation_key="shooter_monitor_60000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="9:1:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;9:1:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="7" rc-code="0" op-status="0" interval="60000" last-rc-change="1437073992" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="16:33:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;16:33:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="31" rc-code="0" op-status="0" interval="0" last-run="1437084158" last-rc-change="1437084158" exec-time="9" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE_monitor_10000" operation_key="FAKECLONE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="17:33:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;17:33:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="32" rc-code="0" op-status="0" interval="10000" last-rc-change="1437084158" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ </node_state>
|
|
+ <node_state id="2" uname="c7auto2" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <transient_attributes id="2">
|
|
+ <instance_attributes id="status-2">
|
|
+ <nvpair id="status-2-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-2-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ <lrm id="2">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="FAKECLONE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE2_last_0" operation_key="FAKECLONE2_stop_0" operation="stop" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="16:29:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;16:29:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="32" rc-code="0" op-status="0" interval="0" last-run="1437083678" last-rc-change="1437083678" exec-time="10" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="6:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;6:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437073988" last-rc-change="1437073988" exec-time="964" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="12:33:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;12:33:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="33" rc-code="0" op-status="0" interval="0" last-run="1437084158" last-rc-change="1437084158" exec-time="11" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE_monitor_10000" operation_key="FAKECLONE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="13:33:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;13:33:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="34" rc-code="0" op-status="0" interval="10000" last-rc-change="1437084158" exec-time="12" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ </node_state>
|
|
+ <node_state id="3" uname="c7auto3" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <transient_attributes id="3">
|
|
+ <instance_attributes id="status-3">
|
|
+ <nvpair id="status-3-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-3-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ <lrm id="3">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="FAKECLONE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE2_last_0" operation_key="FAKECLONE2_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="17:30:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;17:30:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="29" rc-code="0" op-status="0" interval="0" last-run="1437083710" last-rc-change="1437083710" exec-time="6" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE2_monitor_10000" operation_key="FAKECLONE2_monitor_10000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="18:30:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;18:30:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="30" rc-code="0" op-status="0" interval="10000" last-rc-change="1437083710" exec-time="6" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="8:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;8:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437073988" last-rc-change="1437073988" exec-time="963" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="14:33:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;14:33:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="31" rc-code="0" op-status="0" interval="0" last-run="1437084157" last-rc-change="1437084157" exec-time="9" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE_monitor_10000" operation_key="FAKECLONE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="15:33:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;15:33:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="32" rc-code="0" op-status="0" interval="10000" last-rc-change="1437084157" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ </node_state>
|
|
+ <node_state id="4" uname="c7auto4" in_ccm="true" crmd="online" crm-debug-origin="do_state_transition" join="member" expected="member">
|
|
+ <transient_attributes id="4">
|
|
+ <instance_attributes id="status-4">
|
|
+ <nvpair id="status-4-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-4-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ <lrm id="4">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="FAKECLONE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE2_last_0" operation_key="FAKECLONE2_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="22:26:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;22:26:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="29" rc-code="0" op-status="0" interval="0" last-run="1437083649" last-rc-change="1437083649" exec-time="7" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE2_monitor_10000" operation_key="FAKECLONE2_monitor_10000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="23:26:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;23:26:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="30" rc-code="0" op-status="0" interval="10000" last-rc-change="1437083649" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="10:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;10:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437073988" last-rc-change="1437073988" exec-time="963" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_stop_0" operation="stop" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="20:3:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;20:3:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="14" rc-code="0" op-status="0" interval="0" last-run="1437074856" last-rc-change="1437074856" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ </node_state>
|
|
+ </status>
|
|
+</cib>
|
|
diff --git a/pengine/test10/cloned_stop_two.dot b/pengine/test10/cloned_stop_two.dot
|
|
new file mode 100644
|
|
index 0000000..2c7fd3d
|
|
--- /dev/null
|
|
+++ b/pengine/test10/cloned_stop_two.dot
|
|
@@ -0,0 +1,45 @@
|
|
+ digraph "g" {
|
|
+"FAKECLONE-clone_running_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE-clone_start_0" -> "FAKECLONE-clone_running_0" [ style = bold]
|
|
+"FAKECLONE-clone_start_0" -> "FAKECLONE_start_0 <none>" [ style = dashed]
|
|
+"FAKECLONE-clone_start_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE-clone_stop_0" -> "FAKECLONE-clone_stopped_0" [ style = bold]
|
|
+"FAKECLONE-clone_stop_0" -> "FAKECLONE_stop_0 c7auto2" [ style = bold]
|
|
+"FAKECLONE-clone_stop_0" -> "FAKECLONE_stop_0 c7auto3" [ style = bold]
|
|
+"FAKECLONE-clone_stop_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE-clone_stopped_0" -> "FAKECLONE-clone_start_0" [ style = bold]
|
|
+"FAKECLONE-clone_stopped_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE2-clone_running_0" [ style=dashed color="red" fontcolor="orange"]
|
|
+"FAKECLONE2-clone_start_0" -> "FAKECLONE2-clone_running_0" [ style = dashed]
|
|
+"FAKECLONE2-clone_start_0" -> "FAKECLONE2_start_0 c7auto4" [ style = dashed]
|
|
+"FAKECLONE2-clone_start_0" [ style=dashed color="red" fontcolor="orange"]
|
|
+"FAKECLONE2-clone_stop_0" -> "FAKECLONE2-clone_stopped_0" [ style = bold]
|
|
+"FAKECLONE2-clone_stop_0" -> "FAKECLONE2_stop_0 c7auto3" [ style = bold]
|
|
+"FAKECLONE2-clone_stop_0" -> "FAKECLONE2_stop_0 c7auto4" [ style = bold]
|
|
+"FAKECLONE2-clone_stop_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE2-clone_stopped_0" -> "FAKECLONE-clone_stop_0" [ style = bold]
|
|
+"FAKECLONE2-clone_stopped_0" -> "FAKECLONE2-clone_start_0" [ style = dashed]
|
|
+"FAKECLONE2-clone_stopped_0" [ style=bold color="green" fontcolor="orange"]
|
|
+"FAKECLONE2_monitor_10000 c7auto4" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKECLONE2_start_0 c7auto4" -> "FAKECLONE2-clone_running_0" [ style = dashed]
|
|
+"FAKECLONE2_start_0 c7auto4" -> "FAKECLONE2_monitor_10000 c7auto4" [ style = dashed]
|
|
+"FAKECLONE2_start_0 c7auto4" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKECLONE2_stop_0 c7auto3" -> "FAKECLONE2-clone_stopped_0" [ style = bold]
|
|
+"FAKECLONE2_stop_0 c7auto3" -> "all_stopped" [ style = bold]
|
|
+"FAKECLONE2_stop_0 c7auto3" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKECLONE2_stop_0 c7auto4" -> "FAKECLONE2-clone_stopped_0" [ style = bold]
|
|
+"FAKECLONE2_stop_0 c7auto4" -> "FAKECLONE2_start_0 c7auto4" [ style = dashed]
|
|
+"FAKECLONE2_stop_0 c7auto4" -> "all_stopped" [ style = bold]
|
|
+"FAKECLONE2_stop_0 c7auto4" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKECLONE_start_0 <none>" -> "FAKECLONE-clone_running_0" [ style = dashed]
|
|
+"FAKECLONE_start_0 <none>" [ style=dashed color="red" fontcolor="black"]
|
|
+"FAKECLONE_stop_0 c7auto2" -> "FAKECLONE-clone_stopped_0" [ style = bold]
|
|
+"FAKECLONE_stop_0 c7auto2" -> "FAKECLONE_start_0 <none>" [ style = dashed]
|
|
+"FAKECLONE_stop_0 c7auto2" -> "all_stopped" [ style = bold]
|
|
+"FAKECLONE_stop_0 c7auto2" [ style=bold color="green" fontcolor="black"]
|
|
+"FAKECLONE_stop_0 c7auto3" -> "FAKECLONE-clone_stopped_0" [ style = bold]
|
|
+"FAKECLONE_stop_0 c7auto3" -> "FAKECLONE_start_0 <none>" [ style = dashed]
|
|
+"FAKECLONE_stop_0 c7auto3" -> "all_stopped" [ style = bold]
|
|
+"FAKECLONE_stop_0 c7auto3" [ style=bold color="green" fontcolor="black"]
|
|
+"all_stopped" [ style=bold color="green" fontcolor="orange"]
|
|
+}
|
|
diff --git a/pengine/test10/cloned_stop_two.exp b/pengine/test10/cloned_stop_two.exp
|
|
new file mode 100644
|
|
index 0000000..4aa0e58
|
|
--- /dev/null
|
|
+++ b/pengine/test10/cloned_stop_two.exp
|
|
@@ -0,0 +1,155 @@
|
|
+<transition_graph cluster-delay="60s" stonith-timeout="60s" failed-stop-offset="INFINITY" failed-start-offset="INFINITY" transition_id="0">
|
|
+ <synapse id="0">
|
|
+ <action_set>
|
|
+ <rsc_op id="18" operation="stop" operation_key="FAKECLONE_stop_0" internal_operation_key="FAKECLONE:1_stop_0" on_node="c7auto2" on_node_uuid="2">
|
|
+ <primitive id="FAKECLONE" long-id="FAKECLONE:1" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="1" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="22" operation="stop" operation_key="FAKECLONE-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="1">
|
|
+ <action_set>
|
|
+ <rsc_op id="19" operation="stop" operation_key="FAKECLONE_stop_0" internal_operation_key="FAKECLONE:2_stop_0" on_node="c7auto3" on_node_uuid="3">
|
|
+ <primitive id="FAKECLONE" long-id="FAKECLONE:2" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="2" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="22" operation="stop" operation_key="FAKECLONE-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="2" priority="1000000">
|
|
+ <action_set>
|
|
+ <pseudo_event id="23" operation="stopped" operation_key="FAKECLONE-clone_stopped_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="18" operation="stop" operation_key="FAKECLONE_stop_0" internal_operation_key="FAKECLONE:1_stop_0" on_node="c7auto2" on_node_uuid="2"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="19" operation="stop" operation_key="FAKECLONE_stop_0" internal_operation_key="FAKECLONE:2_stop_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <pseudo_event id="22" operation="stop" operation_key="FAKECLONE-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="3">
|
|
+ <action_set>
|
|
+ <pseudo_event id="22" operation="stop" operation_key="FAKECLONE-clone_stop_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="30" operation="stopped" operation_key="FAKECLONE2-clone_stopped_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="4" priority="1000000">
|
|
+ <action_set>
|
|
+ <pseudo_event id="21" operation="running" operation_key="FAKECLONE-clone_running_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="20" operation="start" operation_key="FAKECLONE-clone_start_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="5">
|
|
+ <action_set>
|
|
+ <pseudo_event id="20" operation="start" operation_key="FAKECLONE-clone_start_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="23" operation="stopped" operation_key="FAKECLONE-clone_stopped_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="6">
|
|
+ <action_set>
|
|
+ <rsc_op id="24" operation="stop" operation_key="FAKECLONE2_stop_0" internal_operation_key="FAKECLONE2:0_stop_0" on_node="c7auto3" on_node_uuid="3">
|
|
+ <primitive id="FAKECLONE2" long-id="FAKECLONE2:0" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="0" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="29" operation="stop" operation_key="FAKECLONE2-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="7">
|
|
+ <action_set>
|
|
+ <rsc_op id="25" operation="stop" operation_key="FAKECLONE2_stop_0" internal_operation_key="FAKECLONE2:1_stop_0" on_node="c7auto4" on_node_uuid="4">
|
|
+ <primitive id="FAKECLONE2" long-id="FAKECLONE2:1" class="ocf" provider="heartbeat" type="Dummy"/>
|
|
+ <attributes CRM_meta_clone="1" CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_name="stop" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </rsc_op>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <pseudo_event id="29" operation="stop" operation_key="FAKECLONE2-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="8" priority="1000000">
|
|
+ <action_set>
|
|
+ <pseudo_event id="30" operation="stopped" operation_key="FAKECLONE2-clone_stopped_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="24" operation="stop" operation_key="FAKECLONE2_stop_0" internal_operation_key="FAKECLONE2:0_stop_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="25" operation="stop" operation_key="FAKECLONE2_stop_0" internal_operation_key="FAKECLONE2:1_stop_0" on_node="c7auto4" on_node_uuid="4"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <pseudo_event id="29" operation="stop" operation_key="FAKECLONE2-clone_stop_0"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+ <synapse id="9">
|
|
+ <action_set>
|
|
+ <pseudo_event id="29" operation="stop" operation_key="FAKECLONE2-clone_stop_0">
|
|
+ <attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="20000" />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs/>
|
|
+ </synapse>
|
|
+ <synapse id="10">
|
|
+ <action_set>
|
|
+ <pseudo_event id="8" operation="all_stopped" operation_key="all_stopped">
|
|
+ <attributes />
|
|
+ </pseudo_event>
|
|
+ </action_set>
|
|
+ <inputs>
|
|
+ <trigger>
|
|
+ <rsc_op id="18" operation="stop" operation_key="FAKECLONE_stop_0" internal_operation_key="FAKECLONE:1_stop_0" on_node="c7auto2" on_node_uuid="2"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="19" operation="stop" operation_key="FAKECLONE_stop_0" internal_operation_key="FAKECLONE:2_stop_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="24" operation="stop" operation_key="FAKECLONE2_stop_0" internal_operation_key="FAKECLONE2:0_stop_0" on_node="c7auto3" on_node_uuid="3"/>
|
|
+ </trigger>
|
|
+ <trigger>
|
|
+ <rsc_op id="25" operation="stop" operation_key="FAKECLONE2_stop_0" internal_operation_key="FAKECLONE2:1_stop_0" on_node="c7auto4" on_node_uuid="4"/>
|
|
+ </trigger>
|
|
+ </inputs>
|
|
+ </synapse>
|
|
+</transition_graph>
|
|
diff --git a/pengine/test10/cloned_stop_two.scores b/pengine/test10/cloned_stop_two.scores
|
|
new file mode 100644
|
|
index 0000000..f6e9779
|
|
--- /dev/null
|
|
+++ b/pengine/test10/cloned_stop_two.scores
|
|
@@ -0,0 +1,77 @@
|
|
+Allocation scores:
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE-clone allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE2-clone allocation score on c7auto1: -INFINITY
|
|
+clone_color: FAKECLONE2-clone allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKECLONE2-clone allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE2-clone allocation score on c7auto4: 0
|
|
+clone_color: FAKECLONE2:0 allocation score on c7auto1: -INFINITY
|
|
+clone_color: FAKECLONE2:0 allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKECLONE2:0 allocation score on c7auto3: 1
|
|
+clone_color: FAKECLONE2:0 allocation score on c7auto4: 0
|
|
+clone_color: FAKECLONE2:1 allocation score on c7auto1: -INFINITY
|
|
+clone_color: FAKECLONE2:1 allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKECLONE2:1 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE2:1 allocation score on c7auto4: 1
|
|
+clone_color: FAKECLONE2:2 allocation score on c7auto1: -INFINITY
|
|
+clone_color: FAKECLONE2:2 allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKECLONE2:2 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE2:2 allocation score on c7auto4: 0
|
|
+clone_color: FAKECLONE2:3 allocation score on c7auto1: -INFINITY
|
|
+clone_color: FAKECLONE2:3 allocation score on c7auto2: -INFINITY
|
|
+clone_color: FAKECLONE2:3 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE2:3 allocation score on c7auto4: 0
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto1: 1
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:0 allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto2: 1
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:1 allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto3: 1
|
|
+clone_color: FAKECLONE:2 allocation score on c7auto4: -INFINITY
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto1: 0
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto2: 0
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto3: 0
|
|
+clone_color: FAKECLONE:3 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE2:0 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE2:0 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE2:0 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE2:0 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE2:1 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE2:1 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE2:1 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE2:1 allocation score on c7auto4: 1
|
|
+native_color: FAKECLONE2:2 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE2:2 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE2:2 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE2:2 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE2:3 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE2:3 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE2:3 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE2:3 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:0 allocation score on c7auto1: 1
|
|
+native_color: FAKECLONE:0 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:0 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:0 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:1 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:2 allocation score on c7auto4: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto1: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto2: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto3: -INFINITY
|
|
+native_color: FAKECLONE:3 allocation score on c7auto4: -INFINITY
|
|
+native_color: shooter allocation score on c7auto1: 0
|
|
+native_color: shooter allocation score on c7auto2: 0
|
|
+native_color: shooter allocation score on c7auto3: 0
|
|
+native_color: shooter allocation score on c7auto4: 0
|
|
diff --git a/pengine/test10/cloned_stop_two.summary b/pengine/test10/cloned_stop_two.summary
|
|
new file mode 100644
|
|
index 0000000..531295f
|
|
--- /dev/null
|
|
+++ b/pengine/test10/cloned_stop_two.summary
|
|
@@ -0,0 +1,45 @@
|
|
+
|
|
+Current cluster status:
|
|
+Node c7auto2 (2): standby
|
|
+Node c7auto3 (3): standby
|
|
+Online: [ c7auto1 c7auto4 ]
|
|
+
|
|
+ shooter (stonith:fence_phd_kvm): Started c7auto1
|
|
+ Clone Set: FAKECLONE-clone [FAKECLONE]
|
|
+ Started: [ c7auto1 c7auto2 c7auto3 ]
|
|
+ Stopped: [ c7auto4 ]
|
|
+ Clone Set: FAKECLONE2-clone [FAKECLONE2]
|
|
+ Started: [ c7auto3 c7auto4 ]
|
|
+ Stopped: [ c7auto1 c7auto2 ]
|
|
+
|
|
+Transition Summary:
|
|
+ * Stop FAKECLONE:1 (c7auto2)
|
|
+ * Stop FAKECLONE:2 (c7auto3)
|
|
+ * Stop FAKECLONE2:0 (c7auto3)
|
|
+ * Stop FAKECLONE2:1 (Started c7auto4)
|
|
+
|
|
+Executing cluster transition:
|
|
+ * Pseudo action: FAKECLONE2-clone_stop_0
|
|
+ * Resource action: FAKECLONE2 stop on c7auto3
|
|
+ * Resource action: FAKECLONE2 stop on c7auto4
|
|
+ * Pseudo action: FAKECLONE2-clone_stopped_0
|
|
+ * Pseudo action: FAKECLONE-clone_stop_0
|
|
+ * Resource action: FAKECLONE stop on c7auto2
|
|
+ * Resource action: FAKECLONE stop on c7auto3
|
|
+ * Pseudo action: FAKECLONE-clone_stopped_0
|
|
+ * Pseudo action: FAKECLONE-clone_start_0
|
|
+ * Pseudo action: all_stopped
|
|
+ * Pseudo action: FAKECLONE-clone_running_0
|
|
+
|
|
+Revised cluster status:
|
|
+Node c7auto2 (2): standby
|
|
+Node c7auto3 (3): standby
|
|
+Online: [ c7auto1 c7auto4 ]
|
|
+
|
|
+ shooter (stonith:fence_phd_kvm): Started c7auto1
|
|
+ Clone Set: FAKECLONE-clone [FAKECLONE]
|
|
+ Started: [ c7auto1 ]
|
|
+ Stopped: [ c7auto2 c7auto3 c7auto4 ]
|
|
+ Clone Set: FAKECLONE2-clone [FAKECLONE2]
|
|
+ Stopped: [ c7auto1 c7auto2 c7auto3 c7auto4 ]
|
|
+
|
|
diff --git a/pengine/test10/cloned_stop_two.xml b/pengine/test10/cloned_stop_two.xml
|
|
new file mode 100644
|
|
index 0000000..220dfc2
|
|
--- /dev/null
|
|
+++ b/pengine/test10/cloned_stop_two.xml
|
|
@@ -0,0 +1,157 @@
|
|
+<cib crm_feature_set="3.0.10" validate-with="pacemaker-2.3" epoch="30" num_updates="0" admin_epoch="0" cib-last-written="Thu Jul 16 18:03:09 2015" update-origin="c7auto1" update-client="cibadmin" update-user="root" have-quorum="1" dc-uuid="2">
|
|
+ <configuration>
|
|
+ <crm_config>
|
|
+ <cluster_property_set id="cib-bootstrap-options">
|
|
+ <nvpair id="cib-bootstrap-options-have-watchdog" name="have-watchdog" value="false"/>
|
|
+ <nvpair id="cib-bootstrap-options-dc-version" name="dc-version" value="1.1.12-ef86b49"/>
|
|
+ <nvpair id="cib-bootstrap-options-cluster-infrastructure" name="cluster-infrastructure" value="corosync"/>
|
|
+ <nvpair id="cib-bootstrap-options-cluster-name" name="cluster-name" value="phd"/>
|
|
+ </cluster_property_set>
|
|
+ </crm_config>
|
|
+ <nodes>
|
|
+ <node id="1" uname="c7auto1"/>
|
|
+ <node id="2" uname="c7auto2">
|
|
+ <instance_attributes id="nodes-2">
|
|
+ <nvpair id="nodes-2-standby" name="standby" value="on"/>
|
|
+ </instance_attributes>
|
|
+ </node>
|
|
+ <node id="3" uname="c7auto3">
|
|
+ <instance_attributes id="nodes-3">
|
|
+ <nvpair id="nodes-3-standby" name="standby" value="on"/>
|
|
+ </instance_attributes>
|
|
+ </node>
|
|
+ <node id="4" uname="c7auto4"/>
|
|
+ </nodes>
|
|
+ <resources>
|
|
+ <primitive class="stonith" id="shooter" type="fence_phd_kvm">
|
|
+ <instance_attributes id="shooter-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="shooter-monitor-interval-60s" interval="60s" name="monitor"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <clone id="FAKECLONE-clone">
|
|
+ <primitive class="ocf" id="FAKECLONE" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKECLONE-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKECLONE-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKECLONE-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKECLONE-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <meta_attributes id="FAKECLONE-clone-meta">
|
|
+ <nvpair id="FAKECLONE-clone-min" name="clone-min" value="2"/>
|
|
+ </meta_attributes>
|
|
+ <meta_attributes id="FAKECLONE-clone-meta_attributes"/>
|
|
+ </clone>
|
|
+ <clone id="FAKECLONE2-clone">
|
|
+ <primitive class="ocf" id="FAKECLONE2" provider="heartbeat" type="Dummy">
|
|
+ <instance_attributes id="FAKECLONE2-instance_attributes"/>
|
|
+ <operations>
|
|
+ <op id="FAKECLONE2-start-timeout-20" interval="0s" name="start" timeout="20"/>
|
|
+ <op id="FAKECLONE2-stop-timeout-20" interval="0s" name="stop" timeout="20"/>
|
|
+ <op id="FAKECLONE2-monitor-interval-10" interval="10" name="monitor" timeout="20"/>
|
|
+ </operations>
|
|
+ </primitive>
|
|
+ <meta_attributes id="FAKECLONE2-clone-meta"/>
|
|
+ </clone>
|
|
+ </resources>
|
|
+ <constraints>
|
|
+ <rsc_location id="location-FAKECLONE-clone-c7auto4--INFINITY" node="c7auto4" rsc="FAKECLONE-clone" score="-INFINITY"/>
|
|
+ <rsc_location id="location-FAKECLONE2-clone-c7auto1--INFINITY" node="c7auto1" rsc="FAKECLONE2-clone" score="-INFINITY"/>
|
|
+ <rsc_location id="location-FAKECLONE2-clone-c7auto2--INFINITY" node="c7auto2" rsc="FAKECLONE2-clone" score="-INFINITY"/>
|
|
+ <rsc_order first="FAKECLONE-clone" first-action="start" id="order-FAKECLONE-clone-FAKECLONE2-clone-mandatory" then="FAKECLONE2-clone" then-action="start"/>
|
|
+ </constraints>
|
|
+ </configuration>
|
|
+ <status>
|
|
+ <node_state id="1" uname="c7auto1" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <transient_attributes id="1">
|
|
+ <instance_attributes id="status-1">
|
|
+ <nvpair id="status-1-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-1-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ <lrm id="1">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="FAKECLONE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE2_last_0" operation_key="FAKECLONE2_stop_0" operation="stop" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="17:28:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;17:28:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="30" rc-code="0" op-status="0" interval="0" last-run="1437083676" last-rc-change="1437083676" exec-time="12" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="11:0:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;11:0:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="6" rc-code="0" op-status="0" interval="0" last-run="1437073991" last-rc-change="1437073991" exec-time="9" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="shooter_monitor_60000" operation_key="shooter_monitor_60000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="9:1:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;9:1:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="7" rc-code="0" op-status="0" interval="60000" last-rc-change="1437073992" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="16:33:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;16:33:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="31" rc-code="0" op-status="0" interval="0" last-run="1437084158" last-rc-change="1437084158" exec-time="9" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE_monitor_10000" operation_key="FAKECLONE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="17:33:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;17:33:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto1" call-id="32" rc-code="0" op-status="0" interval="10000" last-rc-change="1437084158" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ </node_state>
|
|
+ <node_state id="2" uname="c7auto2" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <transient_attributes id="2">
|
|
+ <instance_attributes id="status-2">
|
|
+ <nvpair id="status-2-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-2-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ <lrm id="2">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="FAKECLONE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE2_last_0" operation_key="FAKECLONE2_stop_0" operation="stop" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="16:29:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;16:29:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="32" rc-code="0" op-status="0" interval="0" last-run="1437083678" last-rc-change="1437083678" exec-time="10" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="6:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;6:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437073988" last-rc-change="1437073988" exec-time="964" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="12:33:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;12:33:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="33" rc-code="0" op-status="0" interval="0" last-run="1437084158" last-rc-change="1437084158" exec-time="11" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE_monitor_10000" operation_key="FAKECLONE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="13:33:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;13:33:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto2" call-id="34" rc-code="0" op-status="0" interval="10000" last-rc-change="1437084158" exec-time="12" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ </node_state>
|
|
+ <node_state id="3" uname="c7auto3" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
|
|
+ <transient_attributes id="3">
|
|
+ <instance_attributes id="status-3">
|
|
+ <nvpair id="status-3-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-3-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ <lrm id="3">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="FAKECLONE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE2_last_0" operation_key="FAKECLONE2_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="17:30:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;17:30:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="29" rc-code="0" op-status="0" interval="0" last-run="1437083710" last-rc-change="1437083710" exec-time="6" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE2_monitor_10000" operation_key="FAKECLONE2_monitor_10000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="18:30:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;18:30:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="30" rc-code="0" op-status="0" interval="10000" last-rc-change="1437083710" exec-time="6" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="8:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;8:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437073988" last-rc-change="1437073988" exec-time="963" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="14:33:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;14:33:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="31" rc-code="0" op-status="0" interval="0" last-run="1437084157" last-rc-change="1437084157" exec-time="9" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE_monitor_10000" operation_key="FAKECLONE_monitor_10000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.10" transition-key="15:33:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;15:33:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto3" call-id="32" rc-code="0" op-status="0" interval="10000" last-rc-change="1437084157" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ </node_state>
|
|
+ <node_state id="4" uname="c7auto4" in_ccm="true" crmd="online" crm-debug-origin="do_state_transition" join="member" expected="member">
|
|
+ <transient_attributes id="4">
|
|
+ <instance_attributes id="status-4">
|
|
+ <nvpair id="status-4-shutdown" name="shutdown" value="0"/>
|
|
+ <nvpair id="status-4-probe_complete" name="probe_complete" value="true"/>
|
|
+ </instance_attributes>
|
|
+ </transient_attributes>
|
|
+ <lrm id="4">
|
|
+ <lrm_resources>
|
|
+ <lrm_resource id="FAKECLONE2" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE2_last_0" operation_key="FAKECLONE2_start_0" operation="start" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="22:26:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;22:26:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="29" rc-code="0" op-status="0" interval="0" last-run="1437083649" last-rc-change="1437083649" exec-time="7" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8" op-force-restart=" fake " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ <lrm_rsc_op id="FAKECLONE2_monitor_10000" operation_key="FAKECLONE2_monitor_10000" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="23:26:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;23:26:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="30" rc-code="0" op-status="0" interval="10000" last-rc-change="1437083649" exec-time="7" queue-time="0" op-digest="4811cef7f7f94e3a35a70be7916cb2fd"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="shooter" type="fence_phd_kvm" class="stonith">
|
|
+ <lrm_rsc_op id="shooter_last_0" operation_key="shooter_monitor_0" operation="monitor" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="10:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:7;10:0:7:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1437073988" last-rc-change="1437073988" exec-time="963" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ <lrm_resource id="FAKECLONE" type="Dummy" class="ocf" provider="heartbeat">
|
|
+ <lrm_rsc_op id="FAKECLONE_last_0" operation_key="FAKECLONE_stop_0" operation="stop" crm-debug-origin="build_active_RAs" crm_feature_set="3.0.10" transition-key="20:3:0:b489d50c-a7db-4605-8519-a2d5e1452e29" transition-magic="0:0;20:3:0:b489d50c-a7db-4605-8519-a2d5e1452e29" on_node="c7auto4" call-id="14" rc-code="0" op-status="0" interval="0" last-run="1437074856" last-rc-change="1437074856" exec-time="8" queue-time="0" op-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
|
|
+ </lrm_resource>
|
|
+ </lrm_resources>
|
|
+ </lrm>
|
|
+ </node_state>
|
|
+ </status>
|
|
+</cib>
|
|
diff --git a/pengine/test10/stonith-1.dot b/pengine/test10/stonith-1.dot
|
|
index d64edcf..3814ac9 100644
|
|
--- a/pengine/test10/stonith-1.dot
|
|
+++ b/pengine/test10/stonith-1.dot
|
|
@@ -88,8 +88,6 @@ digraph "g" {
|
|
"rsc_sles-3_stop_0 sles-3" -> "rsc_sles-3_start_0 sles-4" [ style = bold]
|
|
"rsc_sles-3_stop_0 sles-3" [ style=bold color="green" fontcolor="orange" ]
|
|
"rsc_sles-4_monitor_5000 sles-4" [ style=bold color="green" fontcolor="black" ]
|
|
-"stonith 'reboot' sles-3" -> "DoFencing_stop_0" [ style = bold]
|
|
-"stonith 'reboot' sles-3" -> "child_DoFencing:2_stop_0 sles-3" [ style = bold]
|
|
"stonith 'reboot' sles-3" -> "master_rsc_1_stop_0" [ style = bold]
|
|
"stonith 'reboot' sles-3" -> "migrator_stop_0 sles-3" [ style = bold]
|
|
"stonith 'reboot' sles-3" -> "ocf_msdummy:2_stop_0 sles-3" [ style = bold]
|
|
diff --git a/pengine/test10/stonith-1.exp b/pengine/test10/stonith-1.exp
|
|
index 4d58afa..40b22cb 100644
|
|
--- a/pengine/test10/stonith-1.exp
|
|
+++ b/pengine/test10/stonith-1.exp
|
|
@@ -210,9 +210,6 @@
|
|
<trigger>
|
|
<pseudo_event id="47" operation="stop" operation_key="DoFencing_stop_0"/>
|
|
</trigger>
|
|
- <trigger>
|
|
- <crm_event id="72" operation="stonith" operation_key="stonith-sles-3-reboot" on_node="sles-3" on_node_uuid="2298606a-6a8c-499a-9d25-76242f7006ec"/>
|
|
- </trigger>
|
|
</inputs>
|
|
</synapse>
|
|
<synapse id="17" priority="1000000">
|
|
@@ -236,11 +233,7 @@
|
|
<attributes CRM_meta_clone_max="4" CRM_meta_clone_node_max="1" CRM_meta_globally_unique="false" CRM_meta_notify="false" CRM_meta_timeout="10000" />
|
|
</pseudo_event>
|
|
</action_set>
|
|
- <inputs>
|
|
- <trigger>
|
|
- <crm_event id="72" operation="stonith" operation_key="stonith-sles-3-reboot" on_node="sles-3" on_node_uuid="2298606a-6a8c-499a-9d25-76242f7006ec"/>
|
|
- </trigger>
|
|
- </inputs>
|
|
+ <inputs/>
|
|
</synapse>
|
|
<synapse id="19" priority="1000000">
|
|
<action_set>
|
|
diff --git a/pengine/test10/stonith-1.summary b/pengine/test10/stonith-1.summary
|
|
index ef904fe..e99bb5e 100644
|
|
--- a/pengine/test10/stonith-1.summary
|
|
+++ b/pengine/test10/stonith-1.summary
|
|
@@ -45,20 +45,22 @@ Executing cluster transition:
|
|
* Resource action: lsb_dummy monitor=5000 on sles-2
|
|
* Resource action: rsc_sles-2 monitor=5000 on sles-2
|
|
* Resource action: rsc_sles-4 monitor=5000 on sles-4
|
|
+ * Pseudo action: DoFencing_stop_0
|
|
* Fencing sles-3 (reboot)
|
|
* Pseudo action: stonith_complete
|
|
* Resource action: r192.168.100.183 start on sles-1
|
|
* Pseudo action: migrator_stop_0
|
|
* Pseudo action: rsc_sles-3_stop_0
|
|
- * Pseudo action: DoFencing_stop_0
|
|
+ * Pseudo action: child_DoFencing:2_stop_0
|
|
+ * Pseudo action: DoFencing_stopped_0
|
|
+ * Pseudo action: DoFencing_start_0
|
|
* Pseudo action: master_rsc_1_stop_0
|
|
* Pseudo action: group-1_running_0
|
|
* Resource action: r192.168.100.183 monitor=5000 on sles-1
|
|
* Resource action: migrator start on sles-4
|
|
* Resource action: rsc_sles-3 start on sles-4
|
|
- * Pseudo action: child_DoFencing:2_stop_0
|
|
- * Pseudo action: DoFencing_stopped_0
|
|
- * Pseudo action: DoFencing_start_0
|
|
+ * Resource action: child_DoFencing:2 start on sles-4
|
|
+ * Pseudo action: DoFencing_running_0
|
|
* Pseudo action: ocf_msdummy:2_stop_0
|
|
* Pseudo action: ocf_msdummy:5_stop_0
|
|
* Pseudo action: master_rsc_1_stopped_0
|
|
@@ -66,8 +68,7 @@ Executing cluster transition:
|
|
* Pseudo action: all_stopped
|
|
* Resource action: migrator monitor=10000 on sles-4
|
|
* Resource action: rsc_sles-3 monitor=5000 on sles-4
|
|
- * Resource action: child_DoFencing:2 start on sles-4
|
|
- * Pseudo action: DoFencing_running_0
|
|
+ * Resource action: child_DoFencing:2 monitor=60000 on sles-4
|
|
* Resource action: ocf_msdummy:0 start on sles-4
|
|
* Resource action: ocf_msdummy:1 start on sles-1
|
|
* Resource action: ocf_msdummy:2 start on sles-2
|
|
@@ -75,7 +76,6 @@ Executing cluster transition:
|
|
* Resource action: ocf_msdummy:4 start on sles-1
|
|
* Resource action: ocf_msdummy:5 start on sles-2
|
|
* Pseudo action: master_rsc_1_running_0
|
|
- * Resource action: child_DoFencing:2 monitor=60000 on sles-4
|
|
* Resource action: ocf_msdummy:0 monitor=5000 on sles-4
|
|
* Resource action: ocf_msdummy:1 monitor=5000 on sles-1
|
|
* Resource action: ocf_msdummy:2 monitor=5000 on sles-2
|
|
diff --git a/pengine/test10/ticket-master-21.dot b/pengine/test10/ticket-master-21.dot
|
|
index 60386a8..3f94948 100644
|
|
--- a/pengine/test10/ticket-master-21.dot
|
|
+++ b/pengine/test10/ticket-master-21.dot
|
|
@@ -23,7 +23,6 @@ digraph "g" {
|
|
"stonith 'reboot' node1" -> "ms1_stop_0" [ style = bold]
|
|
"stonith 'reboot' node1" -> "rsc1:1_demote_0 node1" [ style = bold]
|
|
"stonith 'reboot' node1" -> "rsc1:1_stop_0 node1" [ style = bold]
|
|
-"stonith 'reboot' node1" -> "rsc_stonith_stop_0 node1" [ style = bold]
|
|
"stonith 'reboot' node1" -> "stonith_complete" [ style = bold]
|
|
"stonith 'reboot' node1" [ style=bold color="green" fontcolor="black"]
|
|
"stonith_complete" -> "all_stopped" [ style = bold]
|
|
diff --git a/pengine/test10/ticket-master-21.exp b/pengine/test10/ticket-master-21.exp
|
|
index cc8df2f..c32bac5 100644
|
|
--- a/pengine/test10/ticket-master-21.exp
|
|
+++ b/pengine/test10/ticket-master-21.exp
|
|
@@ -18,11 +18,7 @@
|
|
<attributes CRM_meta_timeout="20000" />
|
|
</pseudo_event>
|
|
</action_set>
|
|
- <inputs>
|
|
- <trigger>
|
|
- <crm_event id="21" operation="stonith" operation_key="stonith-node1-reboot" on_node="node1" on_node_uuid="node1"/>
|
|
- </trigger>
|
|
- </inputs>
|
|
+ <inputs/>
|
|
</synapse>
|
|
<synapse id="2">
|
|
<action_set>
|
|
diff --git a/pengine/test10/ticket-master-21.summary b/pengine/test10/ticket-master-21.summary
|
|
index 64a9cbe..b228696 100644
|
|
--- a/pengine/test10/ticket-master-21.summary
|
|
+++ b/pengine/test10/ticket-master-21.summary
|
|
@@ -12,14 +12,14 @@ Transition Summary:
|
|
* Demote rsc1:0 (Master -> Stopped node1)
|
|
|
|
Executing cluster transition:
|
|
+ * Pseudo action: rsc_stonith_stop_0
|
|
* Pseudo action: ms1_demote_0
|
|
* Fencing node1 (reboot)
|
|
* Pseudo action: stonith_complete
|
|
- * Pseudo action: rsc_stonith_stop_0
|
|
+ * Resource action: rsc_stonith start on node2
|
|
* Pseudo action: rsc1:1_demote_0
|
|
* Pseudo action: ms1_demoted_0
|
|
* Pseudo action: ms1_stop_0
|
|
- * Resource action: rsc_stonith start on node2
|
|
* Pseudo action: rsc1:1_stop_0
|
|
* Pseudo action: ms1_stopped_0
|
|
* Pseudo action: all_stopped
|
|
diff --git a/pengine/test10/ticket-master-9.dot b/pengine/test10/ticket-master-9.dot
|
|
index 3a29836..c648feb 100644
|
|
--- a/pengine/test10/ticket-master-9.dot
|
|
+++ b/pengine/test10/ticket-master-9.dot
|
|
@@ -23,7 +23,6 @@ digraph "g" {
|
|
"stonith 'reboot' node1" -> "ms1_stop_0" [ style = bold]
|
|
"stonith 'reboot' node1" -> "rsc1:1_demote_0 node1" [ style = bold]
|
|
"stonith 'reboot' node1" -> "rsc1:1_stop_0 node1" [ style = bold]
|
|
-"stonith 'reboot' node1" -> "rsc_stonith_stop_0 node1" [ style = bold]
|
|
"stonith 'reboot' node1" -> "stonith_complete" [ style = bold]
|
|
"stonith 'reboot' node1" [ style=bold color="green" fontcolor="black"]
|
|
"stonith_complete" -> "all_stopped" [ style = bold]
|
|
diff --git a/pengine/test10/ticket-master-9.exp b/pengine/test10/ticket-master-9.exp
|
|
index cc8df2f..c32bac5 100644
|
|
--- a/pengine/test10/ticket-master-9.exp
|
|
+++ b/pengine/test10/ticket-master-9.exp
|
|
@@ -18,11 +18,7 @@
|
|
<attributes CRM_meta_timeout="20000" />
|
|
</pseudo_event>
|
|
</action_set>
|
|
- <inputs>
|
|
- <trigger>
|
|
- <crm_event id="21" operation="stonith" operation_key="stonith-node1-reboot" on_node="node1" on_node_uuid="node1"/>
|
|
- </trigger>
|
|
- </inputs>
|
|
+ <inputs/>
|
|
</synapse>
|
|
<synapse id="2">
|
|
<action_set>
|
|
diff --git a/pengine/test10/ticket-master-9.summary b/pengine/test10/ticket-master-9.summary
|
|
index 64a9cbe..b228696 100644
|
|
--- a/pengine/test10/ticket-master-9.summary
|
|
+++ b/pengine/test10/ticket-master-9.summary
|
|
@@ -12,14 +12,14 @@ Transition Summary:
|
|
* Demote rsc1:0 (Master -> Stopped node1)
|
|
|
|
Executing cluster transition:
|
|
+ * Pseudo action: rsc_stonith_stop_0
|
|
* Pseudo action: ms1_demote_0
|
|
* Fencing node1 (reboot)
|
|
* Pseudo action: stonith_complete
|
|
- * Pseudo action: rsc_stonith_stop_0
|
|
+ * Resource action: rsc_stonith start on node2
|
|
* Pseudo action: rsc1:1_demote_0
|
|
* Pseudo action: ms1_demoted_0
|
|
* Pseudo action: ms1_stop_0
|
|
- * Resource action: rsc_stonith start on node2
|
|
* Pseudo action: rsc1:1_stop_0
|
|
* Pseudo action: ms1_stopped_0
|
|
* Pseudo action: all_stopped
|
|
diff --git a/pengine/test10/whitebox-imply-stop-on-fence.dot b/pengine/test10/whitebox-imply-stop-on-fence.dot
|
|
index 66700b8..b3fd40b 100644
|
|
--- a/pengine/test10/whitebox-imply-stop-on-fence.dot
|
|
+++ b/pengine/test10/whitebox-imply-stop-on-fence.dot
|
|
@@ -69,7 +69,6 @@
|
|
"stonith 'reboot' kiff-01" -> "clvmd_stop_0 kiff-01" [ style = bold]
|
|
"stonith 'reboot' kiff-01" -> "dlm-clone_stop_0" [ style = bold]
|
|
"stonith 'reboot' kiff-01" -> "dlm_stop_0 kiff-01" [ style = bold]
|
|
-"stonith 'reboot' kiff-01" -> "fence-kiff-02_stop_0 kiff-01" [ style = bold]
|
|
"stonith 'reboot' kiff-01" -> "lxc-01_kiff-01_stop_0 kiff-01" [ style = bold]
|
|
"stonith 'reboot' kiff-01" -> "lxc-02_kiff-01_stop_0 kiff-01" [ style = bold]
|
|
"stonith 'reboot' kiff-01" -> "shared0-clone_stop_0" [ style = bold]
|
|
diff --git a/pengine/test10/whitebox-imply-stop-on-fence.exp b/pengine/test10/whitebox-imply-stop-on-fence.exp
|
|
index d13c25f..4a3e757 100644
|
|
--- a/pengine/test10/whitebox-imply-stop-on-fence.exp
|
|
+++ b/pengine/test10/whitebox-imply-stop-on-fence.exp
|
|
@@ -31,11 +31,7 @@
|
|
<attributes CRM_meta_timeout="20000" action="reboot" ipaddr="kiff-02-ilo" login="admin" passwd="admin" pcmk_host_check="static-list" pcmk_host_list="kiff-02"/>
|
|
</pseudo_event>
|
|
</action_set>
|
|
- <inputs>
|
|
- <trigger>
|
|
- <crm_event id="63" operation="stonith" operation_key="stonith-kiff-01-reboot" on_node="kiff-01" on_node_uuid="1"/>
|
|
- </trigger>
|
|
- </inputs>
|
|
+ <inputs/>
|
|
</synapse>
|
|
<synapse id="3">
|
|
<action_set>
|
|
diff --git a/pengine/test10/whitebox-imply-stop-on-fence.summary b/pengine/test10/whitebox-imply-stop-on-fence.summary
|
|
index 3bb1572..3ee9570 100644
|
|
--- a/pengine/test10/whitebox-imply-stop-on-fence.summary
|
|
+++ b/pengine/test10/whitebox-imply-stop-on-fence.summary
|
|
@@ -36,16 +36,16 @@ Transition Summary:
|
|
* Move lxc-02_kiff-01 (Started kiff-01 -> kiff-02)
|
|
|
|
Executing cluster transition:
|
|
+ * Pseudo action: fence-kiff-02_stop_0
|
|
* Fencing kiff-01 (reboot)
|
|
* Pseudo action: stonith_complete
|
|
- * Pseudo action: fence-kiff-02_stop_0
|
|
+ * Resource action: fence-kiff-02 start on kiff-02
|
|
* Pseudo action: vm-fs_stop_0
|
|
* Pseudo action: lxc-01_kiff-01_stop_0
|
|
* Pseudo action: lxc-02_kiff-01_stop_0
|
|
- * Resource action: fence-kiff-02 start on kiff-02
|
|
+ * Resource action: fence-kiff-02 monitor=60000 on kiff-02
|
|
* Pseudo action: R-lxc-01_kiff-01_stop_0
|
|
* Pseudo action: R-lxc-02_kiff-01_stop_0
|
|
- * Resource action: fence-kiff-02 monitor=60000 on kiff-02
|
|
* Pseudo action: shared0-clone_stop_0
|
|
* Resource action: R-lxc-01_kiff-01 start on kiff-02
|
|
* Resource action: R-lxc-02_kiff-01 start on kiff-02
|