Hi Glenn and Joe.
Congratulations on getting this out; it is quite an undertaking. It
looks pretty good.
I've reviewed DC files and one VM-related file. I did not review
export_esx, export_ovf, install_vm, install_vm_config, prepare_ai_image.
Here are my comments:
DC-manifest.defval.xml:
138-142: Nit: move up to where other distro_const_params/... items are
(for example, just below 113)
Regarding a comment which Karen asked:
> - Did you verified that the appropriate default value
> is assigned after you added all the skip_if_no_exist things?
> For example, if I have a manifest that have the img_params section,
> but I didn't specify some of the values in the manifest,
> did the "right" value get assigned?
>
You can run ManifestServ with the verbose option to check the
processing, and can then check at the values. -t dumps out the
temporary file after defaults have been added to it. Using the schema
called /tmp/DC-manifest.rng and defval manifest called
/tmp/DC-manifest.defval.xml, and a manifest called slim_cd_x86.xml, the
command would be:
ManifestServ -v -t -f /tmp/DC-manifest slim_cd_x86.xml
DC-manifest.rng:
64-67, 299-304: I saw the comments about this to other reviewers... I
would remove the comments, remove the <optional> on 59 and 62 instead of
the current approach, in order to keep the file general and extensible.
It will be easier to add new image types to this file if the <choice> of
57-67 were left in.
When you uncomment 299-304, I believe you can replace the <interleave>
lines with <empty/> if there is really nothing to add under vmimg_params.
Glenn, you made a comment that if img_params was missing then the build
will fail. I don't think it should fail if the schema is set up as
above using "choice"; the other "choice" of "vmimg_params" is being
taken. Please ping me off line about this more if needed.
DC_checkpoint.py:
722, 724: contains refs to DC_execute_checkpoint() which is now gone.
im_pop.py:
76: I don't think flush is needed right before the close. The close
should do an implicit flush.
a list of authorities to cleanup is created in 281. What about
exceptions raised between 281 and 454, where cleanup occurs?
Close pkgfile before using it. Move 404 behind 401. In fact, I think
you can get rid of the flush if you close it anyway.
Where do logging messages go from TM now?
136, other places: line > 80 chars
... Others have already said that the py files are not PEP8 compliant so
I won't dwell on these things.
In general, it is best to break up methods which are more than a few
screens in height. This makes the code more clear and digestable.
357: It makes more sense and is cleaner from an OS perspective to close
the file rather than flush here and close later. The transfer module
(called via dc_ips_contents_verify on 360) will just open
the file again anyway. This will also condense several closes which are
called during error handling into just the one on 357. Alternatively,
if there is some reason why the file cannot be closed as I suggest,
please document the reason in the code.
398: ditto. I suggest moving the close() of 404 to 398, replacing the
flush().
create_vm:
I second Karen's suggestion to use a full path to commands. This makes
what is being run explicit and handles the case where the $PATH isn't
set properly. Other distro-constructor scripts also do this.
130: Printing "FAILURE" after printing "Invoking: error_handler" may
confuse the user to believe that the error handler failed. I would say
"Failure: Invoking error_handler" before cleanup, and no message after
cleanup unless the cleanup itself failed.
215, 221, other places: I thought single line if/then/fi was
discouraged. The shell style guide says it shell should look like C, and
does not itself use single line examples for if/then/fi. I looked
through Cstyle though, and couldn't find the admonishment for doing
this, so not sure...
256: typo finalazer -> finalizer
prototype_com: OK
all Makefiles: OK
all XML except as noted above: OK
all py files except as noted above: OK notwithstanding comments from others
Thanks,
Jack