pacemaker/SOURCES/030-crmadmin.patch

1506 lines
106 KiB
Diff
Raw Normal View History

2021-03-30 11:25:59 +00:00
From 4fc4140d0c3daa3a8de32adaebf33462c9b3d581 Mon Sep 17 00:00:00 2001
From: Oyvind Albrigtsen <oalbrigt@redhat.com>
Date: Thu, 26 Nov 2020 13:34:21 +0100
Subject: [PATCH 1/7] Refactor: move crm_admin_list() to pcmk__list_nodes() and
only print node name for -N -q
---
lib/pacemaker/pcmk_cluster_queries.c | 32 ++++++++++++++++++++++++----
lib/pacemaker/pcmk_output.c | 41 +++---------------------------------
2 files changed, 31 insertions(+), 42 deletions(-)
diff --git a/lib/pacemaker/pcmk_cluster_queries.c b/lib/pacemaker/pcmk_cluster_queries.c
index c705b7f..1d1e775 100644
--- a/lib/pacemaker/pcmk_cluster_queries.c
+++ b/lib/pacemaker/pcmk_cluster_queries.c
@@ -395,7 +395,7 @@ int
pcmk__list_nodes(pcmk__output_t *out, gboolean BASH_EXPORT)
{
cib_t *the_cib = cib_new();
- xmlNode *output = NULL;
+ xmlNode *xml_node = NULL;
int rc;
if (the_cib == NULL) {
@@ -406,11 +406,35 @@ pcmk__list_nodes(pcmk__output_t *out, gboolean BASH_EXPORT)
return pcmk_legacy2rc(rc);
}
- rc = the_cib->cmds->query(the_cib, NULL, &output,
+ rc = the_cib->cmds->query(the_cib, NULL, &xml_node,
cib_scope_local | cib_sync_call);
if (rc == pcmk_ok) {
- out->message(out, "crmadmin-node-list", output, BASH_EXPORT);
- free_xml(output);
+ int found = 0;
+ xmlNode *node = NULL;
+ xmlNode *nodes = get_object_root(XML_CIB_TAG_NODES, xml_node);
+
+ out->begin_list(out, NULL, NULL, "nodes");
+
+ for (node = first_named_child(nodes, XML_CIB_TAG_NODE); node != NULL;
+ node = crm_next_same_xml(node)) {
+ const char *node_type = BASH_EXPORT ? NULL :
+ crm_element_value(node, XML_ATTR_TYPE);
+ out->message(out, "crmadmin-node", node_type,
+ crm_str(crm_element_value(node, XML_ATTR_UNAME)),
+ crm_str(crm_element_value(node, XML_ATTR_ID)),
+ BASH_EXPORT);
+
+ found++;
+ }
+ // @TODO List Pacemaker Remote nodes that don't have a <node> entry
+
+ out->end_list(out);
+
+ if (found == 0) {
+ out->info(out, "No nodes configured");
+ }
+
+ free_xml(xml_node);
}
the_cib->cmds->signoff(the_cib);
return pcmk_legacy2rc(rc);
diff --git a/lib/pacemaker/pcmk_output.c b/lib/pacemaker/pcmk_output.c
index bc4b91a..8f5e301 100644
--- a/lib/pacemaker/pcmk_output.c
+++ b/lib/pacemaker/pcmk_output.c
@@ -469,42 +469,6 @@ dc_xml(pcmk__output_t *out, va_list args)
return pcmk_rc_ok;
}
-
-PCMK__OUTPUT_ARGS("crmadmin-node-list", "xmlNodePtr", "gboolean")
-static int
-crmadmin_node_list(pcmk__output_t *out, va_list args)
-{
- xmlNodePtr xml_node = va_arg(args, xmlNodePtr);
- gboolean BASH_EXPORT = va_arg(args, gboolean);
-
- int found = 0;
- xmlNode *node = NULL;
- xmlNode *nodes = get_object_root(XML_CIB_TAG_NODES, xml_node);
-
- out->begin_list(out, NULL, NULL, "nodes");
-
- for (node = first_named_child(nodes, XML_CIB_TAG_NODE); node != NULL;
- node = crm_next_same_xml(node)) {
- const char *node_type = BASH_EXPORT ? NULL :
- crm_element_value(node, XML_ATTR_TYPE);
- out->message(out, "crmadmin-node", node_type,
- crm_str(crm_element_value(node, XML_ATTR_UNAME)),
- crm_str(crm_element_value(node, XML_ATTR_ID)),
- BASH_EXPORT);
-
- found++;
- }
- // @TODO List Pacemaker Remote nodes that don't have a <node> entry
-
- out->end_list(out);
-
- if (found == 0) {
- out->info(out, "No nodes configured");
- }
-
- return pcmk_rc_ok;
-}
-
PCMK__OUTPUT_ARGS("crmadmin-node", "const char *", "const char *", "const char *", "gboolean")
static int
crmadmin_node_text(pcmk__output_t *out, va_list args)
@@ -514,7 +478,9 @@ crmadmin_node_text(pcmk__output_t *out, va_list args)
const char *id = va_arg(args, const char *);
gboolean BASH_EXPORT = va_arg(args, gboolean);
- if (BASH_EXPORT) {
+ if (out->is_quiet(out)) {
+ out->info(out, "%s", crm_str(name));
+ } else if (BASH_EXPORT) {
out->info(out, "export %s=%s", crm_str(name), crm_str(id));
} else {
out->info(out, "%s node: %s (%s)", type ? type : "member",
@@ -657,7 +623,6 @@ static pcmk__message_entry_t fmt_functions[] = {
{ "pacemakerd-health", "xml", pacemakerd_health_xml },
{ "dc", "default", dc_text },
{ "dc", "xml", dc_xml },
- { "crmadmin-node-list", "default", crmadmin_node_list },
{ "crmadmin-node", "default", crmadmin_node_text },
{ "crmadmin-node", "xml", crmadmin_node_xml },
{ "digests", "default", digests_text },
--
1.8.3.1
From ecc6d582fd18f774ab6c081c4d72a7913a0f419e Mon Sep 17 00:00:00 2001
From: Oyvind Albrigtsen <oalbrigt@redhat.com>
Date: Fri, 4 Dec 2020 09:30:04 +0100
Subject: [PATCH 2/7] Feature/API: crmadmin/pcmk_list_nodes(): list
remote/guest nodes and add parameter/variable to choose which node type(s) to
list
---
include/crm/common/xml_internal.h | 18 +++++++
include/pacemaker.h | 6 +--
include/pcmki/pcmki_cluster_queries.h | 2 +-
lib/cluster/membership.c | 17 +------
lib/pacemaker/pcmk_cluster_queries.c | 89 ++++++++++++++++++++++++++++-------
tools/crmadmin.c | 9 +++-
6 files changed, 103 insertions(+), 38 deletions(-)
diff --git a/include/crm/common/xml_internal.h b/include/crm/common/xml_internal.h
index d8694ee..969a57d 100644
--- a/include/crm/common/xml_internal.h
+++ b/include/crm/common/xml_internal.h
@@ -123,6 +123,24 @@ do {
} \
} while (0)
+/* XML search strings for guest, remote and pacemaker_remote nodes */
+
+/* search string to find CIB resources entries for guest nodes */
+#define XPATH_GUEST_NODE_CONFIG \
+ "//" XML_TAG_CIB "//" XML_CIB_TAG_CONFIGURATION "//" XML_CIB_TAG_RESOURCE \
+ "//" XML_TAG_META_SETS "//" XML_CIB_TAG_NVPAIR \
+ "[@name='" XML_RSC_ATTR_REMOTE_NODE "']"
+
+/* search string to find CIB resources entries for remote nodes */
+#define XPATH_REMOTE_NODE_CONFIG \
+ "//" XML_TAG_CIB "//" XML_CIB_TAG_CONFIGURATION "//" XML_CIB_TAG_RESOURCE \
+ "[@type='remote'][@provider='pacemaker']"
+
+/* search string to find CIB node status entries for pacemaker_remote nodes */
+#define XPATH_REMOTE_NODE_STATUS \
+ "//" XML_TAG_CIB "//" XML_CIB_TAG_STATUS "//" XML_CIB_TAG_STATE \
+ "[@" XML_NODE_IS_REMOTE "='true']"
+
enum pcmk__xml_artefact_ns {
pcmk__xml_artefact_ns_legacy_rng = 1,
pcmk__xml_artefact_ns_legacy_xslt,
diff --git a/include/pacemaker.h b/include/pacemaker.h
index 51bf585..42d096f 100644
--- a/include/pacemaker.h
+++ b/include/pacemaker.h
@@ -73,8 +73,6 @@ int pcmk_resource_digests(xmlNodePtr *xml, pe_resource_t *rsc,
pe_node_t *node, GHashTable *overrides,
pe_working_set_t *data_set);
-#ifdef BUILD_PUBLIC_LIBPACEMAKER
-
/*!
* \brief Get nodes list
*
@@ -82,7 +80,9 @@ int pcmk_resource_digests(xmlNodePtr *xml, pe_resource_t *rsc,
*
* \return Standard Pacemaker return code
*/
-int pcmk_list_nodes(xmlNodePtr *xml);
+int pcmk_list_nodes(xmlNodePtr *xml, char *node_types);
+
+#ifdef BUILD_PUBLIC_LIBPACEMAKER
/*!
* \brief Perform a STONITH action.
diff --git a/include/pcmki/pcmki_cluster_queries.h b/include/pcmki/pcmki_cluster_queries.h
index eb3b51c..955eea3 100644
--- a/include/pcmki/pcmki_cluster_queries.h
+++ b/include/pcmki/pcmki_cluster_queries.h
@@ -8,7 +8,7 @@
int pcmk__controller_status(pcmk__output_t *out, char *dest_node, guint message_timeout_ms);
int pcmk__designated_controller(pcmk__output_t *out, guint message_timeout_ms);
int pcmk__pacemakerd_status(pcmk__output_t *out, char *ipc_name, guint message_timeout_ms);
-int pcmk__list_nodes(pcmk__output_t *out, gboolean BASH_EXPORT);
+int pcmk__list_nodes(pcmk__output_t *out, char *node_types, gboolean BASH_EXPORT);
// remove when parameters removed from tools/crmadmin.c
int pcmk__shutdown_controller(pcmk__output_t *out, char *dest_node);
diff --git a/lib/cluster/membership.c b/lib/cluster/membership.c
index 8bf5764..5841f16 100644
--- a/lib/cluster/membership.c
+++ b/lib/cluster/membership.c
@@ -20,6 +20,7 @@
#include <string.h>
#include <glib.h>
#include <crm/common/ipc.h>
+#include <crm/common/xml_internal.h>
#include <crm/cluster/internal.h>
#include <crm/msg_xml.h>
#include <crm/stonith-ng.h>
@@ -235,22 +236,6 @@ is_dirty(gpointer key, gpointer value, gpointer user_data)
return pcmk_is_set(((crm_node_t*)value)->flags, crm_node_dirty);
}
-/* search string to find CIB resources entries for guest nodes */
-#define XPATH_GUEST_NODE_CONFIG \
- "//" XML_TAG_CIB "//" XML_CIB_TAG_CONFIGURATION "//" XML_CIB_TAG_RESOURCE \
- "//" XML_TAG_META_SETS "//" XML_CIB_TAG_NVPAIR \
- "[@name='" XML_RSC_ATTR_REMOTE_NODE "']"
-
-/* search string to find CIB resources entries for remote nodes */
-#define XPATH_REMOTE_NODE_CONFIG \
- "//" XML_TAG_CIB "//" XML_CIB_TAG_CONFIGURATION "//" XML_CIB_TAG_RESOURCE \
- "[@type='remote'][@provider='pacemaker']"
-
-/* search string to find CIB node status entries for pacemaker_remote nodes */
-#define XPATH_REMOTE_NODE_STATUS \
- "//" XML_TAG_CIB "//" XML_CIB_TAG_STATUS "//" XML_CIB_TAG_STATE \
- "[@" XML_NODE_IS_REMOTE "='true']"
-
/*!
* \brief Repopulate the remote peer cache based on CIB XML
*
diff --git a/lib/pacemaker/pcmk_cluster_queries.c b/lib/pacemaker/pcmk_cluster_queries.c
index 1d1e775..fc5cfc4 100644
--- a/lib/pacemaker/pcmk_cluster_queries.c
+++ b/lib/pacemaker/pcmk_cluster_queries.c
@@ -9,6 +9,7 @@
#include <crm/msg_xml.h>
#include <crm/common/output_internal.h>
#include <crm/common/xml.h>
+#include <crm/common/xml_internal.h>
#include <crm/common/iso8601.h>
#include <crm/common/ipc_controld.h>
#include <crm/common/ipc_pacemakerd.h>
@@ -390,9 +391,33 @@ pcmk_pacemakerd_status(xmlNodePtr *xml, char *ipc_name, unsigned int message_tim
return rc;
}
+/* user data for looping through remote node xpath searches */
+struct node_data {
+ pcmk__output_t *out;
+ int found;
+ const char *field; /* XML attribute to check for node name */
+ const char *type;
+ gboolean BASH_EXPORT;
+};
+
+static void
+remote_node_print_helper(xmlNode *result, void *user_data)
+{
+ struct node_data *data = user_data;
+ pcmk__output_t *out = data->out;
+ const char *remote = crm_element_value(result, data->field);
+
+ // node name and node id are the same for remote/guest nodes
+ out->message(out, "crmadmin-node", data->type,
+ remote,
+ remote,
+ data->BASH_EXPORT);
+ data->found++;
+}
+
// \return Standard Pacemaker return code
int
-pcmk__list_nodes(pcmk__output_t *out, gboolean BASH_EXPORT)
+pcmk__list_nodes(pcmk__output_t *out, char *node_types, gboolean BASH_EXPORT)
{
cib_t *the_cib = cib_new();
xmlNode *xml_node = NULL;
@@ -409,28 +434,60 @@ pcmk__list_nodes(pcmk__output_t *out, gboolean BASH_EXPORT)
rc = the_cib->cmds->query(the_cib, NULL, &xml_node,
cib_scope_local | cib_sync_call);
if (rc == pcmk_ok) {
- int found = 0;
xmlNode *node = NULL;
xmlNode *nodes = get_object_root(XML_CIB_TAG_NODES, xml_node);
+ struct node_data data = {
+ .out = out,
+ .found = 0,
+ .BASH_EXPORT = BASH_EXPORT
+ };
out->begin_list(out, NULL, NULL, "nodes");
- for (node = first_named_child(nodes, XML_CIB_TAG_NODE); node != NULL;
- node = crm_next_same_xml(node)) {
- const char *node_type = BASH_EXPORT ? NULL :
- crm_element_value(node, XML_ATTR_TYPE);
- out->message(out, "crmadmin-node", node_type,
- crm_str(crm_element_value(node, XML_ATTR_UNAME)),
- crm_str(crm_element_value(node, XML_ATTR_ID)),
- BASH_EXPORT);
+ if (!pcmk__str_empty(node_types) && strstr(node_types, "all")) {
+ node_types = NULL;
+ }
+
+ if (pcmk__str_empty(node_types) || strstr(node_types, "member")) {
+ for (node = first_named_child(nodes, XML_CIB_TAG_NODE); node != NULL;
+ node = crm_next_same_xml(node)) {
+ const char *node_type = crm_element_value(node, XML_ATTR_TYPE);
+ //if (node_type == NULL || !strcmp(node_type, "member")) {
+ if (node_type == NULL) {
+ out->message(out, "crmadmin-node", node_type,
+ crm_str(crm_element_value(node, XML_ATTR_UNAME)),
+ crm_str(crm_element_value(node, XML_ATTR_ID)),
+ BASH_EXPORT);
+ data.found++;
+ }
+
+ }
+ }
+
+ if (pcmk__str_empty(node_types) || strstr(node_types, "pacemaker_remote")) {
+ data.field = "id";
+ data.type = "pacemaker_remote";
+ crm_foreach_xpath_result(xml_node, XPATH_REMOTE_NODE_STATUS,
+ remote_node_print_helper, &data);
+ }
+
+ if (pcmk__str_empty(node_types) || strstr(node_types, "guest")) {
+ data.field = "value";
+ data.type = "guest";
+ crm_foreach_xpath_result(xml_node, XPATH_GUEST_NODE_CONFIG,
+ remote_node_print_helper, &data);
+ }
- found++;
+ if (pcmk__str_empty(node_types) || !pcmk__strcmp(node_types, ",|^remote", pcmk__str_regex)) {
+ data.field = "id";
+ data.type = "remote";
+ crm_foreach_xpath_result(xml_node, XPATH_REMOTE_NODE_CONFIG,
+ remote_node_print_helper, &data);
}
- // @TODO List Pacemaker Remote nodes that don't have a <node> entry
out->end_list(out);
- if (found == 0) {
+ if (data.found == 0) {
out->info(out, "No nodes configured");
}
@@ -440,9 +497,8 @@ pcmk__list_nodes(pcmk__output_t *out, gboolean BASH_EXPORT)
return pcmk_legacy2rc(rc);
}
-#ifdef BUILD_PUBLIC_LIBPACEMAKER
int
-pcmk_list_nodes(xmlNodePtr *xml)
+pcmk_list_nodes(xmlNodePtr *xml, char *node_types)
{
pcmk__output_t *out = NULL;
int rc = pcmk_rc_ok;
@@ -454,11 +510,10 @@ pcmk_list_nodes(xmlNodePtr *xml)
pcmk__register_lib_messages(out);
- rc = pcmk__list_nodes(out, FALSE);
+ rc = pcmk__list_nodes(out, node_types, FALSE);
pcmk__out_epilogue(out, xml, rc);
return rc;
}
-#endif
// remove when parameters removed from tools/crmadmin.c
int
diff --git a/tools/crmadmin.c b/tools/crmadmin.c
index 2d9d663..3f31c69 100644
--- a/tools/crmadmin.c
+++ b/tools/crmadmin.c
@@ -38,10 +38,12 @@ struct {
gint timeout;
char *dest_node;
char *ipc_name;
+ char *node_types;
gboolean BASH_EXPORT;
} options = {
.dest_node = NULL,
.ipc_name = NULL,
+ .node_types = NULL,
.BASH_EXPORT = FALSE
};
@@ -93,6 +95,11 @@ static GOptionEntry additional_options[] = {
"\n operation failed",
NULL
},
+ { "node-types", 'T', 0, G_OPTION_ARG_STRING, &options.node_types,
+ "Node types to list (available options: all, member, pacemaker_remote,"
+ "\n guest, remote) (valid with -N/--nodes)",
+ NULL
+ },
{ "bash-export", 'B', 0, G_OPTION_ARG_NONE, &options.BASH_EXPORT,
"Display nodes as shell commands of the form 'export uname=uuid'"
"\n (valid with -N/--nodes)",
@@ -264,7 +271,7 @@ main(int argc, char **argv)
rc = pcmk__pacemakerd_status(out, options.ipc_name, options.timeout);
break;
case cmd_list_nodes:
- rc = pcmk__list_nodes(out, options.BASH_EXPORT);
+ rc = pcmk__list_nodes(out, options.node_types, options.BASH_EXPORT);
break;
case cmd_whois_dc:
rc = pcmk__designated_controller(out, options.timeout);
--
1.8.3.1
From f25d4e7aa9de55bb296087e6cbaf1654d01d6b0d Mon Sep 17 00:00:00 2001
From: Oyvind Albrigtsen <oalbrigt@redhat.com>
Date: Thu, 10 Dec 2020 13:58:31 +0100
Subject: [PATCH 3/7] Refactor: use PCMK__XP_ prefix instead of XPATH_ for XML
constants
---
include/crm/common/xml_internal.h | 6 +++---
lib/cluster/membership.c | 12 ++++++------
lib/pacemaker/pcmk_cluster_queries.c | 6 +++---
3 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/include/crm/common/xml_internal.h b/include/crm/common/xml_internal.h
index 969a57d..4501bee 100644
--- a/include/crm/common/xml_internal.h
+++ b/include/crm/common/xml_internal.h
@@ -126,18 +126,18 @@ do {
/* XML search strings for guest, remote and pacemaker_remote nodes */
/* search string to find CIB resources entries for guest nodes */
-#define XPATH_GUEST_NODE_CONFIG \
+#define PCMK__XP_GUEST_NODE_CONFIG \
"//" XML_TAG_CIB "//" XML_CIB_TAG_CONFIGURATION "//" XML_CIB_TAG_RESOURCE \
"//" XML_TAG_META_SETS "//" XML_CIB_TAG_NVPAIR \
"[@name='" XML_RSC_ATTR_REMOTE_NODE "']"
/* search string to find CIB resources entries for remote nodes */
-#define XPATH_REMOTE_NODE_CONFIG \
+#define PCMK__XP_REMOTE_NODE_CONFIG \
"//" XML_TAG_CIB "//" XML_CIB_TAG_CONFIGURATION "//" XML_CIB_TAG_RESOURCE \
"[@type='remote'][@provider='pacemaker']"
/* search string to find CIB node status entries for pacemaker_remote nodes */
-#define XPATH_REMOTE_NODE_STATUS \
+#define PCMK__XP_REMOTE_NODE_STATUS \
"//" XML_TAG_CIB "//" XML_CIB_TAG_STATUS "//" XML_CIB_TAG_STATE \
"[@" XML_NODE_IS_REMOTE "='true']"
diff --git a/lib/cluster/membership.c b/lib/cluster/membership.c
index 5841f16..d70091e 100644
--- a/lib/cluster/membership.c
+++ b/lib/cluster/membership.c
@@ -257,7 +257,7 @@ crm_remote_peer_cache_refresh(xmlNode *cib)
/* Look for guest nodes and remote nodes in the status section */
data.field = "id";
data.has_state = TRUE;
- crm_foreach_xpath_result(cib, XPATH_REMOTE_NODE_STATUS,
+ crm_foreach_xpath_result(cib, PCMK__XP_REMOTE_NODE_STATUS,
remote_cache_refresh_helper, &data);
/* Look for guest nodes and remote nodes in the configuration section,
@@ -268,11 +268,11 @@ crm_remote_peer_cache_refresh(xmlNode *cib)
*/
data.field = "value";
data.has_state = FALSE;
- crm_foreach_xpath_result(cib, XPATH_GUEST_NODE_CONFIG,
+ crm_foreach_xpath_result(cib, PCMK__XP_GUEST_NODE_CONFIG,
remote_cache_refresh_helper, &data);
data.field = "id";
data.has_state = FALSE;
- crm_foreach_xpath_result(cib, XPATH_REMOTE_NODE_CONFIG,
+ crm_foreach_xpath_result(cib, PCMK__XP_REMOTE_NODE_CONFIG,
remote_cache_refresh_helper, &data);
/* Remove all old cache entries that weren't seen in the CIB */
@@ -1232,7 +1232,7 @@ known_node_cache_refresh_helper(xmlNode *xml_node, void *user_data)
}
-#define XPATH_MEMBER_NODE_CONFIG \
+#define PCMK__XP_MEMBER_NODE_CONFIG \
"//" XML_TAG_CIB "/" XML_CIB_TAG_CONFIGURATION "/" XML_CIB_TAG_NODES \
"/" XML_CIB_TAG_NODE "[not(@type) or @type='member']"
@@ -1243,7 +1243,7 @@ crm_known_peer_cache_refresh(xmlNode *cib)
g_hash_table_foreach(crm_known_peer_cache, mark_dirty, NULL);
- crm_foreach_xpath_result(cib, XPATH_MEMBER_NODE_CONFIG,
+ crm_foreach_xpath_result(cib, PCMK__XP_MEMBER_NODE_CONFIG,
known_peer_cache_refresh_helper, NULL);
/* Remove all old cache entries that weren't seen in the CIB */
diff --git a/lib/pacemaker/pcmk_cluster_queries.c b/lib/pacemaker/pcmk_cluster_queries.c
index fc5cfc4..e512f32 100644
--- a/lib/pacemaker/pcmk_cluster_queries.c
+++ b/lib/pacemaker/pcmk_cluster_queries.c
@@ -467,21 +467,21 @@ pcmk__list_nodes(pcmk__output_t *out, char *node_types, gboolean BASH_EXPORT)
if (pcmk__str_empty(node_types) || strstr(node_types, "pacemaker_remote")) {
data.field = "id";
data.type = "pacemaker_remote";
- crm_foreach_xpath_result(xml_node, XPATH_REMOTE_NODE_STATUS,
+ crm_foreach_xpath_result(xml_node, PCMK__XP_REMOTE_NODE_STATUS,
remote_node_print_helper, &data);
}
if (pcmk__str_empty(node_types) || strstr(node_types, "guest")) {
data.field = "value";
data.type = "guest";
- crm_foreach_xpath_result(xml_node, XPATH_GUEST_NODE_CONFIG,
+ crm_foreach_xpath_result(xml_node, PCMK__XP_GUEST_NODE_CONFIG,
remote_node_print_helper, &data);
}
if (pcmk__str_empty(node_types) || !pcmk__strcmp(node_types, ",|^remote", pcmk__str_regex)) {
data.field = "id";
data.type = "remote";
- crm_foreach_xpath_result(xml_node, XPATH_REMOTE_NODE_CONFIG,
+ crm_foreach_xpath_result(xml_node, PCMK__XP_REMOTE_NODE_CONFIG,
remote_node_print_helper, &data);
}
--
1.8.3.1
From 225d5fabedb1319245a2a3e661df2252e60aca1a Mon Sep 17 00:00:00 2001
From: Oyvind Albrigtsen <oalbrigt@redhat.com>
Date: Fri, 22 Jan 2021 16:34:39 +0100
Subject: [PATCH 4/7] Fix: crmadmin: use cluster instead of member term and
remove pacemaker_remote node type
---
include/pacemaker.h | 1 +
lib/cluster/membership.c | 2 +-
lib/pacemaker/pcmk_cluster_queries.c | 10 +---------
lib/pacemaker/pcmk_output.c | 4 ++--
tools/crmadmin.c | 4 ++--
5 files changed, 7 insertions(+), 14 deletions(-)
diff --git a/include/pacemaker.h b/include/pacemaker.h
index 42d096f..a6a9d13 100644
--- a/include/pacemaker.h
+++ b/include/pacemaker.h
@@ -77,6 +77,7 @@ int pcmk_resource_digests(xmlNodePtr *xml, pe_resource_t *rsc,
* \brief Get nodes list
*
* \param[in,out] xml The destination for the result, as an XML tree.
+ * \param[in] node_types Node type(s) to return (default: all)
*
* \return Standard Pacemaker return code
*/
diff --git a/lib/pacemaker/pcmk_cluster_queries.c b/lib/pacemaker/pcmk_cluster_queries.c
index e512f32..9f19915 100644
--- a/lib/pacemaker/pcmk_cluster_queries.c
+++ b/lib/pacemaker/pcmk_cluster_queries.c
@@ -448,11 +448,10 @@ pcmk__list_nodes(pcmk__output_t *out, char *node_types, gboolean BASH_EXPORT)
node_types = NULL;
}
- if (pcmk__str_empty(node_types) || strstr(node_types, "member")) {
+ if (pcmk__str_empty(node_types) || strstr(node_types, "cluster")) {
for (node = first_named_child(nodes, XML_CIB_TAG_NODE); node != NULL;
node = crm_next_same_xml(node)) {
const char *node_type = crm_element_value(node, XML_ATTR_TYPE);
- //if (node_type == NULL || !strcmp(node_type, "member")) {
if (node_type == NULL) {
out->message(out, "crmadmin-node", node_type,
crm_str(crm_element_value(node, XML_ATTR_UNAME)),
@@ -464,13 +463,6 @@ pcmk__list_nodes(pcmk__output_t *out, char *node_types, gboolean BASH_EXPORT)
}
}
- if (pcmk__str_empty(node_types) || strstr(node_types, "pacemaker_remote")) {
- data.field = "id";
- data.type = "pacemaker_remote";
- crm_foreach_xpath_result(xml_node, PCMK__XP_REMOTE_NODE_STATUS,
- remote_node_print_helper, &data);
- }
-
if (pcmk__str_empty(node_types) || strstr(node_types, "guest")) {
data.field = "value";
data.type = "guest";
diff --git a/lib/pacemaker/pcmk_output.c b/lib/pacemaker/pcmk_output.c
index 8f5e301..655b723 100644
--- a/lib/pacemaker/pcmk_output.c
+++ b/lib/pacemaker/pcmk_output.c
@@ -483,7 +483,7 @@ crmadmin_node_text(pcmk__output_t *out, va_list args)
} else if (BASH_EXPORT) {
out->info(out, "export %s=%s", crm_str(name), crm_str(id));
} else {
- out->info(out, "%s node: %s (%s)", type ? type : "member",
+ out->info(out, "%s node: %s (%s)", type ? type : "cluster",
crm_str(name), crm_str(id));
}
@@ -499,7 +499,7 @@ crmadmin_node_xml(pcmk__output_t *out, va_list args)
const char *id = va_arg(args, const char *);
pcmk__output_create_xml_node(out, "node",
- "type", type ? type : "member",
+ "type", type ? type : "cluster",
"name", crm_str(name),
"id", crm_str(id),
NULL);
diff --git a/tools/crmadmin.c b/tools/crmadmin.c
index 3f31c69..d699786 100644
--- a/tools/crmadmin.c
+++ b/tools/crmadmin.c
@@ -96,8 +96,8 @@ static GOptionEntry additional_options[] = {
NULL
},
{ "node-types", 'T', 0, G_OPTION_ARG_STRING, &options.node_types,
- "Node types to list (available options: all, member, pacemaker_remote,"
- "\n guest, remote) (valid with -N/--nodes)",
+ "Node types to list (available options: all, cluster, guest, remote)"
+ "\n (valid with -N/--nodes)",
NULL
},
{ "bash-export", 'B', 0, G_OPTION_ARG_NONE, &options.BASH_EXPORT,
--
1.8.3.1
From ceacef32c70d1760a4dd89c00134373d42457ea2 Mon Sep 17 00:00:00 2001
From: Oyvind Albrigtsen <oalbrigt@redhat.com>
Date: Mon, 25 Jan 2021 16:52:00 +0100
Subject: [PATCH 5/7] Refactor: crmadmin/pcmk__list_nodes(): use
crm_foreach_xpath_result() for all types of nodes
---
include/crm/common/xml_internal.h | 5 +++++
lib/cluster/membership.c | 4 ----
lib/pacemaker/pcmk_cluster_queries.c | 25 ++++++++-----------------
3 files changed, 13 insertions(+), 21 deletions(-)
diff --git a/include/crm/common/xml_internal.h b/include/crm/common/xml_internal.h
index 4501bee..2193b50 100644
--- a/include/crm/common/xml_internal.h
+++ b/include/crm/common/xml_internal.h
@@ -125,6 +125,11 @@ do {
/* XML search strings for guest, remote and pacemaker_remote nodes */
+/* search string to find CIB resources entries for cluster nodes */
+#define PCMK__XP_MEMBER_NODE_CONFIG \
+ "//" XML_TAG_CIB "/" XML_CIB_TAG_CONFIGURATION "/" XML_CIB_TAG_NODES \
+ "/" XML_CIB_TAG_NODE "[not(@type) or @type='member']"
+
/* search string to find CIB resources entries for guest nodes */
#define PCMK__XP_GUEST_NODE_CONFIG \
"//" XML_TAG_CIB "//" XML_CIB_TAG_CONFIGURATION "//" XML_CIB_TAG_RESOURCE \
diff --git a/lib/cluster/membership.c b/lib/cluster/membership.c
index 3417836..5d042e2 100644
--- a/lib/cluster/membership.c
+++ b/lib/cluster/membership.c
@@ -1232,10 +1232,6 @@ known_node_cache_refresh_helper(xmlNode *xml_node, void *user_data)
}
-#define PCMK__XP_MEMBER_NODE_CONFIG \
- "//" XML_TAG_CIB "/" XML_CIB_TAG_CONFIGURATION "/" XML_CIB_TAG_NODES \
- "/" XML_CIB_TAG_NODE "[not(@type) or @type='member']"
-
static void
crm_known_peer_cache_refresh(xmlNode *cib)
{
diff --git a/lib/pacemaker/pcmk_cluster_queries.c b/lib/pacemaker/pcmk_cluster_queries.c
index 9f19915..6e6acda 100644
--- a/lib/pacemaker/pcmk_cluster_queries.c
+++ b/lib/pacemaker/pcmk_cluster_queries.c
@@ -405,12 +405,13 @@ remote_node_print_helper(xmlNode *result, void *user_data)
{
struct node_data *data = user_data;
pcmk__output_t *out = data->out;
- const char *remote = crm_element_value(result, data->field);
+ const char *name = crm_element_value(result, XML_ATTR_UNAME);
+ const char *id = crm_element_value(result, data->field);
// node name and node id are the same for remote/guest nodes
out->message(out, "crmadmin-node", data->type,
- remote,
- remote,
+ name ? name : id,
+ id,
data->BASH_EXPORT);
data->found++;
}
@@ -434,8 +435,6 @@ pcmk__list_nodes(pcmk__output_t *out, char *node_types, gboolean BASH_EXPORT)
rc = the_cib->cmds->query(the_cib, NULL, &xml_node,
cib_scope_local | cib_sync_call);
if (rc == pcmk_ok) {
- xmlNode *node = NULL;
- xmlNode *nodes = get_object_root(XML_CIB_TAG_NODES, xml_node);
struct node_data data = {
.out = out,
.found = 0,
@@ -449,18 +448,10 @@ pcmk__list_nodes(pcmk__output_t *out, char *node_types, gboolean BASH_EXPORT)
}
if (pcmk__str_empty(node_types) || strstr(node_types, "cluster")) {
- for (node = first_named_child(nodes, XML_CIB_TAG_NODE); node != NULL;
- node = crm_next_same_xml(node)) {
- const char *node_type = crm_element_value(node, XML_ATTR_TYPE);
- if (node_type == NULL) {
- out->message(out, "crmadmin-node", node_type,
- crm_str(crm_element_value(node, XML_ATTR_UNAME)),
- crm_str(crm_element_value(node, XML_ATTR_ID)),
- BASH_EXPORT);
- data.found++;
- }
-
- }
+ data.field = "id";
+ data.type = "cluster";
+ crm_foreach_xpath_result(xml_node, PCMK__XP_MEMBER_NODE_CONFIG,
+ remote_node_print_helper, &data);
}
if (pcmk__str_empty(node_types) || strstr(node_types, "guest")) {
--
1.8.3.1
From a56ce0cf463798ac8d7ff945dda3be019cb9297d Mon Sep 17 00:00:00 2001
From: Oyvind Albrigtsen <oalbrigt@redhat.com>
Date: Tue, 26 Jan 2021 11:03:10 +0100
Subject: [PATCH 6/7] Refactor: crmadmin: move new -T functionality to -N
parameter
---
include/crm/crm.h | 2 +-
tools/crmadmin.c | 30 ++++++++++++------------------
2 files changed, 13 insertions(+), 19 deletions(-)
diff --git a/include/crm/crm.h b/include/crm/crm.h
index 3f22c4b..09643c2 100644
--- a/include/crm/crm.h
+++ b/include/crm/crm.h
@@ -51,7 +51,7 @@ extern "C" {
* >=3.0.13: Fail counts include operation name and interval
* >=3.2.0: DC supports PCMK_LRM_OP_INVALID and PCMK_LRM_OP_NOT_CONNECTED
*/
-# define CRM_FEATURE_SET "3.7.0"
+# define CRM_FEATURE_SET "3.7.1"
# define EOS '\0'
# define DIMOF(a) ((int) (sizeof(a)/sizeof(a[0])) )
diff --git a/tools/crmadmin.c b/tools/crmadmin.c
index d699786..9c280aa 100644
--- a/tools/crmadmin.c
+++ b/tools/crmadmin.c
@@ -36,14 +36,12 @@ static enum {
struct {
gboolean health;
gint timeout;
- char *dest_node;
+ char *optarg;
char *ipc_name;
- char *node_types;
gboolean BASH_EXPORT;
} options = {
- .dest_node = NULL,
+ .optarg = NULL,
.ipc_name = NULL,
- .node_types = NULL,
.BASH_EXPORT = FALSE
};
@@ -69,9 +67,10 @@ static GOptionEntry command_options[] = {
"\n node to examine the logs.",
NULL
},
- { "nodes", 'N', G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, command_cb,
- "Display the uname of all member nodes",
- NULL
+ { "nodes", 'N', G_OPTION_FLAG_OPTIONAL_ARG, G_OPTION_ARG_CALLBACK, command_cb,
+ "Display the uname of all member nodes [optionally filtered by type (comma-separated)]"
+ "\n Types: all (default), cluster, guest, remote",
+ "TYPE"
},
{ "election", 'E', G_OPTION_FLAG_HIDDEN|G_OPTION_FLAG_NO_ARG, G_OPTION_ARG_CALLBACK, command_cb,
"(Advanced) Start an election for the cluster co-ordinator",
@@ -95,11 +94,6 @@ static GOptionEntry additional_options[] = {
"\n operation failed",
NULL
},
- { "node-types", 'T', 0, G_OPTION_ARG_STRING, &options.node_types,
- "Node types to list (available options: all, cluster, guest, remote)"
- "\n (valid with -N/--nodes)",
- NULL
- },
{ "bash-export", 'B', 0, G_OPTION_ARG_NONE, &options.BASH_EXPORT,
"Display nodes as shell commands of the form 'export uname=uuid'"
"\n (valid with -N/--nodes)",
@@ -142,10 +136,10 @@ command_cb(const gchar *option_name, const gchar *optarg, gpointer data, GError
}
if (optarg) {
- if (options.dest_node != NULL) {
- free(options.dest_node);
+ if (options.optarg != NULL) {
+ free(options.optarg);
}
- options.dest_node = strdup(optarg);
+ options.optarg = strdup(optarg);
}
return TRUE;
@@ -265,19 +259,19 @@ main(int argc, char **argv)
switch (command) {
case cmd_health:
- rc = pcmk__controller_status(out, options.dest_node, options.timeout);
+ rc = pcmk__controller_status(out, options.optarg, options.timeout);
break;
case cmd_pacemakerd_health:
rc = pcmk__pacemakerd_status(out, options.ipc_name, options.timeout);
break;
case cmd_list_nodes:
- rc = pcmk__list_nodes(out, options.node_types, options.BASH_EXPORT);
+ rc = pcmk__list_nodes(out, options.optarg, options.BASH_EXPORT);
break;
case cmd_whois_dc:
rc = pcmk__designated_controller(out, options.timeout);
break;
case cmd_shutdown:
- rc = pcmk__shutdown_controller(out, options.dest_node);
+ rc = pcmk__shutdown_controller(out, options.optarg);
break;
case cmd_elect_dc:
rc = pcmk__start_election(out);
--
1.8.3.1
From dae5688edaf1b3008b70296421004ebdfbdf4b7b Mon Sep 17 00:00:00 2001
From: Oyvind Albrigtsen <oalbrigt@redhat.com>
Date: Tue, 26 Jan 2021 15:02:39 +0100
Subject: [PATCH 7/7] Test: cts-cli: add crmadmin -N/--nodes tests
---
cts/Makefile.am | 1 +
cts/cli/crmadmin-cluster-remote-guest-nodes.xml | 483 ++++++++++++++++++++++++
cts/cli/regression.tools.exp | 24 ++
cts/cts-cli.in | 42 ++-
4 files changed, 543 insertions(+), 7 deletions(-)
create mode 100644 cts/cli/crmadmin-cluster-remote-guest-nodes.xml
diff --git a/cts/Makefile.am b/cts/Makefile.am
index de02aed..2a73774 100644
--- a/cts/Makefile.am
+++ b/cts/Makefile.am
@@ -61,6 +61,7 @@ cts_SCRIPTS = CTSlab.py \
clidir = $(testdir)/cli
dist_cli_DATA = cli/constraints.xml \
+ cli/crmadmin-cluster-remote-guest-nodes.xml \
cli/crm_diff_new.xml \
cli/crm_diff_old.xml \
cli/crm_mon.xml \
diff --git a/cts/cli/crmadmin-cluster-remote-guest-nodes.xml b/cts/cli/crmadmin-cluster-remote-guest-nodes.xml
new file mode 100644
index 0000000..8db656f
--- /dev/null
+++ b/cts/cli/crmadmin-cluster-remote-guest-nodes.xml
@@ -0,0 +1,483 @@
+<cib crm_feature_set="3.0.12" validate-with="pacemaker-3.0" epoch="24" num_updates="0" admin_epoch="0" cib-last-written="Fri Jul 14 08:50:25 2017" update-origin="overcloud-controller-0" update-client="cibadmin" update-user="overcloud-rabbit-0" have-quorum="1" dc-uuid="2" execution-date="1500022225">
+ <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.16-12.el7-94ff4df"/>
+ <nvpair id="cib-bootstrap-options-cluster-infrastructure" name="cluster-infrastructure" value="corosync"/>
+ <nvpair id="cib-bootstrap-options-cluster-name" name="cluster-name" value="tripleo_cluster"/>
+ <nvpair id="cib-bootstrap-options-stonith-enabled" name="stonith-enabled" value="false"/>
+ <nvpair id="cib-bootstrap-options-cluster-recheck-interval" name="cluster-recheck-interval" value="60s"/>
+ </cluster_property_set>
+ </crm_config>
+ <nodes>
+ <node id="1" uname="overcloud-controller-0"/>
+ <node id="2" uname="overcloud-controller-1"/>
+ <node id="3" uname="overcloud-controller-2"/>
+ <node id="4" uname="overcloud-galera-0">
+ <instance_attributes id="nodes-4">
+ <nvpair id="nodes-4-galera-role" name="galera-role" value="true"/>
+ </instance_attributes>
+ </node>
+ <node id="5" uname="overcloud-galera-1">
+ <instance_attributes id="nodes-5">
+ <nvpair id="nodes-5-galera-role" name="galera-role" value="true"/>
+ </instance_attributes>
+ </node>
+ <node id="6" uname="overcloud-galera-2">
+ <instance_attributes id="nodes-6">
+ <nvpair id="nodes-6-galera-role" name="galera-role" value="true"/>
+ </instance_attributes>
+ </node>
+ <node id="overcloud-rabbit-0" type="remote" uname="overcloud-rabbit-0">
+ <instance_attributes id="nodes-overcloud-rabbit-0">
+ <nvpair id="nodes-overcloud-rabbit-0-rabbitmq-role" name="rabbitmq-role" value="true"/>
+ </instance_attributes>
+ </node>
+ <node id="overcloud-rabbit-1" type="remote" uname="overcloud-rabbit-1">
+ <instance_attributes id="nodes-overcloud-rabbit-1">
+ <nvpair id="nodes-overcloud-rabbit-1-rabbitmq-role" name="rabbitmq-role" value="true"/>
+ </instance_attributes>
+ </node>
+ <node id="overcloud-rabbit-2" type="remote" uname="overcloud-rabbit-2">
+ <instance_attributes id="nodes-overcloud-rabbit-2">
+ <nvpair id="nodes-overcloud-rabbit-2-rabbitmq-role" name="rabbitmq-role" value="true"/>
+ </instance_attributes>
+ </node>
+ </nodes>
+ <resources>
+ <primitive class="ocf" id="overcloud-rabbit-0" provider="pacemaker" type="remote">
+ <instance_attributes id="overcloud-rabbit-0-instance_attributes">
+ <nvpair id="overcloud-rabbit-0-instance_attributes-reconnect_interval" name="reconnect_interval" value="60"/>
+ </instance_attributes>
+ <operations>
+ <op id="overcloud-rabbit-0-monitor-interval-20" interval="20" name="monitor"/>
+ <op id="overcloud-rabbit-0-start-interval-0s" interval="0s" name="start" timeout="60"/>
+ <op id="overcloud-rabbit-0-stop-interval-0s" interval="0s" name="stop" timeout="60"/>
+ </operations>
+ </primitive>
+ <primitive class="ocf" id="overcloud-rabbit-1" provider="pacemaker" type="remote">
+ <instance_attributes id="overcloud-rabbit-1-instance_attributes">
+ <nvpair id="overcloud-rabbit-1-instance_attributes-reconnect_interval" name="reconnect_interval" value="60"/>
+ </instance_attributes>
+ <operations>
+ <op id="overcloud-rabbit-1-monitor-interval-20" interval="20" name="monitor"/>
+ <op id="overcloud-rabbit-1-start-interval-0s" interval="0s" name="start" timeout="60"/>
+ <op id="overcloud-rabbit-1-stop-interval-0s" interval="0s" name="stop" timeout="60"/>
+ </operations>
+ </primitive>
+ <primitive class="ocf" id="overcloud-rabbit-2" provider="pacemaker" type="remote">
+ <instance_attributes id="overcloud-rabbit-2-instance_attributes">
+ <nvpair id="overcloud-rabbit-2-instance_attributes-reconnect_interval" name="reconnect_interval" value="60"/>
+ </instance_attributes>
+ <operations>
+ <op id="overcloud-rabbit-2-monitor-interval-20" interval="20" name="monitor"/>
+ <op id="overcloud-rabbit-2-start-interval-0s" interval="0s" name="start" timeout="60"/>
+ <op id="overcloud-rabbit-2-stop-interval-0s" interval="0s" name="stop" timeout="60"/>
+ </operations>
+ </primitive>
+ <primitive class="ocf" id="container1" provider="heartbeat" type="VirtualDomain">
+ <instance_attributes id="container1-instance_attributes">
+ <nvpair id="container1-instance_attributes-force_stop" name="force_stop" value="true"/>
+ <nvpair id="container1-instance_attributes-hypervisor" name="hypervisor" value="lxc:///"/>
+ <nvpair id="container1-instance_attributes-config" name="config" value="/var/lib/pacemaker/cts/lxc/lxc1.xml"/>
+ </instance_attributes>
+ <utilization id="container1-utilization">
+ <nvpair id="container1-utilization-cpu" name="cpu" value="1"/>
+ <nvpair id="container1-utilization-hv_memory" name="hv_memory" value="196"/>
+ </utilization>
+ <meta_attributes id="container1-meta_attributes">
+ <nvpair id="container1-meta_attributes-remote-node" name="remote-node" value="lxc1"/>
+ </meta_attributes>
+ </primitive>
+ <primitive class="ocf" id="container2" provider="heartbeat" type="VirtualDomain">
+ <instance_attributes id="container2-instance_attributes">
+ <nvpair id="container2-instance_attributes-force_stop" name="force_stop" value="true"/>
+ <nvpair id="container2-instance_attributes-hypervisor" name="hypervisor" value="lxc:///"/>
+ <nvpair id="container2-instance_attributes-config" name="config" value="/var/lib/pacemaker/cts/lxc/lxc2.xml"/>
+ </instance_attributes>
+ <utilization id="container2-utilization">
+ <nvpair id="container2-utilization-cpu" name="cpu" value="1"/>
+ <nvpair id="container2-utilization-hv_memory" name="hv_memory" value="196"/>
+ </utilization>
+ <meta_attributes id="container2-meta_attributes">
+ <nvpair id="container2-meta_attributes-remote-node" name="remote-node" value="lxc2"/>
+ </meta_attributes>
+ </primitive>
+ <bundle id="rabbitmq-bundle">
+ <docker image="192.168.24.1:8787/tripleoupstream/centos-binary-rabbitmq:latest" network="host" options="--user=root --log-driver=journald -e KOLLA_CONFIG_STRATEGY=COPY_ALWAYS" replicas="3" run-command="/bin/bash /usr/local/bin/kolla_start"/>
+ <network control-port="3121"/>
+ <storage>
+ <storage-mapping id="rabbitmq-cfg-files" options="ro" source-dir="/var/lib/kolla/config_files/rabbitmq.json" target-dir="/var/lib/kolla/config_files/config.json"/>
+ <storage-mapping id="rabbitmq-cfg-data" options="ro" source-dir="/var/lib/config-data/puppet-generated/rabbitmq/" target-dir="/var/lib/kolla/config_files/src"/>
+ <storage-mapping id="rabbitmq-hosts" options="ro" source-dir="/etc/hosts" target-dir="/etc/hosts"/>
+ <storage-mapping id="rabbitmq-localtime" options="ro" source-dir="/etc/localtime" target-dir="/etc/localtime"/>
+ <storage-mapping id="rabbitmq-lib" options="rw" source-dir="/var/lib/rabbitmq" target-dir="/var/lib/rabbitmq"/>
+ <storage-mapping id="rabbitmq-pki-extracted" options="ro" source-dir="/etc/pki/ca-trust/extracted" target-dir="/etc/pki/ca-trust/extracted"/>
+ <storage-mapping id="rabbitmq-pki-ca-bundle-crt" options="ro" source-dir="/etc/pki/tls/certs/ca-bundle.crt" target-dir="/etc/pki/tls/certs/ca-bundle.crt"/>
+ <storage-mapping id="rabbitmq-pki-ca-bundle-trust-crt" options="ro" source-dir="/etc/pki/tls/certs/ca-bundle.trust.crt" target-dir="/etc/pki/tls/certs/ca-bundle.trust.crt"/>
+ <storage-mapping id="rabbitmq-pki-cert" options="ro" source-dir="/etc/pki/tls/cert.pem" target-dir="/etc/pki/tls/cert.pem"/>
+ <storage-mapping id="rabbitmq-dev-log" options="rw" source-dir="/dev/log" target-dir="/dev/log"/>
+ </storage>
+ <primitive class="ocf" id="rabbitmq" provider="heartbeat" type="rabbitmq-cluster">
+ <instance_attributes id="rabbitmq-instance_attributes">
+ <nvpair id="rabbitmq-instance_attributes-set_policy" name="set_policy" value="ha-all ^(?!amq\.).* {&quot;ha-mode&quot;:&quot;all&quot;}"/>
+ </instance_attributes>
+ <meta_attributes id="rabbitmq-meta_attributes">
+ <nvpair id="rabbitmq-meta_attributes-notify" name="notify" value="true"/>
+ </meta_attributes>
+ <operations>
+ <op id="rabbitmq-monitor-interval-10" interval="10" name="monitor" timeout="40"/>
+ <op id="rabbitmq-start-interval-0s" interval="0s" name="start" timeout="200s"/>
+ <op id="rabbitmq-stop-interval-0s" interval="0s" name="stop" timeout="200s"/>
+ </operations>
+ </primitive>
+ </bundle>
+ <bundle id="galera-bundle">
+ <docker image="192.168.24.1:8787/tripleoupstream/centos-binary-mariadb:latest" promoted-max="3" network="host" options="--user=root --log-driver=journald -e KOLLA_CONFIG_STRATEGY=COPY_ALWAYS" replicas="3" run-command="/bin/bash /usr/local/bin/kolla_start"/>
+ <network control-port="3123"/>
+ <storage>
+ <storage-mapping id="mysql-cfg-files" options="ro" source-dir="/var/lib/kolla/config_files/mysql.json" target-dir="/var/lib/kolla/config_files/config.json"/>
+ <storage-mapping id="mysql-cfg-data" options="ro" source-dir="/var/lib/config-data/puppet-generated/mysql/" target-dir="/var/lib/kolla/config_files/src"/>
+ <storage-mapping id="mysql-hosts" options="ro" source-dir="/etc/hosts" target-dir="/etc/hosts"/>
+ <storage-mapping id="mysql-localtime" options="ro" source-dir="/etc/localtime" target-dir="/etc/localtime"/>
+ <storage-mapping id="mysql-lib" options="rw" source-dir="/var/lib/mysql" target-dir="/var/lib/mysql"/>
+ <storage-mapping id="mysql-log-mariadb" options="rw" source-dir="/var/log/mariadb" target-dir="/var/log/mariadb"/>
+ <storage-mapping id="mysql-pki-extracted" options="ro" source-dir="/etc/pki/ca-trust/extracted" target-dir="/etc/pki/ca-trust/extracted"/>
+ <storage-mapping id="mysql-pki-ca-bundle-crt" options="ro" source-dir="/etc/pki/tls/certs/ca-bundle.crt" target-dir="/etc/pki/tls/certs/ca-bundle.crt"/>
+ <storage-mapping id="mysql-pki-ca-bundle-trust-crt" options="ro" source-dir="/etc/pki/tls/certs/ca-bundle.trust.crt" target-dir="/etc/pki/tls/certs/ca-bundle.trust.crt"/>
+ <storage-mapping id="mysql-pki-cert" options="ro" source-dir="/etc/pki/tls/cert.pem" target-dir="/etc/pki/tls/cert.pem"/>
+ <storage-mapping id="mysql-dev-log" options="rw" source-dir="/dev/log" target-dir="/dev/log"/>
+ </storage>
+ </bundle>
+ </resources>
+ <constraints>
+ <rsc_location id="location-rabbitmq-bundle" resource-discovery="exclusive" rsc="rabbitmq-bundle">
+ <rule id="location-rabbitmq-bundle-rule" score="1">
+ <expression attribute="rabbitmq-role" id="location-rabbitmq-bundle-rule-expr" operation="eq" value="true"/>
+ </rule>
+ </rsc_location>
+ <rsc_location id="location-galera-bundle" resource-discovery="exclusive" rsc="galera-bundle">
+ <rule id="location-galera-bundle-rule" score="0">
+ <expression attribute="galera-role" id="location-galera-bundle-rule-expr" operation="eq" value="true"/>
+ </rule>
+ </rsc_location>
+ </constraints>
+ <rsc_defaults>
+ <meta_attributes id="rsc_defaults-options">
+ <nvpair id="rsc_defaults-options-resource-stickiness" name="resource-stickiness" value="INFINITY"/>
+ </meta_attributes>
+ </rsc_defaults>
+ </configuration>
+ <status>
+ <node_state id="1" uname="overcloud-controller-0" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
+ <lrm id="1">
+ <lrm_resources>
+ <lrm_resource id="overcloud-rabbit-0" type="remote" class="ocf" provider="pacemaker">
+ <lrm_rsc_op id="overcloud-rabbit-0_last_0" operation_key="overcloud-rabbit-0_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="8:2:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:0;8:2:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-0" call-id="2" rc-code="0" op-status="0" interval="0" last-run="1500021991" last-rc-change="1500021991" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+ <lrm_rsc_op id="overcloud-rabbit-0_monitor_20000" operation_key="overcloud-rabbit-0_monitor_20000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="4:3:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:0;4:3:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-0" call-id="3" rc-code="0" op-status="0" interval="20000" last-rc-change="1500021998" exec-time="0" queue-time="0" op-digest="6e5bb737f46c381d8a46fb4162afd9e0"/>
+ </lrm_resource>
+ <lrm_resource id="overcloud-rabbit-1" type="remote" class="ocf" provider="pacemaker">
+ <lrm_rsc_op id="overcloud-rabbit-1_last_0" operation_key="overcloud-rabbit-1_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="3:4:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;3:4:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-0" call-id="4" rc-code="7" op-status="0" interval="0" last-run="1500021998" last-rc-change="1500021998" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+ </lrm_resource>
+ <lrm_resource id="overcloud-rabbit-2" type="remote" class="ocf" provider="pacemaker">
+ <lrm_rsc_op id="overcloud-rabbit-2_last_0" operation_key="overcloud-rabbit-2_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="4:6:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;4:6:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-0" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1500022004" last-rc-change="1500022004" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+ </lrm_resource>
+ <lrm_resource id="rabbitmq-bundle-docker-0" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="rabbitmq-bundle-docker-0_last_0" operation_key="rabbitmq-bundle-docker-0_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="5:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;5:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-0" call-id="8" rc-code="7" op-status="0" interval="0" last-run="1500022209" last-rc-change="1500022209" exec-time="42" queue-time="0" op-digest="898a907c413e600aa5c030c26fbdccfd"/>
+ </lrm_resource>
+ <lrm_resource id="rabbitmq-bundle-docker-1" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="rabbitmq-bundle-docker-1_last_0" operation_key="rabbitmq-bundle-docker-1_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="6:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;6:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-0" call-id="12" rc-code="7" op-status="0" interval="0" last-run="1500022209" last-rc-change="1500022209" exec-time="54" queue-time="0" op-digest="898a907c413e600aa5c030c26fbdccfd"/>
+ </lrm_resource>
+ <lrm_resource id="rabbitmq-bundle-docker-2" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="rabbitmq-bundle-docker-2_last_0" operation_key="rabbitmq-bundle-docker-2_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="7:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;7:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-0" call-id="16" rc-code="7" op-status="0" interval="0" last-run="1500022210" last-rc-change="1500022210" exec-time="58" queue-time="0" op-digest="898a907c413e600aa5c030c26fbdccfd"/>
+ </lrm_resource>
+ <lrm_resource id="galera-bundle-docker-0" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="galera-bundle-docker-0_last_0" operation_key="galera-bundle-docker-0_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="8:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;8:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-0" call-id="20" rc-code="7" op-status="0" interval="0" last-run="1500022218" last-rc-change="1500022218" exec-time="79" queue-time="0" op-digest="4672b28c350bc4f5445fd6678c0c2a56"/>
+ </lrm_resource>
+ <lrm_resource id="galera-bundle-docker-1" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="galera-bundle-docker-1_last_0" operation_key="galera-bundle-docker-1_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="9:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;9:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-0" call-id="24" rc-code="7" op-status="0" interval="0" last-run="1500022219" last-rc-change="1500022219" exec-time="55" queue-time="0" op-digest="92b621d0e4ece2bf96924b0f75ab6f90"/>
+ </lrm_resource>
+ <lrm_resource id="galera-bundle-docker-2" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="galera-bundle-docker-2_last_0" operation_key="galera-bundle-docker-2_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="10:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;10:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-0" call-id="28" rc-code="7" op-status="0" interval="0" last-run="1500022219" last-rc-change="1500022219" exec-time="122" queue-time="0" op-digest="92b621d0e4ece2bf96924b0f75ab6f90"/>
+ </lrm_resource>
+ </lrm_resources>
+ </lrm>
+ <transient_attributes id="1">
+ <instance_attributes id="status-1">
+ <nvpair id="status-1-shutdown" name="shutdown" value="0"/>
+ </instance_attributes>
+ </transient_attributes>
+ </node_state>
+ <node_state id="3" uname="overcloud-controller-2" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
+ <lrm id="3">
+ <lrm_resources>
+ <lrm_resource id="overcloud-rabbit-0" type="remote" class="ocf" provider="pacemaker">
+ <lrm_rsc_op id="overcloud-rabbit-0_last_0" operation_key="overcloud-rabbit-0_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="4:2:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;4:2:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-2" call-id="1" rc-code="7" op-status="0" interval="0" last-run="1500021990" last-rc-change="1500021990" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+ </lrm_resource>
+ <lrm_resource id="overcloud-rabbit-1" type="remote" class="ocf" provider="pacemaker">
+ <lrm_rsc_op id="overcloud-rabbit-1_last_0" operation_key="overcloud-rabbit-1_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="5:4:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;5:4:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-2" call-id="2" rc-code="7" op-status="0" interval="0" last-run="1500021998" last-rc-change="1500021998" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+ </lrm_resource>
+ <lrm_resource id="overcloud-rabbit-2" type="remote" class="ocf" provider="pacemaker">
+ <lrm_rsc_op id="overcloud-rabbit-2_last_0" operation_key="overcloud-rabbit-2_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="14:6:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:0;14:6:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-2" call-id="4" rc-code="0" op-status="0" interval="0" last-run="1500022004" last-rc-change="1500022004" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+ <lrm_rsc_op id="overcloud-rabbit-2_monitor_20000" operation_key="overcloud-rabbit-2_monitor_20000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="10:7:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:0;10:7:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-2" call-id="5" rc-code="0" op-status="0" interval="20000" last-rc-change="1500022004" exec-time="0" queue-time="0" op-digest="6e5bb737f46c381d8a46fb4162afd9e0"/>
+ </lrm_resource>
+ <lrm_resource id="rabbitmq-bundle-docker-0" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="rabbitmq-bundle-docker-0_last_0" operation_key="rabbitmq-bundle-docker-0_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="11:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;11:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-2" call-id="8" rc-code="7" op-status="0" interval="0" last-run="1500022209" last-rc-change="1500022209" exec-time="46" queue-time="0" op-digest="898a907c413e600aa5c030c26fbdccfd"/>
+ </lrm_resource>
+ <lrm_resource id="rabbitmq-bundle-docker-1" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="rabbitmq-bundle-docker-1_last_0" operation_key="rabbitmq-bundle-docker-1_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="12:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;12:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-2" call-id="12" rc-code="7" op-status="0" interval="0" last-run="1500022209" last-rc-change="1500022209" exec-time="54" queue-time="0" op-digest="898a907c413e600aa5c030c26fbdccfd"/>
+ </lrm_resource>
+ <lrm_resource id="rabbitmq-bundle-docker-2" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="rabbitmq-bundle-docker-2_last_0" operation_key="rabbitmq-bundle-docker-2_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="13:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;13:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-2" call-id="16" rc-code="7" op-status="0" interval="0" last-run="1500022209" last-rc-change="1500022209" exec-time="53" queue-time="0" op-digest="898a907c413e600aa5c030c26fbdccfd"/>
+ </lrm_resource>
+ <lrm_resource id="galera-bundle-docker-0" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="galera-bundle-docker-0_last_0" operation_key="galera-bundle-docker-0_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="14:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;14:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-2" call-id="20" rc-code="7" op-status="0" interval="0" last-run="1500022218" last-rc-change="1500022218" exec-time="63" queue-time="0" op-digest="92b621d0e4ece2bf96924b0f75ab6f90"/>
+ </lrm_resource>
+ <lrm_resource id="galera-bundle-docker-1" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="galera-bundle-docker-1_last_0" operation_key="galera-bundle-docker-1_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="15:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;15:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-2" call-id="24" rc-code="7" op-status="0" interval="0" last-run="1500022218" last-rc-change="1500022218" exec-time="43" queue-time="0" op-digest="92b621d0e4ece2bf96924b0f75ab6f90"/>
+ </lrm_resource>
+ <lrm_resource id="galera-bundle-docker-2" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="galera-bundle-docker-2_last_0" operation_key="galera-bundle-docker-2_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="16:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;16:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-2" call-id="28" rc-code="7" op-status="0" interval="0" last-run="1500022219" last-rc-change="1500022219" exec-time="66" queue-time="0" op-digest="92b621d0e4ece2bf96924b0f75ab6f90"/>
+ </lrm_resource>
+ </lrm_resources>
+ </lrm>
+ <transient_attributes id="3">
+ <instance_attributes id="status-3">
+ <nvpair id="status-3-shutdown" name="shutdown" value="0"/>
+ </instance_attributes>
+ </transient_attributes>
+ </node_state>
+ <node_state id="4" uname="overcloud-galera-0" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
+ <lrm id="4">
+ <lrm_resources>
+ <lrm_resource id="overcloud-rabbit-0" type="remote" class="ocf" provider="pacemaker">
+ <lrm_rsc_op id="overcloud-rabbit-0_last_0" operation_key="overcloud-rabbit-0_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="5:2:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;5:2:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-0" call-id="1" rc-code="7" op-status="0" interval="0" last-run="1500021991" last-rc-change="1500021991" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+ </lrm_resource>
+ <lrm_resource id="overcloud-rabbit-1" type="remote" class="ocf" provider="pacemaker">
+ <lrm_rsc_op id="overcloud-rabbit-1_last_0" operation_key="overcloud-rabbit-1_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="6:4:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;6:4:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-0" call-id="2" rc-code="7" op-status="0" interval="0" last-run="1500021998" last-rc-change="1500021998" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+ </lrm_resource>
+ <lrm_resource id="overcloud-rabbit-2" type="remote" class="ocf" provider="pacemaker">
+ <lrm_rsc_op id="overcloud-rabbit-2_last_0" operation_key="overcloud-rabbit-2_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="7:6:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;7:6:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-0" call-id="3" rc-code="7" op-status="0" interval="0" last-run="1500022004" last-rc-change="1500022004" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+ </lrm_resource>
+ <lrm_resource id="rabbitmq-bundle-docker-0" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="rabbitmq-bundle-docker-0_last_0" operation_key="rabbitmq-bundle-docker-0_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="14:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;14:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-0" call-id="8" rc-code="7" op-status="0" interval="0" last-run="1500022209" last-rc-change="1500022209" exec-time="73" queue-time="0" op-digest="898a907c413e600aa5c030c26fbdccfd"/>
+ </lrm_resource>
+ <lrm_resource id="rabbitmq-bundle-docker-1" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="rabbitmq-bundle-docker-1_last_0" operation_key="rabbitmq-bundle-docker-1_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="15:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;15:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-0" call-id="12" rc-code="7" op-status="0" interval="0" last-run="1500022209" last-rc-change="1500022209" exec-time="43" queue-time="0" op-digest="898a907c413e600aa5c030c26fbdccfd"/>
+ </lrm_resource>
+ <lrm_resource id="rabbitmq-bundle-docker-2" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="rabbitmq-bundle-docker-2_last_0" operation_key="rabbitmq-bundle-docker-2_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="16:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;16:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-0" call-id="16" rc-code="7" op-status="0" interval="0" last-run="1500022209" last-rc-change="1500022209" exec-time="61" queue-time="0" op-digest="898a907c413e600aa5c030c26fbdccfd"/>
+ </lrm_resource>
+ <lrm_resource id="galera-bundle-docker-0" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="galera-bundle-docker-0_last_0" operation_key="galera-bundle-docker-0_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="20:20:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:0;20:20:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-0" call-id="29" rc-code="0" op-status="0" interval="0" last-run="1500022223" last-rc-change="1500022223" exec-time="443" queue-time="0" op-digest="4672b28c350bc4f5445fd6678c0c2a56"/>
+ <lrm_rsc_op id="galera-bundle-docker-0_monitor_60000" operation_key="galera-bundle-docker-0_monitor_60000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="21:20:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:0;21:20:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-0" call-id="30" rc-code="0" op-status="0" interval="60000" last-rc-change="1500022224" exec-time="111" queue-time="0" op-digest="4b2ba27785766c4876e892f67e694055"/>
+ </lrm_resource>
+ <lrm_resource id="galera-bundle-docker-1" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="galera-bundle-docker-1_last_0" operation_key="galera-bundle-docker-1_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="18:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;18:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-0" call-id="24" rc-code="7" op-status="0" interval="0" last-run="1500022218" last-rc-change="1500022218" exec-time="43" queue-time="0" op-digest="92b621d0e4ece2bf96924b0f75ab6f90"/>
+ </lrm_resource>
+ <lrm_resource id="galera-bundle-docker-2" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="galera-bundle-docker-2_last_0" operation_key="galera-bundle-docker-2_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="19:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;19:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-0" call-id="28" rc-code="7" op-status="0" interval="0" last-run="1500022219" last-rc-change="1500022219" exec-time="60" queue-time="0" op-digest="92b621d0e4ece2bf96924b0f75ab6f90"/>
+ </lrm_resource>
+ </lrm_resources>
+ </lrm>
+ <transient_attributes id="4">
+ <instance_attributes id="status-4">
+ <nvpair id="status-4-shutdown" name="shutdown" value="0"/>
+ </instance_attributes>
+ </transient_attributes>
+ </node_state>
+ <node_state id="2" uname="overcloud-controller-1" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
+ <lrm id="2">
+ <lrm_resources>
+ <lrm_resource id="overcloud-rabbit-0" type="remote" class="ocf" provider="pacemaker">
+ <lrm_rsc_op id="overcloud-rabbit-0_last_0" operation_key="overcloud-rabbit-0_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="3:2:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;3:2:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-1" call-id="1" rc-code="7" op-status="0" interval="0" last-run="1500021991" last-rc-change="1500021991" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+ </lrm_resource>
+ <lrm_resource id="overcloud-rabbit-1" type="remote" class="ocf" provider="pacemaker">
+ <lrm_rsc_op id="overcloud-rabbit-1_last_0" operation_key="overcloud-rabbit-1_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="11:4:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:0;11:4:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-1" call-id="3" rc-code="0" op-status="0" interval="0" last-run="1500021998" last-rc-change="1500021998" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+ <lrm_rsc_op id="overcloud-rabbit-1_monitor_20000" operation_key="overcloud-rabbit-1_monitor_20000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="7:5:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:0;7:5:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-1" call-id="4" rc-code="0" op-status="0" interval="20000" last-rc-change="1500021998" exec-time="0" queue-time="0" op-digest="6e5bb737f46c381d8a46fb4162afd9e0"/>
+ </lrm_resource>
+ <lrm_resource id="overcloud-rabbit-2" type="remote" class="ocf" provider="pacemaker">
+ <lrm_rsc_op id="overcloud-rabbit-2_last_0" operation_key="overcloud-rabbit-2_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="5:6:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;5:6:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-1" call-id="5" rc-code="7" op-status="0" interval="0" last-run="1500022004" last-rc-change="1500022004" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+ </lrm_resource>
+ <lrm_resource id="rabbitmq-bundle-docker-0" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="rabbitmq-bundle-docker-0_last_0" operation_key="rabbitmq-bundle-docker-0_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="8:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;8:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-1" call-id="8" rc-code="7" op-status="0" interval="0" last-run="1500022209" last-rc-change="1500022209" exec-time="40" queue-time="0" op-digest="898a907c413e600aa5c030c26fbdccfd"/>
+ </lrm_resource>
+ <lrm_resource id="rabbitmq-bundle-docker-1" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="rabbitmq-bundle-docker-1_last_0" operation_key="rabbitmq-bundle-docker-1_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="9:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;9:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-1" call-id="12" rc-code="7" op-status="0" interval="0" last-run="1500022209" last-rc-change="1500022209" exec-time="99" queue-time="0" op-digest="898a907c413e600aa5c030c26fbdccfd"/>
+ </lrm_resource>
+ <lrm_resource id="rabbitmq-bundle-docker-2" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="rabbitmq-bundle-docker-2_last_0" operation_key="rabbitmq-bundle-docker-2_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="10:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;10:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-1" call-id="16" rc-code="7" op-status="0" interval="0" last-run="1500022209" last-rc-change="1500022209" exec-time="105" queue-time="0" op-digest="898a907c413e600aa5c030c26fbdccfd"/>
+ </lrm_resource>
+ <lrm_resource id="galera-bundle-docker-0" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="galera-bundle-docker-0_last_0" operation_key="galera-bundle-docker-0_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="11:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;11:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-1" call-id="20" rc-code="7" op-status="0" interval="0" last-run="1500022218" last-rc-change="1500022218" exec-time="38" queue-time="0" op-digest="92b621d0e4ece2bf96924b0f75ab6f90"/>
+ </lrm_resource>
+ <lrm_resource id="galera-bundle-docker-1" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="galera-bundle-docker-1_last_0" operation_key="galera-bundle-docker-1_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="12:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;12:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-1" call-id="24" rc-code="7" op-status="0" interval="0" last-run="1500022218" last-rc-change="1500022218" exec-time="72" queue-time="0" op-digest="92b621d0e4ece2bf96924b0f75ab6f90"/>
+ </lrm_resource>
+ <lrm_resource id="galera-bundle-docker-2" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="galera-bundle-docker-2_last_0" operation_key="galera-bundle-docker-2_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="13:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;13:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-1" call-id="28" rc-code="7" op-status="0" interval="0" last-run="1500022219" last-rc-change="1500022219" exec-time="40" queue-time="0" op-digest="92b621d0e4ece2bf96924b0f75ab6f90"/>
+ </lrm_resource>
+ </lrm_resources>
+ </lrm>
+ <transient_attributes id="2">
+ <instance_attributes id="status-2">
+ <nvpair id="status-2-shutdown" name="shutdown" value="0"/>
+ </instance_attributes>
+ </transient_attributes>
+ </node_state>
+ <node_state id="5" uname="overcloud-galera-1" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
+ <lrm id="5">
+ <lrm_resources>
+ <lrm_resource id="overcloud-rabbit-0" type="remote" class="ocf" provider="pacemaker">
+ <lrm_rsc_op id="overcloud-rabbit-0_last_0" operation_key="overcloud-rabbit-0_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="6:2:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;6:2:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-1" call-id="1" rc-code="7" op-status="0" interval="0" last-run="1500021990" last-rc-change="1500021990" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+ </lrm_resource>
+ <lrm_resource id="overcloud-rabbit-1" type="remote" class="ocf" provider="pacemaker">
+ <lrm_rsc_op id="overcloud-rabbit-1_last_0" operation_key="overcloud-rabbit-1_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="7:4:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;7:4:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-1" call-id="2" rc-code="7" op-status="0" interval="0" last-run="1500021998" last-rc-change="1500021998" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+ </lrm_resource>
+ <lrm_resource id="overcloud-rabbit-2" type="remote" class="ocf" provider="pacemaker">
+ <lrm_rsc_op id="overcloud-rabbit-2_last_0" operation_key="overcloud-rabbit-2_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="8:6:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;8:6:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-1" call-id="3" rc-code="7" op-status="0" interval="0" last-run="1500022004" last-rc-change="1500022004" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+ </lrm_resource>
+ <lrm_resource id="rabbitmq-bundle-docker-0" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="rabbitmq-bundle-docker-0_last_0" operation_key="rabbitmq-bundle-docker-0_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="17:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;17:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-1" call-id="8" rc-code="7" op-status="0" interval="0" last-run="1500022209" last-rc-change="1500022209" exec-time="30" queue-time="0" op-digest="898a907c413e600aa5c030c26fbdccfd"/>
+ </lrm_resource>
+ <lrm_resource id="rabbitmq-bundle-docker-1" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="rabbitmq-bundle-docker-1_last_0" operation_key="rabbitmq-bundle-docker-1_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="18:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;18:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-1" call-id="12" rc-code="7" op-status="0" interval="0" last-run="1500022209" last-rc-change="1500022209" exec-time="48" queue-time="0" op-digest="898a907c413e600aa5c030c26fbdccfd"/>
+ </lrm_resource>
+ <lrm_resource id="rabbitmq-bundle-docker-2" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="rabbitmq-bundle-docker-2_last_0" operation_key="rabbitmq-bundle-docker-2_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="19:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;19:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-1" call-id="16" rc-code="7" op-status="0" interval="0" last-run="1500022209" last-rc-change="1500022209" exec-time="88" queue-time="0" op-digest="898a907c413e600aa5c030c26fbdccfd"/>
+ </lrm_resource>
+ <lrm_resource id="galera-bundle-docker-0" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="galera-bundle-docker-0_last_0" operation_key="galera-bundle-docker-0_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="20:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;20:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-1" call-id="20" rc-code="7" op-status="0" interval="0" last-run="1500022218" last-rc-change="1500022218" exec-time="59" queue-time="0" op-digest="92b621d0e4ece2bf96924b0f75ab6f90"/>
+ </lrm_resource>
+ <lrm_resource id="galera-bundle-docker-1" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="galera-bundle-docker-1_last_0" operation_key="galera-bundle-docker-1_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="22:20:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:0;22:20:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-1" call-id="29" rc-code="0" op-status="0" interval="0" last-run="1500022223" last-rc-change="1500022223" exec-time="463" queue-time="0" op-digest="4672b28c350bc4f5445fd6678c0c2a56"/>
+ <lrm_rsc_op id="galera-bundle-docker-1_monitor_60000" operation_key="galera-bundle-docker-1_monitor_60000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="23:20:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:0;23:20:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-1" call-id="30" rc-code="0" op-status="0" interval="60000" last-rc-change="1500022224" exec-time="104" queue-time="1" op-digest="4b2ba27785766c4876e892f67e694055"/>
+ </lrm_resource>
+ <lrm_resource id="galera-bundle-docker-2" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="galera-bundle-docker-2_last_0" operation_key="galera-bundle-docker-2_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="22:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;22:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-1" call-id="28" rc-code="7" op-status="0" interval="0" last-run="1500022219" last-rc-change="1500022219" exec-time="86" queue-time="1" op-digest="92b621d0e4ece2bf96924b0f75ab6f90"/>
+ </lrm_resource>
+ </lrm_resources>
+ </lrm>
+ <transient_attributes id="5">
+ <instance_attributes id="status-5">
+ <nvpair id="status-5-shutdown" name="shutdown" value="0"/>
+ </instance_attributes>
+ </transient_attributes>
+ </node_state>
+ <node_state id="6" uname="overcloud-galera-2" in_ccm="true" crmd="online" crm-debug-origin="do_update_resource" join="member" expected="member">
+ <lrm id="6">
+ <lrm_resources>
+ <lrm_resource id="overcloud-rabbit-0" type="remote" class="ocf" provider="pacemaker">
+ <lrm_rsc_op id="overcloud-rabbit-0_last_0" operation_key="overcloud-rabbit-0_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="7:2:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;7:2:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-2" call-id="1" rc-code="7" op-status="0" interval="0" last-run="1500021991" last-rc-change="1500021991" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+ </lrm_resource>
+ <lrm_resource id="overcloud-rabbit-1" type="remote" class="ocf" provider="pacemaker">
+ <lrm_rsc_op id="overcloud-rabbit-1_last_0" operation_key="overcloud-rabbit-1_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="8:4:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;8:4:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-2" call-id="2" rc-code="7" op-status="0" interval="0" last-run="1500021998" last-rc-change="1500021998" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+ </lrm_resource>
+ <lrm_resource id="overcloud-rabbit-2" type="remote" class="ocf" provider="pacemaker">
+ <lrm_rsc_op id="overcloud-rabbit-2_last_0" operation_key="overcloud-rabbit-2_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="9:6:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;9:6:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-2" call-id="3" rc-code="7" op-status="0" interval="0" last-run="1500022004" last-rc-change="1500022004" exec-time="0" queue-time="0" op-digest="a48beba1b11f09d6b1c15da8db5bb0a2" op-force-restart=" server " op-restart-digest="f2317cad3d54cec5d7d7aa7d0bf35cf8"/>
+ </lrm_resource>
+ <lrm_resource id="rabbitmq-bundle-docker-0" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="rabbitmq-bundle-docker-0_last_0" operation_key="rabbitmq-bundle-docker-0_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="20:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;20:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-2" call-id="8" rc-code="7" op-status="0" interval="0" last-run="1500022209" last-rc-change="1500022209" exec-time="62" queue-time="0" op-digest="898a907c413e600aa5c030c26fbdccfd"/>
+ </lrm_resource>
+ <lrm_resource id="rabbitmq-bundle-docker-1" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="rabbitmq-bundle-docker-1_last_0" operation_key="rabbitmq-bundle-docker-1_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="21:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;21:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-2" call-id="12" rc-code="7" op-status="0" interval="0" last-run="1500022209" last-rc-change="1500022209" exec-time="71" queue-time="0" op-digest="898a907c413e600aa5c030c26fbdccfd"/>
+ </lrm_resource>
+ <lrm_resource id="rabbitmq-bundle-docker-2" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="rabbitmq-bundle-docker-2_last_0" operation_key="rabbitmq-bundle-docker-2_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="22:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;22:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-2" call-id="16" rc-code="7" op-status="0" interval="0" last-run="1500022209" last-rc-change="1500022209" exec-time="47" queue-time="0" op-digest="898a907c413e600aa5c030c26fbdccfd"/>
+ </lrm_resource>
+ <lrm_resource id="galera-bundle-docker-0" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="galera-bundle-docker-0_last_0" operation_key="galera-bundle-docker-0_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="23:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;23:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-2" call-id="20" rc-code="7" op-status="0" interval="0" last-run="1500022218" last-rc-change="1500022218" exec-time="58" queue-time="0" op-digest="92b621d0e4ece2bf96924b0f75ab6f90"/>
+ </lrm_resource>
+ <lrm_resource id="galera-bundle-docker-1" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="galera-bundle-docker-1_last_0" operation_key="galera-bundle-docker-1_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="24:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;24:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-2" call-id="24" rc-code="7" op-status="0" interval="0" last-run="1500022218" last-rc-change="1500022218" exec-time="67" queue-time="0" op-digest="92b621d0e4ece2bf96924b0f75ab6f90"/>
+ </lrm_resource>
+ <lrm_resource id="galera-bundle-docker-2" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="galera-bundle-docker-2_last_0" operation_key="galera-bundle-docker-2_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="24:20:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:0;24:20:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-2" call-id="29" rc-code="0" op-status="0" interval="0" last-run="1500022223" last-rc-change="1500022223" exec-time="532" queue-time="0" op-digest="4672b28c350bc4f5445fd6678c0c2a56"/>
+ <lrm_rsc_op id="galera-bundle-docker-2_monitor_60000" operation_key="galera-bundle-docker-2_monitor_60000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="25:20:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:0;25:20:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-galera-2" call-id="30" rc-code="0" op-status="0" interval="60000" last-rc-change="1500022224" exec-time="84" queue-time="0" op-digest="4b2ba27785766c4876e892f67e694055"/>
+ </lrm_resource>
+ </lrm_resources>
+ </lrm>
+ <transient_attributes id="6">
+ <instance_attributes id="status-6">
+ <nvpair id="status-6-shutdown" name="shutdown" value="0"/>
+ </instance_attributes>
+ </transient_attributes>
+ </node_state>
+ <node_state remote_node="true" id="overcloud-rabbit-0" uname="overcloud-rabbit-0" in_ccm="true" crm-debug-origin="do_update_resource" node_fenced="0">
+ <lrm id="overcloud-rabbit-0">
+ <lrm_resources>
+ <lrm_resource id="rabbitmq-bundle-docker-0" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="rabbitmq-bundle-docker-0_last_0" operation_key="rabbitmq-bundle-docker-0_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="11:17:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:0;11:17:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-0" call-id="101" rc-code="0" op-status="0" interval="0" last-run="1500022215" last-rc-change="1500022215" exec-time="743" queue-time="0" op-digest="8c0a285f208d4d9a67aff645d6afa451"/>
+ <lrm_rsc_op id="rabbitmq-bundle-docker-0_monitor_60000" operation_key="rabbitmq-bundle-docker-0_monitor_60000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="12:17:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:0;12:17:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-0" call-id="106" rc-code="0" op-status="0" interval="60000" last-rc-change="1500022216" exec-time="116" queue-time="0" op-digest="22abb108ae9d2c7687fd55cec05e3eb1"/>
+ </lrm_resource>
+ <lrm_resource id="rabbitmq-bundle-docker-1" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="rabbitmq-bundle-docker-1_last_0" operation_key="rabbitmq-bundle-docker-1_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="24:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;24:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-0" call-id="80" rc-code="7" op-status="0" interval="0" last-run="1500022209" last-rc-change="1500022209" exec-time="34" queue-time="0" op-digest="898a907c413e600aa5c030c26fbdccfd"/>
+ </lrm_resource>
+ <lrm_resource id="rabbitmq-bundle-docker-2" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="rabbitmq-bundle-docker-2_last_0" operation_key="rabbitmq-bundle-docker-2_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="25:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;25:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-0" call-id="86" rc-code="7" op-status="0" interval="0" last-run="1500022210" last-rc-change="1500022210" exec-time="51" queue-time="0" op-digest="898a907c413e600aa5c030c26fbdccfd"/>
+ </lrm_resource>
+ <lrm_resource id="galera-bundle-docker-0" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="galera-bundle-docker-0_last_0" operation_key="galera-bundle-docker-0_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="26:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;26:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-0" call-id="114" rc-code="7" op-status="0" interval="0" last-run="1500022219" last-rc-change="1500022219" exec-time="39" queue-time="0" op-digest="92b621d0e4ece2bf96924b0f75ab6f90"/>
+ </lrm_resource>
+ <lrm_resource id="galera-bundle-docker-1" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="galera-bundle-docker-1_last_0" operation_key="galera-bundle-docker-1_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="27:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;27:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-0" call-id="119" rc-code="7" op-status="0" interval="0" last-run="1500022219" last-rc-change="1500022219" exec-time="32" queue-time="0" op-digest="92b621d0e4ece2bf96924b0f75ab6f90"/>
+ </lrm_resource>
+ <lrm_resource id="galera-bundle-docker-2" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="galera-bundle-docker-2_last_0" operation_key="galera-bundle-docker-2_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="28:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;28:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-0" call-id="123" rc-code="7" op-status="0" interval="0" last-run="1500022219" last-rc-change="1500022219" exec-time="27" queue-time="0" op-digest="92b621d0e4ece2bf96924b0f75ab6f90"/>
+ </lrm_resource>
+ </lrm_resources>
+ </lrm>
+ </node_state>
+ <node_state remote_node="true" id="overcloud-rabbit-1" uname="overcloud-rabbit-1" in_ccm="true" crm-debug-origin="do_update_resource" node_fenced="0">
+ <lrm id="overcloud-rabbit-1">
+ <lrm_resources>
+ <lrm_resource id="rabbitmq-bundle-docker-0" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="rabbitmq-bundle-docker-0_last_0" operation_key="rabbitmq-bundle-docker-0_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="26:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;26:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-1" call-id="16" rc-code="7" op-status="0" interval="0" last-run="1500022209" last-rc-change="1500022209" exec-time="41" queue-time="0" op-digest="898a907c413e600aa5c030c26fbdccfd"/>
+ </lrm_resource>
+ <lrm_resource id="rabbitmq-bundle-docker-1" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="rabbitmq-bundle-docker-1_last_0" operation_key="rabbitmq-bundle-docker-1_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="13:17:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:0;13:17:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-1" call-id="25" rc-code="0" op-status="0" interval="0" last-run="1500022215" last-rc-change="1500022215" exec-time="839" queue-time="0" op-digest="f16474ea54754bd1c314820340573331"/>
+ <lrm_rsc_op id="rabbitmq-bundle-docker-1_monitor_60000" operation_key="rabbitmq-bundle-docker-1_monitor_60000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="14:17:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:0;14:17:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-1" call-id="26" rc-code="0" op-status="0" interval="60000" last-rc-change="1500022216" exec-time="171" queue-time="0" op-digest="77a7f86a24beebea976cd186a4b67311"/>
+ </lrm_resource>
+ <lrm_resource id="rabbitmq-bundle-docker-2" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="rabbitmq-bundle-docker-2_last_0" operation_key="rabbitmq-bundle-docker-2_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="28:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;28:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-1" call-id="24" rc-code="7" op-status="0" interval="0" last-run="1500022209" last-rc-change="1500022209" exec-time="54" queue-time="0" op-digest="898a907c413e600aa5c030c26fbdccfd"/>
+ </lrm_resource>
+ <lrm_resource id="galera-bundle-docker-0" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="galera-bundle-docker-0_last_0" operation_key="galera-bundle-docker-0_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="29:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;29:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-1" call-id="30" rc-code="7" op-status="0" interval="0" last-run="1500022218" last-rc-change="1500022218" exec-time="31" queue-time="0" op-digest="92b621d0e4ece2bf96924b0f75ab6f90"/>
+ </lrm_resource>
+ <lrm_resource id="galera-bundle-docker-1" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="galera-bundle-docker-1_last_0" operation_key="galera-bundle-docker-1_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="30:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;30:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-1" call-id="34" rc-code="7" op-status="0" interval="0" last-run="1500022218" last-rc-change="1500022218" exec-time="34" queue-time="0" op-digest="92b621d0e4ece2bf96924b0f75ab6f90"/>
+ </lrm_resource>
+ <lrm_resource id="galera-bundle-docker-2" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="galera-bundle-docker-2_last_0" operation_key="galera-bundle-docker-2_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="31:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;31:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-1" call-id="38" rc-code="7" op-status="0" interval="0" last-run="1500022219" last-rc-change="1500022219" exec-time="94" queue-time="0" op-digest="92b621d0e4ece2bf96924b0f75ab6f90"/>
+ </lrm_resource>
+ </lrm_resources>
+ </lrm>
+ </node_state>
+ <node_state remote_node="true" id="overcloud-rabbit-2" uname="overcloud-rabbit-2" in_ccm="true" crm-debug-origin="do_update_resource" node_fenced="0">
+ <lrm id="overcloud-rabbit-2">
+ <lrm_resources>
+ <lrm_resource id="rabbitmq-bundle-docker-0" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="rabbitmq-bundle-docker-0_last_0" operation_key="rabbitmq-bundle-docker-0_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="29:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;29:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-2" call-id="16" rc-code="7" op-status="0" interval="0" last-run="1500022209" last-rc-change="1500022209" exec-time="51" queue-time="0" op-digest="898a907c413e600aa5c030c26fbdccfd"/>
+ </lrm_resource>
+ <lrm_resource id="rabbitmq-bundle-docker-1" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="rabbitmq-bundle-docker-1_last_0" operation_key="rabbitmq-bundle-docker-1_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="30:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;30:14:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-2" call-id="20" rc-code="7" op-status="0" interval="0" last-run="1500022209" last-rc-change="1500022209" exec-time="83" queue-time="0" op-digest="898a907c413e600aa5c030c26fbdccfd"/>
+ </lrm_resource>
+ <lrm_resource id="rabbitmq-bundle-docker-2" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="rabbitmq-bundle-docker-2_last_0" operation_key="rabbitmq-bundle-docker-2_start_0" operation="start" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="15:17:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:0;15:17:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-2" call-id="25" rc-code="0" op-status="0" interval="0" last-run="1500022216" last-rc-change="1500022216" exec-time="825" queue-time="0" op-digest="0e859e53e780b236b7edb6b7a399e031"/>
+ <lrm_rsc_op id="rabbitmq-bundle-docker-2_monitor_60000" operation_key="rabbitmq-bundle-docker-2_monitor_60000" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="16:17:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:0;16:17:0:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-2" call-id="26" rc-code="0" op-status="0" interval="60000" last-rc-change="1500022217" exec-time="125" queue-time="0" op-digest="57d17ff3d69c0f58c3556fd7f904ec61"/>
+ </lrm_resource>
+ <lrm_resource id="galera-bundle-docker-0" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="galera-bundle-docker-0_last_0" operation_key="galera-bundle-docker-0_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="32:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;32:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-2" call-id="30" rc-code="7" op-status="0" interval="0" last-run="1500022219" last-rc-change="1500022219" exec-time="42" queue-time="0" op-digest="92b621d0e4ece2bf96924b0f75ab6f90"/>
+ </lrm_resource>
+ <lrm_resource id="galera-bundle-docker-1" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="galera-bundle-docker-1_last_0" operation_key="galera-bundle-docker-1_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="33:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;33:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-2" call-id="34" rc-code="7" op-status="0" interval="0" last-run="1500022219" last-rc-change="1500022219" exec-time="87" queue-time="0" op-digest="92b621d0e4ece2bf96924b0f75ab6f90"/>
+ </lrm_resource>
+ <lrm_resource id="galera-bundle-docker-2" type="docker" class="ocf" provider="heartbeat">
+ <lrm_rsc_op id="galera-bundle-docker-2_last_0" operation_key="galera-bundle-docker-2_monitor_0" operation="monitor" crm-debug-origin="do_update_resource" crm_feature_set="3.0.12" transition-key="34:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" transition-magic="0:7;34:18:7:db0fd259-f51a-4ee6-a59b-6043dedaded8" on_node="overcloud-controller-2" call-id="38" rc-code="7" op-status="0" interval="0" last-run="1500022219" last-rc-change="1500022219" exec-time="73" queue-time="0" op-digest="92b621d0e4ece2bf96924b0f75ab6f90"/>
+ </lrm_resource>
+ </lrm_resources>
+ </lrm>
+ </node_state>
+ </status>
+</cib>
diff --git a/cts/cli/regression.tools.exp b/cts/cli/regression.tools.exp
index 510cc0a..7324053 100644
--- a/cts/cli/regression.tools.exp
+++ b/cts/cli/regression.tools.exp
@@ -4053,3 +4053,27 @@ Resources colocated with clone:
</pacemaker-result>
=#=#=#= End test: Show resource digests with overrides - OK (0) =#=#=#=
* Passed: crm_resource - Show resource digests with overrides
+=#=#=#= Begin test: List all nodes =#=#=#=
+11
+=#=#=#= End test: List all nodes - OK (0) =#=#=#=
+* Passed: crmadmin - List all nodes
+=#=#=#= Begin test: List cluster nodes =#=#=#=
+6
+=#=#=#= End test: List cluster nodes - OK (0) =#=#=#=
+* Passed: crmadmin - List cluster nodes
+=#=#=#= Begin test: List guest nodes =#=#=#=
+2
+=#=#=#= End test: List guest nodes - OK (0) =#=#=#=
+* Passed: crmadmin - List guest nodes
+=#=#=#= Begin test: List remote nodes =#=#=#=
+3
+=#=#=#= End test: List remote nodes - OK (0) =#=#=#=
+* Passed: crmadmin - List remote nodes
+=#=#=#= Begin test: List cluster,remote nodes =#=#=#=
+9
+=#=#=#= End test: List cluster,remote nodes - OK (0) =#=#=#=
+* Passed: crmadmin - List cluster,remote nodes
+=#=#=#= Begin test: List guest,remote nodes =#=#=#=
+5
+=#=#=#= End test: List guest,remote nodes - OK (0) =#=#=#=
+* Passed: crmadmin - List guest,remote nodes
diff --git a/cts/cts-cli.in b/cts/cts-cli.in
index 96f5386..8e2dbe5 100755
--- a/cts/cts-cli.in
+++ b/cts/cts-cli.in
@@ -501,15 +501,15 @@ function test_tools() {
desc="Default standby value"
cmd="crm_standby -N node1 -G"
test_assert $CRM_EX_OK
-
+
desc="Set standby status"
cmd="crm_standby -N node1 -v true"
test_assert $CRM_EX_OK
-
+
desc="Query standby value"
cmd="crm_standby -N node1 -G"
test_assert $CRM_EX_OK
-
+
desc="Delete standby value"
cmd="crm_standby -N node1 -D"
test_assert $CRM_EX_OK
@@ -657,7 +657,7 @@ function test_tools() {
desc="Drop the status section"
cmd="cibadmin -R -o status --xml-text '<status/>'"
test_assert $CRM_EX_OK 0
-
+
desc="Create a clone"
cmd="cibadmin -C -o resources --xml-text '<clone id=\"test-clone\"><primitive id=\"test-primitive\" class=\"ocf\" provider=\"pacemaker\" type=\"Dummy\"/></clone>'"
test_assert $CRM_EX_OK 0
@@ -697,7 +697,7 @@ function test_tools() {
desc="Update existing resource meta attribute"
cmd="crm_resource -r test-clone --meta -p is-managed -v true"
test_assert $CRM_EX_OK
-
+
desc="Create a resource meta attribute in the parent"
cmd="crm_resource -r test-clone --meta -p is-managed -v true --force"
test_assert $CRM_EX_OK
@@ -803,6 +803,34 @@ function test_tools() {
test_assert $CRM_EX_OK 0
unset CIB_file
+
+ export CIB_file="$test_home/cli/crmadmin-cluster-remote-guest-nodes.xml"
+
+ desc="List all nodes"
+ cmd="crmadmin -N | wc -l | grep 11"
+ test_assert $CRM_EX_OK 0
+
+ desc="List cluster nodes"
+ cmd="crmadmin -N cluster | wc -l | grep 6"
+ test_assert $CRM_EX_OK 0
+
+ desc="List guest nodes"
+ cmd="crmadmin -N guest | wc -l | grep 2"
+ test_assert $CRM_EX_OK 0
+
+ desc="List remote nodes"
+ cmd="crmadmin -N remote | wc -l | grep 3"
+ test_assert $CRM_EX_OK 0
+
+ desc="List cluster,remote nodes"
+ cmd="crmadmin -N cluster,remote | wc -l | grep 9"
+ test_assert $CRM_EX_OK 0
+
+ desc="List guest,remote nodes"
+ cmd="crmadmin -N guest,remote | wc -l | grep 5"
+ test_assert $CRM_EX_OK 0
+
+ unset CIB_file
}
INVALID_PERIODS=(
@@ -822,7 +850,7 @@ INVALID_PERIODS=(
"P1Z/2019-02-20 00:00:00Z" # Invalid duration unit
"P1YM/2019-02-20 00:00:00Z" # No number for duration unit
)
-
+
function test_dates() {
# Ensure invalid period specifications are rejected
for spec in '' "${INVALID_PERIODS[@]}"; do
@@ -1665,7 +1693,7 @@ for t in $tests; do
done
rm -rf "${shadow_dir}"
-
+
failed=0
if [ $verbose -eq 1 ]; then
--
1.8.3.1