This is the mail archive of the
cluster-cvs@sourceware.org
mailing list for the cluster.
RHEL5 - rgmanager: Make freeze/unfreeze work with central_processing
- From: Lon Hohberger <lon at fedoraproject dot org>
- To: cluster-cvs-relay at redhat dot com
- Date: Tue, 26 Aug 2008 14:23:41 +0000 (UTC)
- Subject: RHEL5 - rgmanager: Make freeze/unfreeze work with central_processing
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=62dde5f3e9907175749155c3487f44eedf216442
Commit: 62dde5f3e9907175749155c3487f44eedf216442
Parent: 9607c265d75b92add904085c9fc75d3ad29be6e6
Author: Lon Hohberger <lhh@redhat.com>
AuthorDate: Mon Aug 25 15:28:25 2008 -0400
Committer: Lon Hohberger <lhh@redhat.com>
CommitterDate: Mon Aug 25 15:28:25 2008 -0400
rgmanager: Make freeze/unfreeze work with central_processing
Part 2 of 2 for rhbz 448046
---
rgmanager/src/daemons/rg_state.c | 3 +-
rgmanager/src/daemons/slang_event.c | 25 ++++++++++++++++++++++-
rgmanager/src/resources/default_event_script.sl | 10 ++++++++-
3 files changed, 35 insertions(+), 3 deletions(-)
diff --git a/rgmanager/src/daemons/rg_state.c b/rgmanager/src/daemons/rg_state.c
index 76c62f5..17776e8 100644
--- a/rgmanager/src/daemons/rg_state.c
+++ b/rgmanager/src/daemons/rg_state.c
@@ -1532,7 +1532,8 @@ _svc_freeze(char *svcName, int enabled)
return RG_EFAIL;
}
- clulog(LOG_DEBUG, "Handling %s request for RG %s\n", svcName, enabled?"freeze":"unfreeze");
+ clulog(LOG_DEBUG, "Handling %s request for RG %s\n", enabled?"freeze":"unfreeze",
+ svcName);
if (get_rg_state(svcName, &svcStatus) != 0) {
rg_unlock(&lockp);
diff --git a/rgmanager/src/daemons/slang_event.c b/rgmanager/src/daemons/slang_event.c
index 92284b5..150a4fa 100644
--- a/rgmanager/src/daemons/slang_event.c
+++ b/rgmanager/src/daemons/slang_event.c
@@ -100,7 +100,9 @@ static int
_user_stop = RG_STOP_USER, /* From clusvcadm */
_user_relo = RG_RELOCATE,
_user_restart = RG_RESTART,
- _user_migrate = RG_MIGRATE;
+ _user_migrate = RG_MIGRATE,
+ _user_freeze = RG_FREEZE,
+ _user_unfreeze = RG_UNFREEZE;
SLang_Intrin_Var_Type rgmanager_vars[] =
@@ -151,6 +153,8 @@ SLang_Intrin_Var_Type rgmanager_vars[] =
MAKE_VARIABLE("USER_RELOCATE", &_user_relo, SLANG_INT_TYPE, 1),
MAKE_VARIABLE("USER_RESTART", &_user_restart, SLANG_INT_TYPE, 1),
MAKE_VARIABLE("USER_MIGRATE", &_user_migrate, SLANG_INT_TYPE, 1),
+ MAKE_VARIABLE("USER_FREEZE", &_user_freeze, SLANG_INT_TYPE, 1),
+ MAKE_VARIABLE("USER_UNFREEZE", &_user_unfreeze,SLANG_INT_TYPE, 1),
/* Errors */
MAKE_VARIABLE("rg_error", &_rg_err, SLANG_INT_TYPE, 1),
@@ -302,6 +306,21 @@ sl_service_status(char *svcName)
}
+/* These can be done by the master node */
+int
+sl_service_freeze(char *svcName)
+{
+ return svc_freeze(svcName);
+}
+
+
+int
+sl_service_unfreeze(char *svcName)
+{
+ return svc_unfreeze(svcName);
+}
+
+
/**
(nofailback, restricted, ordered, nodelist) = service_domain_info(svcName);
*/
@@ -975,6 +994,10 @@ SLang_Intrin_Fun_Type rgmanager_slang[] =
MAKE_INTRINSIC_0("service_start", sl_start_service, SLANG_INT_TYPE),
MAKE_INTRINSIC_S("service_status", sl_service_status,
SLANG_VOID_TYPE),
+ MAKE_INTRINSIC_S("service_freeze", sl_service_freeze,
+ SLANG_INT_TYPE),
+ MAKE_INTRINSIC_S("service_unfreeze", sl_service_unfreeze,
+ SLANG_INT_TYPE),
/* Node list manipulation */
MAKE_INTRINSIC_0("union", sl_union, SLANG_VOID_TYPE),
diff --git a/rgmanager/src/resources/default_event_script.sl b/rgmanager/src/resources/default_event_script.sl
index e961266..d83512b 100644
--- a/rgmanager/src/resources/default_event_script.sl
+++ b/rgmanager/src/resources/default_event_script.sl
@@ -294,7 +294,15 @@ define default_user_event_handler()
ret = service_stop(service_name);
- }
+ } else if (user_request == USER_FREEZE) {
+
+ ret = service_freeze(service_name);
+
+ } else if (user_request == USER_UNFREEZE) {
+
+ ret = service_unfreeze(service_name);
+
+ }
%
% todo - migrate