[Ovirt-devel] [PATCH node] Rerunning network config resets all network config. bz#507393

Darryl L. Pierce dpierce at redhat.com
Tue Jul 7 18:26:28 UTC 2009


When the user runs o-c-networking then it ensures that all features of
networking that we configure are reset and only those settings touched
are applied.

If the user selects to modify NTP settings he is shown a warning
immediately saying that any existing NTP settings will be lost.

Signed-off-by: Darryl L. Pierce <dpierce at redhat.com>
---
 scripts/ovirt-config-networking |   54 +++++++++++++++++++++++++++-----------
 1 files changed, 38 insertions(+), 16 deletions(-)

diff --git a/scripts/ovirt-config-networking b/scripts/ovirt-config-networking
index d29bd12..89b6afa 100755
--- a/scripts/ovirt-config-networking
+++ b/scripts/ovirt-config-networking
@@ -16,8 +16,10 @@ WORKDIR=$(mktemp -d) || exit 1
 trap '__st=$?; rm -rf "$WORKDIR"; stop_log; exit $__st' 0
 trap 'exit $?' 1 2 13 15
 
-CONFIG_FILE_ROOT="/files/etc/sysconfig/network-scripts/ifcfg"
+IFCONFIG_FILE_ROOT="/files/etc/sysconfig/network-scripts/ifcfg"
+NTPCONF_FILE_ROOT="/files/etc/ntp"
 NTP_CONFIG_FILE="/etc/ntp.conf"
+NTPSERVERS=""
 CONFIGURED_NIC=""
 
 # if local storage is not configured, then exit the script
@@ -55,10 +57,10 @@ function configure_interface
 
     printf "\nConfigure $BRIDGE for use by $NIC..\n\n"
 
-    local IF_ROOT="$CONFIG_FILE_ROOT-$NIC"
+    local IF_ROOT="$IFCONFIG_FILE_ROOT-$NIC"
     local IF_CONFIG="rm $IF_ROOT\nset $IF_ROOT/DEVICE $NIC"
 
-    local BR_ROOT="$CONFIG_FILE_ROOT-$BRIDGE"
+    local BR_ROOT="$IFCONFIG_FILE_ROOT-$BRIDGE"
     local BR_CONFIG="rm $BR_ROOT\nset $BR_ROOT/DEVICE $BRIDGE"
     BR_CONFIG="$BR_CONFIG\nset $BR_ROOT/TYPE Bridge"
     BR_CONFIG="$BR_CONFIG\nset $BR_ROOT/PEERNTP yes"
@@ -202,7 +204,7 @@ function configure_dns
     fi
 
     local IF_FILENAME="$WORKDIR/augtool-br${CONFIGURED_NIC}"
-    local IF_ROOT="$CONFIG_FILE_ROOT-br${CONFIGURED_NIC}"
+    local IF_ROOT="$IFCONFIG_FILE_ROOT-br${CONFIGURED_NIC}"
     local IF_CONFIG=
 
     if [ -z "$AUTO" ]; then
@@ -241,32 +243,50 @@ function configure_dns
 
 function configure_ntp
 {
-    local NTP=$1
     local AUTO=$2
     if [[ "$AUTO" == "AUTO" && -n "$OVIRT_NTP" ]]; then
-	NTP=$OVIRT_NTP
+	NTPSERVERS=$OVIRT_NTP
     else
-	NTP=""
+	NTPSERVERS=""
     fi
 
     if [ -z "$AUTO" ]; then
+        while true; do
+            read -ep "By continuing, you will remove any existing NTP settings. Continue (y/n)? "
+            case $REPLY in
+                Y|y) break;;
+                N|n) return;;
+            esac
+        done
+
 	while true; do
 	    read -ep "Enter an NTP server (hit return when finished): "
 
 	    if [ -z "$REPLY" ]; then break; fi
 
-	    NTP="$NTP $REPLY"
+	    NTPSERVERS="$NTPSERVERS $REPLY"
 	done
     fi
+}
 
-    if [ -n "$NTP" ]; then
-	# strip out all current servers from /etc/npt.conf and insert our own
-	BACKUP="${WORKDIR}/ntp.conf-backup"
-	egrep -v '^server .* # added by ovirt-config-network' < $NTP_CONFIG_FILE > $BACKUP
-	for server in $NTP; do
-	    echo "server $server # added by ovirt-config-network" >> $BACKUP
+function save_ntp_configuration
+{
+    local ntpconf="$WORKDIR/augtool-ntp"
+    local ntproot="/files/etc/ntp.conf"
+
+    printf "\
+rm ${ntproot}\n\n
+set ${ntproot}/driftfile /var/lib/ntp/drift\n\
+set ${ntproot}/includefile /etc/ntp/crypto/pw\n\
+set ${ntproot}/keys /etc/ntp/keys\n\
+save\n" > $ntpconf
+
+    if [ -n "$NTPSERVERS" ]; then
+        offset=1
+	for server in $NTPSERVERS; do
+            printf "set /files/etc/ntp.conf/server[${offset}] ${server}\n" >> $ntpconf
+            offset=$(echo "$offset+1" | bc)
 	done
-	cp -f $BACKUP $NTP_CONFIG_FILE
     fi
 }
 
@@ -317,7 +337,9 @@ else
                 "$DNS") configure_dns "$OVIRT_DNS"; break ;;
                 "$NTP") configure_ntp "$OVIRT_NTP"; break ;;
                 "$Abort") rm -f "${WORKDIR}"/augtool-*; exit 99;;
-                "$Save") break 2;;
+                "$Save")
+                    save_ntp_configuration
+                    break 2;;
                 *)
                     if [[ -n "${NIC}" ]] && [[ "${NICS}" =~ "${NIC}" ]]; then
                         configure_interface $NIC $IFACE_NUMBER
-- 
1.6.2.5




More information about the ovirt-devel mailing list