use a wrapper function for add, delete, list keys
authorRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Sun, 11 Apr 2010 11:28:15 +0000 (14:28 +0300)
committerRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Sun, 11 Apr 2010 11:28:20 +0000 (14:28 +0300)
scripts/admin/clusterctl

index 4e96be6..e0ef70d 100755 (executable)
@@ -36,7 +36,7 @@ list_keys()
 }
 
 # remove blank lines in authorized_keys file
-clear_keys()
+clear_empty()
 {
     this_user=$1
     this_host=$2
@@ -88,6 +88,24 @@ add_key()
     "
 }
 
+wrapper()
+{
+    this_user=$1
+    this_host=$2
+
+    if test ! -z "$add_keyfile"; then
+        add_key "$this_user" "$this_host" "$add_keyfile"
+    elif test ! -z "$delete_expr"; then
+        delete_keys "$this_user" "$this_host" "$delete_expr"
+    elif test ! -z "$get_expr"; then
+        get_key "$this_user" "$this_host" "$get_expr"
+    elif test $empty -eq 1; then
+        clear_empty "$this_user" "$this_host"
+    elif test $list -eq 1; then
+        list_keys "$this_user" "$this_host"
+    fi
+}
+
 usage()
 {
     echo "Usage:" >&2
@@ -139,112 +157,24 @@ while getopts "hvr:c:u:a:d:g:le" option; do
     esac
 done
 
-if ! test -z $add_keyfile; then
-    if test "$remotehost" == "all"; then
-        for host in ${remote_hosts[*]}; do
-            if test "$remoteuser" == "all"; then
-                for user in ${remote_users[*]}; do
-                    add_key $user $host $add_keyfile
-                done
-                continue
-            fi
-            add_key $remoteuser $host $add_keyfile
-        done
-    else
-        if test "$remoteuser" == "all"; then
-            for user in ${remote_users[*]}; do
-                add_key $user $remotehost $add_keyfile
-            done
-        else
-            add_key $remoteuser $remotehost $add_keyfile
-        fi
-    fi
-fi
-
-if ! test -z $delete_expr; then
-    if test "$remotehost" == "all"; then
-        for host in ${remote_hosts[*]}; do
-            if test "$remoteuser" == "all"; then
-                for user in ${remote_users[*]}; do
-                    delete_keys $user $host $delete_expr
-                done
-                continue
-            fi
-            delete_keys $remoteuser $host $delete_expr
-        done
-    else
-        if test "$remoteuser" == "all"; then
-            for user in ${remote_users[*]}; do
-                delete_keys $user $remotehost $delete_expr
-            done
-        else
-            delete_keys $remoteuser $remotehost $delete_expr
-        fi
-    fi
-fi
-
-if ! test -z $get_expr; then
-    if test "$remotehost" == "all"; then
-        for host in ${remote_hosts[*]}; do
-            if test "$remoteuser" == "all"; then
-                for user in ${remote_users[*]}; do
-                    get_key $user $host $get_expr
-                done
-                continue
-            fi
-            get_key $remoteuser $host $get_expr
-        done
-    else
-        if test "$remoteuser" == "all"; then
-            for user in ${remote_users[*]}; do
-                get_key $user $remotehost $get_expr
-            done
-        else
-            get_key $remoteuser $remotehost $get_expr
-        fi
-    fi
-fi
-
-if test $empty -eq 1; then
-    if test "$remotehost" == "all"; then
-        for host in ${remote_hosts[*]}; do
-            if test "$remoteuser" == "all"; then
-                for user in ${remote_users[*]}; do
-                    clear_keys $user $host
-                done
-                continue
-            fi
-            clear_keys $remoteuser $host
-        done
-    else
-        if test "$remoteuser" == "all"; then
-            for user in ${remote_users[*]}; do
-                clear_keys $user $remotehost
-            done
-        else
-            clear_keys $remoteuser $remotehost
-        fi
-    fi
-fi
-
-if test $list -eq 1; then
+if test ! -z "$add_keyfile" -o ! -z "$delete_expr" -o ! -z "$get_expr" -o "$empty" -eq 1 -o "$list" -eq 1; then
     if test "$remotehost" == "all"; then
         for host in ${remote_hosts[*]}; do
             if test "$remoteuser" == "all"; then
                 for user in ${remote_users[*]}; do
-                    list_keys $user $host
+                    wrapper $user $host
                 done
                 continue
             fi
-            list_keys $remoteuser $host
+            wrapper $remoteuser $host
         done
     else
         if test "$remoteuser" == "all"; then
             for user in ${remote_users[*]}; do
-                list_keys $user $remotehost
+                wrapper $user $remotehost
             done
         else
-            list_keys $remoteuser $remotehost
+            wrapper $remoteuser $remotehost
         fi
     fi
 fi