[Ovirt-devel] [PATCH node] Moved network configuration work files to a temporary directory.
Perry Myers
pmyers at redhat.com
Mon Nov 17 23:00:37 UTC 2008
Jim Meyering wrote:
> "Darryl L. Pierce" <dpierce at redhat.com> wrote:
>> Signed-off-by: Darryl L. Pierce <dpierce at redhat.com>
>> ---
>> scripts/ovirt-config-networking | 22 ++++++++++------------
>> 1 files changed, 10 insertions(+), 12 deletions(-)
>>
>> diff --git a/scripts/ovirt-config-networking b/scripts/ovirt-config-networking
>> index 2f8363c..592bef4 100755
>> --- a/scripts/ovirt-config-networking
>> +++ b/scripts/ovirt-config-networking
>> @@ -1,17 +1,20 @@
>> -#!/bin/bash
>> +$#!/bin/bash
>
> Hi Darryl,
>
> Typo?
>
>> #
>> # Iterates over the list of network devices on the node and prompts the user
>> # to configure each.
>>
>> +WORKDIR=$(mktemp -d) || exit 1
>
> Nothing removes $WORKDIR.
> You could just remove it at the end.
> Doing it right isn't trivial, but once you've seen the idiom,
> it's easy to reuse (this is from coreutils/tests/test-lib.sh).
> Just insert this:
>
> # Remove $WORKDIR upon interrupt (and HUP, PIPE, TERM) and upon normal
> # termination, being careful not to change the exit status.
> trap '__st=$?; rm -rf "$WORKDIR"; exit $__st' 0
> trap 'exit $?' 1 2 13 15
>
>> CONFIG_FILE_ROOT="/file/etc/sysconfig/network-scripts/ifcfg"
>> -CONFIG_LOG_FILE="/var/log/ovirt-network-setup.log"
>> +#CONFIG_LOG_FILE="/var/log/ovirt-network-setup.log"
>> +CONFIG_LOG_FILE="ovirt-network-setup.log"
>>
>> function configure_interface
>> {
>> NIC=$1
>> BRIDGE=ovirtbr`echo $NIC | cut -b4-`
>> - IF_FILENAME="/var/tmp/augtool-$NIC"
>> - BR_FILENAME="/var/tmp/augtool-$BRIDGE"
>> + IF_FILENAME="$WORKDIR/augtool-$NIC"
>> + BR_FILENAME="$WORKDIR/augtool-$BRIDGE"
>>
>> printf "\nConfigure $BRIDGE for use by $NIC..\n\n"
>>
>> @@ -70,10 +73,6 @@ function setup_menu
>> PS3="Please select a network interface to configure:"
>> }
>>
>> -# clean up any left over configurations
>> -rm -f /var/tmp/config-augtool
>> -rm -f /var/tmp/augtool-*
>> -
>> setup_menu
>>
>> select NIC in $NICS
>> @@ -88,10 +87,9 @@ done
>>
>> # Merge together all generated files and run augtool
>>
>> -cat /var/tmp/augtool-* > /var/tmp/config-augtool
>> -printf "save\n" >> /var/tmp/config-augtool
>> {
>> -augtool < /var/tmp/config-augtool
>> +cat $WORKDIR/augtool-* > $WORKDIR/config-augtool
>> +printf "save\n" >> /var/tmp/config-augtool
>
> Oops. one remaining /var/tmp/...
>
>> +augtool < $WORKDIR/config-augtool
>
> I've just noticed that these uses of $WORKDIR need to be
> double-quoted-for-the-paranoid.
> (in case $TMPDIR contains bogus characters).
> Also, ideally, you'd run augtool only if all preceding writes
> completed without error, so,
>
> cf="$WORKDIR/config-augtool"
> { cat "$WORKDIR"/augtool-* && printf "save\n"; } > "$cf" \
> && augtool < "$cf"
>
>> service network restart
>> } > $CONFIG_LOG_FILE 2>> $CONFIG_LOG_FILE
>
> I really, really prefer not to program in shell.
Agreed. Unfortunately our choices on the Node are limited due to efforts
to keep image size small. The options are C and bash presently.
Perhaps we should investigate what the cost would be to put *minimal*
python environment on the Node. Just core libraries and interpreter.
Doing this we could eventually replace this bash stuff with python which
is a little more maintainable :)
Perry
More information about the ovirt-devel
mailing list