Thanks Sarah!

My comments regarding the scripts below.

Joe

Sarah Jelinek wrote:
> Hi Glenn and Team,
> 
> Great work getting this done! I do have a few comments(don't I always 
> :-))....
> 
> If I repeated anything other folks said, just point me to your responses 
> to them.
> 
> DC-manifest.defval.xml:
> -You added the 'skip_if_no_exist' to all of the default values. Is there 
>   a way to set a global macro or something to do this, so we don't have 
> to add it to every line? Perhaps in DC_defs.py? Not quite sure if this 
> will work, just checking.
> 
> -Also, I assume "img_params", if not present for standard DC runs will 
> result in a different failure, not a skip_if_not_present? Wondering what 
> happens if this node path definition isn't present for DC runs.
> 
> -why did you move/rename the img_params, and distro_const_params? For 
> example, you included the build_area under the distro_const_params now. 
> Just wondering.
> 
> DC_checkpoint.py:
> -Why did you remove the DC_execute_checkpoint method in this file? I 
> didn't see this in another module. Did I miss it?
> 
> 
> -prepare_ai_image:
> 
>>  mkdir ${MNT_ISO};   cmd_stat=$?; [[ ${cmd_stat} != 0 ]]; 
>> mkdir_stat=${cmd_stat}
>>  279 mkdir ${MNT_MROOT}; cmd_stat=$?; [[ ${cmd_stat} != 0 ]]; 
>> mkdir_stat=${cmd_stat}
>>  280 mkdir ${TMP_ISO};   cmd_stat=$?; [[ ${cmd_stat} != 0 ]]; 
>> mkdir_stat=${cmd_stat}
>>  281 mkdir ${SCRATCH};   cmd_stat=$?; [[ ${cmd_stat} != 0 ]]; 
>> mkdir_stat=${cmd_stat}
>>  282  283 if [[ ${mkdir_stat} != 0 ]] ; then
>>  284         print -u2 "\nWarning: Failed to make a needed directory: " \
>>  285             "${MNT_ISO} or ${MNT_MROOT} or ${TMP_ISO} or " \
>>  286             "${SCRATCH}"
>>  287         error_handler
>>  288 fi
> 
> This code allows for repeated failures before printing the warning, 
> right? And, the warning message is ambiguous in terms of what really 
> failed. Can we make this more crisp by adding error checking at each point?

Good point. I will provide individual messages. See comments below about 
streamlining the error checking/error_handling code.


> 
>> 211 shift # This script does not need <rsock>
>>  212 typeset -r PKG_IMG_PATH="$1"
>>  213 typeset -r TMP_DIR="$2"
>>  214 shift # This script does not need <br_ba>
>>  215 shift # This script does not need <media_out>
>>  216 typeset -r ISO_FILE="$3"  # path to bootable ai image
> 
> Doesn't the last 'shift' reset the next argument to $1? That's how I am 
> reading the man page, but I could be misunderstanding it.

The man page is misleading. I made the same mistake.

The shift code is correct. ISO_FILE is the 6th argument. I issue 3 
shifts and then pull the value from $3 (3 shifts + arg 3 == 6)

shift # This script does not need <rsock>

typeset -r PKG_IMG_PATH="$1"
PKG_IMG_PATH is actually in $2 but minus the one shift puts that in $1

typeset -r TMP_DIR="$2"
TMP_DIR is actually in $3 but minus the one shift puts that in $2

shift # This script does not need <br_ba>

shift # This script does not need <media_out>

typeset -r ISO_FILE="$3"  # path to bootable ai image
ISO_FILE is actually in $6 minus the 3 shifts make it available at $3

>> 325 if [[ -f ${MNT_ISO}/boot/x86.microroot ]] ; then
>>  326         cp ${MNT_ISO}/boot/x86.microroot ${SCRATCH}/x86.microroot.gz
>>  327         /usr/bin/gunzip ${SCRATCH}/x86.microroot.gz
> 
> Line 327, we should check either the outcome of the gunzip call or that 
> the file exists before calling gunzip.

Good point. Will do.

>>  431 else
>>  432         print -u2 "\nWarning: GRUB menu.lst file found."
>>  433         error_handler
> 
> The warning should say 'GRUB menu.st file not found'.


Well yup. That would make sense! ;) Good catch. Thanks

