cluster: RHEL6 - resource-agents: Use literal quotes for tr calls
by Lon Hohberger
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: b0aa94c16ee8b018858c138c8b997e1673828610
Parent: 995e5675526c1442b0dc0e3036adad3eb28b55fd
Author: Lon Hohberger <lhh(a)redhat.com>
AuthorDate: Wed Jan 12 17:30:09 2011 -0500
Committer: Lon Hohberger <lhh(a)redhat.com>
CommitterDate: Mon Jan 31 18:19:33 2011 -0500
resource-agents: Use literal quotes for tr calls
This affects SAPInstance / SAPDatabase agents.
Resolves: rhbz#639252
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
Reviewed-by: Ryan O'Hara <rohara(a)redhat.com>
---
rgmanager/src/resources/SAPDatabase | 16 ++++++++--------
rgmanager/src/resources/SAPInstance | 2 +-
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/rgmanager/src/resources/SAPDatabase b/rgmanager/src/resources/SAPDatabase
index 8ac3005..5027018 100644
--- a/rgmanager/src/resources/SAPDatabase
+++ b/rgmanager/src/resources/SAPDatabase
@@ -201,7 +201,7 @@ do_exit() {
# listener_start: Start the given listener
#
listener_start() {
- orasid="ora`echo $SID | tr [:upper:] [:lower:]`"
+ orasid="ora`echo $SID | tr '[:upper:]' '[:lower:]'`"
rc=$OCF_SUCCESS
output=`echo "lsnrctl start $NETSERVICENAME" | su - $orasid 2>&1`
if [ $? -eq 0 ]
@@ -219,7 +219,7 @@ listener_start() {
# listener_stop: Stop the given listener
#
listener_stop() {
- orasid="ora`echo $SID | tr [:upper:] [:lower:]`"
+ orasid="ora`echo $SID | tr '[:upper:]' '[:lower:]'`"
rc=$OCF_SUCCESS
if
listener_status
@@ -243,7 +243,7 @@ listener_stop() {
# listener_status: is the given listener running?
#
listener_status() {
- orasid="ora`echo $SID | tr [:upper:] [:lower:]`"
+ orasid="ora`echo $SID | tr '[:upper:]' '[:lower:]'`"
# Note: ps cuts off it's output at column $COLUMNS, so "ps -ef" can not be used here
# as the output might be to long.
cnt=`ps efo args --user $orasid | grep $NETSERVICENAME | grep -c tnslsnr`
@@ -502,7 +502,7 @@ exit \$rc" > $TEMPFILE
# db6udb_recover: try to recover DB/2 after a crash
#
db6udb_recover() {
- db2sid="db2`echo $SID | tr [:upper:] [:lower:]`"
+ db2sid="db2`echo $SID | tr '[:upper:]' '[:lower:]'`"
echo '#!/bin/sh
LOG=$HOME/recover.log
@@ -752,11 +752,11 @@ sapdatabase_status() {
SNUM=2
;;
ORA) SEARCH="ora_[a-z][a-z][a-z][a-z]_"
- SUSER="ora`echo $SID | tr [:upper:] [:lower:]`"
+ SUSER="ora`echo $SID | tr '[:upper:]' '[:lower:]'`"
SNUM=4
;;
DB6) SEARCH="db2[a-z][a-z][a-z][a-z][a-z]"
- SUSER="db2`echo $SID | tr [:upper:] [:lower:]`"
+ SUSER="db2`echo $SID | tr '[:upper:]' '[:lower:]'`"
SNUM=5
;;
esac
@@ -876,7 +876,7 @@ if [ -z "$OCF_RESKEY_DBTYPE" ]; then
ocf_log err "Please set OCF_RESKEY_DBTYPE to the database vendor specific tag (ORA,ADA,DB6)!"
do_exit $OCF_ERR_ARGS
fi
-DBTYPE=`echo "$OCF_RESKEY_DBTYPE" | tr "[a-z]" "[A-Z]"`
+DBTYPE=`echo "$OCF_RESKEY_DBTYPE" | tr '[a-z]' '[A-Z]'`
# optional OCF parameters, we try to guess which directories are correct
EXESTARTDB="startdb"
@@ -995,7 +995,7 @@ fi
if [ `echo $LD_LIBRARY_PATH | grep -c "^$DIR_EXECUTABLE\>"` -eq 0 ]; then
LD_LIBRARY_PATH=$DIR_EXECUTABLE:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH
fi
-sidadm="`echo $SID | tr [:upper:] [:lower:]`adm"
+sidadm="`echo $SID | tr '[:upper:]' '[:lower:]'`adm"
# What kind of method was invoked?
case "$1" in
diff --git a/rgmanager/src/resources/SAPInstance b/rgmanager/src/resources/SAPInstance
index 94643c9..e70e2a3 100644
--- a/rgmanager/src/resources/SAPInstance
+++ b/rgmanager/src/resources/SAPInstance
@@ -568,7 +568,7 @@ fi
if [ `echo $LD_LIBRARY_PATH | grep -c "^$DIR_EXECUTABLE\>"` -eq 0 ]; then
LD_LIBRARY_PATH=$DIR_EXECUTABLE:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH
fi
-sidadm="`echo $SID | tr [:upper:] [:lower:]`adm"
+sidadm="`echo $SID | tr '[:upper:]' '[:lower:]'`adm"
# What kind of method was invoked?
case "$1" in
13 years, 1 month
resource-agents: master - resource-agents: Use literal quotes for tr calls
by Lon Hohberger
Gitweb: http://git.fedorahosted.org/git/resource-agents.git?p=resource-agents.git...
Commit: f9960d41fb8adced22c83e6db73d950b31f7cde1
Parent: 488c4ff3a1c3ed1734a00f86d8b639f06e146a11
Author: Lon Hohberger <lhh(a)redhat.com>
AuthorDate: Wed Jan 12 17:30:09 2011 -0500
Committer: Lon Hohberger <lhh(a)redhat.com>
CommitterDate: Mon Jan 31 18:22:38 2011 -0500
resource-agents: Use literal quotes for tr calls
This affects SAPInstance / SAPDatabase agents.
Resolves: rhbz#639252
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
Reviewed-by: Ryan O'Hara <rohara(a)redhat.com>
---
rgmanager/src/resources/SAPDatabase | 16 ++++++++--------
rgmanager/src/resources/SAPInstance | 2 +-
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/rgmanager/src/resources/SAPDatabase b/rgmanager/src/resources/SAPDatabase
index e03e8b6..012ee4d 100644
--- a/rgmanager/src/resources/SAPDatabase
+++ b/rgmanager/src/resources/SAPDatabase
@@ -201,7 +201,7 @@ do_exit() {
# listener_start: Start the given listener
#
listener_start() {
- orasid="ora`echo $SID | tr [:upper:] [:lower:]`"
+ orasid="ora`echo $SID | tr '[:upper:]' '[:lower:]'`"
rc=$OCF_SUCCESS
output=`echo "lsnrctl start $NETSERVICENAME" | su - $orasid 2>&1`
if [ $? -eq 0 ]
@@ -219,7 +219,7 @@ listener_start() {
# listener_stop: Stop the given listener
#
listener_stop() {
- orasid="ora`echo $SID | tr [:upper:] [:lower:]`"
+ orasid="ora`echo $SID | tr '[:upper:]' '[:lower:]'`"
rc=$OCF_SUCCESS
if
listener_status
@@ -243,7 +243,7 @@ listener_stop() {
# listener_status: is the given listener running?
#
listener_status() {
- orasid="ora`echo $SID | tr [:upper:] [:lower:]`"
+ orasid="ora`echo $SID | tr '[:upper:]' '[:lower:]'`"
# Note: ps cuts off it's output at column $COLUMNS, so "ps -ef" can not be used here
# as the output might be to long.
cnt=`ps efo args --user $orasid | grep $NETSERVICENAME | grep -c tnslsnr`
@@ -502,7 +502,7 @@ exit \$rc" > $TEMPFILE
# db6udb_recover: try to recover DB/2 after a crash
#
db6udb_recover() {
- db2sid="db2`echo $SID | tr [:upper:] [:lower:]`"
+ db2sid="db2`echo $SID | tr '[:upper:]' '[:lower:]'`"
echo '#!/bin/sh
LOG=$HOME/recover.log
@@ -752,11 +752,11 @@ sapdatabase_status() {
SNUM=2
;;
ORA) SEARCH="ora_[a-z][a-z][a-z][a-z]_"
- SUSER="ora`echo $SID | tr [:upper:] [:lower:]`"
+ SUSER="ora`echo $SID | tr '[:upper:]' '[:lower:]'`"
SNUM=4
;;
DB6) SEARCH="db2[a-z][a-z][a-z][a-z][a-z]"
- SUSER="db2`echo $SID | tr [:upper:] [:lower:]`"
+ SUSER="db2`echo $SID | tr '[:upper:]' '[:lower:]'`"
SNUM=5
;;
esac
@@ -876,7 +876,7 @@ if [ -z "$OCF_RESKEY_DBTYPE" ]; then
ocf_log err "Please set OCF_RESKEY_DBTYPE to the database vendor specific tag (ORA,ADA,DB6)!"
do_exit $OCF_ERR_ARGS
fi
-DBTYPE=`echo "$OCF_RESKEY_DBTYPE" | tr "[a-z]" "[A-Z]"`
+DBTYPE=`echo "$OCF_RESKEY_DBTYPE" | tr '[a-z]' '[A-Z]'`
# optional OCF parameters, we try to guess which directories are correct
EXESTARTDB="startdb"
@@ -996,7 +996,7 @@ if [ `echo $LD_LIBRARY_PATH | grep -c "^$DIR_EXECUTABLE\>"` -eq 0 ]; then
LD_LIBRARY_PATH=$DIR_EXECUTABLE${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
fi
-sidadm="`echo $SID | tr [:upper:] [:lower:]`adm"
+sidadm="`echo $SID | tr '[:upper:]' '[:lower:]'`adm"
# What kind of method was invoked?
case "$1" in
diff --git a/rgmanager/src/resources/SAPInstance b/rgmanager/src/resources/SAPInstance
index 7d05b3a..1342223 100644
--- a/rgmanager/src/resources/SAPInstance
+++ b/rgmanager/src/resources/SAPInstance
@@ -569,7 +569,7 @@ if [ `echo $LD_LIBRARY_PATH | grep -c "^$DIR_EXECUTABLE\>"` -eq 0 ]; then
LD_LIBRARY_PATH=$DIR_EXECUTABLE${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
fi
-sidadm="`echo $SID | tr [:upper:] [:lower:]`adm"
+sidadm="`echo $SID | tr '[:upper:]' '[:lower:]'`adm"
# What kind of method was invoked?
case "$1" in
13 years, 1 month
cluster: RHEL6 - resource-agents: Fix migrateuriopt setting
by Lon Hohberger
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: 995e5675526c1442b0dc0e3036adad3eb28b55fd
Parent: c9ff58e8282948fa92bb82c05d40858a22ac61e6
Author: Lon Hohberger <lhh(a)redhat.com>
AuthorDate: Thu Dec 2 14:40:18 2010 -0500
Committer: Lon Hohberger <lhh(a)redhat.com>
CommitterDate: Mon Jan 31 17:49:15 2011 -0500
resource-agents: Fix migrateuriopt setting
When a user was specifically setting migration_uri (for example,
to get around ssh banners causing migration to fail),
vm.sh was leaving the migrateuriopt variable unset when using
QEMU/KVM. This caused the printf() during command line generation
to be incorrect.
This means the generated command line looked like this:
virsh migrate --live vm1 \
qemu+ssh://node1.example.com/system?command=/bin/quiet_ssh.sh
node1.example.com
Instead of:
virsh migrate --live vm1 \
qemu+ssh://node1.example.com/system?command=/bin/quiet_ssh.sh
tcp:node1.example.com
^^^^
Resolves: rhbz#660337
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
Reviewed-by: Fabio M. Di Nitto <fdinitto(a)redhat.com>
---
rgmanager/src/resources/vm.sh | 5 ++++-
1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/rgmanager/src/resources/vm.sh b/rgmanager/src/resources/vm.sh
index e23d5ba..22f29f1 100644
--- a/rgmanager/src/resources/vm.sh
+++ b/rgmanager/src/resources/vm.sh
@@ -810,7 +810,6 @@ validate_all()
# Virsh makes it easier to do this. Really.
if [ "$OCF_RESKEY_hypervisor" = "qemu" ]; then
export OCF_RESKEY_migration_uri="qemu+ssh://%s/system"
- export migrateuriopt="tcp:%s"
fi
# I just need to believe in it more.
@@ -826,6 +825,10 @@ validate_all()
return $OCF_ERR_ARGS
fi
+ if [ "$OCF_RESKEY_hypervisor" = "qemu" ]; then
+ export migrateuriopt="tcp:%s"
+ fi
+
#virsh list --all | awk '{print $2}' | grep -q "^$OCF_RESKEY_name\$"
return $?
}
13 years, 1 month
cluster: RHEL6 - rgmanager: Make clufindhostname -i predictable
by Lon Hohberger
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: c9ff58e8282948fa92bb82c05d40858a22ac61e6
Parent: e82577d4784d1ef9748ae8e932d7445c3337d761
Author: Lon Hohberger <lhh(a)redhat.com>
AuthorDate: Thu Dec 9 16:01:27 2010 -0500
Committer: Lon Hohberger <lhh(a)redhat.com>
CommitterDate: Mon Jan 31 17:48:18 2011 -0500
rgmanager: Make clufindhostname -i predictable
Resolves: rhbz#661881
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
Reviewed-by: Fabio M. Di Nitto <fdinitto(a)redhat.com>
---
rgmanager/src/utils/clufindhostname.c | 8 +++++---
1 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/rgmanager/src/utils/clufindhostname.c b/rgmanager/src/utils/clufindhostname.c
index 42e1691..f8bf7fd 100644
--- a/rgmanager/src/utils/clufindhostname.c
+++ b/rgmanager/src/utils/clufindhostname.c
@@ -24,7 +24,7 @@ main(int argc, char **argv)
void *ptr;
struct in_addr addr4;
struct in6_addr addr6;
- int opt, size, family;
+ int opt, size, family, ret;
char *sep;
if (argc != 3) {
@@ -47,8 +47,10 @@ main(int argc, char **argv)
size = sizeof(addr6);
}
- if (inet_pton(family, optarg, ptr) < 0) {
- perror("inet_pton");
+ ret = inet_pton(family, optarg, ptr);
+ if (ret <= 0) {
+ if (ret < 0)
+ perror("inet_pton");
exit(2);
}
13 years, 1 month
cluster: RHEL6 - rgmanager: Update last_owner on failover
by Lon Hohberger
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: e82577d4784d1ef9748ae8e932d7445c3337d761
Parent: 3ed325fb34fc4775d2c8d54448c711cf769a015c
Author: igor <igor1182(a)gmail.com>
AuthorDate: Wed Dec 1 15:32:28 2010 -0500
Committer: Lon Hohberger <lhh(a)redhat.com>
CommitterDate: Mon Jan 31 17:46:33 2011 -0500
rgmanager: Update last_owner on failover
Resolves: rhbz#639103
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
Reviewed-by: Fabio M. Di Nitto <fdinitto(a)redhat.com>
---
rgmanager/src/daemons/rg_state.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/rgmanager/src/daemons/rg_state.c b/rgmanager/src/daemons/rg_state.c
index ee1b6eb..d31ea2b 100644
--- a/rgmanager/src/daemons/rg_state.c
+++ b/rgmanager/src/daemons/rg_state.c
@@ -618,6 +618,7 @@ svc_advise_start(rg_state_t *svcStatus, const char *svcName, int req)
/*
* Service is running but owner is down -> RG_EFAILOVER
*/
+ svcStatus->rs_last_owner = svcStatus->rs_owner;
logt_print(LOG_NOTICE,
"Taking over service %s from down member %s\n",
svcName, memb_id_to_name(membership,
13 years, 1 month
cluster: RHEL6 - rgmanager: Present flags in clustat output
by Lon Hohberger
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: 3ed325fb34fc4775d2c8d54448c711cf769a015c
Parent: 94ab7158426e0a0732da8accfb439228ed7c9272
Author: Lon Hohberger <lhh(a)redhat.com>
AuthorDate: Wed Aug 25 13:41:05 2010 -0400
Committer: root <root(a)ayanami.boston.devel.redhat.com>
CommitterDate: Mon Jan 31 17:43:05 2011 -0500
rgmanager: Present flags in clustat output
Resolves: rhbz#634298
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
Reviewed-by: Fabio M. Di Nitto <fdinitto(a)redhat.com>
---
rgmanager/src/utils/clustat.c | 31 +++++++++++++++++++++++++++++--
1 files changed, 29 insertions(+), 2 deletions(-)
diff --git a/rgmanager/src/utils/clustat.c b/rgmanager/src/utils/clustat.c
index 6c4f953..d3137e0 100644
--- a/rgmanager/src/utils/clustat.c
+++ b/rgmanager/src/utils/clustat.c
@@ -454,6 +454,7 @@ _txt_rg_state(rg_state_t *rs, cluster_member_list_t *members, int flags,
int svcsize, int nodesize, int statsize)
{
char owner[MAXHOSTNAMELEN+1];
+ char state_string[255] = "";
char *name = rs->rs_name, *ptr;
int l;
@@ -481,11 +482,22 @@ _txt_rg_state(rg_state_t *rs, cluster_member_list_t *members, int flags,
snprintf(owner, sizeof(owner)-1, "%-.*s", nodesize,
my_memb_id_to_name(members, rs->rs_owner));
}
+
+ /* Show a frozen service */
+ if (rs->rs_flags & RG_FLAG_FROZEN) {
+ snprintf(state_string, sizeof(state_string),
+ "%-*.*s[Z]", statsize-3, statsize-3,
+ rg_state_str(rs->rs_state));
+ } else {
+ snprintf(state_string, sizeof(state_string),
+ "%-*.*s", statsize, statsize,
+ rg_state_str(rs->rs_state));
+ }
printf(" %-*.*s %-*.*s %-*.*s\n",
svcsize, svcsize, rs->rs_name,
nodesize, nodesize, owner,
- statsize, statsize, rg_state_str(rs->rs_state));
+ statsize, statsize, state_string);
}
@@ -493,10 +505,20 @@ static void
_txt_rg_state_v(rg_state_t *rs, cluster_member_list_t *members, int flags)
{
time_t t;
+ char flags_string[255] = "";
+
+ rg_flags_str(flags_string, sizeof(flags_string), rs->rs_flags,
+ (char *)", ");
printf("Service Name : %s\n", rs->rs_name);
printf(" Current State : %s (%d)\n",
rg_state_str(rs->rs_state), rs->rs_state);
+ if (rs->rs_flags)
+ printf(" Flags : %s (%d)\n",
+ flags_string, rs->rs_flags);
+ else
+ printf(" Flags : none (%d)\n",
+ rs->rs_flags);
printf(" Owner : %s\n",
my_memb_id_to_name(members, rs->rs_owner));
printf(" Last Owner : %s\n",
@@ -522,6 +544,7 @@ static void
xml_rg_state(rg_state_t *rs, cluster_member_list_t *members, int flags)
{
char time_str[32];
+ char flags_string[255] = "";
int x;
time_t t;
@@ -535,12 +558,16 @@ xml_rg_state(rg_state_t *rs, cluster_member_list_t *members, int flags)
}
}
- printf(" <group name=\"%s\" state=\"%d\" state_str=\"%s\" "
+ printf(" <group name=\"%s\" state=\"%d\" state_str=\"%s\""
+ " flags=\"%d\" flags_str=\"%s\""
" owner=\"%s\" last_owner=\"%s\" restarts=\"%d\""
" last_transition=\"%llu\" last_transition_str=\"%s\"/>\n",
rs->rs_name,
rs->rs_state,
rg_state_str(rs->rs_state),
+ rs->rs_flags,
+ rg_flags_str(flags_string, sizeof(flags_string),
+ rs->rs_flags, (char *)" "),
my_memb_id_to_name(members, rs->rs_owner),
my_memb_id_to_name(members, rs->rs_last_owner),
rs->rs_restarts,
13 years, 1 month
cluster: RHEL6 - resource-agents: Add multi-instance Oracle database agents
by Lon Hohberger
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: 94ab7158426e0a0732da8accfb439228ed7c9272
Parent: 95ffe6ea16ecdd4a6606663c2a8b77ad519305e0
Author: Lon Hohberger <lhh(a)redhat.com>
AuthorDate: Mon Sep 27 10:45:10 2010 -0400
Committer: Lon Hohberger <lhh(a)redhat.com>
CommitterDate: Mon Jan 31 17:41:02 2011 -0500
resource-agents: Add multi-instance Oracle database agents
Resolves: rhbz#629275
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
---
rgmanager/src/resources/Makefile | 5 +-
rgmanager/src/resources/orainstance.metadata | 86 +++++
rgmanager/src/resources/orainstance.sh | 526 ++++++++++++++++++++++++++
rgmanager/src/resources/oralistener.metadata | 61 +++
rgmanager/src/resources/oralistener.sh | 152 ++++++++
5 files changed, 828 insertions(+), 2 deletions(-)
diff --git a/rgmanager/src/resources/Makefile b/rgmanager/src/resources/Makefile
index 885b437..f689e93 100644
--- a/rgmanager/src/resources/Makefile
+++ b/rgmanager/src/resources/Makefile
@@ -12,11 +12,12 @@ RESOURCES=service.sh ip.sh nfsclient.sh nfsexport.sh \
apache.sh openldap.sh samba.sh mysql.sh \
postgres-8.sh tomcat-6.sh lvm.sh \
vm.sh SAPInstance SAPDatabase named.sh \
- ASEHAagent.sh nfsserver.sh
+ ASEHAagent.sh nfsserver.sh orainstance.sh oralistener.sh
METADATA=apache.metadata openldap.metadata samba.metadata \
mysql.metadata postgres-8.metadata tomcat-5.metadata \
- tomcat-6.metadata named.metadata lvm.metadata
+ tomcat-6.metadata named.metadata lvm.metadata \
+ orainstance.metadata oralistener.metadata
EVENT_TARGETS= \
default_event_script.sl \
diff --git a/rgmanager/src/resources/orainstance.metadata b/rgmanager/src/resources/orainstance.metadata
new file mode 100644
index 0000000..f11995d
--- /dev/null
+++ b/rgmanager/src/resources/orainstance.metadata
@@ -0,0 +1,86 @@
+<?xml version="1.0" ?>
+<!-- $Id: orainstance.metadata 58 2009-06-29 05:15:12Z hevirtan $ -->
+
+<!-- Resource metadata for Oracle DB agent -->
+<resource-agent name="orainstance" version="rgmanager 2.0">
+ <version>1.0</version>
+
+ <longdesc lang="en">
+ Oracle 10g Failover Instance
+ </longdesc>
+ <shortdesc lang="en">
+ Oracle 10g Failover Instance
+ </shortdesc>
+
+ <parameters>
+ <parameter name="name" primary="1">
+ <longdesc lang="en">
+ Instance name (SID) of oracle instance
+ </longdesc>
+ <shortdesc lang="en">
+ Oracle SID
+ </shortdesc>
+ <content type="string"/>
+ </parameter>
+
+ <parameter name="user" required="1">
+ <longdesc lang="en">
+ Oracle user name. This is the user name of the Oracle
+ user which the Oracle instance runs as.
+ </longdesc>
+ <shortdesc lang="en">
+ Oracle User Name
+ </shortdesc>
+ <content type="string"/>
+ </parameter>
+
+ <parameter name="home" required="1">
+ <longdesc lang="en">
+ This is the Oracle database home directory.
+ This is configured when you install Oracle.
+ </longdesc>
+ <shortdesc lang="en">
+ Oracle Home Directory
+ </shortdesc>
+ <content type="string"/>
+ </parameter>
+
+ <parameter name="listeners">
+ <longdesc lang="en">
+ List of Oracle listeners which will be started with
+ the database instance. Listener names are separated by
+ whitespace. Defaults to empty which disables listeners.
+ </longdesc>
+ <shortdesc lang="en">
+ Oracle listeners
+ </shortdesc>
+ <content type="string" default=""/>
+ </parameter>
+
+ <parameter name="lockfile">
+ <longdesc lang="en">
+ Location for lockfile which will be used for checking if
+ the Oracle should be running or not. Defaults to location
+ under /tmp.
+ </longdesc>
+ <shortdesc lang="en">
+ Pathname for lockfile
+ </shortdesc>
+ <content type="string"/>
+ </parameter>
+ </parameters>
+
+ <actions>
+ <action name="start" timeout="900"/>
+ <action name="stop" timeout="90"/>
+
+ <!-- Note: status check will also perform recover
+ (Oracle DB restart) if the check fails -->
+ <action name="status" timeout="900" interval="1m"/>
+ <action name="monitor" timeout="900" interval="1m"/>
+
+ <action name="meta-data" timeout="0"/>
+ <action name="verify-all" timeout="0"/>
+ </actions>
+
+</resource-agent>
diff --git a/rgmanager/src/resources/orainstance.sh b/rgmanager/src/resources/orainstance.sh
new file mode 100644
index 0000000..ca80f32
--- /dev/null
+++ b/rgmanager/src/resources/orainstance.sh
@@ -0,0 +1,526 @@
+#!/bin/bash
+#
+# Copyright 2003-2004, 2006-2007 Red Hat, Inc.
+#
+# Author(s):
+# Hardy Merrill <hmerrill at redhat.com>
+# Lon Hohberger <lhh at redhat.com>
+# Michael Moon <Michael dot Moon at oracle.com>
+#
+# This program is Open Source software. You may modify and/or redistribute
+# it persuant to the terms of the Open Software License version 2.1, which
+# is available from the following URL and is included herein by reference:
+#
+# http://opensource.org/licenses/osl-2.1.php
+#
+# chkconfig: 345 99 01
+# description: Service script for starting/stopping \
+# Oracle(R) Database 10g on \
+# Red Hat Enterprise Linux 5
+#
+# NOTES:
+#
+# (1) You can comment out the LOCKFILE declaration below. This will prevent
+# the need for this script to access anything outside of the ORACLE_HOME
+# path.
+#
+# (2) You MUST customize ORACLE_USER, ORACLE_HOME, ORACLE_SID, and
+# ORACLE_HOSTNAME to match your installation if not running from within
+# rgmanager.
+#
+# (3) Do NOT place this script in shared storage; place it in ORACLE_USER's
+# home directory in non-clustered environments and /usr/share/cluster
+# in rgmanager/Red Hat cluster environments.
+#
+# Oracle is a registered trademark of Oracle Corporation.
+# Oracle9i is a trademark of Oracle Corporation.
+# Oracle10g is a trademark of Oracle Corporation.
+# All other trademarks are property of their respective owners.
+#
+#
+# $Id: orainstance.sh 127 2009-08-21 09:17:52Z hevirtan $
+#
+# Original version is distributed with RHCS. The modifications include
+# the following minor changes:
+# - Meta-data moved to a dedicated file
+# - Support for multiple listeners
+# - Disabled EM
+# - SysV init support removed. Only usable with rgmanager
+#
+
+. /etc/init.d/functions
+
+declare SCRIPT="`basename $0`"
+declare SCRIPTDIR="`dirname $0`"
+
+# Required parameters from rgmanager
+ORACLE_USER=$OCF_RESKEY_user
+ORACLE_HOME=$OCF_RESKEY_home
+ORACLE_SID=$OCF_RESKEY_name
+
+# Optional parameters with default values
+LISTENERS=$OCF_RESKEY_listeners
+LOCKFILE="/tmp/.oracle10g-${ORACLE_SID}.lock"
+[ -n "$OCF_RESKEY_lockfile" ] && LOCKFILE=$OCF_RESKEY_lockfile
+
+export LISTENERS ORACLE_USER ORACLE_HOME ORACLE_SID LOCKFILE
+export LD_LIBRARY_PATH=$ORACLE_HOME/lib
+export PATH=$ORACLE_HOME/bin:$PATH
+
+declare -i RESTART_RETRIES=3
+declare -r DB_PROCNAMES="pmon"
+declare -r LSNR_PROCNAME="tnslsnr"
+
+
+#
+# Start Oracle (database portion)
+#
+start_db() {
+ declare tmpfile
+ declare logfile
+ declare -i rv
+
+ tmpfile=/tmp/$SCRIPT-start.$$
+ logfile=/tmp/$SCRIPT-start.log
+
+ # Set up our sqlplus script. Basically, we're trying to
+ # capture output in the hopes that it's useful in the case
+ # that something doesn't work properly.
+ echo "startup" > $tmpfile
+ echo "quit" >> $tmpfile
+
+ sqlplus "/ as sysdba" < $tmpfile > $logfile
+ rv=$?
+
+ rm -f $tmpfile
+
+ # Dump logfile to /var/log/messages
+ initlog -q -c "cat $logfile"
+
+ if [ $rv -ne 0 ]; then
+ rm -f $logfile
+ initlog -n $SCRIPT -q -s "sqlplus returned 1, failed"
+ return 1
+ fi
+
+ # If we see:
+ # ORA-.....: failure, we failed
+ grep -q "failure" $logfile
+ rv=$?
+
+ rm -f $logfile
+ if [ $rv -eq 0 ]; then
+ initlog -n $SCRIPT -q -s "found failure in stdout, returning 1"
+ return 1
+ fi
+
+ return 0
+}
+
+
+#
+# Stop Oracle (database portion)
+#
+stop_db() {
+ declare tmpfile
+ declare logfile
+ declare -i rv
+
+ tmpfile=/tmp/$SCRIPT-stop.$$
+ logfile=/tmp/$SCRIPT-stop.log
+
+ ora_procname="ora_${DB_PROCNAMES}_${ORACLE_SID}"
+ status $ora_procname
+ if [ $? -ne 0 ]; then
+ # No pmon process found, db already down
+ return 0
+ fi
+
+ # Setup for Stop ...
+ echo "shutdown immediate" > $tmpfile
+ echo "quit" >> $tmpfile
+
+ sqlplus "/ as sysdba" < $tmpfile > $logfile
+ rv=$?
+
+ rm -f $tmpfile
+
+ # Dump logfile to /var/log/messages
+ initlog -q -c "cat $logfile"
+
+ # sqlplus returned failure. We'll return failed to rhcs
+ if [ $rv -ne 0 ]; then
+ rm -f $logfile
+ initlog -n $SCRIPT -q -s "sqlplus returned 1, failed"
+ return 1
+ fi
+
+ grep -q failure $logfile
+ rv=$?
+ rm -f $logfile
+
+ # If we see 'failure' in the log, we're done.
+ if [ $rv -eq 0 ]; then
+ initlog -n $SCRIPT -q -s "found failure in stdout, returning 1"
+ return 1
+ fi
+
+ return 0
+}
+
+
+#
+# Destroy any remaining processes with refs to $ORACLE_SID
+#
+force_cleanup() {
+ declare pids
+ declare pid
+
+ pids=`ps ax | grep $ORACLE_SID | grep -v grep | awk '{print $1}'`
+
+ initlog -n $SCRIPT -s "<err> Not all Oracle processes exited cleanly, killing"
+
+ for pid in $pids; do
+ kill -9 $pid
+ if [ $? -eq 0 ]; then
+ initlog -n $SCRIPT -s "Killed $pid"
+ fi
+ done
+
+ return 0
+}
+
+
+#
+# Wait for oracle processes to exit. Time out after 60 seconds
+#
+exit_idle() {
+ declare -i n=0
+
+ while ps ax | grep $ORACLE_SID | grep -q -v $LSNR_PROCNAME | grep -q -v grep; do
+ if [ $n -ge 90 ]; then
+ force_cleanup
+ return 0
+ fi
+ sleep 1
+ ((n++))
+ done
+ return 0
+}
+
+
+#
+# Get database background process status. Restart it if it failed and
+# we have seen the lock file.
+#
+get_db_status() {
+ declare -i subsys_lock=$1
+ declare -i i=0
+ declare -i rv=0
+ declare ora_procname
+
+ for procname in $DB_PROCNAMES ; do
+ ora_procname="ora_${procname}_${ORACLE_SID}"
+
+ status $ora_procname
+ if [ $? -eq 0 ] ; then
+ # This one's okay; go to the next one.
+ continue
+ fi
+
+ # We're not supposed to be running, and we are,
+ # in fact, not running...
+ if [ $subsys_lock -ne 0 ]; then
+ return 3
+ fi
+
+ for (( i=$RESTART_RETRIES ; i; i-- )) ; do
+ # this db process is down - stop and
+ # (re)start all ora_XXXX_$ORACLE_SID processes
+ initlog -q -n $SCRIPT -s "Restarting Oracle Database..."
+ stop_db
+
+ start_db
+ if [ $? == 0 ] ; then
+ # ora_XXXX_$ORACLE_SID processes started
+ # successfully, so break out of the
+ # stop/start # 'for' loop
+ break
+ fi
+ done
+
+ if [ $i -eq 0 ]; then
+ # stop/start's failed - return 1 (failure)
+ initlog -q -n $SCRIPT -s "Restart failed, retuning 1"
+ return 1
+ fi
+ done
+ return 0
+}
+
+
+#
+# Get the status of the Oracle listener process
+#
+get_lsnr_status() {
+ declare -i subsys_lock=$1
+ declare -i rv
+ declare -r LISTENER=$3
+
+ lsnrctl status $LISTENER >& /dev/null
+ rv=$?
+ if [ $rv == 0 ] ; then
+ return 0 # Listener is running fine
+ fi
+
+ # We're not supposed to be running, and we are,
+ # in fact, not running. Return 3
+ if [ $subsys_lock -ne 0 ]; then
+ return 3
+ fi
+
+ # Listener is NOT running (but should be) - try to restart
+ for (( i=$RESTART_RETRIES ; i; i-- )) ; do
+ initlog -n $SCRIPT -q -s "Restarting Oracle listener ($LISTENER)"
+ lsnrctl start $LISTENER
+ lsnrctl status $LISTENER >& /dev/null
+ if [ $? == 0 ] ; then
+ break # Listener was (re)started and is running fine
+ fi
+ done
+
+ if [ $i -eq 0 ]; then
+ # stop/start's failed - return 1 (failure)
+ initlog -n $SCRIPT -q -s "Listener restart failed, retuning 1"
+ return 1
+ fi
+
+ lsnrctl status $LISTENER >& /dev/null
+ if [ $? != 0 ] ; then
+ initlog -n $SCRIPT -q -s "Listener status failed, retuning 1"
+ return 1 # Problem restarting the Listener
+ fi
+ return 0 # Success restarting the Listener
+}
+
+
+#
+# Helps us keep a running status so we know what our ultimate return
+# code will be. Returns 1 if the $1 and $2 are not equivalent, otherwise
+# returns $1. The return code is meant to be the next $1 when this is
+# called, so, for example:
+#
+# update_status 0 <-- returns 0
+# update_status $? 0 <-- returns 0
+# update_status $? 3 <-- returns 1 (values different - error condition)
+# update_status $? 1 <-- returns 1 (same, but happen to be error state!)
+#
+# update_status 3
+# update_status $? 3 <-- returns 3
+#
+# (and so forth...)
+#
+update_status() {
+ declare -i old_status=$1
+ declare -i new_status=$2
+
+ if [ -z "$2" ]; then
+ return $old_status
+ fi
+
+ if [ $old_status -ne $new_status ]; then
+ initlog -n $SCRIPT -q -s "$old_status vs $new_status - returning 1"
+ return 1
+ fi
+
+ return $old_status
+}
+
+
+#
+# Print an error message to the user and exit.
+#
+oops() {
+ #echo "Please configure this script ($0) to"
+ #echo "match your installation."
+ #echo
+ #echo " $1 failed validation checks."
+ initlog -n $SCRIPT -q -s "$1 failed validation checks"
+ exit 1
+}
+
+
+#
+# Do some validation on the user-configurable stuff at the beginning of the
+# script.
+#
+validation_checks() {
+ # If the oracle user doesn't exist, we're done.
+ [ -n "$ORACLE_USER" ] || oops "ORACLE_USER"
+ id -u $ORACLE_USER > /dev/null || oops "ORACLE_USER"
+ id -g $ORACLE_USER > /dev/null || oops "ORACLE_USER"
+
+ # If the oracle home isn't a directory, we're done
+ [ -n "$ORACLE_HOME" ] || oops ORACLE_HOME
+
+ # If the oracle SID is NULL, we're done
+ [ -n "$ORACLE_SID" ] || oops ORACLE_SID
+
+ # Super user? Automatically change UID and exec as oracle user.
+ # Oracle needs to be run as the Oracle user, not root!
+ if [ "`id -u`" = "0" ]; then
+ su $ORACLE_USER -c "$0 $*"
+ exit $?
+ fi
+
+ # If we're not root and not the Oracle user, we're done.
+ [ "`id -u`" = "`id -u $ORACLE_USER`" ] || exit 1
+ [ "`id -g`" = "`id -g $ORACLE_USER`" ] || exit 1
+
+ # Go home.
+ cd $ORACLE_HOME
+
+ return 0
+}
+
+
+#
+# Start Oracle
+#
+start_oracle() {
+ initlog -n $SCRIPT -q -s "Starting Oracle Database"
+ start_db || return 1
+
+ for LISTENER in ${LISTENERS}; do
+ logfile=/tmp/$SCRIPT-lsn-$$.log
+ initlog -n $SCRIPT -q -s "Starting Oracle Listener $LISTENER"
+ lsnrctl start $LISTENER > $logfile
+ initlog -q -c "cat $logfile"
+ rm -f $logfile
+ done
+
+ if [ -n "$LOCKFILE" ]; then
+ touch $LOCKFILE
+ fi
+ return 0
+}
+
+
+#
+# Stop Oracle
+#
+stop_oracle() {
+ if ! [ -e "$ORACLE_HOME/bin/lsnrctl" ]; then
+ initlog -n $SCRIPT -q -s "Oracle Listener Control is not available ($ORACLE_HOME not mounted?)"
+ return 0
+ fi
+
+ initlog -n $SCRIPT -q -s "Stopping Oracle Database"
+ stop_db || return 1
+
+
+ for LISTENER in ${LISTENERS}; do
+ initlog -n $SCRIPT -q -s "Stopping Oracle Listener $LISTENER"
+ lsnrctl stop $LISTENER
+ done
+
+ initlog -n $SCRIPT -q -s "Waiting for all Oracle processes to exit"
+ exit_idle
+
+ if [ $? -ne 0 ]; then
+ initlog -n $SCRIPT -q -s "WARNING: Not all Oracle processes exited cleanly"
+ fi
+
+ if [ -n "$LOCKFILE" ]; then
+ rm -f $LOCKFILE
+ fi
+ return 0
+}
+
+
+#
+# Find and display the status of iAS infrastructure.
+#
+# This has three parts:
+# (1) Oracle database itself
+# (2) Oracle listener process
+# (3) OPMN and OPMN-managed processes
+#
+# - If all are (cleanly) down, we return 3. In order for this to happen,
+# $LOCKFILE must not exist. In this case, we try and restart certain parts
+# of the service - as this may be running in a clustered environment.
+#
+# - If some but not all are running (and, if $LOCKFILE exists, we could not
+# restart the failed portions), we return 1 (ERROR)
+#
+# - If all are running, return 0. In the "all-running" case, we recreate
+# $LOCKFILE if it does not exist.
+#
+status_oracle() {
+ declare -i subsys_lock=1
+ declare -i last
+ declare -i depth=$1
+
+ # Check for lock file. Crude and rudimentary, but it works
+ if [ -z "$LOCKFILE" ] || [ -f $LOCKFILE ]; then
+ subsys_lock=0
+ fi
+
+ # Check database status
+ get_db_status $subsys_lock $depth
+ update_status $? # Start
+ last=$?
+
+ # Check & report listener status
+ for LISTENER in ${LISTENERS}; do
+ get_lsnr_status $subsys_lock $depth $LISTENER
+ update_status $? $last
+ last=$?
+ done
+
+ # No lock file, but everything's running. Put the lock
+ # file back. XXX - this kosher?
+ if [ $last -eq 0 ] && [ $subsys_lock -ne 0 ]; then
+ touch $LOCKFILE
+ fi
+
+ return $last
+}
+
+
+########################
+# Do some real work... #
+########################
+
+case $1 in
+ meta-data)
+ cat `echo $0 | sed 's/^\(.*\)\.sh$/\1.metadata/'`
+ exit 0
+ ;;
+ start)
+ validation_checks $*
+ start_oracle
+ exit $?
+ ;;
+ stop)
+ validation_checks $*
+ stop_oracle
+ exit $?
+ ;;
+ status|monitor)
+ validation_checks $*
+ status_oracle $OCF_CHECK_LEVEL
+ exit $?
+ ;;
+ restart)
+ $0 stop || exit $?
+ $0 start || exit $?
+ exit 0
+ ;;
+ *)
+ echo "usage: $SCRIPT {start|stop|restart|status|monitor|meta-data}"
+ exit 1
+ ;;
+esac
+
+exit 0
diff --git a/rgmanager/src/resources/oralistener.metadata b/rgmanager/src/resources/oralistener.metadata
new file mode 100644
index 0000000..30f8731
--- /dev/null
+++ b/rgmanager/src/resources/oralistener.metadata
@@ -0,0 +1,61 @@
+<?xml version="1.0" ?>
+<!-- $Id: oralistener.metadata 61 2009-06-29 10:01:49Z hevirtan $ -->
+
+<!-- Resource metadata for Oracle listener agent -->
+<resource-agent name="oralistener" version="rgmanager 2.0">
+ <version>1.0</version>
+
+ <longdesc lang="en">
+ Oracle 10g Listener Instance
+ </longdesc>
+ <shortdesc lang="en">
+ Oracle 10g Listener Instance
+ </shortdesc>
+
+ <parameters>
+ <parameter name="name" primary="1">
+ <longdesc lang="en">
+ Listener name
+ </longdesc>
+ <shortdesc lang="en">
+ Listener name
+ </shortdesc>
+ <content type="string"/>
+ </parameter>
+
+ <parameter name="user" required="1">
+ <longdesc lang="en">
+ Oracle user name. This is the user name of the Oracle
+ user which the Oracle instance runs as.
+ </longdesc>
+ <shortdesc lang="en">
+ Oracle User Name
+ </shortdesc>
+ <content type="string"/>
+ </parameter>
+
+ <parameter name="home" required="1">
+ <longdesc lang="en">
+ This is the Oracle database home directory.
+ This is configured when you install Oracle.
+ </longdesc>
+ <shortdesc lang="en">
+ Oracle Home Directory
+ </shortdesc>
+ <content type="string"/>
+ </parameter>
+ </parameters>
+
+ <actions>
+ <action name="start" timeout="90"/>
+ <action name="stop" timeout="30"/>
+ <!-- <action name="recover" timeout="90"/> -->
+
+ <action name="status" timeout="90" interval="5m"/>
+ <action name="monitor" timeout="90" interval="5m"/>
+
+ <action name="meta-data" timeout="0"/>
+ <action name="verify-all" timeout="0"/>
+ </actions>
+
+</resource-agent>
diff --git a/rgmanager/src/resources/oralistener.sh b/rgmanager/src/resources/oralistener.sh
new file mode 100644
index 0000000..3d6b839
--- /dev/null
+++ b/rgmanager/src/resources/oralistener.sh
@@ -0,0 +1,152 @@
+#!/bin/bash
+#
+# $Id: oralistener.sh 127 2009-08-21 09:17:52Z hevirtan $
+#
+# Red Hat Cluster Suite resource agent for controlling Oracle 10g
+# listener instances. This script will start, stop and monitor running
+# listeners.
+#
+# start: Will start given listener instance
+#
+# stop: Will stop given listener instance
+#
+# monitor: Will check that the listener is OK by calling lsnrctl status
+#
+
+# Grab the global RHCS helper functions
+. $(dirname $0)/ocf-shellfuncs
+. $(dirname $0)/utils/config-utils.sh
+. $(dirname $0)/utils/messages.sh
+. $(dirname $0)/utils/ra-skelet.sh
+
+declare -i RESTART_RETRIES=3
+
+ORACLE_USER=$OCF_RESKEY_user
+ORACLE_HOME=$OCF_RESKEY_home
+LISTENER=$OCF_RESKEY_name
+
+LC_ALL=C
+LANG=C
+PATH=/bin:/sbin:/usr/bin:/usr/sbin:$ORACLE_HOME/bin
+export LC_ALL LANG PATH ORACLE_HOME
+
+verify_all() {
+ clog_service_verify $CLOG_INIT
+
+ if [ -z "$OCF_RESKEY_name" ]; then
+ clog_service_verify $CLOG_FAILED "Invalid name of service (listener name)"
+ return $OCF_ERR_ARGS
+ fi
+
+ if [ -z "$OCF_RESKEY_home" ]; then
+ clog_service_verify $CLOG_FAILED "No Oracle home specified."
+ return $OCF_ERR_ARGS
+ fi
+
+ if [ -z "$OCF_RESKEY_user" ]; then
+ clog_service_verify $CLOG_FAILED "No Oracle username specified."
+ return $OCF_ERR_ARGS
+ fi
+
+ # Make sure the lsnrctl binary is in our $PATH
+ if [ ! -x $(which lsnrctl) ]; then
+ clog_service_verify $CLOG_FAILED "oralistener:${OCF_RESKEY_home}: Unable to locate lsnrctl command from path! ($PATH)"
+ return $OCF_ERR_GENERIC
+ fi
+
+ clog_service_verify $CLOG_SUCCEED
+ return 0
+}
+
+start () {
+ clog_service_start $CLOG_INIT
+
+ logfile="/tmp/oracle_lsn.$$"
+ su -p - $ORACLE_USER -c "lsnrctl start $LISTENER > $logfile"
+
+ initlog -q -c "cat $logfile"
+ rm -f $logfile
+
+ clog_service_start $CLOG_SUCCEED
+ return 0
+}
+
+stop () {
+ clog_service_stop $CLOG_INIT
+
+ logfile="/tmp/oracle_lsn.$$"
+ su -p - $ORACLE_USER -c "lsnrctl stop $LISTENER > $logfile"
+
+ initlog -q -c "cat $logfile"
+ rm -f $logfile
+
+ clog_service_stop $CLOG_SUCCEED
+ return 0
+}
+
+monitor () {
+ clog_service_status $CLOG_INIT
+
+ su -p - $ORACLE_USER -c "lsnrctl status $LISTENER"
+ rv=$?
+ if [ $rv == 0 ]; then
+ clog_service_status $CLOG_SUCCEED
+ return 0 # Listener is running fine
+ else
+ clog_service_status $CLOG_FAILED
+ return $OCF_ERR_GENERIC
+ fi
+}
+
+recover() {
+ for (( i=$RESTART_RETRIES ; i; i-- )); do
+ start
+ if [ $? == 0 ] ; then
+ break
+ fi
+ done
+
+ if [ $i -eq 0 ]; then
+ # stop/start's failed - return 1 (failure)
+ return 1
+ fi
+
+ status
+ if [ $? != 0 ] ; then
+ return 1 # Problem restarting the Listener
+ fi
+
+ return 0 # Success restarting the Listener
+}
+
+case $1 in
+ meta-data)
+ cat `echo $0 | sed 's/^\(.*\)\.sh$/\1.metadata/'`
+ exit 0
+ ;;
+ verify-all)
+ verify_all
+ exit $?
+ ;;
+ start)
+ verify_all && start
+ exit $?
+ ;;
+ stop)
+ verify_all && stop
+ exit $?
+ ;;
+ recover)
+ verify_all && recover
+ exit $?
+ ;;
+ status|monitor)
+ verify_all
+ monitor
+ exit $?
+ ;;
+ *)
+ echo "Usage: $0 {start|stop|recover|monitor|status|meta-data|verify-all}"
+ exit $OCF_ERR_GENERIC
+ ;;
+esac
13 years, 1 month
cluster: RHEL6 - rgmanager: Honor restricted FDs during migrations
by Lon Hohberger
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: 95ffe6ea16ecdd4a6606663c2a8b77ad519305e0
Parent: be85fb73dc459c5574ac7b50e0fea903f38ad15e
Author: Lon Hohberger <lhh(a)redhat.com>
AuthorDate: Thu Aug 5 16:02:11 2010 -0400
Committer: Lon Hohberger <lhh(a)redhat.com>
CommitterDate: Mon Jan 31 17:36:15 2011 -0500
rgmanager: Honor restricted FDs during migrations
Rgmanager was ignoring restricted failover domain
rules when processing -M commands from clusvcadm.
Resolves: rhbz#621694
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
---
rgmanager/src/daemons/rg_state.c | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/rgmanager/src/daemons/rg_state.c b/rgmanager/src/daemons/rg_state.c
index d23772f..ee1b6eb 100644
--- a/rgmanager/src/daemons/rg_state.c
+++ b/rgmanager/src/daemons/rg_state.c
@@ -829,6 +829,11 @@ svc_migrate(const char *svcName, int target)
return RG_ENODE;
}
+ if (node_should_start_safe(target, membership, svcName) == FOD_ILLEGAL) {
+ free_member_list(membership);
+ return RG_EDEPEND;
+ }
+
count_resource_groups_local(m);
if (m->cn_svcexcl ||
(m->cn_svccount && is_exclusive(svcName))) {
13 years, 1 month
cluster: RHEL6 - rgmanager: Fix clustat return code
by Lon Hohberger
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: be85fb73dc459c5574ac7b50e0fea903f38ad15e
Parent: 2960cc2fe8ae35824e570fb774feb4b8386d982e
Author: Lon Hohberger <lhh(a)redhat.com>
AuthorDate: Thu Aug 5 14:58:18 2010 -0400
Committer: Lon Hohberger <lhh(a)redhat.com>
CommitterDate: Mon Jan 31 17:32:10 2011 -0500
rgmanager: Fix clustat return code
If rgmanager was not running, clustat would return -1 (255)
Resolves: rhbz#621562
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
---
rgmanager/src/utils/clustat.c | 22 +++++++++++++---------
1 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/rgmanager/src/utils/clustat.c b/rgmanager/src/utils/clustat.c
index f56d3f5..6c4f953 100644
--- a/rgmanager/src/utils/clustat.c
+++ b/rgmanager/src/utils/clustat.c
@@ -867,7 +867,7 @@ txt_cluster_status(cman_cluster_t *ci,
rg_state_list_t *rgs, char *name, char *svcname,
int flags)
{
- int ret = 0;
+ int ret1 = 0, ret2 = 0;
if (!svcname && !name) {
txt_cluster_info(ci);
@@ -879,14 +879,18 @@ txt_cluster_status(cman_cluster_t *ci,
}
}
- if (!svcname || (name && svcname))
- ret = txt_member_states(membership, name);
- if (name && !svcname)
- return ret;
- if (!name || (name && svcname))
- ret = txt_rg_states(rgs, membership, svcname, flags);
-
- return ret;
+ if (!svcname || (name && svcname))
+ ret1 = txt_member_states(membership, name);
+
+ if (rgs &&
+ (!name || (name && svcname)))
+ ret2 = txt_rg_states(rgs, membership, svcname, flags);
+
+ if (name && ret1)
+ return ret1;
+ if (svcname && ret2)
+ return ret2;
+ return 0;
}
13 years, 1 month
cluster: RHEL6 - rgmanager: Fix nofailback when service is in 'starting' state
by Lon Hohberger
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=...
Commit: 2960cc2fe8ae35824e570fb774feb4b8386d982e
Parent: 9e0190a646d7ab7236969d77d5621c19d5566366
Author: Shane Bradley <sbradley(a)redhat.com>
AuthorDate: Wed Jan 26 10:05:27 2011 -0500
Committer: Lon Hohberger <lhh(a)redhat.com>
CommitterDate: Mon Jan 31 17:27:35 2011 -0500
rgmanager: Fix nofailback when service is in 'starting' state
If a failover domain has "nofailback" enabled a service that is
"starting" state would still failback to the original. If a
service takes a while to come up and is in the "starting" state
and the original node comes back online while it is in that state
the service will be failed back.
Resolves: rhbz#672841
Signed-off-by: Shane Bradley <sbradley(a)redhat.com>
Signed-off-by: Lon Hohberger <lhh(a)redhat.com>
Tested-by: Toure Dunnon <tdunnon(a)redhat.com>
---
rgmanager/src/daemons/fo_domain.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/rgmanager/src/daemons/fo_domain.c b/rgmanager/src/daemons/fo_domain.c
index 0448e0d..638dde9 100644
--- a/rgmanager/src/daemons/fo_domain.c
+++ b/rgmanager/src/daemons/fo_domain.c
@@ -529,7 +529,7 @@ node_should_start(int nodeid, cluster_member_list_t *membership,
* Check to see if the service is started and if we are the owner in case of
* restricted+owner+no failback
*/
- if (svc_state.rs_state == RG_STATE_STARTED)
+ if (svc_state.rs_state == RG_STATE_STARTED || svc_state.rs_state == RG_STATE_STARTING)
started = 1;
if (svc_state.rs_owner == (uint32_t)nodeid)
owned_by_node = 1;
13 years, 1 month