[Ovirt-devel] [PATCH node] Make all yes/no prompts consistent. rhbz#508778

Darryl L. Pierce dpierce at redhat.com
Tue Jun 30 18:32:46 UTC 2009


Added a new function, "ask_yes_or_no", to ovirt-functions. It contains a
default prompt if none is provided.

Changed all prompts that ask for yes, no and/or abort to use this new
method.

Signed-off-by: Darryl L. Pierce <dpierce at redhat.com>
---
 scripts/ovirt-config-boot-wrapper |    8 ++---
 scripts/ovirt-config-collectd     |   39 +++++++++++++++-----------
 scripts/ovirt-config-logging      |   45 ++++++++++++++++--------------
 scripts/ovirt-config-networking   |   55 +++++++++++++++++++-----------------
 scripts/ovirt-config-storage      |   30 ++++++++------------
 scripts/ovirt-config-uninstall    |    4 +--
 scripts/ovirt-functions           |   18 ++++++++++++
 7 files changed, 109 insertions(+), 90 deletions(-)

diff --git a/scripts/ovirt-config-boot-wrapper b/scripts/ovirt-config-boot-wrapper
index ff6f6e5..4ce9969 100755
--- a/scripts/ovirt-config-boot-wrapper
+++ b/scripts/ovirt-config-boot-wrapper
@@ -24,14 +24,12 @@ continuing."
     else
 	bootparams="${OVIRT_BOOTPARAMS}"
     fi
-    read -p "Do you wish to continue (Y/n)? "
-    r=$(echo $REPLY|tr '[[:lower:]]' '[[:upper:]]')
-    if [ "$r" == "Y" ]; then
+    if ask_yes_or_no; then
         mount_live \
-        && /usr/sbin/ovirt-config-boot /live "${bootparams}"
+            && /usr/sbin/ovirt-config-boot /live "${bootparams}"
         rc=$?
         break
-    elif [ "$r" == "N" ]; then
+    else
         printf "\nExiting back to the menu\n"
         rc=99
         break
diff --git a/scripts/ovirt-config-collectd b/scripts/ovirt-config-collectd
index 236ddaa..11811fd 100755
--- a/scripts/ovirt-config-collectd
+++ b/scripts/ovirt-config-collectd
@@ -67,23 +67,28 @@ prompt_user() {
         printf "\n"
         printf "\n"
         while true; do
-            read -p "Is this correct (Y/N/A)? "
-            r=$(echo $REPLY|tr '[[:lower:]]' '[[:upper:]]')
-            if [ "$r" == "Y" ]; then
-                printf "\nSaving configuration.\n"
-                if [[ -n "$collectd_server_ip" ]] &&
-                    [[ -n "$collectd_server_port" ]]; then
-                    ovirt_collectd $collectd_server_ip \
-                        $collectd_server_port
-                fi
-                return
-            elif [ "$r" == "N" ]; then
-                printf "\nRestarting collectd configuration.\n"
-                break
-            elif [ "$r" == "A" ]; then
-                printf "\nAborting collectd configuration.\n"
-                return
-            fi
+            ask_yes_or_no "Is this correct (y/n/a)?"
+            rc=$?
+            case $rc in
+                0)
+                    printf "\nSaving configuration.\n"
+                    if [[ -n "$collectd_server_ip" ]] &&
+                        [[ -n "$collectd_server_port" ]]; then
+                        ovirt_collectd $collectd_server_ip \
+                            $collectd_server_port
+                    fi
+                    return
+                    ;;
+
+                1)
+                    printf "\nRestarting collectd configuration.\n"
+                    break
+                    ;;
+                2)
+                    printf "\nAborting collectd configuration.\n"
+                    return
+                    ;;
+            esac
         done
     done
 }
