)]}'
{"ironic/common/pxe_utils.py":[{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"3cbe076ae06d196c7ed6416edbf56dc8360e966d","unresolved":false,"context_lines":[{"line_number":73,"context_line":"    return template.render({\u0027pxe_options\u0027: pxe_options,"},{"line_number":74,"context_line":"                            \u0027ROOT\u0027: root_tag,"},{"line_number":75,"context_line":"                            \u0027DISK_IDENTIFIER\u0027: disk_ident_tag,"},{"line_number":76,"context_line":"                            \u0027SANBOOT\u0027: \u0027{{ SANBOOT }}\u0027,"},{"line_number":77,"context_line":"                            \u0027SANBOOT_PRESET\u0027: \u0027{{ SANBOOT_PRESET }}\u0027,"},{"line_number":78,"context_line":"                            })"},{"line_number":79,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_7d33a514","line":76,"range":{"start_line":76,"start_character":39,"end_line":76,"end_character":54},"updated":"2016-03-17 15:40:05.000000000","message":"not sure why you pass a fixed string \u0027{{ SANBOOT}}\u0027 to the template.","commit_id":"49dd0dd65f12c26b03a2e86066f9aab0009d547c"}],"ironic/conductor/task_manager.py":[{"author":{"_account_id":13997,"name":"SHIGEMATSU Mitsuhiro","email":"shigematsu.mitsuhiro@lab.ntt.co.jp","username":"pshige"},"change_message_id":"2d6d54e0e46fff1180ce3e95a75c5ffdfc6ec8c8","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                                                    self.node.driver)"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"            # NOTE(deva): this handles the Juno-era NOSTATE state"},{"line_number":213,"context_line":"            #             and should be deleted after Kilo is released"},{"line_number":214,"context_line":"            if self.node.provision_state is states.NOSTATE:"},{"line_number":215,"context_line":"                self.node.provision_state \u003d states.AVAILABLE"},{"line_number":216,"context_line":"                self.node.save()"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_e2aec880","side":"PARENT","line":213,"updated":"2015-08-22 02:43:59.000000000","message":"this part should be fixed now?","commit_id":"982dc3b8b97ed6e0f978882b9d639ee66b693c20"},{"author":{"_account_id":9176,"name":"Tomoki Sekiyama","email":"tomoki.sekiyama@gmail.com","username":"tsekiyama"},"change_message_id":"46340ed18d547f30ea8388210ac5dc30ade0d113","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                                                    self.node.driver)"},{"line_number":211,"context_line":""},{"line_number":212,"context_line":"            # NOTE(deva): this handles the Juno-era NOSTATE state"},{"line_number":213,"context_line":"            #             and should be deleted after Kilo is released"},{"line_number":214,"context_line":"            if self.node.provision_state is states.NOSTATE:"},{"line_number":215,"context_line":"                self.node.provision_state \u003d states.AVAILABLE"},{"line_number":216,"context_line":"                self.node.save()"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa1b9901_638cf735","side":"PARENT","line":213,"in_reply_to":"fa1b9901_e2aec880","updated":"2015-08-22 13:42:12.000000000","message":"Agreed. Should be done in another patch.","commit_id":"982dc3b8b97ed6e0f978882b9d639ee66b693c20"}],"ironic/drivers/modules/deploy_utils.py":[{"author":{"_account_id":12411,"name":"sandhya","email":"sandhya.ganapathy@hp.com","username":"sandhya"},"change_message_id":"2ee56508ed25ae7f6711bd8e74fbf9315a4034b0","unresolved":false,"context_lines":[{"line_number":987,"context_line":"                       \u0027of dictionaries is expected.\u0027) % node.uuid)"},{"line_number":988,"context_line":"        raise exception.InvalidParameterValue(error_msg)"},{"line_number":989,"context_line":""},{"line_number":990,"context_line":"    target_info \u003d node.instance_info.get(\u0027target_info\u0027)"},{"line_number":991,"context_line":"    if not target_info:"},{"line_number":992,"context_line":"        return None"},{"line_number":993,"context_line":"    if isinstance(target_info, six.string_types):"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a18252c_8b9f944f","line":990,"range":{"start_line":990,"start_character":53,"end_line":990,"end_character":55},"updated":"2016-04-13 09:28:26.000000000","message":"This POC code does not use the volume_targets information filled by nova in the volume_targets table?\n\nThis requires the target_info to be set in node instance_info properties before doing a nova boot... am I right?","commit_id":"49dd0dd65f12c26b03a2e86066f9aab0009d547c"},{"author":{"_account_id":12411,"name":"sandhya","email":"sandhya.ganapathy@hp.com","username":"sandhya"},"change_message_id":"44870f429043e6b993b99e0aeeb3fb5b68addfa8","unresolved":false,"context_lines":[{"line_number":249,"context_line":"    target_data \u003d target_info[0][\u0027data\u0027]"},{"line_number":250,"context_line":"    if volume_type \u003d\u003d \u0027iscsi\u0027:"},{"line_number":251,"context_line":"        username \u003d target_data.get(\u0027auth_username\u0027, \u0027\u0027)"},{"line_number":252,"context_line":"        password \u003d target_data.get(\u0027auth_password\u0027, \u0027\u0027)"},{"line_number":253,"context_line":"        initiator_iqn \u003d [conn.value for conn in volume_connectors"},{"line_number":254,"context_line":"                         if conn.type \u003d\u003d \u0027iqn\u0027][0]"},{"line_number":255,"context_line":"        target_portal, target_port \u003d target_data[\u0027target_portal\u0027].split(\u0027:\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a18252c_b1bf625f","line":252,"range":{"start_line":252,"start_character":52,"end_line":252,"end_character":55},"updated":"2016-04-13 10:29:08.000000000","message":"is auth_username and auth_password required always?","commit_id":"d4f31521a8bf64e86719dfe69c4331eb97849470"},{"author":{"_account_id":12411,"name":"sandhya","email":"sandhya.ganapathy@hp.com","username":"sandhya"},"change_message_id":"44870f429043e6b993b99e0aeeb3fb5b68addfa8","unresolved":false,"context_lines":[{"line_number":255,"context_line":"        target_portal, target_port \u003d target_data[\u0027target_portal\u0027].split(\u0027:\u0027)"},{"line_number":256,"context_line":"        sanboot_option \u003d \u0027iscsi:%s::%s:%s:%s\u0027 % (target_portal, target_port,"},{"line_number":257,"context_line":"                                                 target_data[\u0027target_lun\u0027],"},{"line_number":258,"context_line":"                                                 target_data[\u0027target_iqn\u0027])"},{"line_number":259,"context_line":"        sanboot_preset \u003d \"\\n\".join([\u0027set username %s\u0027 % username,"},{"line_number":260,"context_line":"                                    \u0027set password %s\u0027 % password,"},{"line_number":261,"context_line":"                                    \u0027set initiator-iqn %s\u0027 % initiator_iqn])"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a18252c_d163fe18","line":258,"range":{"start_line":258,"start_character":72,"end_line":258,"end_character":75},"updated":"2016-04-13 10:29:08.000000000","message":"Looks like target_data is a list. This code works if it is given as target_data[0][\u0027target_iqn\u0027]. Similarly for all the lines accessing target_data","commit_id":"d4f31521a8bf64e86719dfe69c4331eb97849470"},{"author":{"_account_id":12411,"name":"sandhya","email":"sandhya.ganapathy@hp.com","username":"sandhya"},"change_message_id":"44870f429043e6b993b99e0aeeb3fb5b68addfa8","unresolved":false,"context_lines":[{"line_number":608,"context_line":"                       \u0027of dictionaries is expected.\u0027) % node.uuid)"},{"line_number":609,"context_line":"        raise exception.InvalidParameterValue(error_msg)"},{"line_number":610,"context_line":""},{"line_number":611,"context_line":"    target_info \u003d node.instance_info.get(\u0027target_info\u0027)"},{"line_number":612,"context_line":"    if not target_info:"},{"line_number":613,"context_line":"        return None"},{"line_number":614,"context_line":"    if isinstance(target_info, six.string_types):"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a18252c_74193879","line":611,"range":{"start_line":611,"start_character":53,"end_line":611,"end_character":55},"updated":"2016-04-13 10:29:08.000000000","message":"Doesn\u0027t this POC use the volume_targets information filled by nova in the ironic database table volume_targets?\n\nThis means, target_info should be entered manually in node  instance_info.... am I right?","commit_id":"d4f31521a8bf64e86719dfe69c4331eb97849470"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"52e6a98b4a35d64d433f5cc3e674e8cc72bd14a8","unresolved":false,"context_lines":[{"line_number":608,"context_line":"                       \u0027of dictionaries is expected.\u0027) % node.uuid)"},{"line_number":609,"context_line":"        raise exception.InvalidParameterValue(error_msg)"},{"line_number":610,"context_line":""},{"line_number":611,"context_line":"    target_info \u003d node.instance_info.get(\u0027target_info\u0027)"},{"line_number":612,"context_line":"    if not target_info:"},{"line_number":613,"context_line":"        return None"},{"line_number":614,"context_line":"    if isinstance(target_info, six.string_types):"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a8ec9b2_5db3379a","line":611,"range":{"start_line":611,"start_character":53,"end_line":611,"end_character":55},"in_reply_to":"5a18252c_74193879","updated":"2016-09-21 11:26:22.000000000","message":"I think nova-compute needs to fill target_info.\nIf nova-compute also fills this by a set on target_info uuids,\nIt will be much clearer.","commit_id":"d4f31521a8bf64e86719dfe69c4331eb97849470"},{"author":{"_account_id":12411,"name":"sandhya","email":"sandhya.ganapathy@hp.com","username":"sandhya"},"change_message_id":"44870f429043e6b993b99e0aeeb3fb5b68addfa8","unresolved":false,"context_lines":[{"line_number":1151,"context_line":"            info[\u0027kernel\u0027] \u003d node.instance_info.get(\u0027kernel\u0027)"},{"line_number":1152,"context_line":"            info[\u0027ramdisk\u0027] \u003d node.instance_info.get(\u0027ramdisk\u0027)"},{"line_number":1153,"context_line":"    if node.instance_info.get(\u0027target_info\u0027):"},{"line_number":1154,"context_line":"        if not info[\u0027image_source\u0027]:"},{"line_number":1155,"context_line":"            del info[\u0027image_source\u0027]"},{"line_number":1156,"context_line":"            if not info.get(\u0027kernel\u0027, True):"},{"line_number":1157,"context_line":"                del info[\u0027kernel\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a18252c_f4f6e8f7","line":1154,"range":{"start_line":1154,"start_character":33,"end_line":1154,"end_character":36},"updated":"2016-04-13 10:29:08.000000000","message":"Is this if not info[\u0027image_source\u0027]  or if info[\u0027image_source\u0027]? Ideally, if image_source is present, delete it... correct?","commit_id":"d4f31521a8bf64e86719dfe69c4331eb97849470"},{"author":{"_account_id":12411,"name":"sandhya","email":"sandhya.ganapathy@hp.com","username":"sandhya"},"change_message_id":"44870f429043e6b993b99e0aeeb3fb5b68addfa8","unresolved":false,"context_lines":[{"line_number":1192,"context_line":"            i_info[\u0027kernel\u0027] \u003d info.get(\u0027kernel\u0027)"},{"line_number":1193,"context_line":"            i_info[\u0027ramdisk\u0027] \u003d info.get(\u0027ramdisk\u0027)"},{"line_number":1194,"context_line":"    if not i_info[\u0027image_source\u0027] and info.get(\u0027target_info\u0027):"},{"line_number":1195,"context_line":"        del i_info[\u0027image_source\u0027]"},{"line_number":1196,"context_line":"    i_info[\u0027root_gb\u0027] \u003d info.get(\u0027root_gb\u0027)"},{"line_number":1197,"context_line":"    "},{"line_number":1198,"context_line":"    error_msg \u003d _(\"Cannot validate driver deploy. Some parameters were missing\""}],"source_content_type":"text/x-python","patch_set":6,"id":"5a18252c_f4cd48b8","line":1195,"range":{"start_line":1195,"start_character":32,"end_line":1195,"end_character":34},"updated":"2016-04-13 10:29:08.000000000","message":"Similar to the above comment","commit_id":"d4f31521a8bf64e86719dfe69c4331eb97849470"}],"ironic/drivers/modules/pxe.py":[{"author":{"_account_id":6610,"name":"Zhenguo Niu","email":"Niu.ZGlinux@gmail.com","username":"niu-zglinux"},"change_message_id":"3cbe076ae06d196c7ed6416edbf56dc8360e966d","unresolved":false,"context_lines":[{"line_number":417,"context_line":"            # Booting from volume; no image is provided."},{"line_number":418,"context_line":"            if CONF.pxe.ipxe_enabled:"},{"line_number":419,"context_line":"                return"},{"line_number":420,"context_line":"            LOG.error(_LE(\"Boot from boot is only supported with iPXE boot.\"))"},{"line_number":421,"context_line":"            raise exception.InvalidParameterValue(_("},{"line_number":422,"context_line":"                \"Conflict: Volume boot is only supported with iPXE boot \""},{"line_number":423,"context_line":"                \"on node %(node_uuid)s\") % {\u0027node_uuid\u0027: node.uuid})"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_c0b2dc93","line":420,"range":{"start_line":420,"start_character":37,"end_line":420,"end_character":41},"updated":"2016-03-17 15:40:05.000000000","message":"s/boot/volume","commit_id":"49dd0dd65f12c26b03a2e86066f9aab0009d547c"},{"author":{"_account_id":13636,"name":"aarefiev","display_name":"Anton","email":"arefyevanton@gmail.com","username":"aarefiev"},"change_message_id":"8511d89f56b616d318f03f588d3b2bd59485e637","unresolved":false,"context_lines":[{"line_number":523,"context_line":"                task.node, task.context, fetch_target_info\u003dTrue)"},{"line_number":524,"context_line":"            target_info \u003d instance_image_info.get(\u0027target_info\u0027)"},{"line_number":525,"context_line":"            if not target_info:"},{"line_number":526,"context_line":"                _cache_ramdisk_kernel(task.context, task."},{"line_number":527,"context_line":"                                      instance_image_info)"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"            # If it\u0027s going to PXE boot we need to update the DHCP server"}],"source_content_type":"text/x-python","patch_set":5,"id":"ba15a1d1_c48634b9","line":526,"updated":"2015-09-14 09:03:28.000000000","message":"missed node task.* : _cache_ramdisk_kernel(task.context, task.node, instance_image_info)","commit_id":"49dd0dd65f12c26b03a2e86066f9aab0009d547c"},{"author":{"_account_id":9066,"name":"Satoru Moriya","email":"satoru.moriya.br@hitachi.com","username":"satoru-moriya-br"},"change_message_id":"f7dbec20201a2cd1dd7f06f9bbe2d0b1bc2f8f6f","unresolved":false,"context_lines":[{"line_number":523,"context_line":"                task.node, task.context, fetch_target_info\u003dTrue)"},{"line_number":524,"context_line":"            target_info \u003d instance_image_info.get(\u0027target_info\u0027)"},{"line_number":525,"context_line":"            if not target_info:"},{"line_number":526,"context_line":"                _cache_ramdisk_kernel(task.context, task."},{"line_number":527,"context_line":"                                      instance_image_info)"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"            # If it\u0027s going to PXE boot we need to update the DHCP server"}],"source_content_type":"text/x-python","patch_set":5,"id":"1af94dfe_92d2f7d0","line":526,"in_reply_to":"ba15a1d1_c48634b9","updated":"2016-03-17 08:45:18.000000000","message":"Thanks, will do.","commit_id":"49dd0dd65f12c26b03a2e86066f9aab0009d547c"},{"author":{"_account_id":12411,"name":"sandhya","email":"sandhya.ganapathy@hp.com","username":"sandhya"},"change_message_id":"44870f429043e6b993b99e0aeeb3fb5b68addfa8","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        disk image, it returns an empty dictionary."},{"line_number":187,"context_line":"    \"\"\""},{"line_number":188,"context_line":"    image_info \u003d {}"},{"line_number":189,"context_line":"    if node.driver_internal_info.get(\u0027is_whole_disk_image\u0027):"},{"line_number":190,"context_line":"        return image_info"},{"line_number":191,"context_line":""},{"line_number":192,"context_line":"    root_dir \u003d pxe_utils.get_root_dir()"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a18252c_f429c838","line":189,"range":{"start_line":189,"start_character":57,"end_line":189,"end_character":60},"updated":"2016-04-13 10:29:08.000000000","message":"I believe the flag is_whole_disk_image should be unset to proceed with the POC","commit_id":"d4f31521a8bf64e86719dfe69c4331eb97849470"},{"author":{"_account_id":20105,"name":"Cao ShuFeng","email":"caosf.fnst@cn.fujitsu.com","username":"caosf.fnst"},"change_message_id":"357d92c9756f128b27d4362c2f175de54526462e","unresolved":false,"context_lines":[{"line_number":442,"context_line":"            props \u003d [\u0027kernel_id\u0027, \u0027ramdisk_id\u0027]"},{"line_number":443,"context_line":"        elif target_info:"},{"line_number":444,"context_line":"            # Booting from volume; no image is provided."},{"line_number":445,"context_line":"            if CONF.pxe.ipxe_enabled:"},{"line_number":446,"context_line":"                return"},{"line_number":447,"context_line":"            LOG.error(_LE(\"Boot from volume is only supported with iPXE boot.\"))"},{"line_number":448,"context_line":"            raise exception.InvalidParameterValue(_("}],"source_content_type":"text/x-python","patch_set":6,"id":"bab6814e_bee0be97","line":445,"range":{"start_line":445,"start_character":15,"end_line":445,"end_character":36},"updated":"2016-05-25 03:18:07.000000000","message":"IMO, we should check the node\u0027s driver type here, rather than check the CONF.","commit_id":"d4f31521a8bf64e86719dfe69c4331eb97849470"}]}
