)]}'
{"etc/ironic/ironic.conf.sample":[{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":838,"context_line":"# Port to be used for iLO operations (integer value)"},{"line_number":839,"context_line":"#client_port\u003d443"},{"line_number":840,"context_line":""},{"line_number":841,"context_line":"# The swift ilo container to store data. (string value)"},{"line_number":842,"context_line":"#swift_ilo_container\u003dironic_ilo_container"},{"line_number":843,"context_line":""},{"line_number":844,"context_line":"# Amount of time in seconds for swift objects to auto-expire."}],"source_content_type":"application/octet-stream","patch_set":19,"id":"fa98f980_0569e7bd","line":841,"updated":"2014-09-03 02:22:27.000000000","message":"please use \u0027Swift\u0027.\n\nAlso, isn\u0027t it \u0027iLO\u0027?","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":838,"context_line":"# Port to be used for iLO operations (integer value)"},{"line_number":839,"context_line":"#client_port\u003d443"},{"line_number":840,"context_line":""},{"line_number":841,"context_line":"# The swift ilo container to store data. (string value)"},{"line_number":842,"context_line":"#swift_ilo_container\u003dironic_ilo_container"},{"line_number":843,"context_line":""},{"line_number":844,"context_line":"# Amount of time in seconds for swift objects to auto-expire."}],"source_content_type":"application/octet-stream","patch_set":19,"id":"fa98f980_69c36689","line":841,"in_reply_to":"fa98f980_0569e7bd","updated":"2014-09-03 05:24:39.000000000","message":"Done","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":841,"context_line":"# The swift ilo container to store data. (string value)"},{"line_number":842,"context_line":"#swift_ilo_container\u003dironic_ilo_container"},{"line_number":843,"context_line":""},{"line_number":844,"context_line":"# Amount of time in seconds for swift objects to auto-expire."},{"line_number":845,"context_line":"# (integer value)"},{"line_number":846,"context_line":"#swift_object_expiry_timeout\u003d900"},{"line_number":847,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":19,"id":"fa98f980_c5a6ff0f","line":844,"updated":"2014-09-03 02:22:27.000000000","message":"\u0027swift\u0027 -\u003e \u0027Swift\u0027","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":841,"context_line":"# The swift ilo container to store data. (string value)"},{"line_number":842,"context_line":"#swift_ilo_container\u003dironic_ilo_container"},{"line_number":843,"context_line":""},{"line_number":844,"context_line":"# Amount of time in seconds for swift objects to auto-expire."},{"line_number":845,"context_line":"# (integer value)"},{"line_number":846,"context_line":"#swift_object_expiry_timeout\u003d900"},{"line_number":847,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":19,"id":"fa98f980_89bc0a08","line":844,"in_reply_to":"fa98f980_c5a6ff0f","updated":"2014-09-03 05:24:39.000000000","message":"Done","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"}],"ironic/common/images.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bb08cd720c7e7b101e599c78a696e6b5e3a00bea","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    for key, value in parameters.iteritems():"},{"line_number":79,"context_line":"        line \u003d key"},{"line_number":80,"context_line":"        if value:"},{"line_number":81,"context_line":"            line +\u003d \u0027\u003d\u0027 + str(value)"},{"line_number":82,"context_line":"        params_list.append(line)"},{"line_number":83,"context_line":"    return params_list"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_fa122857","line":81,"updated":"2014-08-14 12:29:24.000000000","message":"this should be in the previous patch (and my suggestion there will make it no longer required)","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    for key, value in parameters.iteritems():"},{"line_number":79,"context_line":"        line \u003d key"},{"line_number":80,"context_line":"        if value:"},{"line_number":81,"context_line":"            line +\u003d \u0027\u003d\u0027 + str(value)"},{"line_number":82,"context_line":"        params_list.append(line)"},{"line_number":83,"context_line":"    return params_list"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_a1ba39df","line":81,"in_reply_to":"7ac7a964_fa122857","updated":"2014-08-14 16:14:41.000000000","message":"Done","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a62262c6ec070b7844e2db410e45671892b0168f","unresolved":false,"context_lines":[{"line_number":291,"context_line":"    :param kernel_uuid: glance uuid of the kernel to use"},{"line_number":292,"context_line":"    :param ramdisk_uuid: glance uuid of the ramdisk to use"},{"line_number":293,"context_line":"    :param root_uuid: uuid of the root filesystem"},{"line_number":294,"context_line":"    :param kernel_params: the kernel parameters to add for boot"},{"line_number":295,"context_line":"    \"\"\""},{"line_number":296,"context_line":"    with utils.tempdir() as tmpdir:"},{"line_number":297,"context_line":"        kernel_path \u003d os.path.join(tmpdir, kernel_uuid)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_ff3a1d33","line":294,"updated":"2014-08-25 14:28:38.000000000","message":"please document type of `kernel_params`, it not too clear from the code. I expected it to be dict of list of smth, it does not seem to be the case","commit_id":"cd6b6f71911d5143d6282b86bdc781f4bcaa7a4d"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"081356a6e97044e29b248b8018cb2c695212a62d","unresolved":false,"context_lines":[{"line_number":291,"context_line":"    :param kernel_uuid: glance uuid of the kernel to use"},{"line_number":292,"context_line":"    :param ramdisk_uuid: glance uuid of the ramdisk to use"},{"line_number":293,"context_line":"    :param root_uuid: uuid of the root filesystem"},{"line_number":294,"context_line":"    :param kernel_params: the kernel parameters to add for boot"},{"line_number":295,"context_line":"    \"\"\""},{"line_number":296,"context_line":"    with utils.tempdir() as tmpdir:"},{"line_number":297,"context_line":"        kernel_path \u003d os.path.join(tmpdir, kernel_uuid)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_bdcfc3b2","line":294,"in_reply_to":"1abeadc6_ff3a1d33","updated":"2014-08-26 14:06:02.000000000","message":"Done","commit_id":"cd6b6f71911d5143d6282b86bdc781f4bcaa7a4d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a62262c6ec070b7844e2db410e45671892b0168f","unresolved":false,"context_lines":[{"line_number":303,"context_line":"        if root_uuid:"},{"line_number":304,"context_line":"            params[\u0027root\u0027] \u003d \u0027UUID\u003d\u0027 + root_uuid"},{"line_number":305,"context_line":"        if kernel_params:"},{"line_number":306,"context_line":"            params[kernel_params] \u003d \u0027\u0027"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"        create_isolinux_image(output_filename, kernel_path,"},{"line_number":309,"context_line":"                              ramdisk_path, params)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_bfeb45af","line":306,"updated":"2014-08-25 14:28:38.000000000","message":"Oh, I think I guessed what this line does, but it looks a bit dirty. Can we change (in one of parent patches) create_isolinux_image to accept lists of either string or tuple for kernel_params argument?","commit_id":"cd6b6f71911d5143d6282b86bdc781f4bcaa7a4d"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"081356a6e97044e29b248b8018cb2c695212a62d","unresolved":false,"context_lines":[{"line_number":303,"context_line":"        if root_uuid:"},{"line_number":304,"context_line":"            params[\u0027root\u0027] \u003d \u0027UUID\u003d\u0027 + root_uuid"},{"line_number":305,"context_line":"        if kernel_params:"},{"line_number":306,"context_line":"            params[kernel_params] \u003d \u0027\u0027"},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"        create_isolinux_image(output_filename, kernel_path,"},{"line_number":309,"context_line":"                              ramdisk_path, params)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_1d46f723","line":306,"in_reply_to":"1abeadc6_bfeb45af","updated":"2014-08-26 14:06:02.000000000","message":"Done","commit_id":"cd6b6f71911d5143d6282b86bdc781f4bcaa7a4d"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"57b6003d9a75b7d4786eb668c0f4f0b112de7bed","unresolved":false,"context_lines":[{"line_number":302,"context_line":"    :param property: the property whose value is required."},{"line_number":303,"context_line":"    :returns: the value of the property if it exists, otherwise None."},{"line_number":304,"context_line":"    \"\"\""},{"line_number":305,"context_line":"    glance_service \u003d service.Service(version\u003d2, context\u003dcontext)"},{"line_number":306,"context_line":"    iproperties \u003d glance_service.show(image_uuid)[\u0027properties\u0027]"},{"line_number":307,"context_line":"    return iproperties.get(property)"},{"line_number":308,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_589f745f","line":305,"updated":"2014-08-26 17:19:46.000000000","message":"some part of the code L242 and L293 we use \"version\u003d1\", here \"version\u003d2\"... Will this cause some problems? It seems inconsistency","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e0237cafca5ac0cdbb33b8cc08a5a0eb856143ad","unresolved":false,"context_lines":[{"line_number":302,"context_line":"    :param property: the property whose value is required."},{"line_number":303,"context_line":"    :returns: the value of the property if it exists, otherwise None."},{"line_number":304,"context_line":"    \"\"\""},{"line_number":305,"context_line":"    glance_service \u003d service.Service(version\u003d2, context\u003dcontext)"},{"line_number":306,"context_line":"    iproperties \u003d glance_service.show(image_uuid)[\u0027properties\u0027]"},{"line_number":307,"context_line":"    return iproperties.get(property)"},{"line_number":308,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_707c4473","line":305,"in_reply_to":"1abeadc6_589f745f","updated":"2014-08-26 20:32:57.000000000","message":"I guess version\u003d1 is enough for getting the properties. but glance api version\u003d2 is required for the below function because direct_url was introduced in version\u003d2. So i will just add a note below for now.","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"8bc1af898ae5facdaf196a02dd2ca7e54002c604","unresolved":false,"context_lines":[{"line_number":307,"context_line":"    return iproperties.get(property)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"def get_tmp_url_for_glance_image(context, image_uuid):"},{"line_number":311,"context_line":"    \"\"\"Returns the tmp url for a glance image."},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"    :param context: context"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_7d63421a","line":310,"updated":"2014-08-26 16:33:18.000000000","message":"https://github.com/openstack/ironic/blob/master/ironic/drivers/modules/agent.py#L171\n\nThe agent does something similar here. I think your method is better, can you either add a TODO to migrate the agent driver to use this or fix it in the patch?","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e0237cafca5ac0cdbb33b8cc08a5a0eb856143ad","unresolved":false,"context_lines":[{"line_number":307,"context_line":"    return iproperties.get(property)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":""},{"line_number":310,"context_line":"def get_tmp_url_for_glance_image(context, image_uuid):"},{"line_number":311,"context_line":"    \"\"\"Returns the tmp url for a glance image."},{"line_number":312,"context_line":""},{"line_number":313,"context_line":"    :param context: context"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_9023a0a6","line":310,"in_reply_to":"1abeadc6_7d63421a","updated":"2014-08-26 20:32:57.000000000","message":"After trying to do this, I ended up thinking it might not be necessary in the above place.  This is because the above code requires image_info anyway to write the checksum, and best we can do here is to replace a line glance.swift_temp_url() call with another line images.get_tmp_url_for_glance_image().","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"57b6003d9a75b7d4786eb668c0f4f0b112de7bed","unresolved":false,"context_lines":[{"line_number":314,"context_line":"    :param image_uuid: the UUID of the image in glance"},{"line_number":315,"context_line":"    :returns: the tmp url for the glance image."},{"line_number":316,"context_line":"    \"\"\""},{"line_number":317,"context_line":"    glance_service \u003d service.Service(version\u003d2, context\u003dcontext)"},{"line_number":318,"context_line":"    image_properties \u003d glance_service.show(image_uuid)"},{"line_number":319,"context_line":"    return glance_service.swift_temp_url(image_properties)"},{"line_number":320,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_789a706f","line":317,"updated":"2014-08-26 17:19:46.000000000","message":"ditto versions","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e0237cafca5ac0cdbb33b8cc08a5a0eb856143ad","unresolved":false,"context_lines":[{"line_number":314,"context_line":"    :param image_uuid: the UUID of the image in glance"},{"line_number":315,"context_line":"    :returns: the tmp url for the glance image."},{"line_number":316,"context_line":"    \"\"\""},{"line_number":317,"context_line":"    glance_service \u003d service.Service(version\u003d2, context\u003dcontext)"},{"line_number":318,"context_line":"    image_properties \u003d glance_service.show(image_uuid)"},{"line_number":319,"context_line":"    return glance_service.swift_temp_url(image_properties)"},{"line_number":320,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_f08f7473","line":317,"in_reply_to":"1abeadc6_789a706f","updated":"2014-08-26 20:32:57.000000000","message":"Will add a note here why version\u003d2 is required.","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":330,"context_line":"    kernel cmdline arguments, this method fetches the kernel, ramdisk from"},{"line_number":331,"context_line":"    glance, and builds a bootable ISO image that can be used to boot up the"},{"line_number":332,"context_line":"    baremetal node."},{"line_number":333,"context_line":"    :param context: context"},{"line_number":334,"context_line":"    :param output_filename: the absolute path of the output ISO file"},{"line_number":335,"context_line":"    :param kernel_uuid: glance uuid of the kernel to use"},{"line_number":336,"context_line":"    :param ramdisk_uuid: glance uuid of the ramdisk to use"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_451bef1a","line":333,"updated":"2014-09-03 02:22:27.000000000","message":"nit: would be nice to have a blank line between the description and the parameters.","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":330,"context_line":"    kernel cmdline arguments, this method fetches the kernel, ramdisk from"},{"line_number":331,"context_line":"    glance, and builds a bootable ISO image that can be used to boot up the"},{"line_number":332,"context_line":"    baremetal node."},{"line_number":333,"context_line":"    :param context: context"},{"line_number":334,"context_line":"    :param output_filename: the absolute path of the output ISO file"},{"line_number":335,"context_line":"    :param kernel_uuid: glance uuid of the kernel to use"},{"line_number":336,"context_line":"    :param ramdisk_uuid: glance uuid of the ramdisk to use"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_c939b2a5","line":333,"in_reply_to":"fa98f980_451bef1a","updated":"2014-09-03 05:24:39.000000000","message":"Done","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":334,"context_line":"    :param output_filename: the absolute path of the output ISO file"},{"line_number":335,"context_line":"    :param kernel_uuid: glance uuid of the kernel to use"},{"line_number":336,"context_line":"    :param ramdisk_uuid: glance uuid of the ramdisk to use"},{"line_number":337,"context_line":"    :param root_uuid: uuid of the root filesystem(optional)"},{"line_number":338,"context_line":"    :param kernel_params: a string containing whitespace separated values"},{"line_number":339,"context_line":"        kernel cmdline arguments of the form K\u003dV or K(optional)."},{"line_number":340,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_e5b863e7","line":337,"updated":"2014-09-03 02:22:27.000000000","message":"nit: space before \u0027(optional)\u0027 ?","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":334,"context_line":"    :param output_filename: the absolute path of the output ISO file"},{"line_number":335,"context_line":"    :param kernel_uuid: glance uuid of the kernel to use"},{"line_number":336,"context_line":"    :param ramdisk_uuid: glance uuid of the ramdisk to use"},{"line_number":337,"context_line":"    :param root_uuid: uuid of the root filesystem(optional)"},{"line_number":338,"context_line":"    :param kernel_params: a string containing whitespace separated values"},{"line_number":339,"context_line":"        kernel cmdline arguments of the form K\u003dV or K(optional)."},{"line_number":340,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_e93e768b","line":337,"in_reply_to":"fa98f980_e5b863e7","updated":"2014-09-03 05:24:39.000000000","message":"Done","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":336,"context_line":"    :param ramdisk_uuid: glance uuid of the ramdisk to use"},{"line_number":337,"context_line":"    :param root_uuid: uuid of the root filesystem(optional)"},{"line_number":338,"context_line":"    :param kernel_params: a string containing whitespace separated values"},{"line_number":339,"context_line":"        kernel cmdline arguments of the form K\u003dV or K(optional)."},{"line_number":340,"context_line":"    \"\"\""},{"line_number":341,"context_line":"    with utils.tempdir() as tmpdir:"},{"line_number":342,"context_line":"        kernel_path \u003d os.path.join(tmpdir, kernel_uuid)"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_45c92f77","line":339,"updated":"2014-09-03 02:22:27.000000000","message":"nit: space before \u0027(optional)\u0027 ?","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":336,"context_line":"    :param ramdisk_uuid: glance uuid of the ramdisk to use"},{"line_number":337,"context_line":"    :param root_uuid: uuid of the root filesystem(optional)"},{"line_number":338,"context_line":"    :param kernel_params: a string containing whitespace separated values"},{"line_number":339,"context_line":"        kernel cmdline arguments of the form K\u003dV or K(optional)."},{"line_number":340,"context_line":"    \"\"\""},{"line_number":341,"context_line":"    with utils.tempdir() as tmpdir:"},{"line_number":342,"context_line":"        kernel_path \u003d os.path.join(tmpdir, kernel_uuid)"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_09401a06","line":339,"in_reply_to":"fa98f980_45c92f77","updated":"2014-09-03 05:24:39.000000000","message":"Done","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":337,"context_line":"    :param root_uuid: uuid of the root filesystem(optional)"},{"line_number":338,"context_line":"    :param kernel_params: a string containing whitespace separated values"},{"line_number":339,"context_line":"        kernel cmdline arguments of the form K\u003dV or K(optional)."},{"line_number":340,"context_line":"    \"\"\""},{"line_number":341,"context_line":"    with utils.tempdir() as tmpdir:"},{"line_number":342,"context_line":"        kernel_path \u003d os.path.join(tmpdir, kernel_uuid)"},{"line_number":343,"context_line":"        ramdisk_path \u003d os.path.join(tmpdir, ramdisk_uuid)"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_a5e1fbd1","line":340,"updated":"2014-09-03 02:22:27.000000000","message":"any exceptions raised?","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":337,"context_line":"    :param root_uuid: uuid of the root filesystem(optional)"},{"line_number":338,"context_line":"    :param kernel_params: a string containing whitespace separated values"},{"line_number":339,"context_line":"        kernel cmdline arguments of the form K\u003dV or K(optional)."},{"line_number":340,"context_line":"    \"\"\""},{"line_number":341,"context_line":"    with utils.tempdir() as tmpdir:"},{"line_number":342,"context_line":"        kernel_path \u003d os.path.join(tmpdir, kernel_uuid)"},{"line_number":343,"context_line":"        ramdisk_path \u003d os.path.join(tmpdir, ramdisk_uuid)"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_694a8627","line":340,"in_reply_to":"fa98f980_a5e1fbd1","updated":"2014-09-03 05:24:39.000000000","message":"Done","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"}],"ironic/common/utils.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a62262c6ec070b7844e2db410e45671892b0168f","unresolved":false,"context_lines":[{"line_number":422,"context_line":"        try:"},{"line_number":423,"context_line":"            os.remove(tmpfile)"},{"line_number":424,"context_line":"        except OSError as e:"},{"line_number":425,"context_line":"            LOG.error(_(\u0027Could not remove tmpfile: %s\u0027), str(e))"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"def mkfs(fs, path, label\u003dNone):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_9f0be97c","line":425,"updated":"2014-08-25 14:28:38.000000000","message":"it is:\n\n import tempfile\n with tempfile.TemporaryFIle() as f:\n    ...","commit_id":"cd6b6f71911d5143d6282b86bdc781f4bcaa7a4d"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"081356a6e97044e29b248b8018cb2c695212a62d","unresolved":false,"context_lines":[{"line_number":422,"context_line":"        try:"},{"line_number":423,"context_line":"            os.remove(tmpfile)"},{"line_number":424,"context_line":"        except OSError as e:"},{"line_number":425,"context_line":"            LOG.error(_(\u0027Could not remove tmpfile: %s\u0027), str(e))"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"def mkfs(fs, path, label\u003dNone):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_9d9be771","line":425,"in_reply_to":"1abeadc6_9f0be97c","updated":"2014-08-26 14:06:02.000000000","message":"Done. Thanks, I didn\u0027t know this.","commit_id":"cd6b6f71911d5143d6282b86bdc781f4bcaa7a4d"}],"ironic/drivers/ilo.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bb08cd720c7e7b101e599c78a696e6b5e3a00bea","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from ironic.drivers.modules.ilo import power"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class IloDriver(base.BaseDriver):"},{"line_number":27,"context_line":"    \"\"\"IloDriver using IloClient interface."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    This driver implements the `core` functionality using"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_5573ed4c","line":26,"updated":"2014-08-14 12:29:24.000000000","message":"I think it should be called like\n\n IloVirtualMediaDriver\n\nto distinguish with future IloAgentDriver and possible IleFakeDriver","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from ironic.drivers.modules.ilo import power"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class IloDriver(base.BaseDriver):"},{"line_number":27,"context_line":"    \"\"\"IloDriver using IloClient interface."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    This driver implements the `core` functionality using"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_e1b431f4","line":26,"in_reply_to":"7ac7a964_5573ed4c","updated":"2014-08-14 16:14:41.000000000","message":"Done","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"ef556d5233c6de238b832e98eaa4cdf61d33ca15","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        self.power \u003d power.IloPower()"},{"line_number":45,"context_line":"        self.deploy \u003d deploy.IloVirtualMediaIscsiDeploy()"},{"line_number":46,"context_line":"        self.rescue \u003d None"},{"line_number":47,"context_line":"        self.console \u003d ipmitool.IPMIShellinaboxConsole()"},{"line_number":48,"context_line":"        self.management \u003d ipmitool.IPMIManagement()"},{"line_number":49,"context_line":"        self.vendor \u003d deploy.VendorPassthru()"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_2e42d6aa","line":46,"updated":"2014-08-29 20:31:06.000000000","message":"Nit: This line not needed","commit_id":"91cb0b81dfae813845861a50654453287810cc17"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"056a092f010286a39a062210cfe5dfe256283177","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        self.power \u003d power.IloPower()"},{"line_number":45,"context_line":"        self.deploy \u003d deploy.IloVirtualMediaIscsiDeploy()"},{"line_number":46,"context_line":"        self.rescue \u003d None"},{"line_number":47,"context_line":"        self.console \u003d ipmitool.IPMIShellinaboxConsole()"},{"line_number":48,"context_line":"        self.management \u003d ipmitool.IPMIManagement()"},{"line_number":49,"context_line":"        self.vendor \u003d deploy.VendorPassthru()"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_ca26a5cd","line":46,"in_reply_to":"1abeadc6_2e42d6aa","updated":"2014-08-30 04:49:34.000000000","message":"Done","commit_id":"91cb0b81dfae813845861a50654453287810cc17"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    \"\"\""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def __init__(self):"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        if not importutils.try_import(\u0027proliantutils\u0027):"},{"line_number":41,"context_line":"            raise exception.DriverLoadError("},{"line_number":42,"context_line":"                    driver\u003dself.__class__.__name__,"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_856794b6","line":39,"updated":"2014-09-03 02:22:27.000000000","message":"nit: do we want this blank line?","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":36,"context_line":"    \"\"\""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    def __init__(self):"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        if not importutils.try_import(\u0027proliantutils\u0027):"},{"line_number":41,"context_line":"            raise exception.DriverLoadError("},{"line_number":42,"context_line":"                    driver\u003dself.__class__.__name__,"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_a99aae6b","line":39,"in_reply_to":"fa98f980_856794b6","updated":"2014-09-03 05:24:39.000000000","message":"Done","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"}],"ironic/drivers/modules/ilo/common.py":[{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"43d29632d024bb41c1639c24ec0aa22db9acc784","unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    fd, token_tmpfile \u003d tempfile.mkstemp()"},{"line_number":186,"context_line":"    os.close(fd)"},{"line_number":187,"context_line":"    utils.write_to_file(token_tmpfile, task.context.auth_token)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    fd, tmpfile \u003d tempfile.mkstemp()"},{"line_number":190,"context_line":"    os.close(fd)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_aebb0b0d","line":187,"updated":"2014-08-14 14:48:05.000000000","message":"This temp file with admin token should be deleted immediately after use.","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    fd, token_tmpfile \u003d tempfile.mkstemp()"},{"line_number":186,"context_line":"    os.close(fd)"},{"line_number":187,"context_line":"    utils.write_to_file(token_tmpfile, task.context.auth_token)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    fd, tmpfile \u003d tempfile.mkstemp()"},{"line_number":190,"context_line":"    os.close(fd)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_01b12df8","line":187,"in_reply_to":"7ac7a964_aebb0b0d","updated":"2014-08-14 16:14:41.000000000","message":"Done","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"43d29632d024bb41c1639c24ec0aa22db9acc784","unresolved":false,"context_lines":[{"line_number":186,"context_line":"    os.close(fd)"},{"line_number":187,"context_line":"    utils.write_to_file(token_tmpfile, task.context.auth_token)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    fd, tmpfile \u003d tempfile.mkstemp()"},{"line_number":190,"context_line":"    os.close(fd)"},{"line_number":191,"context_line":"    files_info \u003d {token_tmpfile: \u0027token\u0027}"},{"line_number":192,"context_line":"    images.create_vfat_image(tmpfile, files_info\u003dfiles_info, parameters\u003dparams)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_6ee4930d","line":189,"updated":"2014-08-14 14:48:05.000000000","message":"And where we delete this tmpfile?","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":186,"context_line":"    os.close(fd)"},{"line_number":187,"context_line":"    utils.write_to_file(token_tmpfile, task.context.auth_token)"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"    fd, tmpfile \u003d tempfile.mkstemp()"},{"line_number":190,"context_line":"    os.close(fd)"},{"line_number":191,"context_line":"    files_info \u003d {token_tmpfile: \u0027token\u0027}"},{"line_number":192,"context_line":"    images.create_vfat_image(tmpfile, files_info\u003dfiles_info, parameters\u003dparams)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_619f4160","line":189,"in_reply_to":"7ac7a964_6ee4930d","updated":"2014-08-14 16:14:41.000000000","message":"Done.  This is missing, I will add it.","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"43d29632d024bb41c1639c24ec0aa22db9acc784","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            object_headers\u003dobject_headers)"},{"line_number":202,"context_line":"    tmp_url \u003d swift_api.get_tmp_url(container, object_name, timeout)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    LOG.debug(\"Uploaded floppy image %(object_name)s to %(container)s for\""},{"line_number":205,"context_line":"        \"deployment.\" % {\u0027object_name\u0027: object_name, \u0027container\u0027: container})"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    return tmp_url"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_4077a6d4","line":204,"updated":"2014-08-14 14:48:05.000000000","message":"Missing space at end of line.","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            object_headers\u003dobject_headers)"},{"line_number":202,"context_line":"    tmp_url \u003d swift_api.get_tmp_url(container, object_name, timeout)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    LOG.debug(\"Uploaded floppy image %(object_name)s to %(container)s for\""},{"line_number":205,"context_line":"        \"deployment.\" % {\u0027object_name\u0027: object_name, \u0027container\u0027: container})"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    return tmp_url"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_819c5d6b","line":204,"in_reply_to":"7ac7a964_4077a6d4","updated":"2014-08-14 16:14:41.000000000","message":"Done","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bb08cd720c7e7b101e599c78a696e6b5e3a00bea","unresolved":false,"context_lines":[{"line_number":202,"context_line":"    tmp_url \u003d swift_api.get_tmp_url(container, object_name, timeout)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    LOG.debug(\"Uploaded floppy image %(object_name)s to %(container)s for\""},{"line_number":205,"context_line":"        \"deployment.\" % {\u0027object_name\u0027: object_name, \u0027container\u0027: container})"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    return tmp_url"},{"line_number":208,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_7ae9b819","line":205,"updated":"2014-08-14 12:29:24.000000000","message":"nit: % -\u003e ,","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":202,"context_line":"    tmp_url \u003d swift_api.get_tmp_url(container, object_name, timeout)"},{"line_number":203,"context_line":""},{"line_number":204,"context_line":"    LOG.debug(\"Uploaded floppy image %(object_name)s to %(container)s for\""},{"line_number":205,"context_line":"        \"deployment.\" % {\u0027object_name\u0027: object_name, \u0027container\u0027: container})"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"    return tmp_url"},{"line_number":208,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_a1887923","line":205,"in_reply_to":"7ac7a964_7ae9b819","updated":"2014-08-14 16:14:41.000000000","message":"Done","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bb08cd720c7e7b101e599c78a696e6b5e3a00bea","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    :param context: context"},{"line_number":214,"context_line":"    :param image_uuid: the UUID of the image in glance"},{"line_number":215,"context_line":"    :param property: the propery whose value is required."},{"line_number":216,"context_line":"    :returns: the value of the property if it exists, otherwise None."},{"line_number":217,"context_line":"    \"\"\""},{"line_number":218,"context_line":"    glance_service \u003d image_service.Service(version\u003d2, context\u003dcontext)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_5ae4fc3a","line":215,"updated":"2014-08-14 12:29:24.000000000","message":"s/propery/property/","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":212,"context_line":""},{"line_number":213,"context_line":"    :param context: context"},{"line_number":214,"context_line":"    :param image_uuid: the UUID of the image in glance"},{"line_number":215,"context_line":"    :param property: the propery whose value is required."},{"line_number":216,"context_line":"    :returns: the value of the property if it exists, otherwise None."},{"line_number":217,"context_line":"    \"\"\""},{"line_number":218,"context_line":"    glance_service \u003d image_service.Service(version\u003d2, context\u003dcontext)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_614901d0","line":215,"in_reply_to":"7ac7a964_5ae4fc3a","updated":"2014-08-14 16:14:41.000000000","message":"Done","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bb08cd720c7e7b101e599c78a696e6b5e3a00bea","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    \"\"\""},{"line_number":218,"context_line":"    glance_service \u003d image_service.Service(version\u003d2, context\u003dcontext)"},{"line_number":219,"context_line":"    iproperties \u003d glance_service.show(image_uuid)[\u0027properties\u0027]"},{"line_number":220,"context_line":"    return iproperties.get(property, None)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"def get_tmp_url_for_glance_image(context, image_uuid):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_3ae74042","line":220,"updated":"2014-08-14 12:29:24.000000000","message":"nit: None is redundant","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":217,"context_line":"    \"\"\""},{"line_number":218,"context_line":"    glance_service \u003d image_service.Service(version\u003d2, context\u003dcontext)"},{"line_number":219,"context_line":"    iproperties \u003d glance_service.show(image_uuid)[\u0027properties\u0027]"},{"line_number":220,"context_line":"    return iproperties.get(property, None)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"def get_tmp_url_for_glance_image(context, image_uuid):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_01884d1e","line":220,"in_reply_to":"7ac7a964_3ae74042","updated":"2014-08-14 16:14:41.000000000","message":"Done","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bb08cd720c7e7b101e599c78a696e6b5e3a00bea","unresolved":false,"context_lines":[{"line_number":220,"context_line":"    return iproperties.get(property, None)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"def get_tmp_url_for_glance_image(context, image_uuid):"},{"line_number":224,"context_line":"    \"\"\"Returns the tmp url for a glance image."},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    :param context: context"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_ba26f066","line":223,"updated":"2014-08-14 12:29:24.000000000","message":"get_glance_image_property and get_tmp_url_for_glance_image are not ILO-specific and should be moved to appropriate place like common/images.py\n\nalso s/tmp/temp/ to match glance_service.swift_temp_url","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":220,"context_line":"    return iproperties.get(property, None)"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"def get_tmp_url_for_glance_image(context, image_uuid):"},{"line_number":224,"context_line":"    \"\"\"Returns the tmp url for a glance image."},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"    :param context: context"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_41a08590","line":223,"in_reply_to":"7ac7a964_ba26f066","updated":"2014-08-14 16:14:41.000000000","message":"Done","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bb08cd720c7e7b101e599c78a696e6b5e3a00bea","unresolved":false,"context_lines":[{"line_number":251,"context_line":"    except ilo_client.IloError as ilo_exception:"},{"line_number":252,"context_line":"        operation \u003d _(\"Inserting virtual media %s\") % device"},{"line_number":253,"context_line":"        raise exception.IloOperationError(operation\u003doperation,"},{"line_number":254,"context_line":"                error\u003dilo_exception)"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"def set_boot_device(node, device):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_1ae4440c","line":254,"updated":"2014-08-14 12:29:24.000000000","message":"I suggest to log something on success","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":251,"context_line":"    except ilo_client.IloError as ilo_exception:"},{"line_number":252,"context_line":"        operation \u003d _(\"Inserting virtual media %s\") % device"},{"line_number":253,"context_line":"        raise exception.IloOperationError(operation\u003doperation,"},{"line_number":254,"context_line":"                error\u003dilo_exception)"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"def set_boot_device(node, device):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_61ad8188","line":254,"in_reply_to":"7ac7a964_1ae4440c","updated":"2014-08-14 16:14:41.000000000","message":"Done","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"43d29632d024bb41c1639c24ec0aa22db9acc784","unresolved":false,"context_lines":[{"line_number":254,"context_line":"                error\u003dilo_exception)"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"def set_boot_device(node, device):"},{"line_number":258,"context_line":"    \"\"\"Sets the node to boot from a device for the next boot."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    :param node: an ironic node object."}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_8efc8f40","line":257,"updated":"2014-08-14 14:48:05.000000000","message":"There is standard ManagementInterface for set/get boot device.","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":254,"context_line":"                error\u003dilo_exception)"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"def set_boot_device(node, device):"},{"line_number":258,"context_line":"    \"\"\"Sets the node to boot from a device for the next boot."},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    :param node: an ironic node object."}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_21d1c9fb","line":257,"in_reply_to":"7ac7a964_8efc8f40","updated":"2014-08-14 16:14:41.000000000","message":"Even though introduction of standard interface is fairly easy, we don\u0027t have a spec right now for doing it.  May be later on in K, we will have a class which will implement ManagementInterface, and at that point of time we will move it there.  We will have an implementation of ManagementInterface which will use iLO to get/set the boot device.","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bb08cd720c7e7b101e599c78a696e6b5e3a00bea","unresolved":false,"context_lines":[{"line_number":290,"context_line":"    :param parameters: the parameters to pass in the virtual floppy image"},{"line_number":291,"context_line":"        in a dictionary.  This is optional."},{"line_number":292,"context_line":"    \"\"\""},{"line_number":293,"context_line":"    LOG.debug(\"Setting up node %s to boot from virtual media\" % task.node.uuid)"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    if parameters:"},{"line_number":296,"context_line":"        floppy_image_tmp_url \u003d _prepare_floppy_image(task, parameters)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_7aba98e2","line":293,"updated":"2014-08-14 12:29:24.000000000","message":"nit: % -\u003e ,","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":290,"context_line":"    :param parameters: the parameters to pass in the virtual floppy image"},{"line_number":291,"context_line":"        in a dictionary.  This is optional."},{"line_number":292,"context_line":"    \"\"\""},{"line_number":293,"context_line":"    LOG.debug(\"Setting up node %s to boot from virtual media\" % task.node.uuid)"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    if parameters:"},{"line_number":296,"context_line":"        floppy_image_tmp_url \u003d _prepare_floppy_image(task, parameters)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_21f8e97b","line":293,"in_reply_to":"7ac7a964_7aba98e2","updated":"2014-08-14 16:14:41.000000000","message":"Done","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bb08cd720c7e7b101e599c78a696e6b5e3a00bea","unresolved":false,"context_lines":[{"line_number":330,"context_line":"        swift_api \u003d swift.SwiftAPI()"},{"line_number":331,"context_line":"        swift_api.delete_object(container, object_name)"},{"line_number":332,"context_line":"    except Exception:"},{"line_number":333,"context_line":"        LOG.error(_LE(\"Error while deleting %(object_name)s from \""},{"line_number":334,"context_line":"                      \"%(container)s.\"),"},{"line_number":335,"context_line":"                  {\u0027object_name\u0027: object_name, \u0027container\u0027: container})"},{"line_number":336,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_fa7b0827","line":333,"updated":"2014-08-14 12:29:24.000000000","message":"LOG.error -\u003e LOG.exception to display traceback","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":330,"context_line":"        swift_api \u003d swift.SwiftAPI()"},{"line_number":331,"context_line":"        swift_api.delete_object(container, object_name)"},{"line_number":332,"context_line":"    except Exception:"},{"line_number":333,"context_line":"        LOG.error(_LE(\"Error while deleting %(object_name)s from \""},{"line_number":334,"context_line":"                      \"%(container)s.\"),"},{"line_number":335,"context_line":"                  {\u0027object_name\u0027: object_name, \u0027container\u0027: container})"},{"line_number":336,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_61f2e19b","line":333,"in_reply_to":"7ac7a964_fa7b0827","updated":"2014-08-14 16:14:41.000000000","message":"Done","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bb08cd720c7e7b101e599c78a696e6b5e3a00bea","unresolved":false,"context_lines":[{"line_number":339,"context_line":"        try:"},{"line_number":340,"context_line":"            ilo_object.eject_virtual_media(device)"},{"line_number":341,"context_line":"        except Exception:"},{"line_number":342,"context_line":"            LOG.error(_LE(\"Error while ejecting virtual media %(device)s from \""},{"line_number":343,"context_line":"                          \"node %(uuid)s.\"),"},{"line_number":344,"context_line":"                      {\u0027device\u0027: device, \u0027uuid\u0027: task.node.uuid})"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_1a79a42f","line":342,"updated":"2014-08-14 12:29:24.000000000","message":"ditto","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":339,"context_line":"        try:"},{"line_number":340,"context_line":"            ilo_object.eject_virtual_media(device)"},{"line_number":341,"context_line":"        except Exception:"},{"line_number":342,"context_line":"            LOG.error(_LE(\"Error while ejecting virtual media %(device)s from \""},{"line_number":343,"context_line":"                          \"node %(uuid)s.\"),"},{"line_number":344,"context_line":"                      {\u0027device\u0027: device, \u0027uuid\u0027: task.node.uuid})"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_c1301559","line":342,"in_reply_to":"7ac7a964_1a79a42f","updated":"2014-08-14 16:14:41.000000000","message":"Done","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"57b6003d9a75b7d4786eb668c0f4f0b112de7bed","unresolved":false,"context_lines":[{"line_number":240,"context_line":"    LOG.debug(\"Attached vmedia device %s successfully\", device)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"def set_boot_device(node, device):"},{"line_number":244,"context_line":"    \"\"\"Sets the node to boot from a device for the next boot."},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    :param node: an ironic node object."}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_33357bdb","line":243,"updated":"2014-08-26 17:19:46.000000000","message":"Shouldn\u0027t this be part of the iLO ManagementInterface?","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e0237cafca5ac0cdbb33b8cc08a5a0eb856143ad","unresolved":false,"context_lines":[{"line_number":240,"context_line":"    LOG.debug(\"Attached vmedia device %s successfully\", device)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"def set_boot_device(node, device):"},{"line_number":244,"context_line":"    \"\"\"Sets the node to boot from a device for the next boot."},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"    :param node: an ironic node object."}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_b04a5c25","line":243,"in_reply_to":"1abeadc6_33357bdb","updated":"2014-08-26 20:32:57.000000000","message":"Currently we don\u0027t have a ilo\u0027s own management interface. Eventhough we use the ipmi one for now, setting the node to boot from CDROM doesn\u0027t boot the node from virtual media.  So we are just using it as above for the time being.  We will propose a management interface later in K and then refactor this code.  Please let me know if it sounds okay.","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f32c40a902ea315ee72a0b53f1b1ef437449aab6","unresolved":false,"context_lines":[{"line_number":314,"context_line":"    try:"},{"line_number":315,"context_line":"        swift_api \u003d swift.SwiftAPI()"},{"line_number":316,"context_line":"        swift_api.delete_object(container, object_name)"},{"line_number":317,"context_line":"    except Exception:"},{"line_number":318,"context_line":"        LOG.exception(_LE(\"Error while deleting %(object_name)s from \""},{"line_number":319,"context_line":"                          \"%(container)s.\"),"},{"line_number":320,"context_line":"                      {\u0027object_name\u0027: object_name, \u0027container\u0027: container})"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_64b9f314","line":317,"updated":"2014-08-26 15:23:49.000000000","message":"Please use custom exception.SwiftOperationError here.","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e0237cafca5ac0cdbb33b8cc08a5a0eb856143ad","unresolved":false,"context_lines":[{"line_number":314,"context_line":"    try:"},{"line_number":315,"context_line":"        swift_api \u003d swift.SwiftAPI()"},{"line_number":316,"context_line":"        swift_api.delete_object(container, object_name)"},{"line_number":317,"context_line":"    except Exception:"},{"line_number":318,"context_line":"        LOG.exception(_LE(\"Error while deleting %(object_name)s from \""},{"line_number":319,"context_line":"                          \"%(container)s.\"),"},{"line_number":320,"context_line":"                      {\u0027object_name\u0027: object_name, \u0027container\u0027: container})"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_10e2302f","line":317,"in_reply_to":"1abeadc6_64b9f314","updated":"2014-08-26 20:32:57.000000000","message":"Done","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f32c40a902ea315ee72a0b53f1b1ef437449aab6","unresolved":false,"context_lines":[{"line_number":320,"context_line":"                      {\u0027object_name\u0027: object_name, \u0027container\u0027: container})"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"    ilo_object \u003d get_ilo_object(task.node)"},{"line_number":323,"context_line":"    for device in [\u0027FLOPPY\u0027, \u0027CDROM\u0027]:"},{"line_number":324,"context_line":"        try:"},{"line_number":325,"context_line":"            ilo_object.eject_virtual_media(device)"},{"line_number":326,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_04f91fc8","line":323,"updated":"2014-08-26 15:23:49.000000000","message":"nit: use tuple (\u0027FLOPPY\u0027, \u0027CDROM\u0027)","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e0237cafca5ac0cdbb33b8cc08a5a0eb856143ad","unresolved":false,"context_lines":[{"line_number":320,"context_line":"                      {\u0027object_name\u0027: object_name, \u0027container\u0027: container})"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"    ilo_object \u003d get_ilo_object(task.node)"},{"line_number":323,"context_line":"    for device in [\u0027FLOPPY\u0027, \u0027CDROM\u0027]:"},{"line_number":324,"context_line":"        try:"},{"line_number":325,"context_line":"            ilo_object.eject_virtual_media(device)"},{"line_number":326,"context_line":"        except Exception:"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_b0dc1c76","line":323,"in_reply_to":"1abeadc6_04f91fc8","updated":"2014-08-26 20:32:57.000000000","message":"Done","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f32c40a902ea315ee72a0b53f1b1ef437449aab6","unresolved":false,"context_lines":[{"line_number":323,"context_line":"    for device in [\u0027FLOPPY\u0027, \u0027CDROM\u0027]:"},{"line_number":324,"context_line":"        try:"},{"line_number":325,"context_line":"            ilo_object.eject_virtual_media(device)"},{"line_number":326,"context_line":"        except Exception:"},{"line_number":327,"context_line":"            LOG.exception(_LE(\"Error while ejecting virtual media %(device)s \""},{"line_number":328,"context_line":"                              \"from node %(uuid)s.\"),"},{"line_number":329,"context_line":"                          {\u0027device\u0027: device, \u0027uuid\u0027: task.node.uuid})"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_c441e70c","line":326,"updated":"2014-08-26 15:23:49.000000000","message":"Ditto, use ILO exception.","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e0237cafca5ac0cdbb33b8cc08a5a0eb856143ad","unresolved":false,"context_lines":[{"line_number":323,"context_line":"    for device in [\u0027FLOPPY\u0027, \u0027CDROM\u0027]:"},{"line_number":324,"context_line":"        try:"},{"line_number":325,"context_line":"            ilo_object.eject_virtual_media(device)"},{"line_number":326,"context_line":"        except Exception:"},{"line_number":327,"context_line":"            LOG.exception(_LE(\"Error while ejecting virtual media %(device)s \""},{"line_number":328,"context_line":"                              \"from node %(uuid)s.\"),"},{"line_number":329,"context_line":"                          {\u0027device\u0027: device, \u0027uuid\u0027: task.node.uuid})"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_50d3c85e","line":326,"in_reply_to":"1abeadc6_c441e70c","updated":"2014-08-26 20:32:57.000000000","message":"Done","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"ef556d5233c6de238b832e98eaa4cdf61d33ca15","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    :param node: the node for which image name is to be provided."},{"line_number":178,"context_line":"    \"\"\""},{"line_number":179,"context_line":"    return \u0027image-\u0027 + node.uuid"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"def _prepare_floppy_image(task, params):"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_6e4f6e92","line":179,"updated":"2014-08-29 20:31:06.000000000","message":"this line should be consistent with line 61 of https://review.openstack.org/#/c/113865/14/ironic/drivers/modules/ilo/deploy.py","commit_id":"91cb0b81dfae813845861a50654453287810cc17"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"056a092f010286a39a062210cfe5dfe256283177","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    :param node: the node for which image name is to be provided."},{"line_number":178,"context_line":"    \"\"\""},{"line_number":179,"context_line":"    return \u0027image-\u0027 + node.uuid"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"def _prepare_floppy_image(task, params):"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_aa3c09e2","line":179,"in_reply_to":"1abeadc6_6e4f6e92","updated":"2014-08-30 04:49:34.000000000","message":"Done","commit_id":"91cb0b81dfae813845861a50654453287810cc17"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1f6bce5a49d8af295c6d862b707ac8a1d16a7b3c","unresolved":false,"context_lines":[{"line_number":304,"context_line":"    floppy image if it exists in CONF.ilo.swift_ilo_container.  It also"},{"line_number":305,"context_line":"    ejects both virtual media cdrom and virtual media floppy."},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"    :param task: a TaskManager instance containing the node to act on."},{"line_number":308,"context_line":"    \"\"\""},{"line_number":309,"context_line":"    LOG.debug(\"Cleaning up node %s after virtual media boot\" % task.node.uuid)"},{"line_number":310,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"fa98f980_ef64dd23","line":307,"updated":"2014-09-02 10:37:44.000000000","message":"nit: :raises: section missing","commit_id":"2cb3b089630d723d3d203594dd60d25f6da47d67"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"31156f685600681f69546eebf233636e90bbeaa4","unresolved":false,"context_lines":[{"line_number":304,"context_line":"    floppy image if it exists in CONF.ilo.swift_ilo_container.  It also"},{"line_number":305,"context_line":"    ejects both virtual media cdrom and virtual media floppy."},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"    :param task: a TaskManager instance containing the node to act on."},{"line_number":308,"context_line":"    \"\"\""},{"line_number":309,"context_line":"    LOG.debug(\"Cleaning up node %s after virtual media boot\" % task.node.uuid)"},{"line_number":310,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"fa98f980_153cd292","line":307,"in_reply_to":"fa98f980_1a3161a2","updated":"2014-09-02 11:15:40.000000000","message":"right, sorry","commit_id":"2cb3b089630d723d3d203594dd60d25f6da47d67"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0174986a8e7f4825ec99011ee7c42f05f91d027f","unresolved":false,"context_lines":[{"line_number":304,"context_line":"    floppy image if it exists in CONF.ilo.swift_ilo_container.  It also"},{"line_number":305,"context_line":"    ejects both virtual media cdrom and virtual media floppy."},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"    :param task: a TaskManager instance containing the node to act on."},{"line_number":308,"context_line":"    \"\"\""},{"line_number":309,"context_line":"    LOG.debug(\"Cleaning up node %s after virtual media boot\" % task.node.uuid)"},{"line_number":310,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"fa98f980_1a3161a2","line":307,"in_reply_to":"fa98f980_ef64dd23","updated":"2014-09-02 10:47:48.000000000","message":"This method is not expected to raise anything  It captures all the possible exceptions, logs them are goes ahead.  Is that what you meant ? Or am I missing something :)","commit_id":"2cb3b089630d723d3d203594dd60d25f6da47d67"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":173,"context_line":""},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"def _get_floppy_image_name(node):"},{"line_number":176,"context_line":"    \"\"\"Given the floppy image name for a given node."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    :param node: the node for which image name is to be provided."},{"line_number":179,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_45cdac84","line":176,"updated":"2014-09-03 02:22:27.000000000","message":"Do you mean \u0027Given\u0027 -\u003e \u0027Return\u0027?","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":173,"context_line":""},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"def _get_floppy_image_name(node):"},{"line_number":176,"context_line":"    \"\"\"Given the floppy image name for a given node."},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"    :param node: the node for which image name is to be provided."},{"line_number":179,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_c98a921a","line":176,"in_reply_to":"fa98f980_45cdac84","updated":"2014-09-03 05:24:39.000000000","message":"Done","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"def _prepare_floppy_image(task, params):"},{"line_number":184,"context_line":"    \"\"\"Prepares the floppy image for passing the parameters."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    :param task: a TaskManager instance containing the node to act on."},{"line_number":187,"context_line":"    :param params: a dictionary containing \u0027parameter name\u0027-\u003e\u0027value\u0027 mapping"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_05164455","line":184,"updated":"2014-09-03 02:22:27.000000000","message":"This description doesn\u0027t seem sufficient.\n\nIt looks like it creates a vfat/floppy image, stores it in Swift (for a certain time period), and returns a Swift temporary URL for accessing that image in Swift.","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"def _prepare_floppy_image(task, params):"},{"line_number":184,"context_line":"    \"\"\"Prepares the floppy image for passing the parameters."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    :param task: a TaskManager instance containing the node to act on."},{"line_number":187,"context_line":"    :param params: a dictionary containing \u0027parameter name\u0027-\u003e\u0027value\u0027 mapping"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_e98f5628","line":184,"in_reply_to":"fa98f980_05164455","updated":"2014-09-03 05:24:39.000000000","message":"Done","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        ilo_object.insert_virtual_media(url, device\u003ddevice)"},{"line_number":232,"context_line":"        ilo_object.set_vm_status(device\u003ddevice, boot_option\u003d\u0027CONNECT\u0027,"},{"line_number":233,"context_line":"                write_protect\u003d\u0027YES\u0027)"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"    except ilo_client.IloError as ilo_exception:"},{"line_number":236,"context_line":"        operation \u003d _(\"Inserting virtual media %s\") % device"},{"line_number":237,"context_line":"        raise exception.IloOperationError(operation\u003doperation,"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_4895c385","line":234,"updated":"2014-09-03 02:22:27.000000000","message":"wondering... why the blank line?","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        ilo_object.insert_virtual_media(url, device\u003ddevice)"},{"line_number":232,"context_line":"        ilo_object.set_vm_status(device\u003ddevice, boot_option\u003d\u0027CONNECT\u0027,"},{"line_number":233,"context_line":"                write_protect\u003d\u0027YES\u0027)"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"    except ilo_client.IloError as ilo_exception:"},{"line_number":236,"context_line":"        operation \u003d _(\"Inserting virtual media %s\") % device"},{"line_number":237,"context_line":"        raise exception.IloOperationError(operation\u003doperation,"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_697b6628","line":234,"in_reply_to":"fa98f980_4895c385","updated":"2014-09-03 05:24:39.000000000","message":"Done","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"21d2b90cca1a3de5c67cdf6aa58b393239d6de1f","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        raise exception.IloOperationError(operation\u003doperation,"},{"line_number":238,"context_line":"                error\u003dilo_exception)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    LOG.debug(\"Attached vmedia device %s successfully\", device)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"def set_boot_device(node, device):"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_3b92969f","line":240,"updated":"2014-09-02 19:27:40.000000000","message":"Nit: I think this would be better as info, like set_boot_device below.","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        raise exception.IloOperationError(operation\u003doperation,"},{"line_number":238,"context_line":"                error\u003dilo_exception)"},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"    LOG.debug(\"Attached vmedia device %s successfully\", device)"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"def set_boot_device(node, device):"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_e996763e","line":240,"in_reply_to":"fa98f980_3b92969f","updated":"2014-09-03 05:24:39.000000000","message":"Done","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    try:"},{"line_number":253,"context_line":"        ilo_object.set_one_time_boot(device)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    except ilo_client.IloError as ilo_exception:"},{"line_number":256,"context_line":"        operation \u003d _(\"Setting %s as boot device\") % device"},{"line_number":257,"context_line":"        raise exception.IloOperationError(operation\u003doperation,"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_eb24b161","line":254,"updated":"2014-09-03 02:22:27.000000000","message":"I suppose you like blank lines ;)","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":251,"context_line":""},{"line_number":252,"context_line":"    try:"},{"line_number":253,"context_line":"        ilo_object.set_one_time_boot(device)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    except ilo_client.IloError as ilo_exception:"},{"line_number":256,"context_line":"        operation \u003d _(\"Setting %s as boot device\") % device"},{"line_number":257,"context_line":"        raise exception.IloOperationError(operation\u003doperation,"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_09981a69","line":254,"in_reply_to":"fa98f980_eb24b161","updated":"2014-09-03 05:24:39.000000000","message":"Done. :)","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":279,"context_line":"    LOG.debug(\"Setting up node %s to boot from virtual media\", task.node.uuid)"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    if parameters:"},{"line_number":282,"context_line":"        floppy_image_temp_url \u003d _prepare_floppy_image(task, parameters)"},{"line_number":283,"context_line":"        attach_vmedia(task.node, \u0027FLOPPY\u0027, floppy_image_temp_url)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    boot_iso_temp_url \u003d None"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_8b9a456c","line":282,"updated":"2014-09-03 02:22:27.000000000","message":"_prepare_floppy_image() could raise some exceptions (or at least one from what I recall). Just wondering where/if it should be handled.","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":279,"context_line":"    LOG.debug(\"Setting up node %s to boot from virtual media\", task.node.uuid)"},{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    if parameters:"},{"line_number":282,"context_line":"        floppy_image_temp_url \u003d _prepare_floppy_image(task, parameters)"},{"line_number":283,"context_line":"        attach_vmedia(task.node, \u0027FLOPPY\u0027, floppy_image_temp_url)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    boot_iso_temp_url \u003d None"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_89ab2a74","line":282,"in_reply_to":"fa98f980_8b9a456c","updated":"2014-09-03 05:24:39.000000000","message":"All the functions raise ironic exceptions inside raise ironic exceptions and they can be propagated upwards so that conductor can catch it and log it as the exception from the driver.  I think we needn\u0027t catch those exceptions here.  Please let me know if this looks fine.","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    if parameters:"},{"line_number":282,"context_line":"        floppy_image_temp_url \u003d _prepare_floppy_image(task, parameters)"},{"line_number":283,"context_line":"        attach_vmedia(task.node, \u0027FLOPPY\u0027, floppy_image_temp_url)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    boot_iso_temp_url \u003d None"},{"line_number":286,"context_line":"    if boot_iso.startswith(\u0027swift:\u0027):"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_2ba5d9a1","line":283,"updated":"2014-09-03 02:22:27.000000000","message":"this can raise IloOperationError. Maybe add :raises: to the docstring above.\n\nPlease check if any other calls here could raise exceptions. Thx.","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":280,"context_line":""},{"line_number":281,"context_line":"    if parameters:"},{"line_number":282,"context_line":"        floppy_image_temp_url \u003d _prepare_floppy_image(task, parameters)"},{"line_number":283,"context_line":"        attach_vmedia(task.node, \u0027FLOPPY\u0027, floppy_image_temp_url)"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"    boot_iso_temp_url \u003d None"},{"line_number":286,"context_line":"    if boot_iso.startswith(\u0027swift:\u0027):"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_49cce26a","line":283,"in_reply_to":"fa98f980_2ba5d9a1","updated":"2014-09-03 05:24:39.000000000","message":"Done","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":286,"context_line":"    if boot_iso.startswith(\u0027swift:\u0027):"},{"line_number":287,"context_line":"        swift_api \u003d swift.SwiftAPI()"},{"line_number":288,"context_line":"        container \u003d CONF.ilo.swift_ilo_container"},{"line_number":289,"context_line":"        object_name \u003d boot_iso[6:]"},{"line_number":290,"context_line":"        timeout \u003d CONF.ilo.swift_object_expiry_timeout"},{"line_number":291,"context_line":"        boot_iso_temp_url \u003d swift_api.get_temp_url(container, object_name,"},{"line_number":292,"context_line":"                timeout)"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_4b6cdd35","line":289,"updated":"2014-09-03 02:22:27.000000000","message":"hmm. This is prone to future errors, eg if someone changes it from \u0027swift:\u0027 to something else and misses updating this. Ditto for the \u00277:\u0027 below.\n\nI don\u0027t know, what about parsing boot_iso into two parts first (assuming it is \u003ckey\u003e:\u003cvalue\u003e), and go from there.","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":286,"context_line":"    if boot_iso.startswith(\u0027swift:\u0027):"},{"line_number":287,"context_line":"        swift_api \u003d swift.SwiftAPI()"},{"line_number":288,"context_line":"        container \u003d CONF.ilo.swift_ilo_container"},{"line_number":289,"context_line":"        object_name \u003d boot_iso[6:]"},{"line_number":290,"context_line":"        timeout \u003d CONF.ilo.swift_object_expiry_timeout"},{"line_number":291,"context_line":"        boot_iso_temp_url \u003d swift_api.get_temp_url(container, object_name,"},{"line_number":292,"context_line":"                timeout)"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_49fa2276","line":289,"in_reply_to":"fa98f980_4b6cdd35","updated":"2014-09-03 05:24:39.000000000","message":"I would think effect is same even if do parse it as \u003ckey\u003e:\u003cvalue\u003e first - because we would ultimately need to compare if we have \u0027swift\u0027 or \u0027glance\u0027 as the key and act accordingly.  The only extra thing we can do is to do case-insensitive matching.\n\nSince this is all internal within the ilo driver - the user doesn\u0027t deal with this in any way, I would prefer we keep this until we have a better alternative of parsing this.  Please let me know if this looks fine.","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    This method cleans up a node after a virtual media boot.  It deletes the"},{"line_number":305,"context_line":"    floppy image if it exists in CONF.ilo.swift_ilo_container.  It also"},{"line_number":306,"context_line":"    ejects both virtual media cdrom and virtual media floppy."},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    :param task: a TaskManager instance containing the node to act on."},{"line_number":309,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_0b39f540","line":306,"updated":"2014-09-03 02:22:27.000000000","message":"I don\u0027t know if anyone cares (I don\u0027t), but you have two spaces between your sentences ;)","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":303,"context_line":""},{"line_number":304,"context_line":"    This method cleans up a node after a virtual media boot.  It deletes the"},{"line_number":305,"context_line":"    floppy image if it exists in CONF.ilo.swift_ilo_container.  It also"},{"line_number":306,"context_line":"    ejects both virtual media cdrom and virtual media floppy."},{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    :param task: a TaskManager instance containing the node to act on."},{"line_number":309,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_c92d3200","line":306,"in_reply_to":"fa98f980_0b39f540","updated":"2014-09-03 05:24:39.000000000","message":"Done","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    :param task: a TaskManager instance containing the node to act on."},{"line_number":309,"context_line":"    \"\"\""},{"line_number":310,"context_line":"    LOG.debug(\"Cleaning up node %s after virtual media boot\" % task.node.uuid)"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"    container \u003d CONF.ilo.swift_ilo_container"},{"line_number":313,"context_line":"    object_name \u003d _get_floppy_image_name(task.node)"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_8be08597","line":310,"updated":"2014-09-03 02:22:27.000000000","message":"better to use \u0027,\u0027 instead of \u0027%\u0027 [1]\n\n[1] https://stackoverflow.com/questions/11615053/why-use-multiple-arguments-to-log-instead-of-interpolation","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":307,"context_line":""},{"line_number":308,"context_line":"    :param task: a TaskManager instance containing the node to act on."},{"line_number":309,"context_line":"    \"\"\""},{"line_number":310,"context_line":"    LOG.debug(\"Cleaning up node %s after virtual media boot\" % task.node.uuid)"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"    container \u003d CONF.ilo.swift_ilo_container"},{"line_number":313,"context_line":"    object_name \u003d _get_floppy_image_name(task.node)"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_29395e41","line":310,"in_reply_to":"fa98f980_8be08597","updated":"2014-09-03 05:24:39.000000000","message":"Done","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":317,"context_line":"    except exception.SwiftOperationError:"},{"line_number":318,"context_line":"        LOG.exception(_LE(\"Error while deleting %(object_name)s from \""},{"line_number":319,"context_line":"                          \"%(container)s.\"),"},{"line_number":320,"context_line":"                      {\u0027object_name\u0027: object_name, \u0027container\u0027: container})"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"    ilo_object \u003d get_ilo_object(task.node)"},{"line_number":323,"context_line":"    for device in (\u0027FLOPPY\u0027, \u0027CDROM\u0027):"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_0ba3b54f","line":320,"updated":"2014-09-03 02:22:27.000000000","message":"why not log the SwiftOperationError? (You logged the IloError below.)","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":317,"context_line":"    except exception.SwiftOperationError:"},{"line_number":318,"context_line":"        LOG.exception(_LE(\"Error while deleting %(object_name)s from \""},{"line_number":319,"context_line":"                          \"%(container)s.\"),"},{"line_number":320,"context_line":"                      {\u0027object_name\u0027: object_name, \u0027container\u0027: container})"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"    ilo_object \u003d get_ilo_object(task.node)"},{"line_number":323,"context_line":"    for device in (\u0027FLOPPY\u0027, \u0027CDROM\u0027):"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_a9446eb7","line":320,"in_reply_to":"fa98f980_0ba3b54f","updated":"2014-09-03 05:24:39.000000000","message":"Done","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"e00581eb0f57e94789cdbdcf10c792f505285c18","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        with tempfile.NamedTemporaryFile() as vfat_image_tmpfile_obj:"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"            vfat_image_tmpfile \u003d vfat_image_tmpfile_obj.name"},{"line_number":204,"context_line":"            utils.write_to_file(token_tmpfile, task.context.auth_token)"},{"line_number":205,"context_line":"            files_info \u003d {token_tmpfile: \u0027token\u0027}"},{"line_number":206,"context_line":"            images.create_vfat_image(vfat_image_tmpfile,"},{"line_number":207,"context_line":"                                     files_info\u003dfiles_info,"}],"source_content_type":"text/x-python","patch_set":21,"id":"fa98f980_9360b3d0","line":204,"updated":"2014-09-03 08:03:58.000000000","message":"If config auth_strategy\u003dnoauth auth_token will be None and TypeError will be raised from write().","commit_id":"f7e687ba8136c19bbc4b8cd1cd96bb718caa4b3c"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"859d812538b9d6f0651f7195df929ed773ea8d1b","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        with tempfile.NamedTemporaryFile() as vfat_image_tmpfile_obj:"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"            vfat_image_tmpfile \u003d vfat_image_tmpfile_obj.name"},{"line_number":204,"context_line":"            utils.write_to_file(token_tmpfile, task.context.auth_token)"},{"line_number":205,"context_line":"            files_info \u003d {token_tmpfile: \u0027token\u0027}"},{"line_number":206,"context_line":"            images.create_vfat_image(vfat_image_tmpfile,"},{"line_number":207,"context_line":"                                     files_info\u003dfiles_info,"}],"source_content_type":"text/x-python","patch_set":21,"id":"fa98f980_8e6088d0","line":204,"in_reply_to":"fa98f980_9360b3d0","updated":"2014-09-03 08:13:56.000000000","message":"Done","commit_id":"f7e687ba8136c19bbc4b8cd1cd96bb718caa4b3c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bf4ac9da316f4815b531a890a6ee5a7c72d9f3b0","unresolved":false,"context_lines":[{"line_number":214,"context_line":"                                     parameters\u003dparams)"},{"line_number":215,"context_line":"        finally:"},{"line_number":216,"context_line":"            if token_tmpfile:"},{"line_number":217,"context_line":"                utils.unlink_without_raise(token_tmpfile)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        container \u003d CONF.ilo.swift_ilo_container"},{"line_number":220,"context_line":"        object_name \u003d _get_floppy_image_name(task.node)"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa98f980_1968611c","line":217,"updated":"2014-09-03 10:48:24.000000000","message":"nit: closing token_tmpfile_obj should be enough for deleting it and seems better approach to me","commit_id":"bfa9fe551c28a874ef875c288f1170b123b39002"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"eeab9ec9ed6e6600cd43e554530fc57ea7d5b5e2","unresolved":false,"context_lines":[{"line_number":214,"context_line":"                                     parameters\u003dparams)"},{"line_number":215,"context_line":"        finally:"},{"line_number":216,"context_line":"            if token_tmpfile:"},{"line_number":217,"context_line":"                utils.unlink_without_raise(token_tmpfile)"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        container \u003d CONF.ilo.swift_ilo_container"},{"line_number":220,"context_line":"        object_name \u003d _get_floppy_image_name(task.node)"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa98f980_6a97c948","line":217,"in_reply_to":"fa98f980_1968611c","updated":"2014-09-03 12:15:44.000000000","message":"Done","commit_id":"bfa9fe551c28a874ef875c288f1170b123b39002"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"c3c18babc76389be85d8551974b11cc0e3de7c17","unresolved":false,"context_lines":[{"line_number":302,"context_line":"    if boot_iso.startswith(\u0027swift:\u0027):"},{"line_number":303,"context_line":"        swift_api \u003d swift.SwiftAPI()"},{"line_number":304,"context_line":"        container \u003d CONF.ilo.swift_ilo_container"},{"line_number":305,"context_line":"        object_name \u003d boot_iso[6:]"},{"line_number":306,"context_line":"        timeout \u003d CONF.ilo.swift_object_expiry_timeout"},{"line_number":307,"context_line":"        boot_iso_temp_url \u003d swift_api.get_temp_url(container, object_name,"},{"line_number":308,"context_line":"                timeout)"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa98f980_6d80c046","line":305,"updated":"2014-09-03 15:28:50.000000000","message":"continuing the comment from patch 19. if you extract key:value from boot_iso, you can check if key \u003d\u003d \u0027swift\u0027, and then here you could do object_name \u003d value. There wouldn\u0027t be a need to get the value via boot_iso[6:], and if for whatever reason the key changes from \u0027swift\u0027 to \u0027foo\u0027, you cna change the code to check for key\u003d\u0027foo\u0027, without having to remember to change boot_iso[4:].","commit_id":"bfa9fe551c28a874ef875c288f1170b123b39002"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"200bba8bbd21706f6cdd8a4209099e91dd3bff8b","unresolved":false,"context_lines":[{"line_number":302,"context_line":"    if boot_iso.startswith(\u0027swift:\u0027):"},{"line_number":303,"context_line":"        swift_api \u003d swift.SwiftAPI()"},{"line_number":304,"context_line":"        container \u003d CONF.ilo.swift_ilo_container"},{"line_number":305,"context_line":"        object_name \u003d boot_iso[6:]"},{"line_number":306,"context_line":"        timeout \u003d CONF.ilo.swift_object_expiry_timeout"},{"line_number":307,"context_line":"        boot_iso_temp_url \u003d swift_api.get_temp_url(container, object_name,"},{"line_number":308,"context_line":"                timeout)"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa98f980_5ca9ecdd","line":305,"in_reply_to":"fa98f980_6d80c046","updated":"2014-09-03 15:32:46.000000000","message":"Done","commit_id":"bfa9fe551c28a874ef875c288f1170b123b39002"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b9a0cf8e8e905aaa40b0708e981dc284e7ee7bde","unresolved":false,"context_lines":[{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    LOG.info(_LI(\"Attached virtual media %s successfully.\"), device)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"def set_boot_device(node, device):"},{"line_number":259,"context_line":"    \"\"\"Sets the node to boot from a device for the next boot."},{"line_number":260,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"fa98f980_a4471a76","line":257,"updated":"2014-09-03 17:28:31.000000000","message":"nit: Might worth adding a TODO on top of this function about porting it to the ManagementInterface later on","commit_id":"13ed8f8f54b0b2de18952c2f2d513e8bcc3ab9d0"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"78ea37809ca1d5881f7caa21297ad671b8315f94","unresolved":false,"context_lines":[{"line_number":254,"context_line":""},{"line_number":255,"context_line":"    LOG.info(_LI(\"Attached virtual media %s successfully.\"), device)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"def set_boot_device(node, device):"},{"line_number":259,"context_line":"    \"\"\"Sets the node to boot from a device for the next boot."},{"line_number":260,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"fa98f980_528ab01b","line":257,"in_reply_to":"fa98f980_a4471a76","updated":"2014-09-03 18:21:07.000000000","message":"Done","commit_id":"13ed8f8f54b0b2de18952c2f2d513e8bcc3ab9d0"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"79cc0caf9b614bb66f44f22327e562e747863272","unresolved":false,"context_lines":[{"line_number":271,"context_line":"        raise exception.IloOperationError(operation\u003doperation,"},{"line_number":272,"context_line":"                                          error\u003dilo_exception)"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"    LOG.info(_LI(\"Node %(uuid)s set to boot from %(device)s.\"),"},{"line_number":275,"context_line":"             {\u0027uuid\u0027: node.uuid, \u0027device\u0027: device})"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"fa98f980_841e965d","line":274,"updated":"2014-09-03 17:42:38.000000000","message":"Nit: maybe log.debug here","commit_id":"13ed8f8f54b0b2de18952c2f2d513e8bcc3ab9d0"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"78ea37809ca1d5881f7caa21297ad671b8315f94","unresolved":false,"context_lines":[{"line_number":271,"context_line":"        raise exception.IloOperationError(operation\u003doperation,"},{"line_number":272,"context_line":"                                          error\u003dilo_exception)"},{"line_number":273,"context_line":""},{"line_number":274,"context_line":"    LOG.info(_LI(\"Node %(uuid)s set to boot from %(device)s.\"),"},{"line_number":275,"context_line":"             {\u0027uuid\u0027: node.uuid, \u0027device\u0027: device})"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"fa98f980_5291d045","line":274,"in_reply_to":"fa98f980_841e965d","updated":"2014-09-03 18:21:07.000000000","message":"Done","commit_id":"13ed8f8f54b0b2de18952c2f2d513e8bcc3ab9d0"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"79cc0caf9b614bb66f44f22327e562e747863272","unresolved":false,"context_lines":[{"line_number":292,"context_line":"    :raises: ImageCreationFailed, if it failed while creating the floppy image."},{"line_number":293,"context_line":"    :raises: IloOperationError, if attaching virtual media failed."},{"line_number":294,"context_line":"    \"\"\""},{"line_number":295,"context_line":"    LOG.debug(\"Setting up node %s to boot from virtual media\", task.node.uuid)"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    if parameters:"},{"line_number":298,"context_line":"        floppy_image_temp_url \u003d _prepare_floppy_image(task, parameters)"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa98f980_242faa89","line":295,"updated":"2014-09-03 17:42:38.000000000","message":"Nit: maybe log.info here","commit_id":"13ed8f8f54b0b2de18952c2f2d513e8bcc3ab9d0"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"78ea37809ca1d5881f7caa21297ad671b8315f94","unresolved":false,"context_lines":[{"line_number":292,"context_line":"    :raises: ImageCreationFailed, if it failed while creating the floppy image."},{"line_number":293,"context_line":"    :raises: IloOperationError, if attaching virtual media failed."},{"line_number":294,"context_line":"    \"\"\""},{"line_number":295,"context_line":"    LOG.debug(\"Setting up node %s to boot from virtual media\", task.node.uuid)"},{"line_number":296,"context_line":""},{"line_number":297,"context_line":"    if parameters:"},{"line_number":298,"context_line":"        floppy_image_temp_url \u003d _prepare_floppy_image(task, parameters)"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa98f980_1274a834","line":295,"in_reply_to":"fa98f980_242faa89","updated":"2014-09-03 18:21:07.000000000","message":"Done","commit_id":"13ed8f8f54b0b2de18952c2f2d513e8bcc3ab9d0"}],"ironic/drivers/modules/ilo/deploy.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bb08cd720c7e7b101e599c78a696e6b5e3a00bea","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"def _create_boot_iso(context, tmpdir, boot_iso_object_name, kernel_uuid,"},{"line_number":78,"context_line":"        ramdisk_uuid, root_uuid, kernel_params):"},{"line_number":79,"context_line":"    \"\"\"Creates a bootable ISO image to boot with the provided kernel and"},{"line_number":80,"context_line":"    ramdisk."},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_fada28e8","line":78,"updated":"2014-08-14 12:29:24.000000000","message":"I guess this function can be moved to common/images as well, as it does not have anything iLO-specific.","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"def _create_boot_iso(context, tmpdir, boot_iso_object_name, kernel_uuid,"},{"line_number":78,"context_line":"        ramdisk_uuid, root_uuid, kernel_params):"},{"line_number":79,"context_line":"    \"\"\"Creates a bootable ISO image to boot with the provided kernel and"},{"line_number":80,"context_line":"    ramdisk."},{"line_number":81,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_c11735a2","line":78,"in_reply_to":"7ac7a964_fada28e8","updated":"2014-08-14 16:14:41.000000000","message":"Done","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bb08cd720c7e7b101e599c78a696e6b5e3a00bea","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    The kernel is booted specifying the given root_uuid for the"},{"line_number":83,"context_line":"    root partition, and is also appended with the given kernel parameters."},{"line_number":84,"context_line":"    :param context: context"},{"line_number":85,"context_line":"    :param tmpdir: the dir to fetch kernel and ramdisk and build the boot ISO"},{"line_number":86,"context_line":"    :param boot_iso_object_name: the desired filename for boot ISO"},{"line_number":87,"context_line":"    :param kernel_uuid: glance uuid of the kernel to use"},{"line_number":88,"context_line":"    :param ramdisk_uuid: glance uuid of the ramdisk to use"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_5a74fcfc","line":85,"updated":"2014-08-14 12:29:24.000000000","message":"tmpdir can be created inside this function and deleted also here. It\u0027s better to accept destination file name as parameter","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":82,"context_line":"    The kernel is booted specifying the given root_uuid for the"},{"line_number":83,"context_line":"    root partition, and is also appended with the given kernel parameters."},{"line_number":84,"context_line":"    :param context: context"},{"line_number":85,"context_line":"    :param tmpdir: the dir to fetch kernel and ramdisk and build the boot ISO"},{"line_number":86,"context_line":"    :param boot_iso_object_name: the desired filename for boot ISO"},{"line_number":87,"context_line":"    :param kernel_uuid: glance uuid of the kernel to use"},{"line_number":88,"context_line":"    :param ramdisk_uuid: glance uuid of the ramdisk to use"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_81a7fd4e","line":85,"in_reply_to":"7ac7a964_5a74fcfc","updated":"2014-08-14 16:14:41.000000000","message":"Done","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bb08cd720c7e7b101e599c78a696e6b5e3a00bea","unresolved":false,"context_lines":[{"line_number":131,"context_line":"    boot_iso_uuid \u003d ilo_common.get_glance_image_property(task.context,"},{"line_number":132,"context_line":"            image_uuid, \u0027boot_iso\u0027)"},{"line_number":133,"context_line":"    if boot_iso_uuid:"},{"line_number":134,"context_line":"        LOG.debug(\"Found boot_iso %s in glance\" % boot_iso_uuid)"},{"line_number":135,"context_line":"        return \u0027glance:\u0027 + boot_iso_uuid"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    kernel_uuid \u003d ilo_common.get_glance_image_property(task.context,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_1ad8c4ee","line":134,"updated":"2014-08-14 12:29:24.000000000","message":"nit: % -\u003e ,","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":131,"context_line":"    boot_iso_uuid \u003d ilo_common.get_glance_image_property(task.context,"},{"line_number":132,"context_line":"            image_uuid, \u0027boot_iso\u0027)"},{"line_number":133,"context_line":"    if boot_iso_uuid:"},{"line_number":134,"context_line":"        LOG.debug(\"Found boot_iso %s in glance\" % boot_iso_uuid)"},{"line_number":135,"context_line":"        return \u0027glance:\u0027 + boot_iso_uuid"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    kernel_uuid \u003d ilo_common.get_glance_image_property(task.context,"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_41232505","line":134,"in_reply_to":"7ac7a964_1ad8c4ee","updated":"2014-08-14 16:14:41.000000000","message":"Done","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bb08cd720c7e7b101e599c78a696e6b5e3a00bea","unresolved":false,"context_lines":[{"line_number":138,"context_line":"            image_uuid, \u0027kernel_id\u0027)"},{"line_number":139,"context_line":"    ramdisk_uuid \u003d ilo_common.get_glance_image_property(task.context,"},{"line_number":140,"context_line":"            image_uuid, \u0027ramdisk_id\u0027)"},{"line_number":141,"context_line":"    if kernel_uuid and ramdisk_uuid:"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        # Option 2 - Check if a boot_iso was already created."},{"line_number":144,"context_line":"        swift_api \u003d swift.SwiftAPI()"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_ba443075","line":141,"updated":"2014-08-14 12:29:24.000000000","message":"I suggest reversing this:\n\n if not kernel_uuid or not ramdisk_uuid:\n   return\n\n... and now you see that, if these values are empty, user will get no reasonable debug info and `None` will be returned. Needs logging and maybe ven raising an exception.","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":138,"context_line":"            image_uuid, \u0027kernel_id\u0027)"},{"line_number":139,"context_line":"    ramdisk_uuid \u003d ilo_common.get_glance_image_property(task.context,"},{"line_number":140,"context_line":"            image_uuid, \u0027ramdisk_id\u0027)"},{"line_number":141,"context_line":"    if kernel_uuid and ramdisk_uuid:"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        # Option 2 - Check if a boot_iso was already created."},{"line_number":144,"context_line":"        swift_api \u003d swift.SwiftAPI()"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_01892deb","line":141,"in_reply_to":"7ac7a964_ba443075","updated":"2014-08-14 16:14:41.000000000","message":"Done","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bb08cd720c7e7b101e599c78a696e6b5e3a00bea","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        try:"},{"line_number":149,"context_line":"            container \u003d CONF.ilo.swift_ilo_container"},{"line_number":150,"context_line":"            swift_api.head_object(container, boot_iso_object_name)"},{"line_number":151,"context_line":"            LOG.debug(\"Found boot_iso %s in swift\" % boot_iso_object_name)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        except exception.SwiftOperationError:"},{"line_number":154,"context_line":"            # Option 3 - Create boot_iso from kernel/ramdisk, upload to swift"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_5a907cec","line":151,"updated":"2014-08-14 12:29:24.000000000","message":"nit: % -\u003e ,","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        try:"},{"line_number":149,"context_line":"            container \u003d CONF.ilo.swift_ilo_container"},{"line_number":150,"context_line":"            swift_api.head_object(container, boot_iso_object_name)"},{"line_number":151,"context_line":"            LOG.debug(\"Found boot_iso %s in swift\" % boot_iso_object_name)"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        except exception.SwiftOperationError:"},{"line_number":154,"context_line":"            # Option 3 - Create boot_iso from kernel/ramdisk, upload to swift"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_216d4933","line":151,"in_reply_to":"7ac7a964_5a907cec","updated":"2014-08-14 16:14:41.000000000","message":"Done","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bb08cd720c7e7b101e599c78a696e6b5e3a00bea","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                swift_api.create_object(container, boot_iso_object_name,"},{"line_number":162,"context_line":"                        boot_iso_path)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"            LOG.debug(\"Created boot_iso %s in swift\" % boot_iso_object_name)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        return \u0027swift:\u0027 + boot_iso_object_name"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_1a2284b9","line":164,"updated":"2014-08-14 12:29:24.000000000","message":"nit: % -\u003e ,","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                swift_api.create_object(container, boot_iso_object_name,"},{"line_number":162,"context_line":"                        boot_iso_path)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"            LOG.debug(\"Created boot_iso %s in swift\" % boot_iso_object_name)"},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"        return \u0027swift:\u0027 + boot_iso_object_name"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_416a451b","line":164,"in_reply_to":"7ac7a964_1a2284b9","updated":"2014-08-14 16:14:41.000000000","message":"Done","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bb08cd720c7e7b101e599c78a696e6b5e3a00bea","unresolved":false,"context_lines":[{"line_number":170,"context_line":"    \"\"\"Returns the MAC address of the port on which deployment will happen."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    :param task: a TaskManager instance containing the node to act on."},{"line_number":173,"context_line":"    :returns: MAC address of the port connected to deployment network."},{"line_number":174,"context_line":"    \"\"\""},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    for port in task.ports:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_b509a12e","line":173,"updated":"2014-08-14 12:29:24.000000000","message":"it can also return None","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":170,"context_line":"    \"\"\"Returns the MAC address of the port on which deployment will happen."},{"line_number":171,"context_line":""},{"line_number":172,"context_line":"    :param task: a TaskManager instance containing the node to act on."},{"line_number":173,"context_line":"    :returns: MAC address of the port connected to deployment network."},{"line_number":174,"context_line":"    \"\"\""},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    for port in task.ports:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_81745dfe","line":173,"in_reply_to":"7ac7a964_b509a12e","updated":"2014-08-14 16:14:41.000000000","message":"Done","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bb08cd720c7e7b101e599c78a696e6b5e3a00bea","unresolved":false,"context_lines":[{"line_number":192,"context_line":"    d_info \u003d {}"},{"line_number":193,"context_line":"    d_info[\u0027deploy_iso\u0027] \u003d info.get(\u0027deploy_iso\u0027)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    error_msg \u003d \"Error validating iLO virtual media deploy\""},{"line_number":196,"context_line":"    deploy_utils.check_for_missing_params(d_info, error_msg)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    return d_info"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_d5253dac","line":195,"updated":"2014-08-14 12:29:24.000000000","message":"should be translated:\n\n _(\"Error validating iLO virtual media deploy\")","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":192,"context_line":"    d_info \u003d {}"},{"line_number":193,"context_line":"    d_info[\u0027deploy_iso\u0027] \u003d info.get(\u0027deploy_iso\u0027)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":"    error_msg \u003d \"Error validating iLO virtual media deploy\""},{"line_number":196,"context_line":"    deploy_utils.check_for_missing_params(d_info, error_msg)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    return d_info"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_01604d31","line":195,"in_reply_to":"7ac7a964_d5253dac","updated":"2014-08-14 16:14:41.000000000","message":"Done","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bb08cd720c7e7b101e599c78a696e6b5e3a00bea","unresolved":false,"context_lines":[{"line_number":271,"context_line":"        \"\"\""},{"line_number":272,"context_line":"        deploy_ramdisk_opts \u003d iscsi_deploy.build_deploy_ramdisk_options("},{"line_number":273,"context_line":"                task.node, task.context)"},{"line_number":274,"context_line":"        deploy_nic_mac \u003d _get_deploy_nic_mac(task)"},{"line_number":275,"context_line":"        deploy_ramdisk_opts[\u0027BOOTIF\u0027] \u003d deploy_nic_mac"},{"line_number":276,"context_line":"        deploy_iso_uuid \u003d task.node.driver_info[\u0027deploy_iso\u0027]"},{"line_number":277,"context_line":"        deploy_iso \u003d \u0027glance:\u0027 + deploy_iso_uuid"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_d55c5d28","line":274,"updated":"2014-08-14 12:29:24.000000000","message":"_get_deploy_nic_mac can return None","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":271,"context_line":"        \"\"\""},{"line_number":272,"context_line":"        deploy_ramdisk_opts \u003d iscsi_deploy.build_deploy_ramdisk_options("},{"line_number":273,"context_line":"                task.node, task.context)"},{"line_number":274,"context_line":"        deploy_nic_mac \u003d _get_deploy_nic_mac(task)"},{"line_number":275,"context_line":"        deploy_ramdisk_opts[\u0027BOOTIF\u0027] \u003d deploy_nic_mac"},{"line_number":276,"context_line":"        deploy_iso_uuid \u003d task.node.driver_info[\u0027deploy_iso\u0027]"},{"line_number":277,"context_line":"        deploy_iso \u003d \u0027glance:\u0027 + deploy_iso_uuid"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_41516561","line":274,"in_reply_to":"7ac7a964_d55c5d28","updated":"2014-08-14 16:14:41.000000000","message":"We shouldn\u0027t ideally have atleast one nic with a vif_port_id.  None is not acceptable for deploy.  I think I better check this in validate() itself and catch it early. (for now, pxe also is dependent on neutron).  Unless there is a ironic port enrolled with a neutron-port-vif-id, deploy is going to fail.","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bb08cd720c7e7b101e599c78a696e6b5e3a00bea","unresolved":false,"context_lines":[{"line_number":335,"context_line":"        try:"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"            boot_iso \u003d _get_boot_iso(task, root_uuid)"},{"line_number":338,"context_line":"            if boot_iso:"},{"line_number":339,"context_line":"                ilo_common.setup_vmedia_for_boot(task, boot_iso)"},{"line_number":340,"context_line":"                ilo_common.set_boot_device(task.node, \u0027CDROM\u0027)"},{"line_number":341,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_55520dde","line":338,"updated":"2014-08-14 12:29:24.000000000","message":"this should rather be\n\n if not boot_iso:\n   # report error\n   return","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":335,"context_line":"        try:"},{"line_number":336,"context_line":""},{"line_number":337,"context_line":"            boot_iso \u003d _get_boot_iso(task, root_uuid)"},{"line_number":338,"context_line":"            if boot_iso:"},{"line_number":339,"context_line":"                ilo_common.setup_vmedia_for_boot(task, boot_iso)"},{"line_number":340,"context_line":"                ilo_common.set_boot_device(task.node, \u0027CDROM\u0027)"},{"line_number":341,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_e19fd101","line":338,"in_reply_to":"7ac7a964_55520dde","updated":"2014-08-14 16:14:41.000000000","message":"Done","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a62262c6ec070b7844e2db410e45671892b0168f","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    :param kernel_params: the kernel parameters to add for boot"},{"line_number":67,"context_line":"    :returns: a unique hash value generated from the above 4 parameters"},{"line_number":68,"context_line":"    \"\"\""},{"line_number":69,"context_line":"    hash_msg \u003d kernel_uuid + ramdisk_uuid + root_uuid + kernel_params"},{"line_number":70,"context_line":"    hash_object \u003d hashlib.sha256(hash_msg)"},{"line_number":71,"context_line":"    hex_dig \u003d hash_object.hexdigest()"},{"line_number":72,"context_line":"    boot_iso_object_name \u003d \u0027boot-iso-\u0027 + hex_dig"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_3f4ad5ac","line":69,"updated":"2014-08-25 14:28:38.000000000","message":"this may result in \u0027string\u0027 + None, which is invalid","commit_id":"cd6b6f71911d5143d6282b86bdc781f4bcaa7a4d"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"081356a6e97044e29b248b8018cb2c695212a62d","unresolved":false,"context_lines":[{"line_number":66,"context_line":"    :param kernel_params: the kernel parameters to add for boot"},{"line_number":67,"context_line":"    :returns: a unique hash value generated from the above 4 parameters"},{"line_number":68,"context_line":"    \"\"\""},{"line_number":69,"context_line":"    hash_msg \u003d kernel_uuid + ramdisk_uuid + root_uuid + kernel_params"},{"line_number":70,"context_line":"    hash_object \u003d hashlib.sha256(hash_msg)"},{"line_number":71,"context_line":"    hex_dig \u003d hash_object.hexdigest()"},{"line_number":72,"context_line":"    boot_iso_object_name \u003d \u0027boot-iso-\u0027 + hex_dig"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_5df4ef86","line":69,"in_reply_to":"1abeadc6_3f4ad5ac","updated":"2014-08-26 14:06:02.000000000","message":"Done","commit_id":"cd6b6f71911d5143d6282b86bdc781f4bcaa7a4d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a62262c6ec070b7844e2db410e45671892b0168f","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            image_uuid, \u0027kernel_id\u0027)"},{"line_number":108,"context_line":"    ramdisk_uuid \u003d images.get_glance_image_property(task.context,"},{"line_number":109,"context_line":"            image_uuid, \u0027ramdisk_id\u0027)"},{"line_number":110,"context_line":"    if kernel_uuid and ramdisk_uuid:"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        # Option 2 - Check if a boot_iso was already created."},{"line_number":113,"context_line":"        swift_api \u003d swift.SwiftAPI()"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_df7561cd","line":110,"updated":"2014-08-25 14:28:38.000000000","message":"see my comment on patchset 2","commit_id":"cd6b6f71911d5143d6282b86bdc781f4bcaa7a4d"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"081356a6e97044e29b248b8018cb2c695212a62d","unresolved":false,"context_lines":[{"line_number":107,"context_line":"            image_uuid, \u0027kernel_id\u0027)"},{"line_number":108,"context_line":"    ramdisk_uuid \u003d images.get_glance_image_property(task.context,"},{"line_number":109,"context_line":"            image_uuid, \u0027ramdisk_id\u0027)"},{"line_number":110,"context_line":"    if kernel_uuid and ramdisk_uuid:"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"        # Option 2 - Check if a boot_iso was already created."},{"line_number":113,"context_line":"        swift_api \u003d swift.SwiftAPI()"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_5d694f24","line":110,"in_reply_to":"1abeadc6_df7561cd","updated":"2014-08-26 14:06:02.000000000","message":"Done","commit_id":"cd6b6f71911d5143d6282b86bdc781f4bcaa7a4d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a62262c6ec070b7844e2db410e45671892b0168f","unresolved":false,"context_lines":[{"line_number":249,"context_line":"    def clean_up(self, task):"},{"line_number":250,"context_line":"        \"\"\"Clean up the deployment environment for the task\u0027s node."},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        Unlinks instance image and triggers image cache cleanup."},{"line_number":253,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":254,"context_line":"        \"\"\""},{"line_number":255,"context_line":"        iscsi_deploy.destroy_images(task.node.uuid)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_5a731fb4","line":252,"updated":"2014-08-25 14:28:38.000000000","message":"it is done by iscsi_deploy.continue_deploy already, not sure if we need it here. We may leave it just in case, though","commit_id":"cd6b6f71911d5143d6282b86bdc781f4bcaa7a4d"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"081356a6e97044e29b248b8018cb2c695212a62d","unresolved":false,"context_lines":[{"line_number":249,"context_line":"    def clean_up(self, task):"},{"line_number":250,"context_line":"        \"\"\"Clean up the deployment environment for the task\u0027s node."},{"line_number":251,"context_line":""},{"line_number":252,"context_line":"        Unlinks instance image and triggers image cache cleanup."},{"line_number":253,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":254,"context_line":"        \"\"\""},{"line_number":255,"context_line":"        iscsi_deploy.destroy_images(task.node.uuid)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_5d506f5e","line":252,"in_reply_to":"1abeadc6_5a731fb4","updated":"2014-08-26 14:06:02.000000000","message":"Wouldn\u0027t this be required if we try to stop the deployment before the ramdisk boots ?","commit_id":"cd6b6f71911d5143d6282b86bdc781f4bcaa7a4d"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f32c40a902ea315ee72a0b53f1b1ef437449aab6","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    ramdisk_uuid \u003d images.get_glance_image_property(task.context,"},{"line_number":114,"context_line":"            image_uuid, \u0027ramdisk_id\u0027)"},{"line_number":115,"context_line":"    if not kernel_uuid or not ramdisk_uuid:"},{"line_number":116,"context_line":"        return"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    # Option 2 - Check if a boot_iso was already created."},{"line_number":119,"context_line":"    swift_api \u003d swift.SwiftAPI()"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_04caff4e","line":116,"updated":"2014-08-26 15:23:49.000000000","message":"We do not try options 2,3?","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e0237cafca5ac0cdbb33b8cc08a5a0eb856143ad","unresolved":false,"context_lines":[{"line_number":113,"context_line":"    ramdisk_uuid \u003d images.get_glance_image_property(task.context,"},{"line_number":114,"context_line":"            image_uuid, \u0027ramdisk_id\u0027)"},{"line_number":115,"context_line":"    if not kernel_uuid or not ramdisk_uuid:"},{"line_number":116,"context_line":"        return"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"    # Option 2 - Check if a boot_iso was already created."},{"line_number":119,"context_line":"    swift_api \u003d swift.SwiftAPI()"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_90856009","line":116,"in_reply_to":"1abeadc6_04caff4e","updated":"2014-08-26 20:32:57.000000000","message":"We use options 2,3 in normal case.  The glance image deployed will have a kernel_id and ramdisk_id mentioned as properties.  If we find them, we go for 2,3 in which we build a bootable ISO which contains the kernel, ramdisk.","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"8bc1af898ae5facdaf196a02dd2ca7e54002c604","unresolved":false,"context_lines":[{"line_number":147,"context_line":"    :returns: MAC address of the port connected to deployment network."},{"line_number":148,"context_line":"              None if it cannot find any port with vif id."},{"line_number":149,"context_line":"    \"\"\""},{"line_number":150,"context_line":"    for port in task.ports:"},{"line_number":151,"context_line":"        if port.extra.get(\u0027vif_port_id\u0027):"},{"line_number":152,"context_line":"            return port.address"},{"line_number":153,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_1d208eaf","line":150,"updated":"2014-08-26 16:33:18.000000000","message":"Your comment says the MAC address of the port connected to the deployment network, but the code just takes the first port\u0027s MAC address.\n\nWe should update the comment or the code. As it sits it\u0027s wrong.","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e0237cafca5ac0cdbb33b8cc08a5a0eb856143ad","unresolved":false,"context_lines":[{"line_number":147,"context_line":"    :returns: MAC address of the port connected to deployment network."},{"line_number":148,"context_line":"              None if it cannot find any port with vif id."},{"line_number":149,"context_line":"    \"\"\""},{"line_number":150,"context_line":"    for port in task.ports:"},{"line_number":151,"context_line":"        if port.extra.get(\u0027vif_port_id\u0027):"},{"line_number":152,"context_line":"            return port.address"},{"line_number":153,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_502f483e","line":150,"in_reply_to":"1abeadc6_1d208eaf","updated":"2014-08-26 20:32:57.000000000","message":"Done","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"f32c40a902ea315ee72a0b53f1b1ef437449aab6","unresolved":false,"context_lines":[{"line_number":164,"context_line":"    \"\"\""},{"line_number":165,"context_line":"    info \u003d node.driver_info"},{"line_number":166,"context_line":"    d_info \u003d {}"},{"line_number":167,"context_line":"    d_info[\u0027deploy_iso\u0027] \u003d info.get(\u0027deploy_iso\u0027)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    error_msg \u003d _(\"Error validating iLO virtual media deploy\")"},{"line_number":170,"context_line":"    deploy_utils.check_for_missing_params(d_info, error_msg)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_e70c253e","line":167,"updated":"2014-08-26 15:23:49.000000000","message":"I think this parameter name should use prefix, and should be \u0027ilo_deploy_iso\u0027.","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"8bc1af898ae5facdaf196a02dd2ca7e54002c604","unresolved":false,"context_lines":[{"line_number":164,"context_line":"    \"\"\""},{"line_number":165,"context_line":"    info \u003d node.driver_info"},{"line_number":166,"context_line":"    d_info \u003d {}"},{"line_number":167,"context_line":"    d_info[\u0027deploy_iso\u0027] \u003d info.get(\u0027deploy_iso\u0027)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    error_msg \u003d _(\"Error validating iLO virtual media deploy\")"},{"line_number":170,"context_line":"    deploy_utils.check_for_missing_params(d_info, error_msg)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_3d062a21","line":167,"in_reply_to":"1abeadc6_e70c253e","updated":"2014-08-26 16:33:18.000000000","message":"++","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e0237cafca5ac0cdbb33b8cc08a5a0eb856143ad","unresolved":false,"context_lines":[{"line_number":164,"context_line":"    \"\"\""},{"line_number":165,"context_line":"    info \u003d node.driver_info"},{"line_number":166,"context_line":"    d_info \u003d {}"},{"line_number":167,"context_line":"    d_info[\u0027deploy_iso\u0027] \u003d info.get(\u0027deploy_iso\u0027)"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    error_msg \u003d _(\"Error validating iLO virtual media deploy\")"},{"line_number":170,"context_line":"    deploy_utils.check_for_missing_params(d_info, error_msg)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_d01a7817","line":167,"in_reply_to":"1abeadc6_e70c253e","updated":"2014-08-26 20:32:57.000000000","message":"Done","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"8bc1af898ae5facdaf196a02dd2ca7e54002c604","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        Fetches the instance image, sets the node to boot from virtual"},{"line_number":215,"context_line":"        media cdrom, and reboot the given node."},{"line_number":216,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":217,"context_line":"        :returns: deploy state DEPLOYWAIT."},{"line_number":218,"context_line":"        \"\"\""},{"line_number":219,"context_line":"        manager_utils.node_power_action(task, states.POWER_OFF)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_18689cb9","line":216,"updated":"2014-08-26 16:33:18.000000000","message":"nit: newline above?","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e0237cafca5ac0cdbb33b8cc08a5a0eb856143ad","unresolved":false,"context_lines":[{"line_number":213,"context_line":""},{"line_number":214,"context_line":"        Fetches the instance image, sets the node to boot from virtual"},{"line_number":215,"context_line":"        media cdrom, and reboot the given node."},{"line_number":216,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":217,"context_line":"        :returns: deploy state DEPLOYWAIT."},{"line_number":218,"context_line":"        \"\"\""},{"line_number":219,"context_line":"        manager_utils.node_power_action(task, states.POWER_OFF)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_50d66828","line":216,"in_reply_to":"1abeadc6_18689cb9","updated":"2014-08-26 20:32:57.000000000","message":"Done","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"57b6003d9a75b7d4786eb668c0f4f0b112de7bed","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        iscsi_deploy.cache_instance_image(task.context, task.node)"},{"line_number":222,"context_line":"        iscsi_deploy.check_image_size(task)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        ilo_common.set_boot_device(task.node, \u0027CDROM\u0027)"},{"line_number":225,"context_line":"        manager_utils.node_power_action(task, states.REBOOT)"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        return states.DEPLOYWAIT"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_b8d3285e","line":224,"updated":"2014-08-26 17:19:46.000000000","message":"Wondering if we should use the ManagementInterface to set the boot device, since that\u0027s where the method for this operation is, e.g:\n\n from ironic.common import boot_devices\n\n manager_utils.node_set_boot_device(task, boot_devices.CDROM, persistent\u003dFalse)","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e0237cafca5ac0cdbb33b8cc08a5a0eb856143ad","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        iscsi_deploy.cache_instance_image(task.context, task.node)"},{"line_number":222,"context_line":"        iscsi_deploy.check_image_size(task)"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        ilo_common.set_boot_device(task.node, \u0027CDROM\u0027)"},{"line_number":225,"context_line":"        manager_utils.node_power_action(task, states.REBOOT)"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":"        return states.DEPLOYWAIT"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_90e000fc","line":224,"in_reply_to":"1abeadc6_b8d3285e","updated":"2014-08-26 20:32:57.000000000","message":"Currently we don\u0027t have a ilo\u0027s own management interface. Eventhough we use the ipmi one, setting the node to boot from CDROM doesn\u0027t boot the node from virtual media.  So we are just using it as above for the time being.  We will propose a management interface later in K and then refactor this code.  Please let me know if it sounds okay.","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"8bc1af898ae5facdaf196a02dd2ca7e54002c604","unresolved":false,"context_lines":[{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        Power off the node. All actual clean-up is done in the clean_up()"},{"line_number":234,"context_line":"        method which should be called separately."},{"line_number":235,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":236,"context_line":"        :returns: deploy state DELETED."},{"line_number":237,"context_line":"        \"\"\""},{"line_number":238,"context_line":"        manager_utils.node_power_action(task, states.POWER_OFF)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_989bccc8","line":235,"updated":"2014-08-26 16:33:18.000000000","message":"nit: newline above?","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e0237cafca5ac0cdbb33b8cc08a5a0eb856143ad","unresolved":false,"context_lines":[{"line_number":232,"context_line":""},{"line_number":233,"context_line":"        Power off the node. All actual clean-up is done in the clean_up()"},{"line_number":234,"context_line":"        method which should be called separately."},{"line_number":235,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":236,"context_line":"        :returns: deploy state DELETED."},{"line_number":237,"context_line":"        \"\"\""},{"line_number":238,"context_line":"        manager_utils.node_power_action(task, states.POWER_OFF)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_d0e198fd","line":235,"in_reply_to":"1abeadc6_989bccc8","updated":"2014-08-26 20:32:57.000000000","message":"Done","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"8bc1af898ae5facdaf196a02dd2ca7e54002c604","unresolved":false,"context_lines":[{"line_number":242,"context_line":"        \"\"\"Prepare the deployment environment for this task\u0027s node."},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"        Prepares the node to boot from virtual media with the given parameters"},{"line_number":245,"context_line":"        for deployment."},{"line_number":246,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":247,"context_line":"        \"\"\""},{"line_number":248,"context_line":"        deploy_ramdisk_opts \u003d iscsi_deploy.build_deploy_ramdisk_options("}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_b89ec8b6","line":245,"updated":"2014-08-26 16:33:18.000000000","message":"nit: newline above?","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e0237cafca5ac0cdbb33b8cc08a5a0eb856143ad","unresolved":false,"context_lines":[{"line_number":242,"context_line":"        \"\"\"Prepare the deployment environment for this task\u0027s node."},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"        Prepares the node to boot from virtual media with the given parameters"},{"line_number":245,"context_line":"        for deployment."},{"line_number":246,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":247,"context_line":"        \"\"\""},{"line_number":248,"context_line":"        deploy_ramdisk_opts \u003d iscsi_deploy.build_deploy_ramdisk_options("}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_10ecf0f2","line":245,"in_reply_to":"1abeadc6_b89ec8b6","updated":"2014-08-26 20:32:57.000000000","message":"Done","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"8bc1af898ae5facdaf196a02dd2ca7e54002c604","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        \"\"\"Clean up the deployment environment for the task\u0027s node."},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        Unlinks instance image and triggers image cache cleanup."},{"line_number":260,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":261,"context_line":"        \"\"\""},{"line_number":262,"context_line":"        iscsi_deploy.destroy_images(task.node.uuid)"},{"line_number":263,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_18afbce4","line":260,"updated":"2014-08-26 16:33:18.000000000","message":"nit: newline above?","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e0237cafca5ac0cdbb33b8cc08a5a0eb856143ad","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        \"\"\"Clean up the deployment environment for the task\u0027s node."},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        Unlinks instance image and triggers image cache cleanup."},{"line_number":260,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":261,"context_line":"        \"\"\""},{"line_number":262,"context_line":"        iscsi_deploy.destroy_images(task.node.uuid)"},{"line_number":263,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_50bd88d6","line":260,"in_reply_to":"1abeadc6_18afbce4","updated":"2014-08-26 20:32:57.000000000","message":"Done","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"57b6003d9a75b7d4786eb668c0f4f0b112de7bed","unresolved":false,"context_lines":[{"line_number":317,"context_line":"                return"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"            ilo_common.setup_vmedia_for_boot(task, boot_iso)"},{"line_number":320,"context_line":"            ilo_common.set_boot_device(task.node, \u0027CDROM\u0027)"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"            address \u003d kwargs.get(\u0027address\u0027)"},{"line_number":323,"context_line":"            deploy_utils.notify_deploy_complete(address)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_b8ec082b","line":320,"updated":"2014-08-26 17:19:46.000000000","message":"ditto about using the mgmt interface","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"69597046baee589d44f3b2abbda1bd2c67ce4663","unresolved":false,"context_lines":[{"line_number":317,"context_line":"                return"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"            ilo_common.setup_vmedia_for_boot(task, boot_iso)"},{"line_number":320,"context_line":"            ilo_common.set_boot_device(task.node, \u0027CDROM\u0027)"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"            address \u003d kwargs.get(\u0027address\u0027)"},{"line_number":323,"context_line":"            deploy_utils.notify_deploy_complete(address)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_7cb33be9","line":320,"in_reply_to":"1abeadc6_90b720f5","updated":"2014-08-26 20:39:44.000000000","message":"Currently we don\u0027t have a ilo\u0027s own management interface. Eventhough we use the ipmi one, setting the node to boot from CDROM doesn\u0027t boot the node from virtual media. So we are just using it as above for the time being. We will propose a management interface later in K and then refactor this code. Please let me know if it sounds okay.","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e0237cafca5ac0cdbb33b8cc08a5a0eb856143ad","unresolved":false,"context_lines":[{"line_number":317,"context_line":"                return"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"            ilo_common.setup_vmedia_for_boot(task, boot_iso)"},{"line_number":320,"context_line":"            ilo_common.set_boot_device(task.node, \u0027CDROM\u0027)"},{"line_number":321,"context_line":""},{"line_number":322,"context_line":"            address \u003d kwargs.get(\u0027address\u0027)"},{"line_number":323,"context_line":"            deploy_utils.notify_deploy_complete(address)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_90b720f5","line":320,"in_reply_to":"1abeadc6_b8ec082b","updated":"2014-08-26 20:32:57.000000000","message":"Done","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"ef556d5233c6de238b832e98eaa4cdf61d33ca15","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# -*- encoding: utf-8 -*-"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2013 Hewlett-Packard Development Company, L.P."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_2ede56da","line":3,"updated":"2014-08-29 20:31:06.000000000","message":"nit: should use current year when adding a new file","commit_id":"91cb0b81dfae813845861a50654453287810cc17"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"056a092f010286a39a062210cfe5dfe256283177","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# -*- encoding: utf-8 -*-"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Copyright 2013 Hewlett-Packard Development Company, L.P."},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_b521ca4e","line":3,"in_reply_to":"1abeadc6_2ede56da","updated":"2014-08-30 04:49:34.000000000","message":"Done","commit_id":"91cb0b81dfae813845861a50654453287810cc17"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1f6bce5a49d8af295c6d862b707ac8a1d16a7b3c","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    :returns: the information about the boot ISO. Returns the information in"},{"line_number":78,"context_line":"        the format \u0027glance:\u003cglance-boot-iso-uuid\u003e\u0027 or"},{"line_number":79,"context_line":"        \u0027swift:\u003cswift-boot_iso-object-name\u003e\u0027.  In case of swift, it is assumed"},{"line_number":80,"context_line":"        that the object exists in CONF.ilo.swift_ilo_container."},{"line_number":81,"context_line":"    \"\"\""},{"line_number":82,"context_line":"    # Option 1 - Check if user has provided a boot_iso in glance."},{"line_number":83,"context_line":"    LOG.debug(\"Trying to get a boot ISO to boot the baremetal node\")"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa98f980_8f7351e6","line":80,"updated":"2014-09-02 10:37:44.000000000","message":"also returns None on error","commit_id":"2cb3b089630d723d3d203594dd60d25f6da47d67"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0174986a8e7f4825ec99011ee7c42f05f91d027f","unresolved":false,"context_lines":[{"line_number":77,"context_line":"    :returns: the information about the boot ISO. Returns the information in"},{"line_number":78,"context_line":"        the format \u0027glance:\u003cglance-boot-iso-uuid\u003e\u0027 or"},{"line_number":79,"context_line":"        \u0027swift:\u003cswift-boot_iso-object-name\u003e\u0027.  In case of swift, it is assumed"},{"line_number":80,"context_line":"        that the object exists in CONF.ilo.swift_ilo_container."},{"line_number":81,"context_line":"    \"\"\""},{"line_number":82,"context_line":"    # Option 1 - Check if user has provided a boot_iso in glance."},{"line_number":83,"context_line":"    LOG.debug(\"Trying to get a boot ISO to boot the baremetal node\")"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa98f980_9a1c7115","line":80,"in_reply_to":"fa98f980_8f7351e6","updated":"2014-09-02 10:47:48.000000000","message":"Done","commit_id":"2cb3b089630d723d3d203594dd60d25f6da47d67"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1f6bce5a49d8af295c6d862b707ac8a1d16a7b3c","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    ramdisk_uuid \u003d images.get_glance_image_property(task.context,"},{"line_number":95,"context_line":"            image_uuid, \u0027ramdisk_id\u0027)"},{"line_number":96,"context_line":"    if not kernel_uuid or not ramdisk_uuid:"},{"line_number":97,"context_line":"        return"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    # NOTE(rameshg87): Functionality to share the boot ISOs created for"},{"line_number":100,"context_line":"    # similar instances (instances with same deployed image) is"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa98f980_cf547923","line":97,"updated":"2014-09-02 10:37:44.000000000","message":"I think some logging should be here","commit_id":"2cb3b089630d723d3d203594dd60d25f6da47d67"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0174986a8e7f4825ec99011ee7c42f05f91d027f","unresolved":false,"context_lines":[{"line_number":94,"context_line":"    ramdisk_uuid \u003d images.get_glance_image_property(task.context,"},{"line_number":95,"context_line":"            image_uuid, \u0027ramdisk_id\u0027)"},{"line_number":96,"context_line":"    if not kernel_uuid or not ramdisk_uuid:"},{"line_number":97,"context_line":"        return"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"    # NOTE(rameshg87): Functionality to share the boot ISOs created for"},{"line_number":100,"context_line":"    # similar instances (instances with same deployed image) is"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa98f980_da16f9f0","line":97,"in_reply_to":"fa98f980_cf547923","updated":"2014-09-02 10:47:48.000000000","message":"Done","commit_id":"2cb3b089630d723d3d203594dd60d25f6da47d67"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"1f6bce5a49d8af295c6d862b707ac8a1d16a7b3c","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    \"\"\""},{"line_number":129,"context_line":"    swift_api \u003d swift.SwiftAPI()"},{"line_number":130,"context_line":"    container \u003d CONF.ilo.swift_ilo_container"},{"line_number":131,"context_line":"    boot_iso_object_name \u003d _get_boot_iso_object_name(node)"},{"line_number":132,"context_line":"    try:"},{"line_number":133,"context_line":"        swift_api.delete_object(container, boot_iso_object_name)"},{"line_number":134,"context_line":"    except exception.SwiftOperationError as e:"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa98f980_2f46e57c","line":131,"updated":"2014-09-02 10:37:44.000000000","message":"can be None on error","commit_id":"2cb3b089630d723d3d203594dd60d25f6da47d67"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0174986a8e7f4825ec99011ee7c42f05f91d027f","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    \"\"\""},{"line_number":129,"context_line":"    swift_api \u003d swift.SwiftAPI()"},{"line_number":130,"context_line":"    container \u003d CONF.ilo.swift_ilo_container"},{"line_number":131,"context_line":"    boot_iso_object_name \u003d _get_boot_iso_object_name(node)"},{"line_number":132,"context_line":"    try:"},{"line_number":133,"context_line":"        swift_api.delete_object(container, boot_iso_object_name)"},{"line_number":134,"context_line":"    except exception.SwiftOperationError as e:"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa98f980_fabbbde2","line":131,"in_reply_to":"fa98f980_2f46e57c","updated":"2014-09-02 10:47:48.000000000","message":"This is _get_boot_iso_object_name() and not _get_boot_iso().  The former always returns something.","commit_id":"2cb3b089630d723d3d203594dd60d25f6da47d67"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"b68f398c25bba7146e49b877cbac50487179256f","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        root_uuid \u003d iscsi_deploy.continue_deploy(task, **kwargs)"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"        if not root_uuid:"},{"line_number":315,"context_line":"            return"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"        try:"},{"line_number":318,"context_line":"            boot_iso \u003d _get_boot_iso(task, root_uuid)"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa98f980_9bfe3337","line":315,"updated":"2014-09-02 12:30:05.000000000","message":"I do not see situation w/o root_uuid and no exception raised. IMO should 1) remove l314-315 2) move l312 into next try-except block.","commit_id":"667c4ece86f64774fd8e0e0c1ed23f36b5f56f4b"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"8d87dd1c68fcb73a8bffc64e9e8056dfde5eae6f","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        root_uuid \u003d iscsi_deploy.continue_deploy(task, **kwargs)"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"        if not root_uuid:"},{"line_number":315,"context_line":"            return"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"        try:"},{"line_number":318,"context_line":"            boot_iso \u003d _get_boot_iso(task, root_uuid)"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa98f980_6d50f25e","line":315,"in_reply_to":"fa98f980_9bfe3337","updated":"2014-09-02 12:57:49.000000000","message":"I thought the same but after looking at the code it seems that None is a valid return value for the continue_deploy() method[1]\n\nps* I also think it\u0027s not totally ideal, but it\u0027s outside the scope of this patch. \n\n[1] https://github.com/openstack/ironic/blob/master/ironic/drivers/modules/iscsi_deploy.py#L284","commit_id":"667c4ece86f64774fd8e0e0c1ed23f36b5f56f4b"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"2981b38398f06f084e9de13bb7d18dee330a083b","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        root_uuid \u003d iscsi_deploy.continue_deploy(task, **kwargs)"},{"line_number":313,"context_line":""},{"line_number":314,"context_line":"        if not root_uuid:"},{"line_number":315,"context_line":"            return"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"        try:"},{"line_number":318,"context_line":"            boot_iso \u003d _get_boot_iso(task, root_uuid)"}],"source_content_type":"text/x-python","patch_set":17,"id":"fa98f980_6dcab26f","line":315,"in_reply_to":"fa98f980_9bfe3337","updated":"2014-09-02 12:54:30.000000000","message":"there is a situation i guess - an error returned from ramdisk.\n\nhttps://github.com/openstack/ironic/blob/master/ironic/drivers/modules/iscsi_deploy.py#L292-L299","commit_id":"667c4ece86f64774fd8e0e0c1ed23f36b5f56f4b"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"def _get_boot_iso_object_name(node):"},{"line_number":56,"context_line":"    \"\"\"Given the floppy image name for a given node."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    :param node: the node for which image name is to be provided."},{"line_number":59,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_5601e436","line":56,"updated":"2014-09-03 02:22:27.000000000","message":"\u0027Given\u0027 -\u003e \u0027Return\u0027?\n\nIt isn\u0027t returning the floppy image name, is it?","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"def _get_boot_iso_object_name(node):"},{"line_number":56,"context_line":"    \"\"\"Given the floppy image name for a given node."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    :param node: the node for which image name is to be provided."},{"line_number":59,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_e91916d8","line":56,"in_reply_to":"fa98f980_5601e436","updated":"2014-09-03 05:24:39.000000000","message":"Done","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"def _get_boot_iso(task, root_uuid):"},{"line_number":64,"context_line":"    \"\"\"This method gives back a boot ISO to boot the node."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    It chooses one of the three options in the order as below:"},{"line_number":67,"context_line":"    1. Image deployed has a meta-propery \u0027boot_iso\u0027 in glance. This should"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_b61a107b","line":64,"updated":"2014-09-03 02:22:27.000000000","message":"maybe \u0027gives back\u0027 -\u003e \u0027returns\u0027 ?","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"def _get_boot_iso(task, root_uuid):"},{"line_number":64,"context_line":"    \"\"\"This method gives back a boot ISO to boot the node."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    It chooses one of the three options in the order as below:"},{"line_number":67,"context_line":"    1. Image deployed has a meta-propery \u0027boot_iso\u0027 in glance. This should"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_090bba7d","line":64,"in_reply_to":"fa98f980_b61a107b","updated":"2014-09-03 05:24:39.000000000","message":"Done","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":71,"context_line":"       and kernel params to see if exactly same boot ISO was generated before."},{"line_number":72,"context_line":"       If so, it reuses it."},{"line_number":73,"context_line":"    3. Generates a boot ISO on the fly using kernel and ramdisk mentioned in"},{"line_number":74,"context_line":"       the image deployed. It uploads the generated boot ISO to swift."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    :param task: a TaskManager instance containing the node to act on."},{"line_number":77,"context_line":"    :param root_uuid: the uuid of the root partition."}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_b1393aa6","line":74,"updated":"2014-09-03 02:22:27.000000000","message":"This is \u0027Option 2\u0027 below? What happened to #2 mentioned above?","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":71,"context_line":"       and kernel params to see if exactly same boot ISO was generated before."},{"line_number":72,"context_line":"       If so, it reuses it."},{"line_number":73,"context_line":"    3. Generates a boot ISO on the fly using kernel and ramdisk mentioned in"},{"line_number":74,"context_line":"       the image deployed. It uploads the generated boot ISO to swift."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"    :param task: a TaskManager instance containing the node to act on."},{"line_number":77,"context_line":"    :param root_uuid: the uuid of the root partition."}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_a91b8ec8","line":74,"in_reply_to":"fa98f980_b1393aa6","updated":"2014-09-03 05:24:39.000000000","message":"Done.  Thanks, we are not pursuing #2 for now due to the reason stated below.","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"def _clean_up_boot_iso_for_instance(node):"},{"line_number":130,"context_line":"    \"\"\"Cleans the boot ISO created in swift for the instance."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    :param node: an ironic node object."},{"line_number":133,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_716a7282","line":130,"updated":"2014-09-03 02:22:27.000000000","message":"So basically, deletes the boot ISO from Swift.","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"def _clean_up_boot_iso_for_instance(node):"},{"line_number":130,"context_line":"    \"\"\"Cleans the boot ISO created in swift for the instance."},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    :param node: an ironic node object."},{"line_number":133,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_e98036c2","line":130,"in_reply_to":"fa98f980_716a7282","updated":"2014-09-03 05:24:39.000000000","message":"Done","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":145,"context_line":"def _get_single_nic_with_vif_port_id(task):"},{"line_number":146,"context_line":"    \"\"\"Returns the MAC address of a port which has a VIF port id."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    :param task: a TaskManager instance containing the node to act on."},{"line_number":149,"context_line":"    :returns: MAC address of the port connected to deployment network."},{"line_number":150,"context_line":"              None if it cannot find any port with vif id."},{"line_number":151,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_f124a261","line":148,"updated":"2014-09-03 02:22:27.000000000","message":"\u0027containing the ports\u0027 is probably more useful?","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":145,"context_line":"def _get_single_nic_with_vif_port_id(task):"},{"line_number":146,"context_line":"    \"\"\"Returns the MAC address of a port which has a VIF port id."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    :param task: a TaskManager instance containing the node to act on."},{"line_number":149,"context_line":"    :returns: MAC address of the port connected to deployment network."},{"line_number":150,"context_line":"              None if it cannot find any port with vif id."},{"line_number":151,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_0982dac7","line":148,"in_reply_to":"fa98f980_f124a261","updated":"2014-09-03 05:24:39.000000000","message":"Done","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":200,"context_line":""},{"line_number":201,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":202,"context_line":"        :raises: InvalidParameterValue, if some information is missing or"},{"line_number":203,"context_line":"            invalid."},{"line_number":204,"context_line":"        \"\"\""},{"line_number":205,"context_line":"        iscsi_deploy.validate(task)"},{"line_number":206,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_31e9cae6","line":203,"updated":"2014-09-03 02:22:27.000000000","message":"also raises MissingParameterValue","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":200,"context_line":""},{"line_number":201,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":202,"context_line":"        :raises: InvalidParameterValue, if some information is missing or"},{"line_number":203,"context_line":"            invalid."},{"line_number":204,"context_line":"        \"\"\""},{"line_number":205,"context_line":"        iscsi_deploy.validate(task)"},{"line_number":206,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_4956a25d","line":203,"in_reply_to":"fa98f980_31e9cae6","updated":"2014-09-03 05:24:39.000000000","message":"Done","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    @task_manager.require_exclusive_lock"},{"line_number":213,"context_line":"    def deploy(self, task):"},{"line_number":214,"context_line":"        \"\"\"Start deployment of the task\u0027s node\u0027."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        Fetches the instance image, sets the node to boot from virtual"},{"line_number":217,"context_line":"        media cdrom, and reboot the given node."}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_f1a90291","line":214,"updated":"2014-09-03 02:22:27.000000000","message":"\"node\u0027\" -\u003e \"node\". (There\u0027s an \u0027 there.)","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    @task_manager.require_exclusive_lock"},{"line_number":213,"context_line":"    def deploy(self, task):"},{"line_number":214,"context_line":"        \"\"\"Start deployment of the task\u0027s node\u0027."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        Fetches the instance image, sets the node to boot from virtual"},{"line_number":217,"context_line":"        media cdrom, and reboot the given node."}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_6953666b","line":214,"in_reply_to":"fa98f980_f1a90291","updated":"2014-09-03 05:24:39.000000000","message":"Done","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        media cdrom, and reboot the given node."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":220,"context_line":"        :returns: deploy state DEPLOYWAIT."},{"line_number":221,"context_line":"        \"\"\""},{"line_number":222,"context_line":"        manager_utils.node_power_action(task, states.POWER_OFF)"},{"line_number":223,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_11868613","line":220,"updated":"2014-09-03 02:22:27.000000000","message":":raises: anything?","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":217,"context_line":"        media cdrom, and reboot the given node."},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":220,"context_line":"        :returns: deploy state DEPLOYWAIT."},{"line_number":221,"context_line":"        \"\"\""},{"line_number":222,"context_line":"        manager_utils.node_power_action(task, states.POWER_OFF)"},{"line_number":223,"context_line":""}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_a9e0ee96","line":220,"in_reply_to":"fa98f980_11868613","updated":"2014-09-03 05:24:39.000000000","message":"Done","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        method which should be called separately."},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":240,"context_line":"        :returns: deploy state DELETED."},{"line_number":241,"context_line":"        \"\"\""},{"line_number":242,"context_line":"        manager_utils.node_power_action(task, states.POWER_OFF)"},{"line_number":243,"context_line":"        return states.DELETED"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_d10b1e8c","line":240,"updated":"2014-09-03 02:22:27.000000000","message":":raises: anything?","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        method which should be called separately."},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":240,"context_line":"        :returns: deploy state DELETED."},{"line_number":241,"context_line":"        \"\"\""},{"line_number":242,"context_line":"        manager_utils.node_power_action(task, states.POWER_OFF)"},{"line_number":243,"context_line":"        return states.DELETED"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_29ecfe8e","line":240,"in_reply_to":"fa98f980_d10b1e8c","updated":"2014-09-03 05:24:39.000000000","message":"No \"expected\" exception in this now.","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":249,"context_line":"        for deployment."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":252,"context_line":"        \"\"\""},{"line_number":253,"context_line":"        deploy_ramdisk_opts \u003d iscsi_deploy.build_deploy_ramdisk_options("},{"line_number":254,"context_line":"                task.node, task.context)"},{"line_number":255,"context_line":"        deploy_nic_mac \u003d _get_single_nic_with_vif_port_id(task)"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_b1069a84","line":252,"updated":"2014-09-03 02:22:27.000000000","message":":raises: anything?","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":249,"context_line":"        for deployment."},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":252,"context_line":"        \"\"\""},{"line_number":253,"context_line":"        deploy_ramdisk_opts \u003d iscsi_deploy.build_deploy_ramdisk_options("},{"line_number":254,"context_line":"                task.node, task.context)"},{"line_number":255,"context_line":"        deploy_nic_mac \u003d _get_single_nic_with_vif_port_id(task)"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_6901a637","line":252,"in_reply_to":"fa98f980_b1069a84","updated":"2014-09-03 05:24:39.000000000","message":"Done","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"aa17645b09432773f9bc56a32c9ef7c17cd00a15","unresolved":false,"context_lines":[{"line_number":256,"context_line":"        deploy_ramdisk_opts[\u0027BOOTIF\u0027] \u003d deploy_nic_mac"},{"line_number":257,"context_line":"        deploy_iso_uuid \u003d task.node.driver_info[\u0027ilo_deploy_iso\u0027]"},{"line_number":258,"context_line":"        deploy_iso \u003d \u0027glance:\u0027 + deploy_iso_uuid"},{"line_number":259,"context_line":"        ilo_common.setup_vmedia_for_boot(task, deploy_iso, deploy_ramdisk_opts)"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    def clean_up(self, task):"},{"line_number":262,"context_line":"        \"\"\"Clean up the deployment environment for the task\u0027s node."}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_885deb17","line":259,"updated":"2014-09-02 23:43:38.000000000","message":"This should happen in deploy() as it starts the \u0027timer\u0027 for the swift temp url.\n\nI think there\u0027s actually a place here for a generally useful method, something like:\n\n    def _reboot_into(task, iso, opts):\n        ilo_common_setup_vmedia_for_boot(task, iso, opts)\n        ilo_common.set_boot_device(task.node, \u0027CDROM\u0027)\n        manager_utils.node_power_action(task, states.REBOOT)\n\nAnd call this for any reboot, so that way you always do it as an atomic action: attach iso, set boot device to iso, reboot into it.\n\nWDYT?","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":256,"context_line":"        deploy_ramdisk_opts[\u0027BOOTIF\u0027] \u003d deploy_nic_mac"},{"line_number":257,"context_line":"        deploy_iso_uuid \u003d task.node.driver_info[\u0027ilo_deploy_iso\u0027]"},{"line_number":258,"context_line":"        deploy_iso \u003d \u0027glance:\u0027 + deploy_iso_uuid"},{"line_number":259,"context_line":"        ilo_common.setup_vmedia_for_boot(task, deploy_iso, deploy_ramdisk_opts)"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"    def clean_up(self, task):"},{"line_number":262,"context_line":"        \"\"\"Clean up the deployment environment for the task\u0027s node."}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_c91a927c","line":259,"in_reply_to":"fa98f980_885deb17","updated":"2014-09-03 05:24:39.000000000","message":"Done","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":284,"context_line":""},{"line_number":285,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":286,"context_line":"        :param kwargs: kwargs containing the vendor passthru method and its"},{"line_number":287,"context_line":"            parameters."},{"line_number":288,"context_line":"        \"\"\""},{"line_number":289,"context_line":"        method \u003d kwargs[\u0027method\u0027]"},{"line_number":290,"context_line":"        if method \u003d\u003d \u0027pass_deploy_info\u0027:"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_d16a3eed","line":287,"updated":"2014-09-03 02:22:27.000000000","message":":raises: ?","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":284,"context_line":""},{"line_number":285,"context_line":"        :param task: a TaskManager instance containing the node to act on."},{"line_number":286,"context_line":"        :param kwargs: kwargs containing the vendor passthru method and its"},{"line_number":287,"context_line":"            parameters."},{"line_number":288,"context_line":"        \"\"\""},{"line_number":289,"context_line":"        method \u003d kwargs[\u0027method\u0027]"},{"line_number":290,"context_line":"        if method \u003d\u003d \u0027pass_deploy_info\u0027:"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_2916be55","line":287,"in_reply_to":"fa98f980_d16a3eed","updated":"2014-09-03 05:24:39.000000000","message":"Done","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":334,"context_line":"            i_info \u003d node.instance_info"},{"line_number":335,"context_line":"            i_info[\u0027ilo_boot_iso\u0027] \u003d boot_iso"},{"line_number":336,"context_line":"            node.instance_info \u003d i_info"},{"line_number":337,"context_line":"            node.save(task.context)"},{"line_number":338,"context_line":"            LOG.info(_LI(\u0027Deployment to node %s done\u0027), node.uuid)"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_fcdb994c","line":337,"updated":"2014-09-03 02:22:27.000000000","message":"just wondering. Does it matter that node.instance_info[\u0027ilo_boot_iso\u0027] doesn\u0027t get deleted after this point?","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":334,"context_line":"            i_info \u003d node.instance_info"},{"line_number":335,"context_line":"            i_info[\u0027ilo_boot_iso\u0027] \u003d boot_iso"},{"line_number":336,"context_line":"            node.instance_info \u003d i_info"},{"line_number":337,"context_line":"            node.save(task.context)"},{"line_number":338,"context_line":"            LOG.info(_LI(\u0027Deployment to node %s done\u0027), node.uuid)"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_a901ce07","line":337,"in_reply_to":"fa98f980_fcdb994c","updated":"2014-09-03 05:24:39.000000000","message":"The node\u0027s ilo_boot_iso in instance_info is required for rebooting the node. This is cleaned up on deleting the instance.","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":336,"context_line":"            node.instance_info \u003d i_info"},{"line_number":337,"context_line":"            node.save(task.context)"},{"line_number":338,"context_line":"            LOG.info(_LI(\u0027Deployment to node %s done\u0027), node.uuid)"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        except Exception as e:"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"            LOG.error(_LE(\u0027Deploy failed for instance %(instance)s. \u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_31270acc","line":339,"updated":"2014-09-03 02:22:27.000000000","message":"blank line","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":336,"context_line":"            node.instance_info \u003d i_info"},{"line_number":337,"context_line":"            node.save(task.context)"},{"line_number":338,"context_line":"            LOG.info(_LI(\u0027Deployment to node %s done\u0027), node.uuid)"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        except Exception as e:"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"            LOG.error(_LE(\u0027Deploy failed for instance %(instance)s. \u0027"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_0c082827","line":339,"in_reply_to":"fa98f980_31270acc","updated":"2014-09-03 05:24:39.000000000","message":"Done","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":337,"context_line":"            node.save(task.context)"},{"line_number":338,"context_line":"            LOG.info(_LI(\u0027Deployment to node %s done\u0027), node.uuid)"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        except Exception as e:"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"            LOG.error(_LE(\u0027Deploy failed for instance %(instance)s. \u0027"},{"line_number":343,"context_line":"                          \u0027Error: %(error)s\u0027),"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_310e2a3c","line":340,"updated":"2014-09-03 02:22:27.000000000","message":"wondering if you can list the expected exceptions rather than use Exception.","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":337,"context_line":"            node.save(task.context)"},{"line_number":338,"context_line":"            LOG.info(_LI(\u0027Deployment to node %s done\u0027), node.uuid)"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        except Exception as e:"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"            LOG.error(_LE(\u0027Deploy failed for instance %(instance)s. \u0027"},{"line_number":343,"context_line":"                          \u0027Error: %(error)s\u0027),"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_cc28e088","line":340,"in_reply_to":"fa98f980_310e2a3c","updated":"2014-09-03 05:24:39.000000000","message":"There is a risk in calling out the exceptions.  We need to set the node\u0027s status to failed if there was some exception in this part of the code.  If we encounter some unexpected exception for some reason, the node\u0027s state would be set as DEPLOYING permanently which will not be good.","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"d467ca9bb2b220b23a6c0fd04df8b8b0a5948b93","unresolved":false,"context_lines":[{"line_number":338,"context_line":"            LOG.info(_LI(\u0027Deployment to node %s done\u0027), node.uuid)"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        except Exception as e:"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"            LOG.error(_LE(\u0027Deploy failed for instance %(instance)s. \u0027"},{"line_number":343,"context_line":"                          \u0027Error: %(error)s\u0027),"},{"line_number":344,"context_line":"                      {\u0027instance\u0027: node.instance_uuid, \u0027error\u0027: e})"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_51248ec4","line":341,"updated":"2014-09-03 02:22:27.000000000","message":"blank line","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"38faf09da2a11b71b8fc52d863221b38bb532923","unresolved":false,"context_lines":[{"line_number":338,"context_line":"            LOG.info(_LI(\u0027Deployment to node %s done\u0027), node.uuid)"},{"line_number":339,"context_line":""},{"line_number":340,"context_line":"        except Exception as e:"},{"line_number":341,"context_line":""},{"line_number":342,"context_line":"            LOG.error(_LE(\u0027Deploy failed for instance %(instance)s. \u0027"},{"line_number":343,"context_line":"                          \u0027Error: %(error)s\u0027),"},{"line_number":344,"context_line":"                      {\u0027instance\u0027: node.instance_uuid, \u0027error\u0027: e})"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa98f980_6c39b4d6","line":341,"in_reply_to":"fa98f980_51248ec4","updated":"2014-09-03 05:24:39.000000000","message":"Done","commit_id":"26c38463cd3493e828591e6762b6f669e4641c56"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"2b6b244f7efe7c8d47713480e81f4209fa1b4940","unresolved":false,"context_lines":[{"line_number":63,"context_line":"def _get_boot_iso(task, root_uuid):"},{"line_number":64,"context_line":"    \"\"\"This method returns a boot ISO to boot the node."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    It chooses one of the three options in the order as below:"},{"line_number":67,"context_line":"    1. Image deployed has a meta-propery \u0027boot_iso\u0027 in Glance. This should"},{"line_number":68,"context_line":"       refer to the UUID of the boot_iso which exists in Glance."},{"line_number":69,"context_line":"    2. Generates a boot ISO on the fly using kernel and ramdisk mentioned in"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa98f980_87a93892","line":66,"updated":"2014-09-03 17:57:47.000000000","message":"\"three\" options? Only 2 are listed. Looks like sharing the ISO is the 3rd?","commit_id":"13ed8f8f54b0b2de18952c2f2d513e8bcc3ab9d0"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"78ea37809ca1d5881f7caa21297ad671b8315f94","unresolved":false,"context_lines":[{"line_number":63,"context_line":"def _get_boot_iso(task, root_uuid):"},{"line_number":64,"context_line":"    \"\"\"This method returns a boot ISO to boot the node."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    It chooses one of the three options in the order as below:"},{"line_number":67,"context_line":"    1. Image deployed has a meta-propery \u0027boot_iso\u0027 in Glance. This should"},{"line_number":68,"context_line":"       refer to the UUID of the boot_iso which exists in Glance."},{"line_number":69,"context_line":"    2. Generates a boot ISO on the fly using kernel and ramdisk mentioned in"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa98f980_12d90822","line":66,"in_reply_to":"fa98f980_87a93892","updated":"2014-09-03 18:21:07.000000000","message":"Done","commit_id":"13ed8f8f54b0b2de18952c2f2d513e8bcc3ab9d0"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"2b6b244f7efe7c8d47713480e81f4209fa1b4940","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    \"\"\"This method returns a boot ISO to boot the node."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    It chooses one of the three options in the order as below:"},{"line_number":67,"context_line":"    1. Image deployed has a meta-propery \u0027boot_iso\u0027 in Glance. This should"},{"line_number":68,"context_line":"       refer to the UUID of the boot_iso which exists in Glance."},{"line_number":69,"context_line":"    2. Generates a boot ISO on the fly using kernel and ramdisk mentioned in"},{"line_number":70,"context_line":"       the image deployed. It uploads the generated boot ISO to Swift."}],"source_content_type":"text/x-python","patch_set":24,"id":"fa98f980_678ff42a","line":67,"updated":"2014-09-03 17:57:47.000000000","message":"nit: s/propery/property/","commit_id":"13ed8f8f54b0b2de18952c2f2d513e8bcc3ab9d0"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"78ea37809ca1d5881f7caa21297ad671b8315f94","unresolved":false,"context_lines":[{"line_number":64,"context_line":"    \"\"\"This method returns a boot ISO to boot the node."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    It chooses one of the three options in the order as below:"},{"line_number":67,"context_line":"    1. Image deployed has a meta-propery \u0027boot_iso\u0027 in Glance. This should"},{"line_number":68,"context_line":"       refer to the UUID of the boot_iso which exists in Glance."},{"line_number":69,"context_line":"    2. Generates a boot ISO on the fly using kernel and ramdisk mentioned in"},{"line_number":70,"context_line":"       the image deployed. It uploads the generated boot ISO to Swift."}],"source_content_type":"text/x-python","patch_set":24,"id":"fa98f980_32d60cf2","line":67,"in_reply_to":"fa98f980_678ff42a","updated":"2014-09-03 18:21:07.000000000","message":"Done","commit_id":"13ed8f8f54b0b2de18952c2f2d513e8bcc3ab9d0"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"2b6b244f7efe7c8d47713480e81f4209fa1b4940","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        the format \u0027glance:\u003cglance-boot-iso-uuid\u003e\u0027 or"},{"line_number":76,"context_line":"        \u0027swift:\u003cswift-boot_iso-object-name\u003e\u0027.  In case of Swift, it is assumed"},{"line_number":77,"context_line":"        that the object exists in CONF.ilo.swift_ilo_container."},{"line_number":78,"context_line":"        On error finding the boot iso, it returns None."},{"line_number":79,"context_line":"    \"\"\""},{"line_number":80,"context_line":"    # Option 1 - Check if user has provided a boot_iso in Glance."},{"line_number":81,"context_line":"    LOG.debug(\"Trying to get a boot ISO to boot the baremetal node\")"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa98f980_52d2b05c","line":78,"updated":"2014-09-03 17:57:47.000000000","message":"_parse_deploy_info() can raise exceptions. Should be noted here.","commit_id":"13ed8f8f54b0b2de18952c2f2d513e8bcc3ab9d0"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"78ea37809ca1d5881f7caa21297ad671b8315f94","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        the format \u0027glance:\u003cglance-boot-iso-uuid\u003e\u0027 or"},{"line_number":76,"context_line":"        \u0027swift:\u003cswift-boot_iso-object-name\u003e\u0027.  In case of Swift, it is assumed"},{"line_number":77,"context_line":"        that the object exists in CONF.ilo.swift_ilo_container."},{"line_number":78,"context_line":"        On error finding the boot iso, it returns None."},{"line_number":79,"context_line":"    \"\"\""},{"line_number":80,"context_line":"    # Option 1 - Check if user has provided a boot_iso in Glance."},{"line_number":81,"context_line":"    LOG.debug(\"Trying to get a boot ISO to boot the baremetal node\")"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa98f980_522d50fd","line":78,"in_reply_to":"fa98f980_52d2b05c","updated":"2014-09-03 18:21:07.000000000","message":"Done","commit_id":"13ed8f8f54b0b2de18952c2f2d513e8bcc3ab9d0"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"79cc0caf9b614bb66f44f22327e562e747863272","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            image_uuid, \u0027boot_iso\u0027)"},{"line_number":86,"context_line":"    if boot_iso_uuid:"},{"line_number":87,"context_line":"        LOG.debug(\"Found boot_iso %s in Glance\", boot_iso_uuid)"},{"line_number":88,"context_line":"        return \u0027glance:\u0027 + boot_iso_uuid"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    kernel_uuid \u003d images.get_glance_image_property(task.context,"},{"line_number":91,"context_line":"            image_uuid, \u0027kernel_id\u0027)"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa98f980_6719b4d6","line":88,"updated":"2014-09-03 17:42:38.000000000","message":"Nit: I would like this consistent line 60 above.","commit_id":"13ed8f8f54b0b2de18952c2f2d513e8bcc3ab9d0"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"78ea37809ca1d5881f7caa21297ad671b8315f94","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            image_uuid, \u0027boot_iso\u0027)"},{"line_number":86,"context_line":"    if boot_iso_uuid:"},{"line_number":87,"context_line":"        LOG.debug(\"Found boot_iso %s in Glance\", boot_iso_uuid)"},{"line_number":88,"context_line":"        return \u0027glance:\u0027 + boot_iso_uuid"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"    kernel_uuid \u003d images.get_glance_image_property(task.context,"},{"line_number":91,"context_line":"            image_uuid, \u0027kernel_id\u0027)"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa98f980_124748bd","line":88,"in_reply_to":"fa98f980_6719b4d6","updated":"2014-09-03 18:21:07.000000000","message":"Done","commit_id":"13ed8f8f54b0b2de18952c2f2d513e8bcc3ab9d0"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"79cc0caf9b614bb66f44f22327e562e747863272","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    LOG.debug(\"Created boot_iso %s in Swift\", boot_iso_object_name)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    return \u0027swift:\u0027 + boot_iso_object_name"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"def _clean_up_boot_iso_for_instance(node):"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa98f980_e724c40e","line":122,"updated":"2014-09-03 17:42:38.000000000","message":"ditto Nit.","commit_id":"13ed8f8f54b0b2de18952c2f2d513e8bcc3ab9d0"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"78ea37809ca1d5881f7caa21297ad671b8315f94","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"    LOG.debug(\"Created boot_iso %s in Swift\", boot_iso_object_name)"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"    return \u0027swift:\u0027 + boot_iso_object_name"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"def _clean_up_boot_iso_for_instance(node):"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa98f980_32444cb6","line":122,"in_reply_to":"fa98f980_e724c40e","updated":"2014-09-03 18:21:07.000000000","message":"Done","commit_id":"13ed8f8f54b0b2de18952c2f2d513e8bcc3ab9d0"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"2b6b244f7efe7c8d47713480e81f4209fa1b4940","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    deploy images to the node."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    :param node: a single Node."},{"line_number":161,"context_line":"    :returns: A dict with the driver_info values."},{"line_number":162,"context_line":"    \"\"\""},{"line_number":163,"context_line":"    info \u003d node.driver_info"},{"line_number":164,"context_line":"    d_info \u003d {}"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa98f980_12b7483b","line":161,"updated":"2014-09-03 17:57:47.000000000","message":"This can raise a MissingParameterValue exception (from check_for_missing_params).","commit_id":"13ed8f8f54b0b2de18952c2f2d513e8bcc3ab9d0"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"78ea37809ca1d5881f7caa21297ad671b8315f94","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    deploy images to the node."},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"    :param node: a single Node."},{"line_number":161,"context_line":"    :returns: A dict with the driver_info values."},{"line_number":162,"context_line":"    \"\"\""},{"line_number":163,"context_line":"    info \u003d node.driver_info"},{"line_number":164,"context_line":"    d_info \u003d {}"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa98f980_920a5877","line":161,"in_reply_to":"fa98f980_12b7483b","updated":"2014-09-03 18:21:07.000000000","message":"Done","commit_id":"13ed8f8f54b0b2de18952c2f2d513e8bcc3ab9d0"},{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"2b6b244f7efe7c8d47713480e81f4209fa1b4940","unresolved":false,"context_lines":[{"line_number":178,"context_line":"    this driver to deploy images to the node."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    :param node: a single Node."},{"line_number":181,"context_line":"    :returns: A dict with the instance_info and driver_info values."},{"line_number":182,"context_line":"    \"\"\""},{"line_number":183,"context_line":"    info \u003d {}"},{"line_number":184,"context_line":"    info.update(iscsi_deploy.parse_instance_info(node))"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa98f980_d24ce044","line":181,"updated":"2014-09-03 17:57:47.000000000","message":"Both parsing functions can raise some exceptions (MissingParameterValue, InvalidParameterValue) that would be propogated up from here. Needs documenting.","commit_id":"13ed8f8f54b0b2de18952c2f2d513e8bcc3ab9d0"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"78ea37809ca1d5881f7caa21297ad671b8315f94","unresolved":false,"context_lines":[{"line_number":178,"context_line":"    this driver to deploy images to the node."},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"    :param node: a single Node."},{"line_number":181,"context_line":"    :returns: A dict with the instance_info and driver_info values."},{"line_number":182,"context_line":"    \"\"\""},{"line_number":183,"context_line":"    info \u003d {}"},{"line_number":184,"context_line":"    info.update(iscsi_deploy.parse_instance_info(node))"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa98f980_f224840e","line":181,"in_reply_to":"fa98f980_d24ce044","updated":"2014-09-03 18:21:07.000000000","message":"Done","commit_id":"13ed8f8f54b0b2de18952c2f2d513e8bcc3ab9d0"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"b9a0cf8e8e905aaa40b0708e981dc284e7ee7bde","unresolved":false,"context_lines":[{"line_number":292,"context_line":"        pass"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"class VendorPassthru(base.VendorInterface):"},{"line_number":296,"context_line":"    \"\"\"Vendor-specific interfaces for iLO deploy drivers.\"\"\""},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    def get_properties(self):"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa98f980_873f7886","line":295,"updated":"2014-09-03 17:28:31.000000000","message":"nit: it makes sense to have the Vendor interface for iLO in it\u0027s own file no (e.g vendor.py) ?\n\nJust looks a bit inconsistent cuz you have:\n\n- power.py to the power interface\n- deploy.py to the deploy interface AND vendor interface","commit_id":"13ed8f8f54b0b2de18952c2f2d513e8bcc3ab9d0"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"78ea37809ca1d5881f7caa21297ad671b8315f94","unresolved":false,"context_lines":[{"line_number":292,"context_line":"        pass"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"class VendorPassthru(base.VendorInterface):"},{"line_number":296,"context_line":"    \"\"\"Vendor-specific interfaces for iLO deploy drivers.\"\"\""},{"line_number":297,"context_line":""},{"line_number":298,"context_line":"    def get_properties(self):"}],"source_content_type":"text/x-python","patch_set":24,"id":"fa98f980_8d56b9cc","line":295,"in_reply_to":"fa98f980_873f7886","updated":"2014-09-03 18:21:07.000000000","message":"Currently this is the only vendorpassthru and it is related to deploy.  So I thought of placing it in this file.  Later on when the list of vendor passthru\u0027s increase, we will move it to another file.  Please let me know if that looks okay.","commit_id":"13ed8f8f54b0b2de18952c2f2d513e8bcc3ab9d0"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"b11d97203a23b9e334d06823230be8f753078be3","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        that the object exists in CONF.ilo.swift_ilo_container."},{"line_number":78,"context_line":"        On error finding the boot iso, it returns None."},{"line_number":79,"context_line":"    :raises: MissingParameterValue, if any of the required parameters are"},{"line_number":80,"context_line":"        missing are missing in the node\u0027s driver_info or instance_info."},{"line_number":81,"context_line":"    :raises: InvalidParameterValue, if any of the parameters have invalid"},{"line_number":82,"context_line":"        value in the node\u0027s driver_info or instance_info."},{"line_number":83,"context_line":"    :raises: SwiftOperationError, if operation with Swift fails."}],"source_content_type":"text/x-python","patch_set":25,"id":"fa98f980_131e6abb","line":80,"updated":"2014-09-03 19:27:47.000000000","message":"nit: \"are missing\" is duplicated in the docstring","commit_id":"cbc938d015f39921de0e99694462a3b288ccd418"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"6e2bb886f79559bb3b83c07ec3f914f99fd8c785","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        that the object exists in CONF.ilo.swift_ilo_container."},{"line_number":78,"context_line":"        On error finding the boot iso, it returns None."},{"line_number":79,"context_line":"    :raises: MissingParameterValue, if any of the required parameters are"},{"line_number":80,"context_line":"        missing are missing in the node\u0027s driver_info or instance_info."},{"line_number":81,"context_line":"    :raises: InvalidParameterValue, if any of the parameters have invalid"},{"line_number":82,"context_line":"        value in the node\u0027s driver_info or instance_info."},{"line_number":83,"context_line":"    :raises: SwiftOperationError, if operation with Swift fails."}],"source_content_type":"text/x-python","patch_set":25,"id":"fa98f980_457bc58b","line":80,"in_reply_to":"fa98f980_131e6abb","updated":"2014-09-03 19:38:43.000000000","message":"Done","commit_id":"cbc938d015f39921de0e99694462a3b288ccd418"}],"ironic/drivers/modules/ilo/power.py":[{"author":{"_account_id":3099,"name":"David Shrewsbury","email":"dshrewsb@redhat.com","username":"dshrews"},"change_message_id":"3cfeb1d943d62f06445024a63733ba635bfa5959","unresolved":false,"context_lines":[{"line_number":123,"context_line":"def _set_power_state(task, target_state):"},{"line_number":124,"context_line":"    \"\"\"Turns the server power on/off or do a reboot."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    :param node: an ironic node object."},{"line_number":127,"context_line":"    :param target_state: target state of the node."},{"line_number":128,"context_line":"    :raises: InvalidParameterValue if an invalid power state was specified."},{"line_number":129,"context_line":"    :raises: IloOperationError on an error from IloClient library."}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_f385c307","line":126,"updated":"2014-08-26 17:05:01.000000000","message":"1st param is no longer node. Need to adjust the comment.","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e0237cafca5ac0cdbb33b8cc08a5a0eb856143ad","unresolved":false,"context_lines":[{"line_number":123,"context_line":"def _set_power_state(task, target_state):"},{"line_number":124,"context_line":"    \"\"\"Turns the server power on/off or do a reboot."},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    :param node: an ironic node object."},{"line_number":127,"context_line":"    :param target_state: target state of the node."},{"line_number":128,"context_line":"    :raises: InvalidParameterValue if an invalid power state was specified."},{"line_number":129,"context_line":"    :raises: IloOperationError on an error from IloClient library."}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_d076f83e","line":126,"in_reply_to":"1abeadc6_f385c307","updated":"2014-08-26 20:32:57.000000000","message":"Done","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"57b6003d9a75b7d4786eb668c0f4f0b112de7bed","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        if target_state \u003d\u003d states.POWER_OFF:"},{"line_number":139,"context_line":"            ilo_object.hold_pwr_btn()"},{"line_number":140,"context_line":"        elif target_state \u003d\u003d states.POWER_ON:"},{"line_number":141,"context_line":"            _attach_boot_iso(task)"},{"line_number":142,"context_line":"            ilo_object.set_host_power(\u0027ON\u0027)"},{"line_number":143,"context_line":"        elif target_state \u003d\u003d states.REBOOT:"},{"line_number":144,"context_line":"            _attach_boot_iso(task)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_6eb46a35","line":141,"updated":"2014-08-26 17:19:46.000000000","message":"Wondering why we need to attach the ISO everytime we power on/reboot the machine. I\u0027m wondering what are the consequences here? Willl rebuild instance work in this case?\n\nThis is really needed ?\n\n(I will check the spec, and the iterations with the comments there to try to clarify my mind about it)","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":10342,"name":"Jay Faulkner","display_name":"JayF","email":"jay@jvf.cc","username":"JayF","status":"youtube.com/@oss-gr / podcast.gr-oss.io"},"change_message_id":"f447419402991c3966eadcbb799bb788775b52be","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        if target_state \u003d\u003d states.POWER_OFF:"},{"line_number":139,"context_line":"            ilo_object.hold_pwr_btn()"},{"line_number":140,"context_line":"        elif target_state \u003d\u003d states.POWER_ON:"},{"line_number":141,"context_line":"            _attach_boot_iso(task)"},{"line_number":142,"context_line":"            ilo_object.set_host_power(\u0027ON\u0027)"},{"line_number":143,"context_line":"        elif target_state \u003d\u003d states.REBOOT:"},{"line_number":144,"context_line":"            _attach_boot_iso(task)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_aea4c2b9","line":141,"in_reply_to":"1abeadc6_6eb46a35","updated":"2014-08-26 17:25:13.000000000","message":"This was mentioned in the spec. Basically this is to account for swift temp url expirations among other things.\n\nI\u0027m OK with this being here.","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"e0237cafca5ac0cdbb33b8cc08a5a0eb856143ad","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        if target_state \u003d\u003d states.POWER_OFF:"},{"line_number":139,"context_line":"            ilo_object.hold_pwr_btn()"},{"line_number":140,"context_line":"        elif target_state \u003d\u003d states.POWER_ON:"},{"line_number":141,"context_line":"            _attach_boot_iso(task)"},{"line_number":142,"context_line":"            ilo_object.set_host_power(\u0027ON\u0027)"},{"line_number":143,"context_line":"        elif target_state \u003d\u003d states.REBOOT:"},{"line_number":144,"context_line":"            _attach_boot_iso(task)"}],"source_content_type":"text/x-python","patch_set":10,"id":"1abeadc6_d0cb5848","line":141,"in_reply_to":"1abeadc6_6eb46a35","updated":"2014-08-26 20:32:57.000000000","message":"We need this to boot the machine everytime - just like pxe does boot from nic everytime.  Instead virtual media requires the boot iso to be attached everytime we boot the machine. As JayF said, we need to attach it everytime to account for the swift temp url expiration.","commit_id":"5520a9e2e98a005b5e085a9ce940cec7b5734965"}],"ironic/tests/drivers/ilo/test_common.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bb08cd720c7e7b101e599c78a696e6b5e3a00bea","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        ret_val \u003d ilo_common.get_glance_image_property(\u0027con\u0027, \u0027uuid\u0027, \u0027prop1\u0027)"},{"line_number":222,"context_line":"        image_service_mock.assert_called_once_with(version\u003d2, context\u003d\u0027con\u0027)"},{"line_number":223,"context_line":"        image_service_obj_mock.show.assert_called_once_with(\u0027uuid\u0027)"},{"line_number":224,"context_line":"        self.assertEqual(ret_val, \u0027val1\u0027)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        ret_val \u003d ilo_common.get_glance_image_property(\u0027con\u0027, \u0027uuid\u0027, \u0027prop2\u0027)"},{"line_number":227,"context_line":"        self.assertEqual(ret_val, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_f5cdd987","line":224,"updated":"2014-08-14 12:29:24.000000000","message":"self.assertEqual(\u0027val1\u0027, ret_val)","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":221,"context_line":"        ret_val \u003d ilo_common.get_glance_image_property(\u0027con\u0027, \u0027uuid\u0027, \u0027prop1\u0027)"},{"line_number":222,"context_line":"        image_service_mock.assert_called_once_with(version\u003d2, context\u003d\u0027con\u0027)"},{"line_number":223,"context_line":"        image_service_obj_mock.show.assert_called_once_with(\u0027uuid\u0027)"},{"line_number":224,"context_line":"        self.assertEqual(ret_val, \u0027val1\u0027)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        ret_val \u003d ilo_common.get_glance_image_property(\u0027con\u0027, \u0027uuid\u0027, \u0027prop2\u0027)"},{"line_number":227,"context_line":"        self.assertEqual(ret_val, None)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_c16815f8","line":224,"in_reply_to":"7ac7a964_f5cdd987","updated":"2014-08-14 16:14:41.000000000","message":"Done","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bb08cd720c7e7b101e599c78a696e6b5e3a00bea","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        self.assertEqual(ret_val, \u0027val1\u0027)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        ret_val \u003d ilo_common.get_glance_image_property(\u0027con\u0027, \u0027uuid\u0027, \u0027prop2\u0027)"},{"line_number":227,"context_line":"        self.assertEqual(ret_val, None)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    @mock.patch.object(image_service, \u0027Service\u0027)"},{"line_number":230,"context_line":"    def test_get_tmp_url_for_glance_image(self, image_service_mock):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_d5b9bdea","line":227,"updated":"2014-08-14 12:29:24.000000000","message":"self.assertIsNone(ret_val)","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":224,"context_line":"        self.assertEqual(ret_val, \u0027val1\u0027)"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        ret_val \u003d ilo_common.get_glance_image_property(\u0027con\u0027, \u0027uuid\u0027, \u0027prop2\u0027)"},{"line_number":227,"context_line":"        self.assertEqual(ret_val, None)"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    @mock.patch.object(image_service, \u0027Service\u0027)"},{"line_number":230,"context_line":"    def test_get_tmp_url_for_glance_image(self, image_service_mock):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_0173ede9","line":227,"in_reply_to":"7ac7a964_d5b9bdea","updated":"2014-08-14 16:14:41.000000000","message":"Done","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bb08cd720c7e7b101e599c78a696e6b5e3a00bea","unresolved":false,"context_lines":[{"line_number":238,"context_line":"        tmp_url \u003d ilo_common.get_tmp_url_for_glance_image(\u0027context\u0027,"},{"line_number":239,"context_line":"                                                          \u0027glance_uuid\u0027)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        glance_service_mock.show.assert_called_with(\u0027glance_uuid\u0027)"},{"line_number":242,"context_line":"        self.assertEqual(\u0027tmp-url\u0027, tmp_url)"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    @mock.patch.object(ilo_common, \u0027ilo_client\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_f594f945","line":241,"updated":"2014-08-14 12:29:24.000000000","message":"I guess assert_called_once_with can be used here and below","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":238,"context_line":"        tmp_url \u003d ilo_common.get_tmp_url_for_glance_image(\u0027context\u0027,"},{"line_number":239,"context_line":"                                                          \u0027glance_uuid\u0027)"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":"        glance_service_mock.show.assert_called_with(\u0027glance_uuid\u0027)"},{"line_number":242,"context_line":"        self.assertEqual(\u0027tmp-url\u0027, tmp_url)"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"    @mock.patch.object(ilo_common, \u0027ilo_client\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_6181018f","line":241,"in_reply_to":"7ac7a964_f594f945","updated":"2014-08-14 16:14:41.000000000","message":"Done","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bb08cd720c7e7b101e599c78a696e6b5e3a00bea","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        set_status_mock.assert_called_with(device\u003d\u0027FLOPPY\u0027,"},{"line_number":255,"context_line":"                boot_option\u003d\u0027CONNECT\u0027, write_protect\u003d\u0027YES\u0027)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        set_status_mock.side_effect \u003d [Exception()]"},{"line_number":258,"context_line":"        self.assertRaises(exception.IloOperationError,"},{"line_number":259,"context_line":"                ilo_common.attach_vmedia, self.node, \u0027FLOPPY\u0027, \u0027url\u0027)"},{"line_number":260,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_b5ab6188","line":257,"updated":"2014-08-14 12:29:24.000000000","message":"nit: list is redundant","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0c9204e1d70417a18e7730c1c622850e863c7a8c","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        set_status_mock.assert_called_with(device\u003d\u0027FLOPPY\u0027,"},{"line_number":255,"context_line":"                boot_option\u003d\u0027CONNECT\u0027, write_protect\u003d\u0027YES\u0027)"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        set_status_mock.side_effect \u003d [Exception()]"},{"line_number":258,"context_line":"        self.assertRaises(exception.IloOperationError,"},{"line_number":259,"context_line":"                ilo_common.attach_vmedia, self.node, \u0027FLOPPY\u0027, \u0027url\u0027)"},{"line_number":260,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"7ac7a964_217709d6","line":257,"in_reply_to":"7ac7a964_b5ab6188","updated":"2014-08-14 16:14:41.000000000","message":"Done","commit_id":"3679e5201d28dda19c3052efe6648add8c89b06e"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a62262c6ec070b7844e2db410e45671892b0168f","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        object_headers \u003d {\u0027X-Delete-After\u0027: timeout}"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":194,"context_line":"                                                  shared\u003dFalse) as task:"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"            task.context.auth_token \u003d \u0027token\u0027"},{"line_number":197,"context_line":"            tmp_url \u003d ilo_common._prepare_floppy_image(task, deploy_args)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_ba5c33ef","line":194,"updated":"2014-08-25 14:28:38.000000000","message":"nit: indentation","commit_id":"cd6b6f71911d5143d6282b86bdc781f4bcaa7a4d"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"081356a6e97044e29b248b8018cb2c695212a62d","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        object_headers \u003d {\u0027X-Delete-After\u0027: timeout}"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":194,"context_line":"                                                  shared\u003dFalse) as task:"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"            task.context.auth_token \u003d \u0027token\u0027"},{"line_number":197,"context_line":"            tmp_url \u003d ilo_common._prepare_floppy_image(task, deploy_args)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_bded0391","line":194,"in_reply_to":"1abeadc6_ba5c33ef","updated":"2014-08-26 14:06:02.000000000","message":"Done","commit_id":"cd6b6f71911d5143d6282b86bdc781f4bcaa7a4d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bf4ac9da316f4815b531a890a6ee5a7c72d9f3b0","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                                   unlink_mock):"},{"line_number":179,"context_line":"        mock_token_file_obj \u003d mock.MagicMock()"},{"line_number":180,"context_line":"        type(mock_token_file_obj).name \u003d mock.PropertyMock("},{"line_number":181,"context_line":"                                              return_value\u003d\u0027token-tmp-file\u0027)"},{"line_number":182,"context_line":"        mock_image_file_handle \u003d mock.MagicMock(spec\u003dfile)"},{"line_number":183,"context_line":"        mock_image_file_obj \u003d mock.MagicMock()"},{"line_number":184,"context_line":"        type(mock_image_file_obj).name \u003d mock.PropertyMock("}],"source_content_type":"text/x-python","patch_set":23,"id":"fa98f980_59bae96e","line":181,"updated":"2014-09-03 10:48:24.000000000","message":"nit:\n\n mock_token_file_obj.name \u003d \u0027token-tmp-file\u0027","commit_id":"bfa9fe551c28a874ef875c288f1170b123b39002"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"eeab9ec9ed6e6600cd43e554530fc57ea7d5b5e2","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                                   unlink_mock):"},{"line_number":179,"context_line":"        mock_token_file_obj \u003d mock.MagicMock()"},{"line_number":180,"context_line":"        type(mock_token_file_obj).name \u003d mock.PropertyMock("},{"line_number":181,"context_line":"                                              return_value\u003d\u0027token-tmp-file\u0027)"},{"line_number":182,"context_line":"        mock_image_file_handle \u003d mock.MagicMock(spec\u003dfile)"},{"line_number":183,"context_line":"        mock_image_file_obj \u003d mock.MagicMock()"},{"line_number":184,"context_line":"        type(mock_image_file_obj).name \u003d mock.PropertyMock("}],"source_content_type":"text/x-python","patch_set":23,"id":"fa98f980_eaa3b9af","line":181,"in_reply_to":"fa98f980_59bae96e","updated":"2014-09-03 12:15:44.000000000","message":"Done","commit_id":"bfa9fe551c28a874ef875c288f1170b123b39002"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bf4ac9da316f4815b531a890a6ee5a7c72d9f3b0","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        mock_image_file_handle \u003d mock.MagicMock(spec\u003dfile)"},{"line_number":183,"context_line":"        mock_image_file_obj \u003d mock.MagicMock()"},{"line_number":184,"context_line":"        type(mock_image_file_obj).name \u003d mock.PropertyMock("},{"line_number":185,"context_line":"                                              return_value\u003d\u0027image-tmp-file\u0027)"},{"line_number":186,"context_line":"        mock_image_file_handle.__enter__.return_value \u003d mock_image_file_obj"},{"line_number":187,"context_line":"        tempfile_mock.side_effect \u003d [mock_image_file_handle,"},{"line_number":188,"context_line":"                                     mock_token_file_obj]"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa98f980_b9a83521","line":185,"updated":"2014-09-03 10:48:24.000000000","message":"ditto (and more below)","commit_id":"bfa9fe551c28a874ef875c288f1170b123b39002"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"eeab9ec9ed6e6600cd43e554530fc57ea7d5b5e2","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        mock_image_file_handle \u003d mock.MagicMock(spec\u003dfile)"},{"line_number":183,"context_line":"        mock_image_file_obj \u003d mock.MagicMock()"},{"line_number":184,"context_line":"        type(mock_image_file_obj).name \u003d mock.PropertyMock("},{"line_number":185,"context_line":"                                              return_value\u003d\u0027image-tmp-file\u0027)"},{"line_number":186,"context_line":"        mock_image_file_handle.__enter__.return_value \u003d mock_image_file_obj"},{"line_number":187,"context_line":"        tempfile_mock.side_effect \u003d [mock_image_file_handle,"},{"line_number":188,"context_line":"                                     mock_token_file_obj]"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa98f980_0aa9dd90","line":185,"in_reply_to":"fa98f980_b9a83521","updated":"2014-09-03 12:15:44.000000000","message":"Done","commit_id":"bfa9fe551c28a874ef875c288f1170b123b39002"}],"ironic/tests/drivers/ilo/test_deploy.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a62262c6ec070b7844e2db410e45671892b0168f","unresolved":false,"context_lines":[{"line_number":311,"context_line":"            get_boot_iso_mock.assert_called_once_with(task, \u0027root-uuid\u0027)"},{"line_number":312,"context_line":"            setup_vmedia_mock.assert_called_once_with(task, \u0027boot-iso\u0027)"},{"line_number":313,"context_line":"            set_boot_device_mock.assert_called_once_with(task.node, \u0027CDROM\u0027)"},{"line_number":314,"context_line":"            self.assertEqual(task.node.instance_info[\u0027boot_iso\u0027], \u0027boot-iso\u0027)"},{"line_number":315,"context_line":"            notify_deploy_complete_mock.assert_called_once_with(\u0027123456\u0027)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    @mock.patch.object(ilo_deploy, \u0027LOG\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_fa6dcb9a","line":314,"updated":"2014-08-25 14:28:38.000000000","message":"nit: reverse order of arguments","commit_id":"cd6b6f71911d5143d6282b86bdc781f4bcaa7a4d"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"081356a6e97044e29b248b8018cb2c695212a62d","unresolved":false,"context_lines":[{"line_number":311,"context_line":"            get_boot_iso_mock.assert_called_once_with(task, \u0027root-uuid\u0027)"},{"line_number":312,"context_line":"            setup_vmedia_mock.assert_called_once_with(task, \u0027boot-iso\u0027)"},{"line_number":313,"context_line":"            set_boot_device_mock.assert_called_once_with(task.node, \u0027CDROM\u0027)"},{"line_number":314,"context_line":"            self.assertEqual(task.node.instance_info[\u0027boot_iso\u0027], \u0027boot-iso\u0027)"},{"line_number":315,"context_line":"            notify_deploy_complete_mock.assert_called_once_with(\u0027123456\u0027)"},{"line_number":316,"context_line":""},{"line_number":317,"context_line":"    @mock.patch.object(ilo_deploy, \u0027LOG\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_1dbb5773","line":314,"in_reply_to":"1abeadc6_fa6dcb9a","updated":"2014-08-26 14:06:02.000000000","message":"Done","commit_id":"cd6b6f71911d5143d6282b86bdc781f4bcaa7a4d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bf4ac9da316f4815b531a890a6ee5a7c72d9f3b0","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        swift_obj_mock \u003d swift_api_mock.return_value"},{"line_number":93,"context_line":"        fileobj_mock \u003d mock.MagicMock()"},{"line_number":94,"context_line":"        type(fileobj_mock).name \u003d mock.PropertyMock("},{"line_number":95,"context_line":"                                          return_value\u003d\u0027tmpfile\u0027)"},{"line_number":96,"context_line":"        mock_file_handle \u003d mock.MagicMock(spec\u003dfile)"},{"line_number":97,"context_line":"        mock_file_handle.__enter__.return_value \u003d fileobj_mock"},{"line_number":98,"context_line":"        tempfile_mock.return_value \u003d mock_file_handle"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa98f980_193941f3","line":95,"updated":"2014-09-03 10:48:24.000000000","message":"ditto about setting an attribute","commit_id":"bfa9fe551c28a874ef875c288f1170b123b39002"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"eeab9ec9ed6e6600cd43e554530fc57ea7d5b5e2","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        swift_obj_mock \u003d swift_api_mock.return_value"},{"line_number":93,"context_line":"        fileobj_mock \u003d mock.MagicMock()"},{"line_number":94,"context_line":"        type(fileobj_mock).name \u003d mock.PropertyMock("},{"line_number":95,"context_line":"                                          return_value\u003d\u0027tmpfile\u0027)"},{"line_number":96,"context_line":"        mock_file_handle \u003d mock.MagicMock(spec\u003dfile)"},{"line_number":97,"context_line":"        mock_file_handle.__enter__.return_value \u003d fileobj_mock"},{"line_number":98,"context_line":"        tempfile_mock.return_value \u003d mock_file_handle"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa98f980_0a90fd48","line":95,"in_reply_to":"fa98f980_193941f3","updated":"2014-09-03 12:15:44.000000000","message":"Done","commit_id":"bfa9fe551c28a874ef875c288f1170b123b39002"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bf4ac9da316f4815b531a890a6ee5a7c72d9f3b0","unresolved":false,"context_lines":[{"line_number":211,"context_line":"                    set_boot_device_mock, node_power_action_mock,"},{"line_number":212,"context_line":"                    build_opts_mock, get_nic_mock, reboot_into_mock):"},{"line_number":213,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":214,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":215,"context_line":"            deploy_opts \u003d {\u0027a\u0027: \u0027b\u0027}"},{"line_number":216,"context_line":"            build_opts_mock.return_value \u003d deploy_opts"},{"line_number":217,"context_line":"            get_nic_mock.return_value \u003d \u002712:34:56:78:90:ab\u0027"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa98f980_b904b518","line":214,"updated":"2014-09-03 10:48:24.000000000","message":"nit: would be better if you acquired lock only for the relevant part","commit_id":"bfa9fe551c28a874ef875c288f1170b123b39002"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"eeab9ec9ed6e6600cd43e554530fc57ea7d5b5e2","unresolved":false,"context_lines":[{"line_number":211,"context_line":"                    set_boot_device_mock, node_power_action_mock,"},{"line_number":212,"context_line":"                    build_opts_mock, get_nic_mock, reboot_into_mock):"},{"line_number":213,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":214,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":215,"context_line":"            deploy_opts \u003d {\u0027a\u0027: \u0027b\u0027}"},{"line_number":216,"context_line":"            build_opts_mock.return_value \u003d deploy_opts"},{"line_number":217,"context_line":"            get_nic_mock.return_value \u003d \u002712:34:56:78:90:ab\u0027"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa98f980_6aa509a1","line":214,"in_reply_to":"fa98f980_b904b518","updated":"2014-09-03 12:15:44.000000000","message":"Done","commit_id":"bfa9fe551c28a874ef875c288f1170b123b39002"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"bf4ac9da316f4815b531a890a6ee5a7c72d9f3b0","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        get_boot_iso_mock.return_value \u003d \u0027boot-iso\u0027"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":278,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":279,"context_line":"            task.node.provision_state \u003d states.DEPLOYWAIT"},{"line_number":280,"context_line":"            vendor \u003d ilo_deploy.VendorPassthru()"},{"line_number":281,"context_line":"            vendor._continue_deploy(task, **kwargs)"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa98f980_0407141a","line":278,"updated":"2014-09-03 10:48:24.000000000","message":"ditto","commit_id":"bfa9fe551c28a874ef875c288f1170b123b39002"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"eeab9ec9ed6e6600cd43e554530fc57ea7d5b5e2","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        get_boot_iso_mock.return_value \u003d \u0027boot-iso\u0027"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":278,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":279,"context_line":"            task.node.provision_state \u003d states.DEPLOYWAIT"},{"line_number":280,"context_line":"            vendor \u003d ilo_deploy.VendorPassthru()"},{"line_number":281,"context_line":"            vendor._continue_deploy(task, **kwargs)"}],"source_content_type":"text/x-python","patch_set":23,"id":"fa98f980_caa8b579","line":278,"in_reply_to":"fa98f980_0407141a","updated":"2014-09-03 12:15:44.000000000","message":"Done","commit_id":"bfa9fe551c28a874ef875c288f1170b123b39002"}],"ironic/tests/drivers/ilo/test_power.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a62262c6ec070b7844e2db410e45671892b0168f","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def test__get_power_state(self, power_ilo_client_mock,"},{"line_number":60,"context_line":"                              common_ilo_client_mock):"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        ilo_mock_object \u003d common_ilo_client_mock.IloClient.return_value"},{"line_number":63,"context_line":"        ilo_mock_object.get_host_power_status.return_value \u003d \u0027ON\u0027"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_7a30db9e","line":61,"updated":"2014-08-25 14:28:38.000000000","message":"nit: please don\u0027t insert newlines w/o purpose","commit_id":"cd6b6f71911d5143d6282b86bdc781f4bcaa7a4d"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"081356a6e97044e29b248b8018cb2c695212a62d","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def test__get_power_state(self, power_ilo_client_mock,"},{"line_number":60,"context_line":"                              common_ilo_client_mock):"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"        ilo_mock_object \u003d common_ilo_client_mock.IloClient.return_value"},{"line_number":63,"context_line":"        ilo_mock_object.get_host_power_status.return_value \u003d \u0027ON\u0027"},{"line_number":64,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_bd626314","line":61,"in_reply_to":"1abeadc6_7a30db9e","updated":"2014-08-26 14:06:02.000000000","message":"Done","commit_id":"cd6b6f71911d5143d6282b86bdc781f4bcaa7a4d"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"a62262c6ec070b7844e2db410e45671892b0168f","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def test__get_power_state_fail(self, power_ilo_client_mock,"},{"line_number":76,"context_line":"                                   common_ilo_client_mock):"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        power_ilo_client_mock.IloError \u003d Exception"},{"line_number":79,"context_line":"        ilo_mock_object \u003d common_ilo_client_mock.IloClient.return_value"},{"line_number":80,"context_line":"        ilo_mock_object.get_host_power_status.side_effect \u003d [Exception()]"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_ba2a732a","line":77,"updated":"2014-08-25 14:28:38.000000000","message":"ditto","commit_id":"cd6b6f71911d5143d6282b86bdc781f4bcaa7a4d"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"081356a6e97044e29b248b8018cb2c695212a62d","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"    def test__get_power_state_fail(self, power_ilo_client_mock,"},{"line_number":76,"context_line":"                                   common_ilo_client_mock):"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        power_ilo_client_mock.IloError \u003d Exception"},{"line_number":79,"context_line":"        ilo_mock_object \u003d common_ilo_client_mock.IloClient.return_value"},{"line_number":80,"context_line":"        ilo_mock_object.get_host_power_status.side_effect \u003d [Exception()]"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_cbd2f933","line":77,"in_reply_to":"1abeadc6_ba2a732a","updated":"2014-08-26 14:06:02.000000000","message":"Done","commit_id":"cd6b6f71911d5143d6282b86bdc781f4bcaa7a4d"}],"ironic/tests/test_utils.py":[{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"ef556d5233c6de238b832e98eaa4cdf61d33ca15","unresolved":false,"context_lines":[{"line_number":419,"context_line":""},{"line_number":420,"context_line":"class TempFilesTestCase(base.TestCase):"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    def test_tempdir(self):"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"        dirname \u003d None"},{"line_number":425,"context_line":"        with utils.tempdir() as tempdir:"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_1101bbae","line":422,"updated":"2014-08-29 20:31:06.000000000","message":"This test will change the testers local file system, Please mock actual file system changes and check that things are called correctly.","commit_id":"91cb0b81dfae813845861a50654453287810cc17"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"e376543513404bd347b50a2eb8488e4a4e689f58","unresolved":false,"context_lines":[{"line_number":419,"context_line":""},{"line_number":420,"context_line":"class TempFilesTestCase(base.TestCase):"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    def test_tempdir(self):"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"        dirname \u003d None"},{"line_number":425,"context_line":"        with utils.tempdir() as tempdir:"}],"source_content_type":"text/x-python","patch_set":14,"id":"fa98f980_0a415a39","line":422,"in_reply_to":"1abeadc6_1101bbae","updated":"2014-09-01 07:19:54.000000000","message":"I don\u0027t see anything bad in testing actual behavior in temporary directory. Mocking too much can lead to testing only mock library :)","commit_id":"91cb0b81dfae813845861a50654453287810cc17"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"056a092f010286a39a062210cfe5dfe256283177","unresolved":false,"context_lines":[{"line_number":419,"context_line":""},{"line_number":420,"context_line":"class TempFilesTestCase(base.TestCase):"},{"line_number":421,"context_line":""},{"line_number":422,"context_line":"    def test_tempdir(self):"},{"line_number":423,"context_line":""},{"line_number":424,"context_line":"        dirname \u003d None"},{"line_number":425,"context_line":"        with utils.tempdir() as tempdir:"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_35d5ba1b","line":422,"in_reply_to":"1abeadc6_1101bbae","updated":"2014-08-30 04:49:34.000000000","message":"The above test doesn\u0027t use much resources on the testers system.  It just creates a directory on the testers system in python\u0027s tempdir  It acts as a real-world test case.\n\nI have also added mocked test cases to assert all conditions.  Please let me know if you are okay with the real-world test case here.","commit_id":"91cb0b81dfae813845861a50654453287810cc17"}]}