diff --git a/scripts/ovirt-config-logging b/scripts/ovirt-config-logging
index ba661c3..bb0f082 100755
--- a/scripts/ovirt-config-logging
+++ b/scripts/ovirt-config-logging
@@ -146,27 +146,30 @@ function prompt_user {
         printf "\n"
         printf "\n"
         while true; do
-            read -p "Is this correct (Y/N/A)? "
-            r=$(echo $REPLY|tr '[[:lower:]]' '[[:upper:]]')
-            if [ "$r" == "Y" ]; then
-                printf "\nSaving configuration.\n"
-                if [[ -n "$syslog_server_ip" ]] &&
-                    [[ -n "$syslog_server_port" ]] &&
-                    [[ -n "$syslog_server_protocol" ]]; then
-                    ovirt_rsyslog $syslog_server_ip \
-                        $syslog_server_port \
-                        $syslog_server_protocol
-                fi
-                sed -c -i -e "s/^size=.*/size=${max_log_size}k/" \
-                    /etc/logrotate.d/ovirt-logrotate.conf
-                return
-            elif [ "$r" == "N" ]; then
-                printf "\nRestarting logging configuration.\n"
-                break
-            elif [ "$r" == "A" ]; then
-                printf "\nAborting logging configuration.\n"
-                return
-            fi
+            ask_yes_or_no "Is this correct (y/n/a)?"
+            case $? in
+                0)
+                    printf "\nSaving configuration.\n"
+                    if [[ -n "$syslog_server_ip" ]] &&
+                        [[ -n "$syslog_server_port" ]] &&
+                        [[ -n "$syslog_server_protocol" ]]; then
+                        ovirt_rsyslog $syslog_server_ip \
+                            $syslog_server_port \
+                            $syslog_server_protocol
+                    fi
+                    sed -c -i -e "s/^size=.*/size=${max_log_size}k/" \
+                        /etc/logrotate.d/ovirt-logrotate.conf
+                    return
+                    ;;
+                1)
+                    printf "\nRestarting logging configuration.\n"
+                    break
+                    ;;
+                2)
+                    printf "\nAborting logging configuration.\n"
+                    return
+                    ;;
+            esac
         done
     done
 }
diff --git a/scripts/ovirt-config-networking b/scripts/ovirt-config-networking
index d29bd12..713cabc 100755
--- a/scripts/ovirt-config-networking
+++ b/scripts/ovirt-config-networking
@@ -40,10 +40,12 @@ function configure_interface
 
     if [[ -n "${CONFIGURED_NIC}" ]]; then
         printf "This will delete the current configuration for ${CONFIGURED_NIC}.\n"
