)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"3faa66bfc2967a7279c7923b859e6255e41f8a0a","unresolved":false,"context_lines":[{"line_number":23,"context_line":"elements with the help of dib-run-parts does not work here.  The order"},{"line_number":24,"context_line":"of the elements is important.  Also it must be possible to provide a"},{"line_number":25,"context_line":"different set of configuration parameters to each element. One element"},{"line_number":26,"context_line":"can be theoretical occur more than once.)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"In addition it introduces a concept, that when an error occurs each"},{"line_number":29,"context_line":"element can perform some cleanup during the \u0027exit\u0027 phase."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9abb7d3a_8b46ce78","line":26,"updated":"2016-06-01 16:00:15.000000000","message":"More detail in the code comments, but I think this enhancement needs to live on its own.","commit_id":"c937bee98ab4544961952c081f513fcc73062284"},{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"3faa66bfc2967a7279c7923b859e6255e41f8a0a","unresolved":false,"context_lines":[{"line_number":26,"context_line":"can be theoretical occur more than once.)"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"In addition it introduces a concept, that when an error occurs each"},{"line_number":29,"context_line":"element can perform some cleanup during the \u0027exit\u0027 phase."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Change-Id: Ib626b36a00f8a5dc3dbde8df3e2619a2438eaaf1"},{"line_number":32,"context_line":"Signed-off-by: Andreas Florath \u003candreas@florath.net\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9abb7d3a_4b1ea670","line":29,"updated":"2016-06-01 16:00:15.000000000","message":"Same with this one - I think this is a pretty straightforward thing we need so It\u0027d be great to make it its own thing.","commit_id":"c937bee98ab4544961952c081f513fcc73062284"}],"bin/disk-image-create":[{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"ee33d74fb2d79866cd0e66a8bdc00f3cf61778f3","unresolved":false,"context_lines":[{"line_number":409,"context_line":""},{"line_number":410,"context_line":"export TMP_IMAGE_DIR"},{"line_number":411,"context_line":"IMAGE_BLOCK_DEVICE\u003d$(sudo -E PYTHONPATH\u003d${PYTHONPATH} \\"},{"line_number":412,"context_line":"     python -c \u0027from diskimage_builder import block_device;"},{"line_number":413,"context_line":"block_device.create()\u0027)"},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"LOOPDEV\u003d${IMAGE_BLOCK_DEVICE}"}],"source_content_type":"application/x-shellscript","patch_set":6,"id":"7aa08908_df459a43","line":412,"updated":"2016-06-17 05:21:34.000000000","message":"rather than recreating things, we should just use entry-points like everything else does (in fact, we should change element-deps to one too ...)\n\nadd a main() probably and call it from console_script entry_point in setup.cfg, then just call it from here.\n\ni think this probably breaks the idea that we can just checkout and run ./bin/disk-image-create -- but that was mostly a fiction anyway (e.g. dibutils \u0026 other python requirements).\n\nif you want to develop, pip -E in a virtualenv is the way to go.  gate testing already installs from pip, so that is ok\n\nwe can then remove a lot of that ugly stuff at the top...","commit_id":"19db0131eff487c40f57eea7d385c4aa8dc870a3"},{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"1c2cc8e7e0831739b79d5e6a107806a0322277bc","unresolved":false,"context_lines":[{"line_number":410,"context_line":"LOOPDEV\u003d$(sudo losetup --show -f $TMP_IMAGE_PATH)"},{"line_number":411,"context_line":"export EXTRA_UNMOUNT\u003d\"detach_loopback $LOOPDEV\""},{"line_number":412,"context_line":"export IMAGE_BLOCK_DEVICE\u003d$LOOPDEV"},{"line_number":413,"context_line":"eval_run_d block-device \"IMAGE_BLOCK_DEVICE\u003d\""},{"line_number":414,"context_line":"sudo mkfs $MKFS_OPTS -t $FS_TYPE -L ${DIB_ROOT_LABEL} ${IMAGE_BLOCK_DEVICE}"},{"line_number":415,"context_line":"# Tuning the rootfs uuid works only for ext filesystems."},{"line_number":416,"context_line":"if echo \"$FS_TYPE\" | grep -q \"^ext\"; then"}],"source_content_type":"application/x-shellscript","patch_set":9,"id":"3aaa91ec_6e3b4839","side":"PARENT","line":413,"updated":"2016-06-22 17:01:44.000000000","message":"This is a really big public api breaking change - before we allowed users to customize the block device creation process as much as we wanted but we no longer do. We need to still support this use case IMO. Do you have any thoughts on how to reconcile that?","commit_id":"abe666f17eb6468383f7bf0ba3e2f3c28e024eeb"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"d9b8a5c601ff13b9ebad0e4f53798dad53944344","unresolved":false,"context_lines":[{"line_number":410,"context_line":"LOOPDEV\u003d$(sudo losetup --show -f $TMP_IMAGE_PATH)"},{"line_number":411,"context_line":"export EXTRA_UNMOUNT\u003d\"detach_loopback $LOOPDEV\""},{"line_number":412,"context_line":"export IMAGE_BLOCK_DEVICE\u003d$LOOPDEV"},{"line_number":413,"context_line":"eval_run_d block-device \"IMAGE_BLOCK_DEVICE\u003d\""},{"line_number":414,"context_line":"sudo mkfs $MKFS_OPTS -t $FS_TYPE -L ${DIB_ROOT_LABEL} ${IMAGE_BLOCK_DEVICE}"},{"line_number":415,"context_line":"# Tuning the rootfs uuid works only for ext filesystems."},{"line_number":416,"context_line":"if echo \"$FS_TYPE\" | grep -q \"^ext\"; then"}],"source_content_type":"application/x-shellscript","patch_set":9,"id":"3aaa91ec_978abc19","side":"PARENT","line":413,"in_reply_to":"3aaa91ec_6e3b4839","updated":"2016-06-23 19:47:40.000000000","message":"Can you please check patchset 10?\nI implemented it now in a way that if there is something that sets up the block device in the old way, this will be used. If nothing is called / returned the new code is called.","commit_id":"abe666f17eb6468383f7bf0ba3e2f3c28e024eeb"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"78b86a185bb05072ee400db0f9876d937e3a7543","unresolved":false,"context_lines":[{"line_number":417,"context_line":"LOOPDEV\u003d${IMAGE_BLOCK_DEVICE}"},{"line_number":418,"context_line":"export EXTRA_UNMOUNT\u003d\"detach_loopback $LOOPDEV\""},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"# Create the partitions and make them visibale to the system"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"# Create 2 partitions for PPC, one for PReP boot and other for root"},{"line_number":423,"context_line":"if [[ \"$ARCH\" \u003d~ \"ppc\" ]] ; then"}],"source_content_type":"application/x-shellscript","patch_set":12,"id":"1aa78d24_ff276cb3","line":420,"range":{"start_line":420,"start_character":38,"end_line":420,"end_character":46},"updated":"2016-07-06 23:18:32.000000000","message":"nit: visible","commit_id":"c666df6236e30b7d5c010db25ae15112201e2a31"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"ef2b90de30c5dd2ff08fcfd41b7d2fcedf4f05af","unresolved":false,"context_lines":[{"line_number":417,"context_line":"LOOPDEV\u003d${IMAGE_BLOCK_DEVICE}"},{"line_number":418,"context_line":"export EXTRA_UNMOUNT\u003d\"detach_loopback $LOOPDEV\""},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"# Create the partitions and make them visibale to the system"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"# Create 2 partitions for PPC, one for PReP boot and other for root"},{"line_number":423,"context_line":"if [[ \"$ARCH\" \u003d~ \"ppc\" ]] ; then"}],"source_content_type":"application/x-shellscript","patch_set":12,"id":"1aa78d24_4644a51a","line":420,"range":{"start_line":420,"start_character":38,"end_line":420,"end_character":46},"in_reply_to":"1aa78d24_ff276cb3","updated":"2016-07-14 20:06:09.000000000","message":"Done","commit_id":"c666df6236e30b7d5c010db25ae15112201e2a31"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"78b86a185bb05072ee400db0f9876d937e3a7543","unresolved":false,"context_lines":[{"line_number":418,"context_line":"export EXTRA_UNMOUNT\u003d\"detach_loopback $LOOPDEV\""},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"# Create the partitions and make them visibale to the system"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"# Create 2 partitions for PPC, one for PReP boot and other for root"},{"line_number":423,"context_line":"if [[ \"$ARCH\" \u003d~ \"ppc\" ]] ; then"},{"line_number":424,"context_line":"    sudo parted -a optimal -s $IMAGE_BLOCK_DEVICE \\"}],"source_content_type":"application/x-shellscript","patch_set":12,"id":"1aa78d24_39aaaf19","line":421,"updated":"2016-07-06 23:18:32.000000000","message":"See my comments on https://review.openstack.org/#/c/337833/ - we need to account for partition images \u0026 ramdisk builds","commit_id":"c666df6236e30b7d5c010db25ae15112201e2a31"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"ef2b90de30c5dd2ff08fcfd41b7d2fcedf4f05af","unresolved":false,"context_lines":[{"line_number":418,"context_line":"export EXTRA_UNMOUNT\u003d\"detach_loopback $LOOPDEV\""},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"# Create the partitions and make them visibale to the system"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"# Create 2 partitions for PPC, one for PReP boot and other for root"},{"line_number":423,"context_line":"if [[ \"$ARCH\" \u003d~ \"ppc\" ]] ; then"},{"line_number":424,"context_line":"    sudo parted -a optimal -s $IMAGE_BLOCK_DEVICE \\"}],"source_content_type":"application/x-shellscript","patch_set":12,"id":"1aa78d24_0661fda8","line":421,"in_reply_to":"1aa78d24_39aaaf19","updated":"2016-07-14 20:06:09.000000000","message":"Let\u0027s discuss this there.\n(My idea: it\u0027s ok - did not yet a reply.)","commit_id":"c666df6236e30b7d5c010db25ae15112201e2a31"},{"author":{"_account_id":12459,"name":"Stephanie Miller","email":"stephane@alum.mit.edu","username":"cinerama"},"change_message_id":"78b86a185bb05072ee400db0f9876d937e3a7543","unresolved":false,"context_lines":[{"line_number":464,"context_line":"    export IMAGE_BLOCK_DEVICE\u003d${IMAGE_BLOCK_DEVICE}p1"},{"line_number":465,"context_line":"fi"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"# End: Creation the partitions"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"sudo mkfs $MKFS_OPTS -t $FS_TYPE -L ${DIB_ROOT_LABEL} ${IMAGE_BLOCK_DEVICE}"},{"line_number":470,"context_line":"# Tuning the rootfs uuid works only for ext filesystems."}],"source_content_type":"application/x-shellscript","patch_set":12,"id":"1aa78d24_9f710847","line":467,"range":{"start_line":467,"start_character":7,"end_line":467,"end_character":15},"updated":"2016-07-06 23:18:32.000000000","message":"nit: Creation of the partitions","commit_id":"c666df6236e30b7d5c010db25ae15112201e2a31"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"ef2b90de30c5dd2ff08fcfd41b7d2fcedf4f05af","unresolved":false,"context_lines":[{"line_number":464,"context_line":"    export IMAGE_BLOCK_DEVICE\u003d${IMAGE_BLOCK_DEVICE}p1"},{"line_number":465,"context_line":"fi"},{"line_number":466,"context_line":""},{"line_number":467,"context_line":"# End: Creation the partitions"},{"line_number":468,"context_line":""},{"line_number":469,"context_line":"sudo mkfs $MKFS_OPTS -t $FS_TYPE -L ${DIB_ROOT_LABEL} ${IMAGE_BLOCK_DEVICE}"},{"line_number":470,"context_line":"# Tuning the rootfs uuid works only for ext filesystems."}],"source_content_type":"application/x-shellscript","patch_set":12,"id":"1aa78d24_465b05f7","line":467,"range":{"start_line":467,"start_character":7,"end_line":467,"end_character":15},"in_reply_to":"1aa78d24_9f710847","updated":"2016-07-14 20:06:09.000000000","message":"Done","commit_id":"c666df6236e30b7d5c010db25ae15112201e2a31"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"b5acdb3ca4fbb1beba9c05cc787f2dd3e4667eef","unresolved":false,"context_lines":[{"line_number":400,"context_line":"# Rounding down size so that is is a multiple of 64, works around a bug in"},{"line_number":401,"context_line":"# qemu-img that may occur when compressing raw images that aren\u0027t a multiple"},{"line_number":402,"context_line":"# of 64k. https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1180021"},{"line_number":403,"context_line":"export DIB_IMAGE_SIZE\u003d$(echo \"$du_size\" | awk \u0027 { if ($1 % 64 !\u003d 0) print $1 + 64 - ( $1 % 64); else print $1; } \u0027)KiB"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"if [ -n \"$MAX_ONLINE_RESIZE\" ]; then"},{"line_number":406,"context_line":"    MKFS_OPTS\u003d\"-E resize\u003d$MAX_ONLINE_RESIZE $MKFS_OPTS\""}],"source_content_type":"application/x-shellscript","patch_set":13,"id":"1aa78d24_492e3b8d","line":403,"updated":"2016-07-15 05:22:13.000000000","message":"still need to be exported?","commit_id":"3ab286d64a98e9f455d34cc8db0b59d32e97c5b8"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"e743ecdef7f3d5e9a378592949b72d31aa507e9a","unresolved":false,"context_lines":[{"line_number":400,"context_line":"# Rounding down size so that is is a multiple of 64, works around a bug in"},{"line_number":401,"context_line":"# qemu-img that may occur when compressing raw images that aren\u0027t a multiple"},{"line_number":402,"context_line":"# of 64k. https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1180021"},{"line_number":403,"context_line":"export DIB_IMAGE_SIZE\u003d$(echo \"$du_size\" | awk \u0027 { if ($1 % 64 !\u003d 0) print $1 + 64 - ( $1 % 64); else print $1; } \u0027)KiB"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"if [ -n \"$MAX_ONLINE_RESIZE\" ]; then"},{"line_number":406,"context_line":"    MKFS_OPTS\u003d\"-E resize\u003d$MAX_ONLINE_RESIZE $MKFS_OPTS\""}],"source_content_type":"application/x-shellscript","patch_set":13,"id":"fad55976_b9b94bef","line":403,"in_reply_to":"1aa78d24_492e3b8d","updated":"2016-07-15 15:39:22.000000000","message":"No of course not - there was also another place where this was exported (line 193): removed also this.","commit_id":"3ab286d64a98e9f455d34cc8db0b59d32e97c5b8"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"b5acdb3ca4fbb1beba9c05cc787f2dd3e4667eef","unresolved":false,"context_lines":[{"line_number":412,"context_line":"eval_run_d block-device \"IMAGE_BLOCK_DEVICE\u003d\""},{"line_number":413,"context_line":"if [ -z ${IMAGE_BLOCK_DEVICE} ] ; then"},{"line_number":414,"context_line":"    IMAGE_BLOCK_DEVICE\u003d$(dib-block-device \\"},{"line_number":415,"context_line":"\t\t\t     --phase\u003dcreate \\"},{"line_number":416,"context_line":"\t\t\t     --config\u003d\"${DIB_BLOCK_DEVICE_CONFIG:-}\" \\"},{"line_number":417,"context_line":"\t\t\t     --image-size\u003d\"${DIB_IMAGE_SIZE}\" \\"},{"line_number":418,"context_line":"\t\t\t     --image-dir\u003d\"${TMP_IMAGE_DIR}\" \\"}],"source_content_type":"application/x-shellscript","patch_set":13,"id":"1aa78d24_693337f7","line":415,"updated":"2016-07-15 05:22:13.000000000","message":"sorry to be a PITA ... but tabs\n\nhow is this not failing?","commit_id":"3ab286d64a98e9f455d34cc8db0b59d32e97c5b8"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"e743ecdef7f3d5e9a378592949b72d31aa507e9a","unresolved":false,"context_lines":[{"line_number":412,"context_line":"eval_run_d block-device \"IMAGE_BLOCK_DEVICE\u003d\""},{"line_number":413,"context_line":"if [ -z ${IMAGE_BLOCK_DEVICE} ] ; then"},{"line_number":414,"context_line":"    IMAGE_BLOCK_DEVICE\u003d$(dib-block-device \\"},{"line_number":415,"context_line":"\t\t\t     --phase\u003dcreate \\"},{"line_number":416,"context_line":"\t\t\t     --config\u003d\"${DIB_BLOCK_DEVICE_CONFIG:-}\" \\"},{"line_number":417,"context_line":"\t\t\t     --image-size\u003d\"${DIB_IMAGE_SIZE}\" \\"},{"line_number":418,"context_line":"\t\t\t     --image-dir\u003d\"${TMP_IMAGE_DIR}\" \\"}],"source_content_type":"application/x-shellscript","patch_set":13,"id":"fad55976_f998e36c","line":415,"in_reply_to":"1aa78d24_693337f7","updated":"2016-07-15 15:39:22.000000000","message":"Uups - sorry to bother you with these things...\nI always run tox locally before uploading. Added\n   (setq-default indent-tabs-mode nil)\nto my .emacs file now and hope that this will never happen again.","commit_id":"3ab286d64a98e9f455d34cc8db0b59d32e97c5b8"},{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"483d64415d1eb8d9f4d35710bbef9c93c44278d6","unresolved":false,"context_lines":[{"line_number":400,"context_line":"# Rounding down size so that is is a multiple of 64, works around a bug in"},{"line_number":401,"context_line":"# qemu-img that may occur when compressing raw images that aren\u0027t a multiple"},{"line_number":402,"context_line":"# of 64k. https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1180021"},{"line_number":403,"context_line":"DIB_IMAGE_SIZE\u003d$(echo \"$du_size\" | awk \u0027 { if ($1 % 64 !\u003d 0) print $1 + 64 - ( $1 % 64); else print $1; } \u0027)KiB"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"if [ -n \"$MAX_ONLINE_RESIZE\" ]; then"},{"line_number":406,"context_line":"    MKFS_OPTS\u003d\"-E resize\u003d$MAX_ONLINE_RESIZE $MKFS_OPTS\""}],"source_content_type":"application/x-shellscript","patch_set":14,"id":"bacf61ea_6bb5f2ec","line":403,"updated":"2016-07-28 17:51:01.000000000","message":"Can we re-add the export we removed above? Its annoying that we export this, but that makes it a public API that elements could depend on.","commit_id":"5587ff8c2780b08447295b1fb3b8289fb9bce6f7"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"26f69aa9a3281e3d145de8b23cce6626ef562fa9","unresolved":false,"context_lines":[{"line_number":400,"context_line":"# Rounding down size so that is is a multiple of 64, works around a bug in"},{"line_number":401,"context_line":"# qemu-img that may occur when compressing raw images that aren\u0027t a multiple"},{"line_number":402,"context_line":"# of 64k. https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1180021"},{"line_number":403,"context_line":"DIB_IMAGE_SIZE\u003d$(echo \"$du_size\" | awk \u0027 { if ($1 % 64 !\u003d 0) print $1 + 64 - ( $1 % 64); else print $1; } \u0027)KiB"},{"line_number":404,"context_line":""},{"line_number":405,"context_line":"if [ -n \"$MAX_ONLINE_RESIZE\" ]; then"},{"line_number":406,"context_line":"    MKFS_OPTS\u003d\"-E resize\u003d$MAX_ONLINE_RESIZE $MKFS_OPTS\""}],"source_content_type":"application/x-shellscript","patch_set":14,"id":"1ac06dbe_477cdceb","line":403,"in_reply_to":"bacf61ea_6bb5f2ec","updated":"2016-08-23 19:49:46.000000000","message":"Done","commit_id":"5587ff8c2780b08447295b1fb3b8289fb9bce6f7"}],"diskimage_builder/block_device/BlockDevice.py":[{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"b1001144ac10818771136fb6ce4ae37ab94ac7a1","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    ]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def __init__(self):"},{"line_number":43,"context_line":"        logging_config.setup()"},{"line_number":44,"context_line":"        self.__logger \u003d logging.getLogger(type(self).__name__)"},{"line_number":45,"context_line":"        if \u0027DIB_BLOCK_DEVICE_CONFIG\u0027 in os.environ:"},{"line_number":46,"context_line":"            self._config \u003d json.loads(os.environ[\u0027DIB_BLOCK_DEVICE_CONFIG\u0027])"}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa08908_df991a7b","line":43,"updated":"2016-06-17 05:23:29.000000000","message":"so yeah, see my prior comment about entry-points -- this should be in a main() function so we can unit test BlockDevice()","commit_id":"19db0131eff487c40f57eea7d385c4aa8dc870a3"},{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"44e2be6b610cbdd029437e26a6437c7be660924f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3aaa91ec_3379ce94","updated":"2016-06-22 16:59:33.000000000","message":"Lets all lowercase this per pep-8","commit_id":"1ae60212c5fd4ef1b0211ae555bc4c22afdf45c9"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"d9b8a5c601ff13b9ebad0e4f53798dad53944344","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3aaa91ec_373028e8","in_reply_to":"3aaa91ec_3379ce94","updated":"2016-06-23 19:47:40.000000000","message":"Done","commit_id":"1ae60212c5fd4ef1b0211ae555bc4c22afdf45c9"},{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"44e2be6b610cbdd029437e26a6437c7be660924f","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from diskimage_builder.block_device.Level0 import Level0"},{"line_number":16,"context_line":"from diskimage_builder.block_device.Utils import convert_to_utf8"},{"line_number":17,"context_line":"import json"},{"line_number":18,"context_line":"import logging"},{"line_number":19,"context_line":"import os"},{"line_number":20,"context_line":"import shutil"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_13a0129f","line":18,"updated":"2016-06-22 16:59:33.000000000","message":"Don\u0027t we want to use your new logging config?","commit_id":"1ae60212c5fd4ef1b0211ae555bc4c22afdf45c9"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"d9b8a5c601ff13b9ebad0e4f53798dad53944344","unresolved":false,"context_lines":[{"line_number":15,"context_line":"from diskimage_builder.block_device.Level0 import Level0"},{"line_number":16,"context_line":"from diskimage_builder.block_device.Utils import convert_to_utf8"},{"line_number":17,"context_line":"import json"},{"line_number":18,"context_line":"import logging"},{"line_number":19,"context_line":"import os"},{"line_number":20,"context_line":"import shutil"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_97391ca7","line":18,"in_reply_to":"3aaa91ec_13a0129f","updated":"2016-06-23 19:47:40.000000000","message":"It\u0027s used ;-)\nThe advantage of the new logging config is, that the client or libraries do not even know that it exists; only main has to call it once (here: in block_device/__init__.py:main","commit_id":"1ae60212c5fd4ef1b0211ae555bc4c22afdf45c9"}],"diskimage_builder/block_device/Level0.py":[{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"44e2be6b610cbdd029437e26a6437c7be660924f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3aaa91ec_1363f2dd","updated":"2016-06-22 16:59:33.000000000","message":"ditto","commit_id":"1ae60212c5fd4ef1b0211ae555bc4c22afdf45c9"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"d9b8a5c601ff13b9ebad0e4f53798dad53944344","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3aaa91ec_d73f2485","in_reply_to":"3aaa91ec_1363f2dd","updated":"2016-06-23 19:47:40.000000000","message":"Done","commit_id":"1ae60212c5fd4ef1b0211ae555bc4c22afdf45c9"}],"diskimage_builder/block_device/LevelBase.py":[{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"44e2be6b610cbdd029437e26a6437c7be660924f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3aaa91ec_f35f460c","updated":"2016-06-22 16:59:33.000000000","message":"ditto","commit_id":"1ae60212c5fd4ef1b0211ae555bc4c22afdf45c9"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"d9b8a5c601ff13b9ebad0e4f53798dad53944344","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3aaa91ec_9728fc87","in_reply_to":"3aaa91ec_f35f460c","updated":"2016-06-23 19:47:40.000000000","message":"Done","commit_id":"1ae60212c5fd4ef1b0211ae555bc4c22afdf45c9"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"8f1e4bbea5ea94f883d5a6ba33a8a83cfe2b6f8a","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    def __init__(self, lvl, config, result, sub_modules):"},{"line_number":22,"context_line":"        self.level \u003d lvl"},{"line_number":23,"context_line":"        self.config \u003d config"},{"line_number":24,"context_line":"        self.logger \u003d logging.getLogger(type(self).__name__)"},{"line_number":25,"context_line":"        self.result \u003d result"},{"line_number":26,"context_line":"        self.sub_modules \u003d sub_modules"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"5a9d85d2_5cc0bb2a","line":24,"updated":"2016-06-21 10:22:05.000000000","message":"so a nit, but i\u0027d like to see done because i know we\u0027re going to copy this over and over ... i think this should be a module-level import with getLogger(__name__) ... because we\u0027re using the name in the default output and it makes more sense to be the module name than individual class names (the module name gives a clue to the file it\u0027s in, the class you\u0027re just going to have to search for)","commit_id":"1ae60212c5fd4ef1b0211ae555bc4c22afdf45c9"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"d9b8a5c601ff13b9ebad0e4f53798dad53944344","unresolved":false,"context_lines":[{"line_number":21,"context_line":"    def __init__(self, lvl, config, result, sub_modules):"},{"line_number":22,"context_line":"        self.level \u003d lvl"},{"line_number":23,"context_line":"        self.config \u003d config"},{"line_number":24,"context_line":"        self.logger \u003d logging.getLogger(type(self).__name__)"},{"line_number":25,"context_line":"        self.result \u003d result"},{"line_number":26,"context_line":"        self.sub_modules \u003d sub_modules"},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_3719487a","line":24,"in_reply_to":"5a9d85d2_5cc0bb2a","updated":"2016-06-23 19:47:40.000000000","message":"Done","commit_id":"1ae60212c5fd4ef1b0211ae555bc4c22afdf45c9"}],"diskimage_builder/block_device/Utils.py":[{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"44e2be6b610cbdd029437e26a6437c7be660924f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3aaa91ec_33a0aef4","updated":"2016-06-22 16:59:33.000000000","message":"ditto","commit_id":"1ae60212c5fd4ef1b0211ae555bc4c22afdf45c9"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"d9b8a5c601ff13b9ebad0e4f53798dad53944344","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3aaa91ec_5754d4c8","in_reply_to":"3aaa91ec_33a0aef4","updated":"2016-06-23 19:47:40.000000000","message":"Done","commit_id":"1ae60212c5fd4ef1b0211ae555bc4c22afdf45c9"}],"diskimage_builder/block_device/__init__.py":[{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"44e2be6b610cbdd029437e26a6437c7be660924f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3aaa91ec_53373ab0","updated":"2016-06-22 16:59:33.000000000","message":"What do you think about removing this module and just setting up entrypoints directly to the things in BlockDevice we want to call? I\u0027m thinking that, in addition to less code, it will let us pin down what clients call in that class.","commit_id":"1ae60212c5fd4ef1b0211ae555bc4c22afdf45c9"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"d9b8a5c601ff13b9ebad0e4f53798dad53944344","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3aaa91ec_f71fc005","in_reply_to":"3aaa91ec_53373ab0","updated":"2016-06-23 19:47:40.000000000","message":"You need in either case a __init__.py because the directory contains python code that is used (via import) in other python files.","commit_id":"1ae60212c5fd4ef1b0211ae555bc4c22afdf45c9"},{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"483d64415d1eb8d9f4d35710bbef9c93c44278d6","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    parser \u003d argparse.ArgumentParser("},{"line_number":30,"context_line":"        description\u003d\"Create block device layer\")"},{"line_number":31,"context_line":"    parser.add_argument(\u0027--phase\u0027, required\u003dTrue,"},{"line_number":32,"context_line":"                        help\u003d\"phase to execute\")"},{"line_number":33,"context_line":"    parser.add_argument(\u0027--config\u0027, required\u003dFalse,"},{"line_number":34,"context_line":"                        help\u003d\"configuration for block device \""}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_86649be5","line":31,"updated":"2016-07-28 17:51:01.000000000","message":"Can we specify the available commands as choices? This has the main benefit of documenting in -h what commands a user can run, but also is nice from knowing exactly what our command surface area is.","commit_id":"5587ff8c2780b08447295b1fb3b8289fb9bce6f7"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"26f69aa9a3281e3d145de8b23cce6626ef562fa9","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    parser \u003d argparse.ArgumentParser("},{"line_number":30,"context_line":"        description\u003d\"Create block device layer\")"},{"line_number":31,"context_line":"    parser.add_argument(\u0027--phase\u0027, required\u003dTrue,"},{"line_number":32,"context_line":"                        help\u003d\"phase to execute\")"},{"line_number":33,"context_line":"    parser.add_argument(\u0027--config\u0027, required\u003dFalse,"},{"line_number":34,"context_line":"                        help\u003d\"configuration for block device \""}],"source_content_type":"text/x-python","patch_set":14,"id":"1ac06dbe_c770cc0d","line":31,"in_reply_to":"bacf61ea_86649be5","updated":"2016-08-23 19:49:46.000000000","message":"Done","commit_id":"5587ff8c2780b08447295b1fb3b8289fb9bce6f7"}],"diskimage_builder/block_device/blockdevice.py":[{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"cb77135e1d04d5ef13c4deeaf506d2bdfe941d96","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class BlockDevice(object):"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    DefaultConfig \u003d ["},{"line_number":29,"context_line":"        [[\"local_loop\","},{"line_number":30,"context_line":"          {\"name\": \"rootdisk\"}]],"},{"line_number":31,"context_line":"        [[\"partitioning\","}],"source_content_type":"text/x-python","patch_set":12,"id":"1aa78d24_88c34657","line":28,"updated":"2016-07-13 21:23:16.000000000","message":"Can we get some user documentation for this config schema?","commit_id":"c666df6236e30b7d5c010db25ae15112201e2a31"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"ef2b90de30c5dd2ff08fcfd41b7d2fcedf4f05af","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class BlockDevice(object):"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    DefaultConfig \u003d ["},{"line_number":29,"context_line":"        [[\"local_loop\","},{"line_number":30,"context_line":"          {\"name\": \"rootdisk\"}]],"},{"line_number":31,"context_line":"        [[\"partitioning\","}],"source_content_type":"text/x-python","patch_set":12,"id":"1aa78d24_2925c15b","line":28,"in_reply_to":"1aa78d24_88c34657","updated":"2016-07-14 20:06:09.000000000","message":"Done","commit_id":"c666df6236e30b7d5c010db25ae15112201e2a31"},{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"be659abef5de03a965be7ad8845df4e5c08396e5","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    ]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def __init__(self):"},{"line_number":43,"context_line":"        if \u0027DIB_BLOCK_DEVICE_CONFIG\u0027 in os.environ:"},{"line_number":44,"context_line":"            self.config \u003d json.loads(os.environ[\u0027DIB_BLOCK_DEVICE_CONFIG\u0027])"},{"line_number":45,"context_line":"        else:"},{"line_number":46,"context_line":"            self.config \u003d BlockDevice.DefaultConfig"}],"source_content_type":"text/x-python","patch_set":12,"id":"1aa78d24_c8d54e1c","line":43,"updated":"2016-07-13 21:22:23.000000000","message":"Can we not use env vars for this? IMO env vars are something we should avoid as much as possible in the python dib module itself - its really hard to understand/limit their scope (as opposed to passing vars around). Maybe we can pass this in as an arg to the entrypoint?","commit_id":"c666df6236e30b7d5c010db25ae15112201e2a31"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"ef2b90de30c5dd2ff08fcfd41b7d2fcedf4f05af","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    ]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def __init__(self):"},{"line_number":43,"context_line":"        if \u0027DIB_BLOCK_DEVICE_CONFIG\u0027 in os.environ:"},{"line_number":44,"context_line":"            self.config \u003d json.loads(os.environ[\u0027DIB_BLOCK_DEVICE_CONFIG\u0027])"},{"line_number":45,"context_line":"        else:"},{"line_number":46,"context_line":"            self.config \u003d BlockDevice.DefaultConfig"}],"source_content_type":"text/x-python","patch_set":12,"id":"1aa78d24_691fc909","line":43,"in_reply_to":"1aa78d24_c8d54e1c","updated":"2016-07-14 20:06:09.000000000","message":"Done","commit_id":"c666df6236e30b7d5c010db25ae15112201e2a31"},{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"483d64415d1eb8d9f4d35710bbef9c93c44278d6","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        logger.debug(\"Write state [%s]\" % self.state_json_file_name)"},{"line_number":65,"context_line":"        os.makedirs(self.state_dir)"},{"line_number":66,"context_line":"        with open(self.state_json_file_name, \"w\") as fd:"},{"line_number":67,"context_line":"            fd.write(\"[ \")"},{"line_number":68,"context_line":"            json.dump(self.config, fd)"},{"line_number":69,"context_line":"            fd.write(\", \")"},{"line_number":70,"context_line":"            json.dump(self.default_config, fd)"}],"source_content_type":"text/x-python","patch_set":14,"id":"bacf61ea_c6e33332","line":67,"updated":"2016-07-28 17:51:01.000000000","message":"Rather than writing out our own json, how about using a native object and dumping that? Basically:\n\njson.dumps([self.config, self.default_config, result], fd)","commit_id":"5587ff8c2780b08447295b1fb3b8289fb9bce6f7"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"26f69aa9a3281e3d145de8b23cce6626ef562fa9","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        logger.debug(\"Write state [%s]\" % self.state_json_file_name)"},{"line_number":65,"context_line":"        os.makedirs(self.state_dir)"},{"line_number":66,"context_line":"        with open(self.state_json_file_name, \"w\") as fd:"},{"line_number":67,"context_line":"            fd.write(\"[ \")"},{"line_number":68,"context_line":"            json.dump(self.config, fd)"},{"line_number":69,"context_line":"            fd.write(\", \")"},{"line_number":70,"context_line":"            json.dump(self.default_config, fd)"}],"source_content_type":"text/x-python","patch_set":14,"id":"1ac06dbe_675c787d","line":67,"in_reply_to":"bacf61ea_c6e33332","updated":"2016-08-23 19:49:46.000000000","message":"Good finding! My original code is crap!","commit_id":"5587ff8c2780b08447295b1fb3b8289fb9bce6f7"}],"diskimage_builder/block_device/level0/LocalLoop.py":[{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"ee33d74fb2d79866cd0e66a8bdc00f3cf61778f3","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    def __init__(self, log, cfg, result\u003dNone):"},{"line_number":32,"context_line":"        self.__logger \u003d log"},{"line_number":33,"context_line":"        if \u0027size\u0027 in cfg:"},{"line_number":34,"context_line":"            self.__size \u003d Utils.parse_abs_size_spec(cfg[\u0027size\u0027])"},{"line_number":35,"context_line":"            self.__logger.debug(\"Image size [%s]\" % self.__size)"},{"line_number":36,"context_line":"        else:"},{"line_number":37,"context_line":"            self.__size \u003d Utils.parse_abs_size_spec("}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa08908_8d3acbe5","line":34,"updated":"2016-06-17 05:21:34.000000000","message":"why is everything namespaced like this?  it\u0027s a bit out of style with everything else","commit_id":"19db0131eff487c40f57eea7d385c4aa8dc870a3"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"686f58eb2cdf6ff1f4cd5f2b818e75e2515e01d3","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    type_string \u003d \"local_loop\""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"    def __init__(self, log, cfg, result\u003dNone):"},{"line_number":32,"context_line":"        self.__logger \u003d log"},{"line_number":33,"context_line":"        if \u0027size\u0027 in cfg:"},{"line_number":34,"context_line":"            self.__size \u003d parse_abs_size_spec(cfg[\u0027size\u0027])"},{"line_number":35,"context_line":"            self.__logger.debug(\"Image size [%s]\" % self.__size)"}],"source_content_type":"text/x-python","patch_set":8,"id":"5a9d85d2_64e719e5","line":32,"updated":"2016-06-20 10:47:20.000000000","message":"this doesn\u0027t want to have an argument for the logger.  it should just \n\n import logging\n log \u003d logging.getLogger(__name__)\n\nat the top and use that log","commit_id":"968c48748e3c0ae5a89a13c311275d05bc4414c5"},{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"44e2be6b610cbdd029437e26a6437c7be660924f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3aaa91ec_73aa36d6","updated":"2016-06-22 16:59:33.000000000","message":"ditto","commit_id":"1ae60212c5fd4ef1b0211ae555bc4c22afdf45c9"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"d9b8a5c601ff13b9ebad0e4f53798dad53944344","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3aaa91ec_17ea4cdb","in_reply_to":"3aaa91ec_73aa36d6","updated":"2016-06-23 19:47:40.000000000","message":"Done","commit_id":"1ae60212c5fd4ef1b0211ae555bc4c22afdf45c9"},{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"44e2be6b610cbdd029437e26a6437c7be660924f","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from diskimage_builder.block_device.Utils import parse_abs_size_spec"},{"line_number":16,"context_line":"import logging"},{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":"import subprocess"},{"line_number":19,"context_line":"import sys"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_96feb069","line":16,"updated":"2016-06-22 16:59:33.000000000","message":"ditto","commit_id":"1ae60212c5fd4ef1b0211ae555bc4c22afdf45c9"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"d9b8a5c601ff13b9ebad0e4f53798dad53944344","unresolved":false,"context_lines":[{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from diskimage_builder.block_device.Utils import parse_abs_size_spec"},{"line_number":16,"context_line":"import logging"},{"line_number":17,"context_line":"import os"},{"line_number":18,"context_line":"import subprocess"},{"line_number":19,"context_line":"import sys"}],"source_content_type":"text/x-python","patch_set":9,"id":"3aaa91ec_37edc8ef","line":16,"in_reply_to":"3aaa91ec_96feb069","updated":"2016-06-23 19:47:40.000000000","message":"see above","commit_id":"1ae60212c5fd4ef1b0211ae555bc4c22afdf45c9"}],"doc/source/developer/developing_elements.rst":[{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"483d64415d1eb8d9f4d35710bbef9c93c44278d6","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"  * runs: **in chroot**"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"``block-device.d``"},{"line_number":125,"context_line":"  Customise the block device that the image will be made on (for example to"},{"line_number":126,"context_line":"  make partitions). Runs after the target tree has been fully populated but"},{"line_number":127,"context_line":"  before the ``cleanup.d`` phase runs."}],"source_content_type":"text/x-rst","patch_set":14,"id":"bacf61ea_0b2f16f7","line":124,"updated":"2016-07-28 17:51:01.000000000","message":"Can we document the new behavior where if no block-device.d scripts return a value then we use the built-in partitioning?\n\n(this is worth some more discussion) Lets deprecate this phase as part of this patch - the interaction here is very strange (this phase always runs but may not be used) and were basically saying this is the non-preferred method anyhow.","commit_id":"5587ff8c2780b08447295b1fb3b8289fb9bce6f7"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"26f69aa9a3281e3d145de8b23cce6626ef562fa9","unresolved":false,"context_lines":[{"line_number":121,"context_line":""},{"line_number":122,"context_line":"  * runs: **in chroot**"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"``block-device.d``"},{"line_number":125,"context_line":"  Customise the block device that the image will be made on (for example to"},{"line_number":126,"context_line":"  make partitions). Runs after the target tree has been fully populated but"},{"line_number":127,"context_line":"  before the ``cleanup.d`` phase runs."}],"source_content_type":"text/x-rst","patch_set":14,"id":"1ac06dbe_27c280e9","line":124,"in_reply_to":"bacf61ea_0b2f16f7","updated":"2016-08-23 19:49:46.000000000","message":"IMHO the old block device phase should be deprecated - but there was some earlier review-remark that want\u0027s to keep existing scripts for this phase.\nI would really like to go for deprecation here - but I have no idea how to do this. Could you please give me a hint?","commit_id":"5587ff8c2780b08447295b1fb3b8289fb9bce6f7"}],"elements/block-device/block-device.d/05-block-device-create":[{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"3faa66bfc2967a7279c7923b859e6255e41f8a0a","unresolved":false,"context_lines":[{"line_number":10,"context_line":"set -o pipefail"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"LIBDIR\u003d$(dirname $0)/../pylib/block-device"},{"line_number":13,"context_line":"export PYTHONPATH\u003d${LIBDIR}:${PYTHONPATH:-}"},{"line_number":14,"context_line":"python ${LIBDIR}/create_block_device.py"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"9abb7d3a_6685a158","line":13,"updated":"2016-06-01 16:00:15.000000000","message":"If we end up solving this issue, I\u0027d really like this to be more general (and not require every element to have this blurb. Random thought - maybe we can build a packge and install it?","commit_id":"c937bee98ab4544961952c081f513fcc73062284"}],"lib/common-functions":[{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"5f9af7acd43e943f244c026a9f96aafe4eb17ed9","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    done"},{"line_number":75,"context_line":"}"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"function copy_hooks_recursive () {"},{"line_number":78,"context_line":"    local source_dir\u003d\"$1\""},{"line_number":79,"context_line":"    cp -rat \"${TMP_HOOKS_PATH}\" \"${source_dir}\""},{"line_number":80,"context_line":"}"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"9abb7d3a_3a747c66","line":77,"updated":"2016-05-31 20:24:06.000000000","message":"can we split this out?","commit_id":"c937bee98ab4544961952c081f513fcc73062284"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"ab552c5549163d4b9329bbb980e62fa9fa6cae3f","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    done"},{"line_number":75,"context_line":"}"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"function copy_hooks_recursive () {"},{"line_number":78,"context_line":"    local source_dir\u003d\"$1\""},{"line_number":79,"context_line":"    cp -rat \"${TMP_HOOKS_PATH}\" \"${source_dir}\""},{"line_number":80,"context_line":"}"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"9abb7d3a_67b4a481","line":77,"in_reply_to":"9abb7d3a_3a747c66","updated":"2016-06-01 05:40:48.000000000","message":"Yes - we can, but this is currently not my preferred solution :-)\nI currently do not understand, why \u0027copy_hooks_not_overwrite()\u0027 is not recursive - but places everything in one directory.\nMy preferred way would be to have this function recursive and drop here the special handling of \u0027pylib\u0027.","commit_id":"c937bee98ab4544961952c081f513fcc73062284"},{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"3faa66bfc2967a7279c7923b859e6255e41f8a0a","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    done"},{"line_number":75,"context_line":"}"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"function copy_hooks_recursive () {"},{"line_number":78,"context_line":"    local source_dir\u003d\"$1\""},{"line_number":79,"context_line":"    cp -rat \"${TMP_HOOKS_PATH}\" \"${source_dir}\""},{"line_number":80,"context_line":"}"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"9abb7d3a_eb4e7a39","line":77,"in_reply_to":"9abb7d3a_67b4a481","updated":"2016-06-01 16:00:15.000000000","message":"What about splitting out the whole \"add support for in-element python libraries\" change in to one thing? Basically, all the changes in this file, the docs for this part, and potentially something we can have in CI. That seems like a distinct feature all on its own.\n\n\nIt also might be good to spec that out (sorry for the extra work) so we can discuss the design before committing too much to code.\n\n\nSome things I am wondering are:\nI really want dib to remain just as the \u0027installer glue\u0027 for building images and to not become a general purpose framework for running applications. In the past we\u0027ve kept this balance by making sure applications live outside of dib and dib just installs and then runs them, maybe we need a similar boundary here?\n\n\nIf we need to enhance our hook copying can we work together to base it off of https://review.openstack.org/#/c/271139/ ?","commit_id":"c937bee98ab4544961952c081f513fcc73062284"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"1ec96e44c52dcb1e7fe1271195d77e53a5fef675","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    done"},{"line_number":75,"context_line":"}"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"function copy_hooks_recursive () {"},{"line_number":78,"context_line":"    local source_dir\u003d\"$1\""},{"line_number":79,"context_line":"    cp -rat \"${TMP_HOOKS_PATH}\" \"${source_dir}\""},{"line_number":80,"context_line":"}"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"9abb7d3a_3bbf9efc","line":77,"in_reply_to":"9abb7d3a_eb4e7a39","updated":"2016-06-03 18:12:43.000000000","message":"You are right in splitting out general usable parts for python first. One first step I\u0027ve already done is the logging config [1]. I\u0027m not sure which things are still remaining.  My current approach is, to split all the tiny bits out, that can stand for their own (even it\u0027s one or two line changes). I\u0027ll then rebase this patch and analyze the rest. IMHO there is the need for some iterations.\nWhen there is a bigger change needed, I\u0027ll go for a spec first.\n\nI do not understand your worries about becoming a general propose framework - can you please explain?\nDo you think refactoring the block device layer out in a separate tool? If so, I see no way: IMHO this is one of the core functionalities of DIB. What do you get, if you take the current DIB and remove the loop device handling, partitioning, mkfs and mounting?\n\nYour patch about hook copying is great! It exactly fits here! (See my comments there.) If we can use this, there is no need for any change here any more - and no additional changes needed.\n\n\n[1] https://review.openstack.org/#/c/325409/","commit_id":"c937bee98ab4544961952c081f513fcc73062284"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"5f9af7acd43e943f244c026a9f96aafe4eb17ed9","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    for dir in ${ELEMENTS_PATH//:/ } ; do"},{"line_number":86,"context_line":"      [ -d $dir/$_ELEMENT ] || continue"},{"line_number":87,"context_line":"      for _DIR in $(find $dir/$_ELEMENT -follow -mindepth 1 -maxdepth 1 -type d -not -name tests); do"},{"line_number":88,"context_line":"\t  if [ $(basename \"${_DIR}\") \u003d \"pylib\" ] ; then"},{"line_number":89,"context_line":"\t      copy_hooks_recursive \"${_DIR}\""},{"line_number":90,"context_line":"\t      continue"},{"line_number":91,"context_line":"\t  fi"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"9abb7d3a_fac79495","line":88,"updated":"2016-05-31 20:24:06.000000000","message":"tabs ... why didn\u0027t dib-lint warn on this?","commit_id":"c937bee98ab4544961952c081f513fcc73062284"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"ab552c5549163d4b9329bbb980e62fa9fa6cae3f","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    for dir in ${ELEMENTS_PATH//:/ } ; do"},{"line_number":86,"context_line":"      [ -d $dir/$_ELEMENT ] || continue"},{"line_number":87,"context_line":"      for _DIR in $(find $dir/$_ELEMENT -follow -mindepth 1 -maxdepth 1 -type d -not -name tests); do"},{"line_number":88,"context_line":"\t  if [ $(basename \"${_DIR}\") \u003d \"pylib\" ] ; then"},{"line_number":89,"context_line":"\t      copy_hooks_recursive \"${_DIR}\""},{"line_number":90,"context_line":"\t      continue"},{"line_number":91,"context_line":"\t  fi"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"9abb7d3a_42234ea7","line":88,"in_reply_to":"9abb7d3a_fac79495","updated":"2016-06-01 05:40:48.000000000","message":"Done","commit_id":"c937bee98ab4544961952c081f513fcc73062284"},{"author":{"_account_id":10035,"name":"greghaynes","email":"greg@greghaynes.net","username":"greghaynes"},"change_message_id":"483d64415d1eb8d9f4d35710bbef9c93c44278d6","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        sudo dmsetup --noudevsync remove $mapper_name"},{"line_number":174,"context_line":"    fi"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    return 0"},{"line_number":177,"context_line":"}"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"function arg_to_elements() {"}],"source_content_type":"application/x-shellscript","patch_set":14,"id":"bacf61ea_660d2790","line":176,"updated":"2016-07-28 17:51:01.000000000","message":"We need to handle the case of this getting called as a result of an error - we need to call to unmount the block device out of band in that scenario.","commit_id":"5587ff8c2780b08447295b1fb3b8289fb9bce6f7"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"26f69aa9a3281e3d145de8b23cce6626ef562fa9","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        sudo dmsetup --noudevsync remove $mapper_name"},{"line_number":174,"context_line":"    fi"},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    return 0"},{"line_number":177,"context_line":"}"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"function arg_to_elements() {"}],"source_content_type":"application/x-shellscript","patch_set":14,"id":"1ac06dbe_67b8f875","line":176,"in_reply_to":"bacf61ea_660d2790","updated":"2016-08-23 19:49:46.000000000","message":"Done","commit_id":"5587ff8c2780b08447295b1fb3b8289fb9bce6f7"}],"lib/img-functions":[{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"5f9af7acd43e943f244c026a9f96aafe4eb17ed9","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"function cleanup () {"},{"line_number":50,"context_line":"    unmount_image"},{"line_number":51,"context_line":"    run_d exit"},{"line_number":52,"context_line":"    cleanup_build_dir"},{"line_number":53,"context_line":"    cleanup_image_dir"},{"line_number":54,"context_line":"}"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"9abb7d3a_dab610f8","line":51,"updated":"2016-05-31 20:24:06.000000000","message":"can we split this new phase out?","commit_id":"c937bee98ab4544961952c081f513fcc73062284"},{"author":{"_account_id":21741,"name":"Andreas Florath","email":"andreas@florath.net","username":"florath"},"change_message_id":"ab552c5549163d4b9329bbb980e62fa9fa6cae3f","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"function cleanup () {"},{"line_number":50,"context_line":"    unmount_image"},{"line_number":51,"context_line":"    run_d exit"},{"line_number":52,"context_line":"    cleanup_build_dir"},{"line_number":53,"context_line":"    cleanup_image_dir"},{"line_number":54,"context_line":"}"}],"source_content_type":"application/x-shellscript","patch_set":5,"id":"9abb7d3a_6255b2f8","line":51,"in_reply_to":"9abb7d3a_dab610f8","updated":"2016-06-01 05:40:48.000000000","message":"Yes - it is possible, but there will in first place no element that uses it. Therefore this line will be the only that change.\nI\u0027m not sure, if this is worth it.","commit_id":"c937bee98ab4544961952c081f513fcc73062284"}]}
