From 0a883a90eeeee4c9b156023da693d4ff93a9d69a Mon Sep 17 00:00:00 2001 From: Andrew Beekhof 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