Ack with minor comment.
Use variable to store "Try '$(basename "$0") -h or --help' for more 
information" then use it.

-----Original Message-----
From: Khanh Q Nguyen <khanh.q.nguy...@dektech.com.au> 
Sent: Wednesday, March 29, 2023 3:41 PM
To: Thang Duc Nguyen <thang.d.ngu...@dektech.com.au>; Thien Minh Huynh 
<thien.m.hu...@dektech.com.au>
Cc: opensaf-devel@lists.sourceforge.net; Khanh Q Nguyen 
<khanh.q.nguy...@dektech.com.au>
Subject: [PATCH 1/1] clm: Add an operation to excute a script [#2696]

Update the clm-adm command-line tool to support the new admin-ops added in 
ticket [#2649].

-o or --admin-op: operation name (mandatory)
                  ...
                  'execute'  for executing action on remote node/cluster -a or 
--action  : action name is a script stored in
                  /usr/lib/opensaf/clm-scripts
                  directory started with prefix "osafclm_"
---
 src/clm/tools/clm-adm | 57 +++++++++++++++++++++++++++++++++++++++----
 1 file changed, 52 insertions(+), 5 deletions(-)  mode change 100644 => 100755 
src/clm/tools/clm-adm

diff --git a/src/clm/tools/clm-adm b/src/clm/tools/clm-adm old mode 100644 new 
mode 100755 index 25445fff1..89aff15a0
--- a/src/clm/tools/clm-adm
+++ b/src/clm/tools/clm-adm
@@ -16,7 +16,7 @@
 usage()
 {
   echo ""
-  echo "USAGE: $(basename "$0") [-t value] <-o op_name>  <DN>"
+  echo "USAGE: $(basename "$0") [-t value] <-o op_name> [-a action_name]  <DN>"
   echo ""
   echo "OPTIONS:"
   echo "        -t or --timeout : command timeout in seconds (default=60) 
(optional)"
@@ -24,13 +24,29 @@ usage()
   echo "                             'lock'     for admin lock "
   echo "                             'unlock'   for admin unlock "
   echo "                             'shutdown' for admin shutdown "
-  echo "                             'reset'    for admin reset of cluster"
+  echo "                             'reset'    for admin reset of 
node/cluster"
+  echo "                             'execute'  for executing action on remote 
node/cluster"
+  echo "        -a or --action  : action name is a script stored in 
/usr/lib/opensaf/clm-scripts"
+  echo "                          directory started with prefix "osafclm_""
   echo "        DN              : a valid DN name of CLM node or cluster 
(mandatory)"
   echo ""
   echo ""
+  echo "NOTES:"
+  echo "        1) -a is only mandatory with 'execute' operation"
+  echo ""
+  echo ""
+  echo "EXAMPLES:"
+  echo "        clm-adm -o execute -a test 
safNode=SC-2,safCluster=myClmCluster"
+  echo "                execute script locate on 
/usr/lib/opensaf/clm-scripts/osafclm_test on SC-2"
+  echo "        clm-adm -o reset safCluster=myClmCluster"
+  echo "                Cluster reboot"
+  echo "        clm-adm -o reset safNode=SC-2,safCluster=myClmCluster"
+  echo "                Node SC-2 reboot"
+  echo ""
+  echo ""
 }
 
-options=$(getopt -o t:o:h -l timeout:,admin-op:,help -- "$@")
+options=$(getopt -o t:o:a:h -l timeout:,admin-op:,action:,help -- "$@")
 status=$?
 if [ $status -ne 0 ] ; then
   echo "Try '$(basename "$0") -h or --help' for more information"
@@ -41,6 +57,8 @@ eval set -- "$options"
 DN=""
 CMD=""
 TIMEOUT=""
+ACTION=""
+OPERATION=""
 
 while true; do
   case $1 in
@@ -51,6 +69,7 @@ while true; do
                 ;;
     -o|--admin-op)
                 shift 1
+                OPERATION=$1
                 if [ "$1" = "unlock" ]; then
                   CMD=1
                 elif [ "$1" = "lock" ]; then @@ -59,12 +78,19 @@ while true; do
                   CMD=3
                 elif [ "$1" = "reset" ]; then
                   CMD=4
+                elif [ "$1" = "execute" ]; then
+                  CMD=5
                 else
                   echo "Invalid operation name"
                   exit 1
                 fi
                 shift 1
                     ;;
+    -a|--action)
+                shift 1
+                ACTION=$1
+                shift 1
+                    ;;
     -h|--help)
                 usage
                 exit 0
@@ -86,9 +112,22 @@ if [ "$CMD" = "" ]; then
   exit 1
 fi
 
+if [ "$CMD" = "5" ] && [ "$ACTION" = "" ]; then
+  echo "action name is mandatory in 'execute' operation"
+  echo "Try '$(basename "$0") -h or --help' for more information"
+  exit 1
+fi
+
+if [ "$CMD" != "5" ] && [ "$ACTION" != "" ]; then
+  echo "-a option is redundant in '$OPERATION' operation"
+  echo "Try '$(basename "$0") -h or --help' for more information"
+  exit 1
+fi
+
 shift $((OPTIND -1))
 
 DN="$*"
+
 if [ "$DN" = "" ]; then
   echo "DN name is mandatory"
   echo "Try '$(basename "$0") -h or --help' for more information"
@@ -96,9 +135,17 @@ if [ "$DN" = "" ]; then  fi
 
 if [ "$TIMEOUT" = "" ]; then
-  immadm -o "$CMD" "$DN"
+  if [ "$ACTION" != "" ]; then
+    immadm -o "$CMD" -p "saClmAction:SA_STRING_T:$ACTION" "$DN"
+  else
+    immadm -o "$CMD" "$DN"
+  fi
 else
-  immadm -t "$TIMEOUT" -o "$CMD"  "$DN"
+  if [ "$ACTION" != "" ]; then
+    immadm -t "$TIMEOUT" -o "$CMD" -p "saClmAction:SA_STRING_T:$ACTION" "$DN"
+  else
+    immadm -t "$TIMEOUT" -o "$CMD"  "$DN"
+  fi
 fi
 
 exit $?
--
2.17.1



_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to