-        read -ep "Continue? (y/N) "
-        case $REPLY in
-            N|n) printf "\nAborting...\n"; return;;
-        esac
+        if ask_yes_or_no; then
+            printf "\nDeleting existing network configuration...\n"
+        else
+            printf "\nAborting...\n"
+            return
+        fi
     fi
 
     rm -rf $WORKDIR/*
@@ -79,12 +81,9 @@ function configure_interface
             fi
             echo "NIC is: $NICSTATUS"
 
-            read -ep "Help identify $NIC by blinking lights for 10 seconds ([Y]es/[N]o)?"
-            case $REPLY in
-                Y|y)
-                    ethtool --identify $NIC 10
-                    ;;
-            esac
+            if ask_yes_or_no "Help identify ${NIC} by blinking lights for 10 seconds (y/n)?"; then
+                ethtool --identify $NIC 10
+            fi
 
             read -ep "Enable IPv4 support ([S]tatic IP, [D]HCP, [N]o or [A]bort)? "
             case $REPLY in
@@ -129,18 +128,22 @@ function configure_interface
             esac
 
             printf "\n"
-            read -ep "Is this correct (Y/N/A)? "
-            case $REPLY in
-                Y|y)
-                        IF_CONFIG="$IF_CONFIG\nset $IF_ROOT/ONBOOT yes"
-                        BR_CONFIG="$BR_CONFIG\nset $BR_ROOT/ONBOOT yes"
-
-                        printf "$IF_CONFIG\n" > $IF_FILENAME
-                        printf "$BR_CONFIG\n" > $BR_FILENAME
-                        break
+            ask_yes_or_no "Is this correct (y/n/a)?"
+            case $? in
+                0)
+                    IF_CONFIG="$IF_CONFIG\nset $IF_ROOT/ONBOOT yes"
+                    BR_CONFIG="$BR_CONFIG\nset $BR_ROOT/ONBOOT yes"
+                    printf "$IF_CONFIG\n" > $IF_FILENAME
+                    printf "$BR_CONFIG\n" > $BR_FILENAME
+                    break
+                    ;;
+                1)
+                    BR_CONFIG=$BR_CONFIG_BASE
+                    ;;
+                2)
+                    CONFIGURED_NIC=""
+                    return
                     ;;
-                N|n) BR_CONFIG=$BR_CONFIG_BASE ;;
-                A|a) CONFIGURED_NIC=""; return;;
             esac
         done
     else
@@ -220,11 +223,11 @@ function configure_dns
             fi
 
             printf "\n"
-            read -ep "Is this correct (Y/N/A)? "
-            case $REPLY in
-                Y|y) break ;;
-                N|n) ;;
-                A|a) return ;;
+            ask_yes_or_no "Is this correct (y/n/a)?"
+            case $? in
+                0) break ;;
+                1) ;;
+                2) return ;;
             esac
         done
     fi
diff --git a/scripts/ovirt-config-storage b/scripts/ovirt-config-storage
index 41177a4..2e523df 100755
--- a/scripts/ovirt-config-storage
+++ b/scripts/ovirt-config-storage
@@ -208,11 +208,9 @@ do_configure()
     printf "  partition should use up the remaining space on the disk.\n\n"
 
     do_review
-    read -ep "Use these default values? (Y/n) "
-
-    case $REPLY in
-        Y|y) return;;
-    esac
+    if ask_yes_or_no "Use these default values (y/n)?"; then
+        return
+    fi
 
     local space_left=$SPACE
     for part in boot swap root config logging data ; do
@@ -474,19 +472,15 @@ do_confirm()
           "$wb$sp$w" \
         "$w8" \
         "$w8"
-        printf "\n\tContinue? (Y/n) "
-        read -e
-        case $REPLY in
-            Y|y)
-                if check_partition_sizes; then
-                    perform_partitioning
-                    exit 0
-                fi
-                break
-                ;;
-            N|n)  return ;;
-            *) ;;
-        esac
+
+        if ask_yes_or_no; then
+            if check_partition_sizes; then
+                perform_partitioning
+                exit 0
+            fi
+        else
+            return
+        fi
     done
 }
 
diff --git a/scripts/ovirt-config-uninstall b/scripts/ovirt-config-uninstall
index 59661de..60ecf71 100755
--- a/scripts/ovirt-config-uninstall
+++ b/scripts/ovirt-config-uninstall
@@ -27,9 +27,7 @@ cat <<EOF
 
 EOF
 
-read -ep "Do you wish to continue and uninstall this node (Y/N)? "
-
-if [ "$REPLY" == "Y" -o "$REPLY" == "y" ]; then
+if ask_yes_or_no "Do you wish to continue and uninstall this node (y/n)?"
     if [ -d /dev/HostVG ]; then
 	log "Uninstalling node"
 	log "Detaching logging"
diff --git a/scripts/ovirt-functions b/scripts/ovirt-functions
index e938256..09ddf50 100755
--- a/scripts/ovirt-functions
+++ b/scripts/ovirt-functions
@@ -627,6 +627,24 @@ chkconfig_persist() {
     ovirt_store_config $to_persist
 }
 
+# Asks a yes or no question. Accepts Y/N/A so users can abort.
+# RC=0 - Y/y entered
+# RC=1 - N/n entered
+# RC=2 - A/a entered
+ask_yes_or_no () {
+    local prompt=${1-"Do you wish to proceed (y/n)?"}
+
+    read -ep "${prompt} "
+    if [[ "${REPLY}" = "Y" ]] || [[ "${REPLY}" = "y" ]]; then
+        return 0
+    elif [[ "${REPLY}" = "N" ]] || [[ "${REPLY}" = "n" ]]; then
+        return 1
+    elif [[ "${REPLY}" = "A" ]] || [[ "${REPLY}" = "a" ]]; then
+        return 2
+    else
+        return 99
+    fi
+}
 
 # execute a function if called as a script, e.g.
 #   ovirt-functions ovirt_store_config /etc/hosts
-- 
1.6.2.5




More information about the ovirt-devel mailing list