Blame SOURCES/0108-Feature-crmd-Set-the-shutdown-transient-attribute-in.patch

0240e4
From 0a883a90eeeee4c9b156023da693d4ff93a9d69a Mon Sep 17 00:00:00 2001
0240e4
From: Andrew Beekhof <andrew@beekhof.net>
0240e4
Date: Wed, 6 Jan 2016 15:17:06 +1100
0240e4
Subject: [PATCH 108/108] Feature: crmd: Set the shutdown transient attribute
0240e4
 in response to LRMD_IPC_OP_SHUTDOWN_REQ from remote nodes
0240e4
0240e4
---
0240e4
 crmd/lrm_state.c | 22 ++++++++++++++--------
0240e4
 1 file changed, 14 insertions(+), 8 deletions(-)
0240e4
0240e4
diff --git a/crmd/lrm_state.c b/crmd/lrm_state.c
0240e4
index 5ee5b83..7833ebb 100644
0240e4
--- a/crmd/lrm_state.c
0240e4
+++ b/crmd/lrm_state.c
0240e4
@@ -478,17 +478,23 @@ remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg)
0240e4
     CRM_CHECK(op != NULL, return);
0240e4
     CRM_CHECK(session != NULL, return);
0240e4
 
0240e4
+    crm_element_value_int(msg, F_LRMD_IPC_MSG_ID, &msg_id);
0240e4
+    /* This is msg from remote ipc client going to real ipc server */
0240e4
+
0240e4
     if (safe_str_eq(op, LRMD_IPC_OP_SHUTDOWN_REQ)) {
0240e4
-        crm_warn("Graceful proxy shutdown not yet supported");
0240e4
-        /* TODO: uncomment this, then put node in standby: */
0240e4
-        /* remote_proxy_ack_shutdown(lrmd); */
0240e4
-        return;
0240e4
-    }
0240e4
+        char *now_s = NULL;
0240e4
+        time_t now = time(NULL);
0240e4
 
0240e4
-    crm_element_value_int(msg, F_LRMD_IPC_MSG_ID, &msg_id);
0240e4
+        crm_warn("Graceful proxy shutdown of %s not yet tested", lrm_state->node_name);
0240e4
 
0240e4
-    /* This is msg from remote ipc client going to real ipc server */
0240e4
-    if (safe_str_eq(op, LRMD_IPC_OP_NEW)) {
0240e4
+        now_s = crm_itoa(now);
0240e4
+        update_attrd(lrm_state->node_name, XML_CIB_ATTR_SHUTDOWN, now_s, NULL, FALSE);
0240e4
+        free(now_s);
0240e4
+
0240e4
+        remote_proxy_ack_shutdown(lrmd);
0240e4
+        return;
0240e4
+
0240e4
+    } else if (safe_str_eq(op, LRMD_IPC_OP_NEW)) {
0240e4
         const char *channel = crm_element_value(msg, F_LRMD_IPC_IPC_SERVER);
0240e4
 
0240e4
         CRM_CHECK(channel != NULL, return);
0240e4
-- 
0240e4
1.8.3.1
0240e4