> 
> post_install_vm_config:
> 
>> 67 cleanup ()
>>   68 {
>>   69   70         #
>>   71         # It is not necessary to process errors.
>>   72         #
>>   73         {
>>   74                 trap "" ERR INT
>>   75                 set +o errexit
>>   76   77                 #
>>   78                 # Attempt to reconfigure the VM to it's original 
>> settings.
>>   79                 #
>>   80                 VBoxManage -q modifyvm ${DIST_NAME} --memory 
>> ${orig_ram_size} \
>>   81                     --cpus ${orig_cpus} --hwvirtex ${orig_virt_hw}
>>   82   83         } > /dev/null 2>&1
> 
> Do we need to capture any errors here, rather than piping them to 
> /dev/null?
> 
> In general in this script I see piping to /dev/null.. wouldn't it be 
> better to capture this to a log or something?

I learned to do this by Roland Mainz (Mr. bash) when I was working on 
usbgen.

If the cleanup routine is invoked because an error has occurred it is 
likely the error_handler may generate errors too. The error messages 
coming from the cleanup routine could be misleading to the user and not 
direct them to the initial problem.


> 
> General comment about scripts:
> 
> -Couldn't we create a method that handles this error:
> 
> 
> 344 cmdsts=$?
>  345 if [[ ${cmdsts} != 0 ]] ; then
>  346         print -u2 "\nError: modifyvm ${DIST_NAME} failed."
>  347         error_handler
>  348 fi


I agree it would be cleaner to update the error_handler routine to 
invoked with:

error_handler( cmdsts, \nError: modifyvm ${DIST_NAME} failed." )

The "pseudo" code would look like:

error_handler
{
typeset -i cmdsts=$1
typeset    message="$2"

if [[ ${cmdsts} == 0 ]] ; then
     # do nothing the cmdsts is success.
     return
fi

print -u2 "${message}"
...
# process the remaining error handler code...

}


> 
> We have this if statement in all scripts. Maybe error_handler can 
> include the check for $cmdstats and do the right thing?
> 
> thanks,
> sarah
> ****
> 
> 
> Glenn Lagasse wrote:
>> The VMC project is proud to present it's code for your review.  You may
>> access the webrev at:
>>
>> http://cr.opensolaris.org/~glagasse/slim_vmc/
>>
>> I'm also attaching the DC log file for a VMC run as well as the console
>> output for the same run for the curious as to what this looks like in
>> practice.
> 
> install_vm:
> -piping output of commands to /dev/null. Same as above comment.

See my comment above

>> 178 shift # This script does not need <pkg_ia>
>>  179 shift # This script does not need <tmp_dir>
>>  180 shift # This script does not need <br_ba>
>>  181 shift # This script does not need <media_out>
> 
> Not sure these shifts are necessary. I don't see you using any $1 later 
> in the code. Or $2, etc...


Good catch. These shifts are no longer needed.


> 
> In the case of checking the vbox version, in this script and in the one 
> I comment on above here:
> 
>> 214 typeset -i vbox_ver=`VBoxManage -v | sed 's/\..*//'`
>>  215 if [[ ${vbox_ver} < 3 ]] ; then
>>  216         print -u2 "\nError: VirtualBox must be at least"\
>>  217             "version 3. The version installed is: `VBoxManage -v`"
>>  218         exit 1
>>  219 fi
> 
> Do we want to call error_handler() instead of exit 1? If not, why?


Good point. I will invoke error_handler here too.


> 
>>  263 vm_disk=`VBoxManage -q showvminfo ${DIST_NAME} | grep "^Primary 
>> master:" | \
>>  264     awk '{print $3}'`
> 
> Do we need to assign vm_disk in this case? I can't see where it is used 
> after that.
> 

Good catch!

vm_disk should actually be used in the error handler. It seems to have 
been inadvertently removed from there.


> 
> 
> 
> 
> 
> 
>>
>> The timeout for providing review comments is COB October 23rd, 2009.  If
>> you need more time, please let me know.
>>
>> Thanks!
>>
>>
>>
>> ------------------------------------------------------------------------
>>
>> _______________________________________________
>> caiman-discuss mailing list
>> caiman-discuss at opensolaris.org
>> http://mail.opensolaris.org/mailman/listinfo/caiman-discuss


Reply via email to