Blob Blame History Raw
From 0a883a90eeeee4c9b156023da693d4ff93a9d69a Mon Sep 17 00:00:00 2001
From: Andrew Beekhof <andrew@beekhof.net>
Date: Wed, 6 Jan 2016 15:17:06 +1100
Subject: [PATCH 108/108] Feature: crmd: Set the shutdown transient attribute
 in response to LRMD_IPC_OP_SHUTDOWN_REQ from remote nodes

---
 crmd/lrm_state.c | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/crmd/lrm_state.c b/crmd/lrm_state.c
index 5ee5b83..7833ebb 100644
--- a/crmd/lrm_state.c
+++ b/crmd/lrm_state.c
@@ -478,17 +478,23 @@ remote_proxy_cb(lrmd_t *lrmd, void *userdata, xmlNode *msg)
     CRM_CHECK(op != NULL, return);
     CRM_CHECK(session != NULL, return);
 
+    crm_element_value_int(msg, F_LRMD_IPC_MSG_ID, &msg_id);
+    /* This is msg from remote ipc client going to real ipc server */
+
     if (safe_str_eq(op, LRMD_IPC_OP_SHUTDOWN_REQ)) {
-        crm_warn("Graceful proxy shutdown not yet supported");
-        /* TODO: uncomment this, then put node in standby: */
-        /* remote_proxy_ack_shutdown(lrmd); */
-        return;
-    }
+        char *now_s = NULL;
+        time_t now = time(NULL);
 
-    crm_element_value_int(msg, F_LRMD_IPC_MSG_ID, &msg_id);
+        crm_warn("Graceful proxy shutdown of %s not yet tested", lrm_state->node_name);
 
-    /* This is msg from remote ipc client going to real ipc server */
-    if (safe_str_eq(op, LRMD_IPC_OP_NEW)) {
+        now_s = crm_itoa(now);
+        update_attrd(lrm_state->node_name, XML_CIB_ATTR_SHUTDOWN, now_s, NULL, FALSE);
+        free(now_s);
+
+        remote_proxy_ack_shutdown(lrmd);
+        return;
+
+    } else if (safe_str_eq(op, LRMD_IPC_OP_NEW)) {
         const char *channel = crm_element_value(msg, F_LRMD_IPC_IPC_SERVER);
 
         CRM_CHECK(channel != NULL, return);
-- 
1.8.3.1