)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"38ed8c6e93ed5f15da01a88c08a3601fcfde7830","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add support for partition images in agent drivers"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch enables the partition image support for"},{"line_number":10,"context_line":"agent_ipmitool, agent_ilo for partition images."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Depends-on: I22bc29a39bf5c35f3eecb6d4e51cebd6aee0ce1"},{"line_number":13,"context_line":"Depends-on: I37908470484744bb720f741d378106d1cb1227a3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"5aef4532_11e65ce8","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":47},"updated":"2016-03-11 08:00:03.000000000","message":"Are other agent based drivers not impacted due to this change? I think they are not as all others use agent.AgentVendorInterface. But better mention here if there is no impact.","commit_id":"3b7060e01efa2c30e8ae0ab3059c96085004d78a"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"b3d81a312aa4e1e16016c68a2455c13abc960ddd","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Add support for partition images in agent drivers"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch enables the partition image support for"},{"line_number":10,"context_line":"agent_ipmitool, agent_ilo for partition images."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Depends-on: I22bc29a39bf5c35f3eecb6d4e51cebd6aee0ce1"},{"line_number":13,"context_line":"Depends-on: I37908470484744bb720f741d378106d1cb1227a3"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"3afc51ec_36238807","line":10,"range":{"start_line":10,"start_character":0,"end_line":10,"end_character":47},"in_reply_to":"5aef4532_11e65ce8","updated":"2016-03-11 12:42:42.000000000","message":"I think all the agent drivers will go through the common code. So it is by default enabled/impacted for partition images. We cannot test all the agent drivers to  verify that.","commit_id":"3b7060e01efa2c30e8ae0ab3059c96085004d78a"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"9f1466dea65aeb94a544770f0a3912407f2b6b89","unresolved":false,"context_lines":[{"line_number":10,"context_line":"agent drivers which support `boot` iterface."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Partial-Bug: 1526289"},{"line_number":13,"context_line":"Depends-on: I22bc29a39bf5c35f3eecb6d4e51cebd6aee0ce1"},{"line_number":14,"context_line":"Depends-on: I37908470484744bb720f741d378106d1cb1227a3"},{"line_number":15,"context_line":"Change-Id: Ifc8ba098f13b6fde712a584798fceb0321137bc9"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":22,"id":"fa0719c6_360531c2","line":13,"updated":"2016-03-21 16:13:45.000000000","message":"A:\n\n Co-Authored-By: Nisha....\n\nWould be good :)","commit_id":"f573736211ce7a349037a27a9b94148d19ffea49"}],"ironic/drivers/modules/agent.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"44488ff689bd94b653839137d1687676ca7dabd3","unresolved":false,"context_lines":[{"line_number":125,"context_line":"    deploy_utils.check_for_missing_params(i_info, error_msg)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    glance_service \u003d image_service.GlanceImageService(version\u003d2,"},{"line_number":128,"context_line":"                                                  context\u003dctx)"},{"line_number":129,"context_line":"    glance_image_info \u003d glance_service.show(i_info[\u0027image_source\u0027])"},{"line_number":130,"context_line":"    iproperties \u003d glance_image_info[\u0027properties\u0027]"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_9a28d987","line":128,"updated":"2015-03-06 10:05:38.000000000","message":"Not sure whether we want to depend on Glance here, we\u0027ve just added support for non-glance backends[1]. Plus, even before we had common code (ironic/common) to fetch information about images on glance and so on. I think we should use it and not duplicate the code here\n\n[1] https://review.openstack.org/#/c/136741/","commit_id":"173a48e3a5667574c96912e45b8cdc39ed2cecf8"},{"author":{"_account_id":10574,"name":"Syed Ismail Faizan Barmawer","email":"faizan.barmawer@gmail.com","username":"barmawer"},"change_message_id":"90d2bd5529378571d591a8e22ed59f3aae20bc53","unresolved":false,"context_lines":[{"line_number":125,"context_line":"    deploy_utils.check_for_missing_params(i_info, error_msg)"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    glance_service \u003d image_service.GlanceImageService(version\u003d2,"},{"line_number":128,"context_line":"                                                  context\u003dctx)"},{"line_number":129,"context_line":"    glance_image_info \u003d glance_service.show(i_info[\u0027image_source\u0027])"},{"line_number":130,"context_line":"    iproperties \u003d glance_image_info[\u0027properties\u0027]"},{"line_number":131,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_d4393da5","line":128,"in_reply_to":"9a80dd14_9a28d987","updated":"2015-03-06 14:27:02.000000000","message":"Sure. I will look into this and see if I can use the common code.","commit_id":"173a48e3a5667574c96912e45b8cdc39ed2cecf8"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"44488ff689bd94b653839137d1687676ca7dabd3","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        i_info[\u0027root_mb\u0027] \u003d 1024 * int(i_info[\u0027root_gb\u0027])"},{"line_number":151,"context_line":"        i_info[\u0027swap_mb\u0027] \u003d info.get(\u0027swap_mb\u0027, 0)"},{"line_number":152,"context_line":"        i_info[\u0027ephemeral_gb\u0027] \u003d info.get(\u0027ephemeral_gb\u0027, 0)"},{"line_number":153,"context_line":"        i_info[\u0027ephemeral_mb\u0027] \u003d 1024 * int(i_info[\u0027ephemeral_gb\u0027])"},{"line_number":154,"context_line":"        i_info[\u0027ephemeral_format\u0027] \u003d info.get(\u0027ephemeral_format\u0027)"},{"line_number":155,"context_line":"        i_info[\u0027configdrive\u0027] \u003d info.get(\u0027configdrive\u0027)"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_9a60d9a6","line":153,"updated":"2015-03-06 10:05:38.000000000","message":"Nit: Do we want to have both ephemeral_{mb, gb} ?\n\nMaybe:\n\n i_info[\u0027ephemeral_mb\u0027] \u003d 1024 * int(i_info.get(\u0027ephemeral_gb\u0027, 0))","commit_id":"173a48e3a5667574c96912e45b8cdc39ed2cecf8"},{"author":{"_account_id":10574,"name":"Syed Ismail Faizan Barmawer","email":"faizan.barmawer@gmail.com","username":"barmawer"},"change_message_id":"90d2bd5529378571d591a8e22ed59f3aae20bc53","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        i_info[\u0027root_mb\u0027] \u003d 1024 * int(i_info[\u0027root_gb\u0027])"},{"line_number":151,"context_line":"        i_info[\u0027swap_mb\u0027] \u003d info.get(\u0027swap_mb\u0027, 0)"},{"line_number":152,"context_line":"        i_info[\u0027ephemeral_gb\u0027] \u003d info.get(\u0027ephemeral_gb\u0027, 0)"},{"line_number":153,"context_line":"        i_info[\u0027ephemeral_mb\u0027] \u003d 1024 * int(i_info[\u0027ephemeral_gb\u0027])"},{"line_number":154,"context_line":"        i_info[\u0027ephemeral_format\u0027] \u003d info.get(\u0027ephemeral_format\u0027)"},{"line_number":155,"context_line":"        i_info[\u0027configdrive\u0027] \u003d info.get(\u0027configdrive\u0027)"},{"line_number":156,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a80dd14_f40c81ef","line":153,"in_reply_to":"9a80dd14_9a60d9a6","updated":"2015-03-06 14:27:02.000000000","message":"yes, may be not required here. \u0027ephemerel_gb\u0027 is required by pxe driver and not agent driver.\n\ni will remove it from here.","commit_id":"173a48e3a5667574c96912e45b8cdc39ed2cecf8"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"4348bda50fef7e0b5cb410a976ae4fe9c1b22269","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        LOG.debug(\u0027Got image info: %(info)s for node %(node)s.\u0027,"},{"line_number":140,"context_line":"                  {\u0027info\u0027: image_info, \u0027node\u0027: node.uuid})"},{"line_number":141,"context_line":"        instance_info[\u0027image_url\u0027] \u003d swift_temp_url"},{"line_number":142,"context_line":"        instance_info[\u0027image_checksum\u0027] \u003d image_info.get(\u0027checksum\u0027)"},{"line_number":143,"context_line":"        instance_info[\u0027image_disk_format\u0027] \u003d image_info.get(\u0027disk_format\u0027)"},{"line_number":144,"context_line":"        instance_info[\u0027image_container_format\u0027] \u003d ("},{"line_number":145,"context_line":"            image_info.get(\u0027container_format\u0027))"}],"source_content_type":"text/x-python","patch_set":9,"id":"7af24918_3cb10a48","line":142,"updated":"2016-03-03 12:27:47.000000000","message":"Why do you change to get() here? These attributes are always present in image_info.","commit_id":"53fe849f14c9104573bb3f829b354c6c6a86c1d5"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"4a0c20c9090a3779e53a2fb29d83eee2374b2cad","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        LOG.debug(\u0027Got image info: %(info)s for node %(node)s.\u0027,"},{"line_number":140,"context_line":"                  {\u0027info\u0027: image_info, \u0027node\u0027: node.uuid})"},{"line_number":141,"context_line":"        instance_info[\u0027image_url\u0027] \u003d swift_temp_url"},{"line_number":142,"context_line":"        instance_info[\u0027image_checksum\u0027] \u003d image_info.get(\u0027checksum\u0027)"},{"line_number":143,"context_line":"        instance_info[\u0027image_disk_format\u0027] \u003d image_info.get(\u0027disk_format\u0027)"},{"line_number":144,"context_line":"        instance_info[\u0027image_container_format\u0027] \u003d ("},{"line_number":145,"context_line":"            image_info.get(\u0027container_format\u0027))"}],"source_content_type":"text/x-python","patch_set":9,"id":"5aef4532_d1831dcb","line":142,"in_reply_to":"7af24918_3cb10a48","updated":"2016-03-08 05:57:19.000000000","message":"Ok.","commit_id":"53fe849f14c9104573bb3f829b354c6c6a86c1d5"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"4348bda50fef7e0b5cb410a976ae4fe9c1b22269","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        instance_info[\u0027image_container_format\u0027] \u003d ("},{"line_number":145,"context_line":"            image_info.get(\u0027container_format\u0027))"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        if (image_info.get(\u0027kernel\u0027) is not None"},{"line_number":148,"context_line":"                and image_info.get(\u0027ramdisk\u0027) is not None):"},{"line_number":149,"context_line":"            instance_info[\u0027kernel\u0027] \u003d image_info[\u0027kernel\u0027]"},{"line_number":150,"context_line":"            instance_info[\u0027ramdisk\u0027] \u003d image_info[\u0027ramdisk\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"7af24918_7cbc3206","line":147,"updated":"2016-03-03 12:27:47.000000000","message":"And I don\u0027t get how do you expect \u0027kernel\u0027 and \u0027ramdisk\u0027 appear in image_info. please take a look at glance image service v2 class show method and in service_utils.py, they will need changes.","commit_id":"53fe849f14c9104573bb3f829b354c6c6a86c1d5"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"1c705e7253fdce34193b4dbaf918b3f2feefd326","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        instance_info[\u0027image_container_format\u0027] \u003d ("},{"line_number":145,"context_line":"            image_info.get(\u0027container_format\u0027))"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        if (image_info.get(\u0027kernel\u0027) is not None"},{"line_number":148,"context_line":"                and image_info.get(\u0027ramdisk\u0027) is not None):"},{"line_number":149,"context_line":"            instance_info[\u0027kernel\u0027] \u003d image_info[\u0027kernel\u0027]"},{"line_number":150,"context_line":"            instance_info[\u0027ramdisk\u0027] \u003d image_info[\u0027ramdisk\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"7af24918_16ae9797","line":147,"in_reply_to":"7af24918_7cbc3206","updated":"2016-03-03 17:06:41.000000000","message":"+1.\nI think it should be kernel_id and ramdisk_id","commit_id":"53fe849f14c9104573bb3f829b354c6c6a86c1d5"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"4a0c20c9090a3779e53a2fb29d83eee2374b2cad","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        instance_info[\u0027image_container_format\u0027] \u003d ("},{"line_number":145,"context_line":"            image_info.get(\u0027container_format\u0027))"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        if (image_info.get(\u0027kernel\u0027) is not None"},{"line_number":148,"context_line":"                and image_info.get(\u0027ramdisk\u0027) is not None):"},{"line_number":149,"context_line":"            instance_info[\u0027kernel\u0027] \u003d image_info[\u0027kernel\u0027]"},{"line_number":150,"context_line":"            instance_info[\u0027ramdisk\u0027] \u003d image_info[\u0027ramdisk\u0027]"}],"source_content_type":"text/x-python","patch_set":9,"id":"5aef4532_421bb91b","line":147,"in_reply_to":"7af24918_7cbc3206","updated":"2016-03-08 05:57:19.000000000","message":"Thanks for catching this.","commit_id":"53fe849f14c9104573bb3f829b354c6c6a86c1d5"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"1c705e7253fdce34193b4dbaf918b3f2feefd326","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                              \"is not a valid HTTP(S) URL or \""},{"line_number":160,"context_line":"                              \"is not reachable.\"), image_source)"},{"line_number":161,"context_line":"        instance_info[\u0027image_url\u0027] \u003d image_source"},{"line_number":162,"context_line":"        if instance_info.get(\u0027kernel\u0027) and instance_info.get(\u0027ramdisk\u0027):"},{"line_number":163,"context_line":"            instance_info[\u0027image_type\u0027] \u003d \u0027partition\u0027"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    iwdi \u003d node.driver_internal_info.get(\u0027is_whole_disk_image\u0027)"},{"line_number":166,"context_line":"    if not iwdi:"}],"source_content_type":"text/x-python","patch_set":9,"id":"7af24918_967c67b6","line":163,"range":{"start_line":162,"start_character":8,"end_line":163,"end_character":53},"updated":"2016-03-03 17:06:41.000000000","message":"Better to use method is_whole_disk_image() to know if its partition image. It has all the required checks to know if the image is whole disk image. \nhttps://github.com/openstack/ironic/blob/master/ironic/common/images.py#L480\n\nOr better put a check in the beginning for node.driver_internal_info.get(\u0027is_whole_disk_image\u0027). If this property is False, image being used is a partition image.","commit_id":"53fe849f14c9104573bb3f829b354c6c6a86c1d5"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"4a0c20c9090a3779e53a2fb29d83eee2374b2cad","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                              \"is not a valid HTTP(S) URL or \""},{"line_number":160,"context_line":"                              \"is not reachable.\"), image_source)"},{"line_number":161,"context_line":"        instance_info[\u0027image_url\u0027] \u003d image_source"},{"line_number":162,"context_line":"        if instance_info.get(\u0027kernel\u0027) and instance_info.get(\u0027ramdisk\u0027):"},{"line_number":163,"context_line":"            instance_info[\u0027image_type\u0027] \u003d \u0027partition\u0027"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    iwdi \u003d node.driver_internal_info.get(\u0027is_whole_disk_image\u0027)"},{"line_number":166,"context_line":"    if not iwdi:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5aef4532_e2f645d6","line":163,"range":{"start_line":162,"start_character":8,"end_line":163,"end_character":53},"in_reply_to":"7af24918_967c67b6","updated":"2016-03-08 05:57:19.000000000","message":"addressed in the next patch","commit_id":"53fe849f14c9104573bb3f829b354c6c6a86c1d5"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"1c705e7253fdce34193b4dbaf918b3f2feefd326","unresolved":false,"context_lines":[{"line_number":522,"context_line":"    def _get_uuid_from_result(self, node, type_uuid):"},{"line_number":523,"context_line":"        command \u003d self._client.get_commands_status(node)[-1]"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"        if command[\u0027command_result\u0027] is not None:"},{"line_number":526,"context_line":"            words \u003d command[\u0027command_result\u0027][\u0027result\u0027].split()"},{"line_number":527,"context_line":"            for word in words:"},{"line_number":528,"context_line":"                if type_uuid in word:"}],"source_content_type":"text/x-python","patch_set":9,"id":"7af24918_51cdc983","line":525,"range":{"start_line":525,"start_character":8,"end_line":525,"end_character":49},"updated":"2016-03-03 17:06:41.000000000","message":"It would be better to check \u0027command_name\u0027 and \u0027command_status\u0027 for validity before consuming the \u0027command_result\u0027","commit_id":"53fe849f14c9104573bb3f829b354c6c6a86c1d5"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"4a0c20c9090a3779e53a2fb29d83eee2374b2cad","unresolved":false,"context_lines":[{"line_number":522,"context_line":"    def _get_uuid_from_result(self, node, type_uuid):"},{"line_number":523,"context_line":"        command \u003d self._client.get_commands_status(node)[-1]"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"        if command[\u0027command_result\u0027] is not None:"},{"line_number":526,"context_line":"            words \u003d command[\u0027command_result\u0027][\u0027result\u0027].split()"},{"line_number":527,"context_line":"            for word in words:"},{"line_number":528,"context_line":"                if type_uuid in word:"}],"source_content_type":"text/x-python","patch_set":9,"id":"5aef4532_8205c1c3","line":525,"range":{"start_line":525,"start_character":8,"end_line":525,"end_character":49},"in_reply_to":"7af24918_51cdc983","updated":"2016-03-08 05:57:19.000000000","message":"Shiv i didnt get \"comamnd_name\". I will address it after discussing with you","commit_id":"53fe849f14c9104573bb3f829b354c6c6a86c1d5"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"3794edf0e2adaa4ef51c855731fcc9ebeb233bee","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        except ValueError as e:"},{"line_number":196,"context_line":"            raise exception.InvalidParameterValue("},{"line_number":197,"context_line":"                err_msg_invalid % {\u0027param\u0027: \u0027preserve_ephemeral\u0027,"},{"line_number":198,"context_line":"                                   \u0027reason\u0027: e})"},{"line_number":199,"context_line":"    return instance_info"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5aef4532_81cdb55f","line":198,"updated":"2016-03-08 10:49:21.000000000","message":"Almost all this changes are duplicated with the iscsi module [0], I think we need to refactor that to a common place where both drivers can use it.\n\n[0] https://github.com/openstack/ironic/blob/e6571e1a7ece79ed66e3288b373c147b9b3beeac/ironic/drivers/modules/iscsi_deploy.py#L195-L232","commit_id":"769afcd0fadd4146d07c9d7499b930ff8038c398"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"38ed8c6e93ed5f15da01a88c08a3601fcfde7830","unresolved":false,"context_lines":[{"line_number":481,"context_line":"            for label in PARTITION_IMAGE_LABELS:"},{"line_number":482,"context_line":"                image_info[label] \u003d node.instance_info.get(label)"},{"line_number":483,"context_line":"            boot_option \u003d deploy_utils.get_boot_option(node)"},{"line_number":484,"context_line":"            boot_mode \u003d deploy_utils.get_boot_mode_for_deploy(node)"},{"line_number":485,"context_line":"            image_info[\u0027boot_option\u0027] \u003d boot_option"},{"line_number":486,"context_line":"            image_info[\u0027deploy_boot_mode\u0027] \u003d boot_mode"},{"line_number":487,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"5aef4532_d148748d","line":484,"range":{"start_line":484,"start_character":24,"end_line":484,"end_character":67},"updated":"2016-03-11 08:00:03.000000000","message":"get_boot_mode_for_deploy() can return None. Need to handle the same.","commit_id":"3b7060e01efa2c30e8ae0ab3059c96085004d78a"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"b3d81a312aa4e1e16016c68a2455c13abc960ddd","unresolved":false,"context_lines":[{"line_number":481,"context_line":"            for label in PARTITION_IMAGE_LABELS:"},{"line_number":482,"context_line":"                image_info[label] \u003d node.instance_info.get(label)"},{"line_number":483,"context_line":"            boot_option \u003d deploy_utils.get_boot_option(node)"},{"line_number":484,"context_line":"            boot_mode \u003d deploy_utils.get_boot_mode_for_deploy(node)"},{"line_number":485,"context_line":"            image_info[\u0027boot_option\u0027] \u003d boot_option"},{"line_number":486,"context_line":"            image_info[\u0027deploy_boot_mode\u0027] \u003d boot_mode"},{"line_number":487,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3afc51ec_36c70847","line":484,"range":{"start_line":484,"start_character":24,"end_line":484,"end_character":67},"in_reply_to":"5aef4532_d148748d","updated":"2016-03-11 12:42:42.000000000","message":"Ok.","commit_id":"3b7060e01efa2c30e8ae0ab3059c96085004d78a"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"38ed8c6e93ed5f15da01a88c08a3601fcfde7830","unresolved":false,"context_lines":[{"line_number":520,"context_line":"            deploy_utils.set_failed_state(task, msg)"},{"line_number":521,"context_line":"            return"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"        root_uuid \u003d self._get_uuid_from_result(node, \u0027root_uuid\u0027)"},{"line_number":524,"context_line":"        task.node.driver_internal_info[\u0027root_uuid_or_disk_id\u0027] \u003d root_uuid"},{"line_number":525,"context_line":"        task.node.save()"},{"line_number":526,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"5aef4532_436c9a36","line":523,"range":{"start_line":523,"start_character":8,"end_line":523,"end_character":65},"updated":"2016-03-11 08:00:03.000000000","message":"All these steps should be done only if its partition image\nif not node.driver_internal_info.get(\u0027is_whole_disk_image\u0027):\n...","commit_id":"3b7060e01efa2c30e8ae0ab3059c96085004d78a"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"b3d81a312aa4e1e16016c68a2455c13abc960ddd","unresolved":false,"context_lines":[{"line_number":520,"context_line":"            deploy_utils.set_failed_state(task, msg)"},{"line_number":521,"context_line":"            return"},{"line_number":522,"context_line":""},{"line_number":523,"context_line":"        root_uuid \u003d self._get_uuid_from_result(node, \u0027root_uuid\u0027)"},{"line_number":524,"context_line":"        task.node.driver_internal_info[\u0027root_uuid_or_disk_id\u0027] \u003d root_uuid"},{"line_number":525,"context_line":"        task.node.save()"},{"line_number":526,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3afc51ec_76c5105a","line":523,"range":{"start_line":523,"start_character":8,"end_line":523,"end_character":65},"in_reply_to":"5aef4532_436c9a36","updated":"2016-03-11 12:42:42.000000000","message":"Good catch Shiv. I will update.","commit_id":"3b7060e01efa2c30e8ae0ab3059c96085004d78a"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"38ed8c6e93ed5f15da01a88c08a3601fcfde7830","unresolved":false,"context_lines":[{"line_number":524,"context_line":"        task.node.driver_internal_info[\u0027root_uuid_or_disk_id\u0027] \u003d root_uuid"},{"line_number":525,"context_line":"        task.node.save()"},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"        if deploy_utils.get_boot_option(node) \u003d\u003d \"local\":"},{"line_number":528,"context_line":"            # Install the boot loader"},{"line_number":529,"context_line":"            efi_sys_uuid \u003d ("},{"line_number":530,"context_line":"                self._get_uuid_from_result(node,"},{"line_number":531,"context_line":"                                           \u0027efi_system_partition_uuid\u0027))"},{"line_number":532,"context_line":"            self.configure_local_boot("},{"line_number":533,"context_line":"                task, root_uuid\u003droot_uuid,"},{"line_number":534,"context_line":"                efi_system_part_uuid\u003defi_sys_uuid)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"        try:"},{"line_number":537,"context_line":"            task.driver.boot.prepare_instance(task)"},{"line_number":538,"context_line":"        except Exception as e:"},{"line_number":539,"context_line":"            LOG.error(_LE(\u0027Deploy failed for instance %(instance)s. \u0027"},{"line_number":540,"context_line":"                          \u0027Error: %(error)s\u0027),"},{"line_number":541,"context_line":"                      {\u0027instance\u0027: node.instance_uuid, \u0027error\u0027: e})"},{"line_number":542,"context_line":"            msg \u003d _(\u0027Failed to continue agent deployment.\u0027)"},{"line_number":543,"context_line":"            deploy_utils.set_failed_state(task, msg)"},{"line_number":544,"context_line":"            return"},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"        LOG.info(_LI(\u0027Image successfully written to node %s\u0027), node.uuid)"}],"source_content_type":"text/x-python","patch_set":12,"id":"5aef4532_e0eb1c77","line":543,"range":{"start_line":527,"start_character":1,"end_line":543,"end_character":52},"updated":"2016-03-11 08:00:03.000000000","message":"This portion of code is same as \nhttps://github.com/openstack/ironic/blob/master/ironic/drivers/modules/iscsi_deploy.py#L976-L991\n\nCan we move it into a common function in some place like deploy_utils.py","commit_id":"3b7060e01efa2c30e8ae0ab3059c96085004d78a"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"b3d81a312aa4e1e16016c68a2455c13abc960ddd","unresolved":false,"context_lines":[{"line_number":524,"context_line":"        task.node.driver_internal_info[\u0027root_uuid_or_disk_id\u0027] \u003d root_uuid"},{"line_number":525,"context_line":"        task.node.save()"},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"        if deploy_utils.get_boot_option(node) \u003d\u003d \"local\":"},{"line_number":528,"context_line":"            # Install the boot loader"},{"line_number":529,"context_line":"            efi_sys_uuid \u003d ("},{"line_number":530,"context_line":"                self._get_uuid_from_result(node,"},{"line_number":531,"context_line":"                                           \u0027efi_system_partition_uuid\u0027))"},{"line_number":532,"context_line":"            self.configure_local_boot("},{"line_number":533,"context_line":"                task, root_uuid\u003droot_uuid,"},{"line_number":534,"context_line":"                efi_system_part_uuid\u003defi_sys_uuid)"},{"line_number":535,"context_line":""},{"line_number":536,"context_line":"        try:"},{"line_number":537,"context_line":"            task.driver.boot.prepare_instance(task)"},{"line_number":538,"context_line":"        except Exception as e:"},{"line_number":539,"context_line":"            LOG.error(_LE(\u0027Deploy failed for instance %(instance)s. \u0027"},{"line_number":540,"context_line":"                          \u0027Error: %(error)s\u0027),"},{"line_number":541,"context_line":"                      {\u0027instance\u0027: node.instance_uuid, \u0027error\u0027: e})"},{"line_number":542,"context_line":"            msg \u003d _(\u0027Failed to continue agent deployment.\u0027)"},{"line_number":543,"context_line":"            deploy_utils.set_failed_state(task, msg)"},{"line_number":544,"context_line":"            return"},{"line_number":545,"context_line":""},{"line_number":546,"context_line":"        LOG.info(_LI(\u0027Image successfully written to node %s\u0027), node.uuid)"}],"source_content_type":"text/x-python","patch_set":12,"id":"3afc51ec_1682cc00","line":543,"range":{"start_line":527,"start_character":1,"end_line":543,"end_character":52},"in_reply_to":"5aef4532_e0eb1c77","updated":"2016-03-11 12:42:42.000000000","message":"ok","commit_id":"3b7060e01efa2c30e8ae0ab3059c96085004d78a"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"38ed8c6e93ed5f15da01a88c08a3601fcfde7830","unresolved":false,"context_lines":[{"line_number":554,"context_line":"        # TODO(rameshg87): Not all in-tree drivers using reboot_to_instance"},{"line_number":555,"context_line":"        # have a boot interface. So include a check for now. Remove this"},{"line_number":556,"context_line":"        # check once all in-tree drivers have a boot interface."},{"line_number":557,"context_line":"        if task.driver.boot and not instance_info.get(\u0027image_type\u0027):"},{"line_number":558,"context_line":"            task.driver.boot.clean_up_ramdisk(task)"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"5aef4532_638f16cd","line":557,"range":{"start_line":557,"start_character":11,"end_line":557,"end_character":28},"updated":"2016-03-11 08:00:03.000000000","message":"Do we still need this check for boot interface being present? We are using it directly above at L537","commit_id":"3b7060e01efa2c30e8ae0ab3059c96085004d78a"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"b3d81a312aa4e1e16016c68a2455c13abc960ddd","unresolved":false,"context_lines":[{"line_number":554,"context_line":"        # TODO(rameshg87): Not all in-tree drivers using reboot_to_instance"},{"line_number":555,"context_line":"        # have a boot interface. So include a check for now. Remove this"},{"line_number":556,"context_line":"        # check once all in-tree drivers have a boot interface."},{"line_number":557,"context_line":"        if task.driver.boot and not instance_info.get(\u0027image_type\u0027):"},{"line_number":558,"context_line":"            task.driver.boot.clean_up_ramdisk(task)"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3afc51ec_16b00cdd","line":557,"range":{"start_line":557,"start_character":11,"end_line":557,"end_character":28},"in_reply_to":"5aef4532_638f16cd","updated":"2016-03-11 12:42:42.000000000","message":"I think we dont require this check, or should we add teh same check above also.","commit_id":"3b7060e01efa2c30e8ae0ab3059c96085004d78a"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6c6db016fcb8ca27e2bbf942f881de79f1ac88b9","unresolved":false,"context_lines":[{"line_number":496,"context_line":"        LOG.info(_LI(\u0027Image successfully written to node %s\u0027), node.uuid)"},{"line_number":497,"context_line":"        LOG.debug(\u0027Rebooting node %s to instance\u0027, node.uuid)"},{"line_number":498,"context_line":""},{"line_number":499,"context_line":"        manager_utils.node_set_boot_device(task, \u0027disk\u0027, persistent\u003dTrue)"},{"line_number":500,"context_line":"        self.reboot_and_finish_deploy(task)"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"        # NOTE(TheJulia): If we deployed a whole disk image, we"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_c93529db","side":"PARENT","line":499,"range":{"start_line":499,"start_character":8,"end_line":499,"end_character":73},"updated":"2016-03-14 07:43:54.000000000","message":"This statement still would be required for whole disk image.","commit_id":"6d1b7c6d0df2b6e64ec944f85837460a219d472e"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"57855fb197838c0ead4ae95ee786fe4f1c775a7e","unresolved":false,"context_lines":[{"line_number":145,"context_line":"            image_info[\u0027container_format\u0027])"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        if not iwdi:"},{"line_number":148,"context_line":"            instance_info[\u0027kernel\u0027] \u003d image_info[\u0027properties\u0027][\u0027kernel_id\u0027]"},{"line_number":149,"context_line":"            instance_info[\u0027ramdisk\u0027] \u003d image_info[\u0027properties\u0027][\u0027ramdisk_id\u0027]"},{"line_number":150,"context_line":"            instance_info[\u0027image_type\u0027] \u003d \u0027partition\u0027"},{"line_number":151,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_bf6f0cc4","line":148,"updated":"2016-03-14 17:12:29.000000000","message":"I may be wrong, but kernel_id and ramdisk_id should be directly under image_info in case of v2, they were in properties in v1.","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"3cdf91aa3755487d11cadc14758c6c4c3e048dd0","unresolved":false,"context_lines":[{"line_number":145,"context_line":"            image_info[\u0027container_format\u0027])"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        if not iwdi:"},{"line_number":148,"context_line":"            instance_info[\u0027kernel\u0027] \u003d image_info[\u0027properties\u0027][\u0027kernel_id\u0027]"},{"line_number":149,"context_line":"            instance_info[\u0027ramdisk\u0027] \u003d image_info[\u0027properties\u0027][\u0027ramdisk_id\u0027]"},{"line_number":150,"context_line":"            instance_info[\u0027image_type\u0027] \u003d \u0027partition\u0027"},{"line_number":151,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_e055c1c6","line":148,"in_reply_to":"3afc51ec_bf6f0cc4","updated":"2016-03-15 19:28:50.000000000","message":"I tested the code and it gives error if [\u0027properties\u0027] key is not there.\nrefer : https://github.com/openstack/ironic/blob/master/ironic/drivers/modules/ilo/boot.py#L144-L151\nhttps://github.com/openstack/ironic/blob/master/ironic/drivers/modules/irmc/boot.py#L273-L279\n\neven the is_whole_disk_image() tries to get it from properties.\nhttps://github.com/openstack/ironic/blob/master/ironic/common/images.py#L494-L500\n\nthe above code also gets the kernel_id and ramdisk_id in properties.\n\nSo i think glance populates the kernel_id and ramdisk_id even in teh properties.","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"57855fb197838c0ead4ae95ee786fe4f1c775a7e","unresolved":false,"context_lines":[{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        if not iwdi:"},{"line_number":148,"context_line":"            instance_info[\u0027kernel\u0027] \u003d image_info[\u0027properties\u0027][\u0027kernel_id\u0027]"},{"line_number":149,"context_line":"            instance_info[\u0027ramdisk\u0027] \u003d image_info[\u0027properties\u0027][\u0027ramdisk_id\u0027]"},{"line_number":150,"context_line":"            instance_info[\u0027image_type\u0027] \u003d \u0027partition\u0027"},{"line_number":151,"context_line":"    else:"},{"line_number":152,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_ff6eb42d","line":149,"updated":"2016-03-14 17:12:29.000000000","message":"Also have you seen my previous comments regarding output of show? Please take a look here https://github.com/openstack/ironic/blob/master/ironic/common/glance_service/base_image_service.py#L191 and https://github.com/openstack/ironic/blob/master/ironic/common/glance_service/service_utils.py#L49-L74 - there are no kernel/ramdisk_id parsed, so they won\u0027t appear here.","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"3cdf91aa3755487d11cadc14758c6c4c3e048dd0","unresolved":false,"context_lines":[{"line_number":146,"context_line":""},{"line_number":147,"context_line":"        if not iwdi:"},{"line_number":148,"context_line":"            instance_info[\u0027kernel\u0027] \u003d image_info[\u0027properties\u0027][\u0027kernel_id\u0027]"},{"line_number":149,"context_line":"            instance_info[\u0027ramdisk\u0027] \u003d image_info[\u0027properties\u0027][\u0027ramdisk_id\u0027]"},{"line_number":150,"context_line":"            instance_info[\u0027image_type\u0027] \u003d \u0027partition\u0027"},{"line_number":151,"context_line":"    else:"},{"line_number":152,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_2005e9c1","line":149,"in_reply_to":"3afc51ec_ff6eb42d","updated":"2016-03-15 19:28:50.000000000","message":"I am not sure if i understand your comment here. But the kernel_id and ramdisk_id will appear in the image_info.properties as they are part of the image. The code has been tested.","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"6234b7535d6c070dbe70b9a15ae5a7acf00ab8bb","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        if not iwdi:"},{"line_number":148,"context_line":"            instance_info[\u0027kernel\u0027] \u003d image_info[\u0027properties\u0027][\u0027kernel_id\u0027]"},{"line_number":149,"context_line":"            instance_info[\u0027ramdisk\u0027] \u003d image_info[\u0027properties\u0027][\u0027ramdisk_id\u0027]"},{"line_number":150,"context_line":"            instance_info[\u0027image_type\u0027] \u003d \u0027partition\u0027"},{"line_number":151,"context_line":"    else:"},{"line_number":152,"context_line":"        try:"},{"line_number":153,"context_line":"            image_service.HttpImageService().validate_href(image_source)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_c32188fd","line":150,"updated":"2016-03-14 07:51:04.000000000","message":"so only assign the value to instance_info[\u0027image_type\u0027] when it\u0027s partition？ what about set image_type\u003dwhole_disk too for iwdi case?","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"3cdf91aa3755487d11cadc14758c6c4c3e048dd0","unresolved":false,"context_lines":[{"line_number":147,"context_line":"        if not iwdi:"},{"line_number":148,"context_line":"            instance_info[\u0027kernel\u0027] \u003d image_info[\u0027properties\u0027][\u0027kernel_id\u0027]"},{"line_number":149,"context_line":"            instance_info[\u0027ramdisk\u0027] \u003d image_info[\u0027properties\u0027][\u0027ramdisk_id\u0027]"},{"line_number":150,"context_line":"            instance_info[\u0027image_type\u0027] \u003d \u0027partition\u0027"},{"line_number":151,"context_line":"    else:"},{"line_number":152,"context_line":"        try:"},{"line_number":153,"context_line":"            image_service.HttpImageService().validate_href(image_source)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_a0e73911","line":150,"in_reply_to":"3afc51ec_c32188fd","updated":"2016-03-15 19:28:50.000000000","message":"I can assign but i dont see it would be actually used.\nas if imageis not partition image it will be definitely whole disk image. But i will add this.","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"57855fb197838c0ead4ae95ee786fe4f1c775a7e","unresolved":false,"context_lines":[{"line_number":158,"context_line":"                              \"is not a valid HTTP(S) URL or \""},{"line_number":159,"context_line":"                              \"is not reachable.\"), image_source)"},{"line_number":160,"context_line":"        instance_info[\u0027image_url\u0027] \u003d image_source"},{"line_number":161,"context_line":"        if instance_info.get(\u0027kernel\u0027) and instance_info.get(\u0027ramdisk\u0027):"},{"line_number":162,"context_line":"            instance_info[\u0027image_type\u0027] \u003d \u0027partition\u0027"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    if not iwdi:"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_7fd4641f","line":161,"updated":"2016-03-14 17:12:29.000000000","message":"If you look at the pxe module, instance_info values have higher priority then the ones from glance properties, maybe do the same thing here? https://github.com/openstack/ironic/blob/master/ironic/drivers/modules/pxe.py#L195-L201","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"3cdf91aa3755487d11cadc14758c6c4c3e048dd0","unresolved":false,"context_lines":[{"line_number":158,"context_line":"                              \"is not a valid HTTP(S) URL or \""},{"line_number":159,"context_line":"                              \"is not reachable.\"), image_source)"},{"line_number":160,"context_line":"        instance_info[\u0027image_url\u0027] \u003d image_source"},{"line_number":161,"context_line":"        if instance_info.get(\u0027kernel\u0027) and instance_info.get(\u0027ramdisk\u0027):"},{"line_number":162,"context_line":"            instance_info[\u0027image_type\u0027] \u003d \u0027partition\u0027"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    if not iwdi:"}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_1b2c9c49","line":161,"in_reply_to":"3afc51ec_7fd4641f","updated":"2016-03-15 19:28:50.000000000","message":"I am just checking if user has provided the kernel url and ramdisk url or not. This is under HTTPservice, and not glance service code. The link you gave points to glance image service code.","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6c6db016fcb8ca27e2bbf942f881de79f1ac88b9","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                              \"is not reachable.\"), image_source)"},{"line_number":160,"context_line":"        instance_info[\u0027image_url\u0027] \u003d image_source"},{"line_number":161,"context_line":"        if instance_info.get(\u0027kernel\u0027) and instance_info.get(\u0027ramdisk\u0027):"},{"line_number":162,"context_line":"            instance_info[\u0027image_type\u0027] \u003d \u0027partition\u0027"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    if not iwdi:"},{"line_number":165,"context_line":"        i_info \u003d deploy_utils.parse_instance_info(node)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_79bb12c5","line":162,"range":{"start_line":162,"start_character":12,"end_line":162,"end_character":53},"updated":"2016-03-14 07:43:54.000000000","message":"For consistency, I think it would be better to fill instance_info[\u0027image_type\u0027] even for whole disk image. Say:\ninstance_info[\u0027image_type\u0027] \u003d \u0027whole-disk-image\u0027","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"3cdf91aa3755487d11cadc14758c6c4c3e048dd0","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                              \"is not reachable.\"), image_source)"},{"line_number":160,"context_line":"        instance_info[\u0027image_url\u0027] \u003d image_source"},{"line_number":161,"context_line":"        if instance_info.get(\u0027kernel\u0027) and instance_info.get(\u0027ramdisk\u0027):"},{"line_number":162,"context_line":"            instance_info[\u0027image_type\u0027] \u003d \u0027partition\u0027"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    if not iwdi:"},{"line_number":165,"context_line":"        i_info \u003d deploy_utils.parse_instance_info(node)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_3b2b5832","line":162,"range":{"start_line":162,"start_character":12,"end_line":162,"end_character":53},"in_reply_to":"3afc51ec_79bb12c5","updated":"2016-03-15 19:28:50.000000000","message":"Ok.","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"6234b7535d6c070dbe70b9a15ae5a7acf00ab8bb","unresolved":false,"context_lines":[{"line_number":159,"context_line":"                              \"is not reachable.\"), image_source)"},{"line_number":160,"context_line":"        instance_info[\u0027image_url\u0027] \u003d image_source"},{"line_number":161,"context_line":"        if instance_info.get(\u0027kernel\u0027) and instance_info.get(\u0027ramdisk\u0027):"},{"line_number":162,"context_line":"            instance_info[\u0027image_type\u0027] \u003d \u0027partition\u0027"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    if not iwdi:"},{"line_number":165,"context_line":"        i_info \u003d deploy_utils.parse_instance_info(node)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_29e12dff","line":162,"range":{"start_line":162,"start_character":12,"end_line":162,"end_character":53},"in_reply_to":"3afc51ec_79bb12c5","updated":"2016-03-14 07:51:04.000000000","message":"ditto","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6c6db016fcb8ca27e2bbf942f881de79f1ac88b9","unresolved":false,"context_lines":[{"line_number":481,"context_line":"            for label in PARTITION_IMAGE_LABELS:"},{"line_number":482,"context_line":"                image_info[label] \u003d node.instance_info.get(label)"},{"line_number":483,"context_line":"            boot_option \u003d deploy_utils.get_boot_option(node)"},{"line_number":484,"context_line":"            boot_mode \u003d deploy_utils.get_boot_mode_for_deploy(node)"},{"line_number":485,"context_line":"            image_info[\u0027deploy_boot_mode\u0027] \u003d boot_mode"},{"line_number":486,"context_line":"            image_info[\u0027boot_option\u0027] \u003d boot_option"},{"line_number":487,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_59abb61d","line":484,"range":{"start_line":484,"start_character":12,"end_line":484,"end_character":67},"updated":"2016-03-14 07:43:54.000000000","message":"I did not get how you have handled the comment given here for last patch.\ndeploy_utils.get_boot_mode_for_deploy() can return None. We should not fill \u0027None\u0027 in the image_info. Better to fill as \u0027bios\u0027 which could be default boot mode.","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"3cdf91aa3755487d11cadc14758c6c4c3e048dd0","unresolved":false,"context_lines":[{"line_number":481,"context_line":"            for label in PARTITION_IMAGE_LABELS:"},{"line_number":482,"context_line":"                image_info[label] \u003d node.instance_info.get(label)"},{"line_number":483,"context_line":"            boot_option \u003d deploy_utils.get_boot_option(node)"},{"line_number":484,"context_line":"            boot_mode \u003d deploy_utils.get_boot_mode_for_deploy(node)"},{"line_number":485,"context_line":"            image_info[\u0027deploy_boot_mode\u0027] \u003d boot_mode"},{"line_number":486,"context_line":"            image_info[\u0027boot_option\u0027] \u003d boot_option"},{"line_number":487,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_bbee48ea","line":484,"range":{"start_line":484,"start_character":12,"end_line":484,"end_character":67},"in_reply_to":"3afc51ec_59abb61d","updated":"2016-03-15 19:28:50.000000000","message":"Ok. Actually i was just passing None, as if None is passed ironic_lib/disk_utils/work_on_disk() will anyway default to Bios mode.","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6c6db016fcb8ca27e2bbf942f881de79f1ac88b9","unresolved":false,"context_lines":[{"line_number":497,"context_line":"            words \u003d command[\u0027command_result\u0027][\u0027result\u0027].split()"},{"line_number":498,"context_line":"            for word in words:"},{"line_number":499,"context_line":"                if type_uuid in word:"},{"line_number":500,"context_line":"                    return word.split(\u0027\u003d\u0027)[1]"},{"line_number":501,"context_line":""},{"line_number":502,"context_line":"    def check_deploy_success(self, node):"},{"line_number":503,"context_line":"        # should only ever be called after we\u0027ve validated that"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_bcb908ec","line":500,"range":{"start_line":500,"start_character":0,"end_line":500,"end_character":45},"updated":"2016-03-14 07:43:54.000000000","message":"Should it throw an exception here if \u0027type_uuid\u0027 is not found? It will not find \u0027type_uuid\u0027 if ramdisk based on older IPA were to be used for deploy.","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6c6db016fcb8ca27e2bbf942f881de79f1ac88b9","unresolved":false,"context_lines":[{"line_number":520,"context_line":"            deploy_utils.set_failed_state(task, msg)"},{"line_number":521,"context_line":"            return"},{"line_number":522,"context_line":"        if task.driver.boot and not iwdi:"},{"line_number":523,"context_line":"            root_uuid \u003d self._get_uuid_from_result(node, \u0027root_uuid\u0027)"},{"line_number":524,"context_line":"            efi_sys_uuid \u003d ("},{"line_number":525,"context_line":"                self._get_uuid_from_result(node,"},{"line_number":526,"context_line":"                                           \u0027efi_system_partition_uuid\u0027))"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_dcb054e0","line":523,"range":{"start_line":523,"start_character":24,"end_line":523,"end_character":69},"updated":"2016-03-14 07:43:54.000000000","message":"Wont this be \u0027None\u0027 if ramdisk based on older IPA were to be used?","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"3cdf91aa3755487d11cadc14758c6c4c3e048dd0","unresolved":false,"context_lines":[{"line_number":520,"context_line":"            deploy_utils.set_failed_state(task, msg)"},{"line_number":521,"context_line":"            return"},{"line_number":522,"context_line":"        if task.driver.boot and not iwdi:"},{"line_number":523,"context_line":"            root_uuid \u003d self._get_uuid_from_result(node, \u0027root_uuid\u0027)"},{"line_number":524,"context_line":"            efi_sys_uuid \u003d ("},{"line_number":525,"context_line":"                self._get_uuid_from_result(node,"},{"line_number":526,"context_line":"                                           \u0027efi_system_partition_uuid\u0027))"}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_fba570b5","line":523,"range":{"start_line":523,"start_character":24,"end_line":523,"end_character":69},"in_reply_to":"3afc51ec_dcb054e0","updated":"2016-03-15 19:28:50.000000000","message":"Yes. Will handle this","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6c6db016fcb8ca27e2bbf942f881de79f1ac88b9","unresolved":false,"context_lines":[{"line_number":522,"context_line":"        if task.driver.boot and not iwdi:"},{"line_number":523,"context_line":"            root_uuid \u003d self._get_uuid_from_result(node, \u0027root_uuid\u0027)"},{"line_number":524,"context_line":"            efi_sys_uuid \u003d ("},{"line_number":525,"context_line":"                self._get_uuid_from_result(node,"},{"line_number":526,"context_line":"                                           \u0027efi_system_partition_uuid\u0027))"},{"line_number":527,"context_line":"            task.node.driver_internal_info[\u0027root_uuid_or_disk_id\u0027] \u003d root_uuid"},{"line_number":528,"context_line":"            task.node.save()"},{"line_number":529,"context_line":"            self.initiate_local_boot(task, root_uuid, efi_sys_uuid)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_1ccbdc54","line":526,"range":{"start_line":525,"start_character":16,"end_line":526,"end_character":72},"updated":"2016-03-14 07:43:54.000000000","message":"Wont this be \u0027None\u0027 if ramdisk based on older IPA were to be used?","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"3cdf91aa3755487d11cadc14758c6c4c3e048dd0","unresolved":false,"context_lines":[{"line_number":522,"context_line":"        if task.driver.boot and not iwdi:"},{"line_number":523,"context_line":"            root_uuid \u003d self._get_uuid_from_result(node, \u0027root_uuid\u0027)"},{"line_number":524,"context_line":"            efi_sys_uuid \u003d ("},{"line_number":525,"context_line":"                self._get_uuid_from_result(node,"},{"line_number":526,"context_line":"                                           \u0027efi_system_partition_uuid\u0027))"},{"line_number":527,"context_line":"            task.node.driver_internal_info[\u0027root_uuid_or_disk_id\u0027] \u003d root_uuid"},{"line_number":528,"context_line":"            task.node.save()"},{"line_number":529,"context_line":"            self.initiate_local_boot(task, root_uuid, efi_sys_uuid)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_1b881c22","line":526,"range":{"start_line":525,"start_character":16,"end_line":526,"end_character":72},"in_reply_to":"3afc51ec_1ccbdc54","updated":"2016-03-15 19:28:50.000000000","message":"yes. will handle this","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"57855fb197838c0ead4ae95ee786fe4f1c775a7e","unresolved":false,"context_lines":[{"line_number":528,"context_line":"            task.node.save()"},{"line_number":529,"context_line":"            self.initiate_local_boot(task, root_uuid, efi_sys_uuid)"},{"line_number":530,"context_line":"        LOG.info(_LI(\u0027Image successfully written to node %s\u0027), node.uuid)"},{"line_number":531,"context_line":"        LOG.debug(\u0027Rebooting node %s to instance\u0027, node.uuid)"},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"        self.reboot_and_finish_deploy(task)"},{"line_number":534,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_7fef4487","line":531,"updated":"2016-03-14 17:12:29.000000000","message":"++ for whole disk boot device should be still changed.","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"3cdf91aa3755487d11cadc14758c6c4c3e048dd0","unresolved":false,"context_lines":[{"line_number":528,"context_line":"            task.node.save()"},{"line_number":529,"context_line":"            self.initiate_local_boot(task, root_uuid, efi_sys_uuid)"},{"line_number":530,"context_line":"        LOG.info(_LI(\u0027Image successfully written to node %s\u0027), node.uuid)"},{"line_number":531,"context_line":"        LOG.debug(\u0027Rebooting node %s to instance\u0027, node.uuid)"},{"line_number":532,"context_line":""},{"line_number":533,"context_line":"        self.reboot_and_finish_deploy(task)"},{"line_number":534,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_3b9eb856","line":531,"in_reply_to":"3afc51ec_7fef4487","updated":"2016-03-15 19:28:50.000000000","message":"yes, since it is there for configure_local_boot() i removed it from here. I will re-add.","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"c4384791e6e69dcdb1ccf7b54c8eafeaa225c89a","unresolved":false,"context_lines":[{"line_number":130,"context_line":"    instance_info \u003d node.instance_info"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    iwdi \u003d node.driver_internal_info.get(\u0027is_whole_disk_image\u0027)"},{"line_number":133,"context_line":"    image_source \u003d instance_info.get(\u0027image_source\u0027)"},{"line_number":134,"context_line":"    if service_utils.is_glance_image(image_source):"},{"line_number":135,"context_line":"        glance \u003d image_service.GlanceImageService(version\u003d2,"},{"line_number":136,"context_line":"                                                  context\u003dtask.context)"}],"source_content_type":"text/x-python","patch_set":14,"id":"1af94dfe_378a3ac0","line":133,"range":{"start_line":133,"start_character":33,"end_line":133,"end_character":52},"updated":"2016-03-16 07:48:58.000000000","message":"Why is this changed? instance_info[\u0027image_source\u0027] will always present.","commit_id":"0bfe8936efef53540d2c50601e53c9f122ef67b6"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"c4384791e6e69dcdb1ccf7b54c8eafeaa225c89a","unresolved":false,"context_lines":[{"line_number":161,"context_line":"                              \"is not reachable.\"), image_source)"},{"line_number":162,"context_line":"        instance_info[\u0027image_url\u0027] \u003d image_source"},{"line_number":163,"context_line":"        if instance_info.get(\u0027kernel\u0027) and instance_info.get(\u0027ramdisk\u0027):"},{"line_number":164,"context_line":"            instance_info[\u0027image_type\u0027] \u003d \u0027partition\u0027"},{"line_number":165,"context_line":"        else:"},{"line_number":166,"context_line":"            instance_info[\u0027image_type\u0027] \u003d \u0027whole-disk-image\u0027"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    if not iwdi:"},{"line_number":169,"context_line":"        i_info \u003d deploy_utils.parse_instance_info(node)"}],"source_content_type":"text/x-python","patch_set":14,"id":"1af94dfe_7759625a","line":166,"range":{"start_line":164,"start_character":0,"end_line":166,"end_character":60},"updated":"2016-03-16 07:48:58.000000000","message":"Setting of instance_info[\u0027image_type\u0027] is common step irrespective of image being hosted on glance or web server. It can be moved out of if/else blocks at L168 to avoid repetition(L150-L152 and L164-L166).","commit_id":"0bfe8936efef53540d2c50601e53c9f122ef67b6"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"c4384791e6e69dcdb1ccf7b54c8eafeaa225c89a","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        else:"},{"line_number":166,"context_line":"            instance_info[\u0027image_type\u0027] \u003d \u0027whole-disk-image\u0027"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"    if not iwdi:"},{"line_number":169,"context_line":"        i_info \u003d deploy_utils.parse_instance_info(node)"},{"line_number":170,"context_line":"        instance_info.update(i_info)"},{"line_number":171,"context_line":"    return instance_info"},{"line_number":172,"context_line":""},{"line_number":173,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"1af94dfe_da0e9b33","line":170,"range":{"start_line":168,"start_character":4,"end_line":170,"end_character":36},"updated":"2016-03-16 07:48:58.000000000","message":"It can be:-\n\nif not iwdi:\n    instance_info[\u0027image_type\u0027] \u003d \u0027partition\u0027\n    i_info \u003d deploy_utils.parse_instance_info(node)\n    instance_info.update(i_info)\nelse:\n    instance_info[\u0027image_type\u0027] \u003d \u0027whole-disk-image\u0027","commit_id":"0bfe8936efef53540d2c50601e53c9f122ef67b6"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"c4384791e6e69dcdb1ccf7b54c8eafeaa225c89a","unresolved":false,"context_lines":[{"line_number":506,"context_line":"                if type_uuid in word:"},{"line_number":507,"context_line":"                    result \u003d word.split(\u0027\u003d\u0027)[1]"},{"line_number":508,"context_line":"                    if not result:"},{"line_number":509,"context_line":"                        msg \u003d (_(\u0027node %(node)s command status did not return \u0027"},{"line_number":510,"context_line":"                                 \u0027%(type_uuid)s\u0027) % {\u0027node\u0027: task.node.uuid,"},{"line_number":511,"context_line":"                                                     \u0027type_uuid\u0027: type_uuid})"},{"line_number":512,"context_line":"                        LOG.error(msg)"}],"source_content_type":"text/x-python","patch_set":14,"id":"1af94dfe_7a1b071c","line":509,"range":{"start_line":509,"start_character":48,"end_line":509,"end_character":62},"updated":"2016-03-16 07:48:58.000000000","message":"s/ \u0027command status\u0027 /\u0027command result\u0027 /\n\nIt may be better to indicate that IPA ramdisk might not have support for provisioning of partition images. Ex:\nmsg \u003d (_(\u0027Command result did not return %(type_uuid)s \u0027\n         \u0027for node %(node)s. The version of the IPA \u0027\n         \u0027ramdisk used in the deployment might not have \u0027     \n         \u0027support for provisioning of partition images.\u0027) %         \n        {\u0027type_uuid\u0027: type_uuid}, \u0027node\u0027: task.node.uuid})","commit_id":"0bfe8936efef53540d2c50601e53c9f122ef67b6"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"c4384791e6e69dcdb1ccf7b54c8eafeaa225c89a","unresolved":false,"context_lines":[{"line_number":534,"context_line":"            LOG.error(msg)"},{"line_number":535,"context_line":"            deploy_utils.set_failed_state(task, msg)"},{"line_number":536,"context_line":"            return"},{"line_number":537,"context_line":"        if task.driver.boot and not iwdi:"},{"line_number":538,"context_line":"            root_uuid \u003d self._get_uuid_from_result(task, \u0027root_uuid\u0027)"},{"line_number":539,"context_line":"            if deploy_utils.get_boot_mode_for_deploy(task.node) \u003d\u003d \u0027uefi\u0027:"},{"line_number":540,"context_line":"                efi_sys_uuid \u003d ("}],"source_content_type":"text/x-python","patch_set":14,"id":"1af94dfe_e0a5aa04","line":537,"range":{"start_line":537,"start_character":11,"end_line":537,"end_character":27},"updated":"2016-03-16 07:48:58.000000000","message":"Do not make a blanket check for boot interface. it should be used just before making call to boot interface method. Rest of the code should be exercised for the drivers that do not implement boot interface.\nBetter to move it to \u0027initiate_local_boot\u0027 where it is being called.","commit_id":"0bfe8936efef53540d2c50601e53c9f122ef67b6"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"c4384791e6e69dcdb1ccf7b54c8eafeaa225c89a","unresolved":false,"context_lines":[{"line_number":536,"context_line":"            return"},{"line_number":537,"context_line":"        if task.driver.boot and not iwdi:"},{"line_number":538,"context_line":"            root_uuid \u003d self._get_uuid_from_result(task, \u0027root_uuid\u0027)"},{"line_number":539,"context_line":"            if deploy_utils.get_boot_mode_for_deploy(task.node) \u003d\u003d \u0027uefi\u0027:"},{"line_number":540,"context_line":"                efi_sys_uuid \u003d ("},{"line_number":541,"context_line":"                    self._get_uuid_from_result(task,"},{"line_number":542,"context_line":"                                               \u0027efi_system_partition_uuid\u0027))"}],"source_content_type":"text/x-python","patch_set":14,"id":"1af94dfe_9a17f3a2","line":539,"range":{"start_line":539,"start_character":53,"end_line":539,"end_character":62},"updated":"2016-03-16 07:48:58.000000000","message":"nit: s/ task.node / node /","commit_id":"0bfe8936efef53540d2c50601e53c9f122ef67b6"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"afae91d46d3ca24281883a4284faf37b4426066a","unresolved":false,"context_lines":[{"line_number":531,"context_line":"            msg \u003d (_(\u0027node %(node)s command status errored: %(error)s\u0027) %"},{"line_number":532,"context_line":"                   {\u0027node\u0027: node.uuid, \u0027error\u0027: error})"},{"line_number":533,"context_line":"            LOG.error(msg)"},{"line_number":534,"context_line":"            deploy_utils.set_failed_state(task, msg)"},{"line_number":535,"context_line":"            return"},{"line_number":536,"context_line":"        if not iwdi:"},{"line_number":537,"context_line":"            root_uuid \u003d self._get_uuid_from_result(task, \u0027root_uuid\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"1af94dfe_2cac7133","line":534,"range":{"start_line":534,"start_character":12,"end_line":534,"end_character":52},"updated":"2016-03-17 04:51:15.000000000","message":"Though this is existing code...\nNeed to raise InstanceDeployFailure exception here.","commit_id":"773889eabd5251c20725a835625abf164438ff0f"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"b7f46e0be18211b494811a7649badbacab7112f5","unresolved":false,"context_lines":[{"line_number":531,"context_line":"            msg \u003d (_(\u0027node %(node)s command status errored: %(error)s\u0027) %"},{"line_number":532,"context_line":"                   {\u0027node\u0027: node.uuid, \u0027error\u0027: error})"},{"line_number":533,"context_line":"            LOG.error(msg)"},{"line_number":534,"context_line":"            deploy_utils.set_failed_state(task, msg)"},{"line_number":535,"context_line":"            return"},{"line_number":536,"context_line":"        if not iwdi:"},{"line_number":537,"context_line":"            root_uuid \u003d self._get_uuid_from_result(task, \u0027root_uuid\u0027)"}],"source_content_type":"text/x-python","patch_set":15,"id":"1af94dfe_0fc5275a","line":534,"range":{"start_line":534,"start_character":12,"end_line":534,"end_character":52},"in_reply_to":"1af94dfe_2cac7133","updated":"2016-03-17 11:08:55.000000000","message":"We dont fail here because we return from here which ultimately fails in agent code at https://github.com/openstack/ironic/blob/master/ironic/drivers/modules/agent_base_vendor.py#L747\n\nSo i guess its not required to do here. If i add here, then \u0027return\u0027 cannot be done.","commit_id":"773889eabd5251c20725a835625abf164438ff0f"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"618b65294525dd1146f00ee31c6c88f33c284154","unresolved":false,"context_lines":[{"line_number":484,"context_line":"            if boot_mode:"},{"line_number":485,"context_line":"                image_info[\u0027deploy_boot_mode\u0027] \u003d boot_mode"},{"line_number":486,"context_line":"            else:"},{"line_number":487,"context_line":"                image_info[\u0027deploy_boot_mode\u0027] \u003d \u0027bios\u0027"},{"line_number":488,"context_line":"            image_info[\u0027boot_option\u0027] \u003d boot_option"},{"line_number":489,"context_line":""},{"line_number":490,"context_line":"        # Tell the client to download and write the image with the given args"}],"source_content_type":"text/x-python","patch_set":19,"id":"1af94dfe_d0052e14","line":487,"updated":"2016-03-19 00:13:52.000000000","message":"Nit: if you push another patch set, can simplify this if/else to:\n\nimage_info[\u0027deploy_boot_mode\u0027] \u003d boot_mode or \u0027bios\u0027","commit_id":"be9c1cbf6af7ebbf5095437bdecfdb99a5fbaf28"}],"ironic/drivers/modules/agent_base_vendor.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6c6db016fcb8ca27e2bbf942f881de79f1ac88b9","unresolved":false,"context_lines":[{"line_number":710,"context_line":"        task.process_event(\u0027done\u0027)"},{"line_number":711,"context_line":"        LOG.info(_LI(\u0027Deployment to node %s done\u0027), task.node.uuid)"},{"line_number":712,"context_line":""},{"line_number":713,"context_line":"    def initiate_local_boot(self, task, root_uuid, efi_sys_uuid):"},{"line_number":714,"context_line":"        \"\"\"Initiates local boot configuration."},{"line_number":715,"context_line":""},{"line_number":716,"context_line":"        :param task: a TaskManager object containing the node"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_0938b19f","line":713,"range":{"start_line":713,"start_character":8,"end_line":713,"end_character":27},"updated":"2016-03-14 07:43:54.000000000","message":"There are no testcases added for this method.","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"3cdf91aa3755487d11cadc14758c6c4c3e048dd0","unresolved":false,"context_lines":[{"line_number":710,"context_line":"        task.process_event(\u0027done\u0027)"},{"line_number":711,"context_line":"        LOG.info(_LI(\u0027Deployment to node %s done\u0027), task.node.uuid)"},{"line_number":712,"context_line":""},{"line_number":713,"context_line":"    def initiate_local_boot(self, task, root_uuid, efi_sys_uuid):"},{"line_number":714,"context_line":"        \"\"\"Initiates local boot configuration."},{"line_number":715,"context_line":""},{"line_number":716,"context_line":"        :param task: a TaskManager object containing the node"}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_7bc7a045","line":713,"range":{"start_line":713,"start_character":8,"end_line":713,"end_character":27},"in_reply_to":"3afc51ec_0938b19f","updated":"2016-03-15 19:28:50.000000000","message":"yes will add.","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"c4384791e6e69dcdb1ccf7b54c8eafeaa225c89a","unresolved":false,"context_lines":[{"line_number":727,"context_line":"                efi_system_part_uuid\u003defi_sys_uuid)"},{"line_number":728,"context_line":""},{"line_number":729,"context_line":"        try:"},{"line_number":730,"context_line":"            task.driver.boot.prepare_instance(task)"},{"line_number":731,"context_line":"        except Exception as e:"},{"line_number":732,"context_line":"            LOG.error(_LE(\u0027Deploy failed for instance %(instance)s. \u0027"},{"line_number":733,"context_line":"                          \u0027Error: %(error)s\u0027),"}],"source_content_type":"text/x-python","patch_set":14,"id":"1af94dfe_80878660","line":730,"range":{"start_line":730,"start_character":12,"end_line":730,"end_character":51},"updated":"2016-03-16 07:48:58.000000000","message":"Add a check for boot interface here.\n\nif task.driver.boot:\n    task.driver.boot.prepare_instance(task)","commit_id":"0bfe8936efef53540d2c50601e53c9f122ef67b6"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"afae91d46d3ca24281883a4284faf37b4426066a","unresolved":false,"context_lines":[{"line_number":710,"context_line":"        task.process_event(\u0027done\u0027)"},{"line_number":711,"context_line":"        LOG.info(_LI(\u0027Deployment to node %s done\u0027), task.node.uuid)"},{"line_number":712,"context_line":""},{"line_number":713,"context_line":"    def initiate_prepare_instance(self, task, root_uuid, efi_sys_uuid):"},{"line_number":714,"context_line":"        \"\"\"Initiates local boot configuration."},{"line_number":715,"context_line":""},{"line_number":716,"context_line":"        :param task: a TaskManager object containing the node"}],"source_content_type":"text/x-python","patch_set":15,"id":"1af94dfe_ccaced37","line":713,"range":{"start_line":713,"start_character":8,"end_line":713,"end_character":33},"updated":"2016-03-17 04:51:15.000000000","message":"Tasks performed by method is more that calling prepare_instance(). It configures local boot as well. \nNot sure if you need this function at all.","commit_id":"773889eabd5251c20725a835625abf164438ff0f"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"b7f46e0be18211b494811a7649badbacab7112f5","unresolved":false,"context_lines":[{"line_number":710,"context_line":"        task.process_event(\u0027done\u0027)"},{"line_number":711,"context_line":"        LOG.info(_LI(\u0027Deployment to node %s done\u0027), task.node.uuid)"},{"line_number":712,"context_line":""},{"line_number":713,"context_line":"    def initiate_prepare_instance(self, task, root_uuid, efi_sys_uuid):"},{"line_number":714,"context_line":"        \"\"\"Initiates local boot configuration."},{"line_number":715,"context_line":""},{"line_number":716,"context_line":"        :param task: a TaskManager object containing the node"}],"source_content_type":"text/x-python","patch_set":15,"id":"1af94dfe_1ca556b4","line":713,"range":{"start_line":713,"start_character":8,"end_line":713,"end_character":33},"in_reply_to":"1af94dfe_ccaced37","updated":"2016-03-17 11:08:55.000000000","message":"I will be happy to rename it. But could not get any better name. Please suggest.\n\nSecond part, i didnt understand why we dont need this function. This is the common function refactored from iscsi_deploy.py. We require this code for partition image to boot successfully.","commit_id":"773889eabd5251c20725a835625abf164438ff0f"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"afae91d46d3ca24281883a4284faf37b4426066a","unresolved":false,"context_lines":[{"line_number":729,"context_line":"            try:"},{"line_number":730,"context_line":"                task.driver.boot.prepare_instance(task)"},{"line_number":731,"context_line":"            except Exception as e:"},{"line_number":732,"context_line":"                LOG.error(_LE(\u0027Deploy failed for instance %(instance)s. \u0027"},{"line_number":733,"context_line":"                              \u0027Error: %(error)s\u0027),"},{"line_number":734,"context_line":"                          {\u0027instance\u0027: node.instance_uuid, \u0027error\u0027: e})"},{"line_number":735,"context_line":"                msg \u003d _(\u0027Failed to continue agent deployment.\u0027)"},{"line_number":736,"context_line":"                deploy_utils.set_failed_state(task, msg)"},{"line_number":737,"context_line":"        else:"},{"line_number":738,"context_line":"            LOG.error(_LE(\u0027Deploy failed for instance %(instance)s. \u0027"},{"line_number":739,"context_line":"                          \u0027Boot interface not supported by the driver.\u0027),"}],"source_content_type":"text/x-python","patch_set":15,"id":"1af94dfe_ac5b6186","line":736,"range":{"start_line":732,"start_character":0,"end_line":736,"end_character":56},"updated":"2016-03-17 04:51:15.000000000","message":"Use instead:-\n    self._log_and_raise_deployment_error(task, msg)\n\nYou also need to raise InstanceDeployFailure exception here. It is taken care by _log_and_raise_deployment_error()","commit_id":"773889eabd5251c20725a835625abf164438ff0f"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"b7f46e0be18211b494811a7649badbacab7112f5","unresolved":false,"context_lines":[{"line_number":729,"context_line":"            try:"},{"line_number":730,"context_line":"                task.driver.boot.prepare_instance(task)"},{"line_number":731,"context_line":"            except Exception as e:"},{"line_number":732,"context_line":"                LOG.error(_LE(\u0027Deploy failed for instance %(instance)s. \u0027"},{"line_number":733,"context_line":"                              \u0027Error: %(error)s\u0027),"},{"line_number":734,"context_line":"                          {\u0027instance\u0027: node.instance_uuid, \u0027error\u0027: e})"},{"line_number":735,"context_line":"                msg \u003d _(\u0027Failed to continue agent deployment.\u0027)"},{"line_number":736,"context_line":"                deploy_utils.set_failed_state(task, msg)"},{"line_number":737,"context_line":"        else:"},{"line_number":738,"context_line":"            LOG.error(_LE(\u0027Deploy failed for instance %(instance)s. \u0027"},{"line_number":739,"context_line":"                          \u0027Boot interface not supported by the driver.\u0027),"}],"source_content_type":"text/x-python","patch_set":15,"id":"1af94dfe_5c0d1e36","line":736,"range":{"start_line":732,"start_character":0,"end_line":736,"end_character":56},"in_reply_to":"1af94dfe_ac5b6186","updated":"2016-03-17 11:08:55.000000000","message":"I will raise the exception using _log_raise_deployment_error() below the set_failed_state().","commit_id":"773889eabd5251c20725a835625abf164438ff0f"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"afae91d46d3ca24281883a4284faf37b4426066a","unresolved":false,"context_lines":[{"line_number":734,"context_line":"                          {\u0027instance\u0027: node.instance_uuid, \u0027error\u0027: e})"},{"line_number":735,"context_line":"                msg \u003d _(\u0027Failed to continue agent deployment.\u0027)"},{"line_number":736,"context_line":"                deploy_utils.set_failed_state(task, msg)"},{"line_number":737,"context_line":"        else:"},{"line_number":738,"context_line":"            LOG.error(_LE(\u0027Deploy failed for instance %(instance)s. \u0027"},{"line_number":739,"context_line":"                          \u0027Boot interface not supported by the driver.\u0027),"},{"line_number":740,"context_line":"                      {\u0027instance\u0027: node.instance_uuid})"},{"line_number":741,"context_line":"            msg \u003d _(\u0027Failed to continue agent deployment.\u0027)"},{"line_number":742,"context_line":"            deploy_utils.set_failed_state(task, msg)"},{"line_number":743,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"1af94dfe_e95f1b3f","line":740,"range":{"start_line":737,"start_character":8,"end_line":740,"end_character":55},"updated":"2016-03-17 04:51:15.000000000","message":"Why should the absence of boot interface fail the deploy?\nThe deploy should work even for the drivers that do not define boot interface.","commit_id":"773889eabd5251c20725a835625abf164438ff0f"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"b7f46e0be18211b494811a7649badbacab7112f5","unresolved":false,"context_lines":[{"line_number":734,"context_line":"                          {\u0027instance\u0027: node.instance_uuid, \u0027error\u0027: e})"},{"line_number":735,"context_line":"                msg \u003d _(\u0027Failed to continue agent deployment.\u0027)"},{"line_number":736,"context_line":"                deploy_utils.set_failed_state(task, msg)"},{"line_number":737,"context_line":"        else:"},{"line_number":738,"context_line":"            LOG.error(_LE(\u0027Deploy failed for instance %(instance)s. \u0027"},{"line_number":739,"context_line":"                          \u0027Boot interface not supported by the driver.\u0027),"},{"line_number":740,"context_line":"                      {\u0027instance\u0027: node.instance_uuid})"},{"line_number":741,"context_line":"            msg \u003d _(\u0027Failed to continue agent deployment.\u0027)"},{"line_number":742,"context_line":"            deploy_utils.set_failed_state(task, msg)"},{"line_number":743,"context_line":""}],"source_content_type":"text/x-python","patch_set":15,"id":"1af94dfe_1ced5625","line":740,"range":{"start_line":737,"start_character":8,"end_line":740,"end_character":55},"in_reply_to":"1af94dfe_e95f1b3f","updated":"2016-03-17 11:08:55.000000000","message":"That means the functionality of prepare_instance() should be there in deploy interface of the driver who does not have the boot interface. Its very hard to validate this for all the agent drivers if we dont have this failure scenario.\n\nSO better i will remove teh condition at L728 and call the task.boot.prepare_instance() directly. So if any driver doesnt has it, teh deploy will fail automatically there as it was there for iscsi drivers earlier also.\n\nI have no problem in having check at L728, but in that case we need to fail if boot interface is not there else it conveys the message to teh user that deploy succeeded and user image will boot up while that may not be the case for agent drivers.","commit_id":"773889eabd5251c20725a835625abf164438ff0f"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"c9db9f2516adc6b4142b49f026eba0a30e1ff560","unresolved":false,"context_lines":[{"line_number":710,"context_line":"        task.process_event(\u0027done\u0027)"},{"line_number":711,"context_line":"        LOG.info(_LI(\u0027Deployment to node %s done\u0027), task.node.uuid)"},{"line_number":712,"context_line":""},{"line_number":713,"context_line":"    def initiate_prepare_instance(self, task, root_uuid, efi_sys_uuid):"},{"line_number":714,"context_line":"        \"\"\"Initiates local boot configuration."},{"line_number":715,"context_line":""},{"line_number":716,"context_line":"        :param task: a TaskManager object containing the node"}],"source_content_type":"text/x-python","patch_set":18,"id":"1af94dfe_3849f5d0","line":713,"range":{"start_line":713,"start_character":8,"end_line":713,"end_character":33},"updated":"2016-03-18 14:18:47.000000000","message":"I think this method should be called something like \"prepare_instance_to_boot\" or something along these lines because, I can\u0027t tell what \"initiate_prepare_instance\" actually does if I only read the methods name.","commit_id":"15540c720bc2433b8dbceaef1222b383c12cad78"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"75ad5b77a8df7c84888432c362825efab021eb43","unresolved":false,"context_lines":[{"line_number":710,"context_line":"        task.process_event(\u0027done\u0027)"},{"line_number":711,"context_line":"        LOG.info(_LI(\u0027Deployment to node %s done\u0027), task.node.uuid)"},{"line_number":712,"context_line":""},{"line_number":713,"context_line":"    def initiate_prepare_instance(self, task, root_uuid, efi_sys_uuid):"},{"line_number":714,"context_line":"        \"\"\"Initiates local boot configuration."},{"line_number":715,"context_line":""},{"line_number":716,"context_line":"        :param task: a TaskManager object containing the node"}],"source_content_type":"text/x-python","patch_set":18,"id":"1af94dfe_e23d1b2c","line":713,"range":{"start_line":713,"start_character":8,"end_line":713,"end_character":33},"in_reply_to":"1af94dfe_3849f5d0","updated":"2016-03-18 14:50:30.000000000","message":"Thanks Lucas, i was thinking to get a meaningful function name here, but couldnt get it. I will rename.","commit_id":"15540c720bc2433b8dbceaef1222b383c12cad78"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"c9db9f2516adc6b4142b49f026eba0a30e1ff560","unresolved":false,"context_lines":[{"line_number":711,"context_line":"        LOG.info(_LI(\u0027Deployment to node %s done\u0027), task.node.uuid)"},{"line_number":712,"context_line":""},{"line_number":713,"context_line":"    def initiate_prepare_instance(self, task, root_uuid, efi_sys_uuid):"},{"line_number":714,"context_line":"        \"\"\"Initiates local boot configuration."},{"line_number":715,"context_line":""},{"line_number":716,"context_line":"        :param task: a TaskManager object containing the node"},{"line_number":717,"context_line":"        :param root_uuid: the UUID for root partition"}],"source_content_type":"text/x-python","patch_set":18,"id":"1af94dfe_18a87976","line":714,"range":{"start_line":714,"start_character":21,"end_line":714,"end_character":45},"updated":"2016-03-18 14:18:47.000000000","message":"This seems incorrect, this method will be called (and is useful) independent if the boot option is \"local\" or not","commit_id":"15540c720bc2433b8dbceaef1222b383c12cad78"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"75ad5b77a8df7c84888432c362825efab021eb43","unresolved":false,"context_lines":[{"line_number":711,"context_line":"        LOG.info(_LI(\u0027Deployment to node %s done\u0027), task.node.uuid)"},{"line_number":712,"context_line":""},{"line_number":713,"context_line":"    def initiate_prepare_instance(self, task, root_uuid, efi_sys_uuid):"},{"line_number":714,"context_line":"        \"\"\"Initiates local boot configuration."},{"line_number":715,"context_line":""},{"line_number":716,"context_line":"        :param task: a TaskManager object containing the node"},{"line_number":717,"context_line":"        :param root_uuid: the UUID for root partition"}],"source_content_type":"text/x-python","patch_set":18,"id":"1af94dfe_e224fb0d","line":714,"range":{"start_line":714,"start_character":21,"end_line":714,"end_character":45},"in_reply_to":"1af94dfe_18a87976","updated":"2016-03-18 14:50:30.000000000","message":"Yes, initially i named it for local boot. I will update the description.","commit_id":"15540c720bc2433b8dbceaef1222b383c12cad78"}],"ironic/drivers/modules/agent_config.template":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"3794edf0e2adaa4ef51c855731fcc9ebeb233bee","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"label boot"},{"line_number":8,"context_line":"kernel {{ pxe_options.aki_path }}"},{"line_number":9,"context_line":"append initrd\u003d{{ pxe_options.ari_path }} root\u003d{{ ROOT }} ro text {{ pxe_options.pxe_append_params|default(\"\", true) }}"}],"source_content_type":"application/octet-stream","patch_set":10,"id":"5aef4532_01f2456f","line":9,"updated":"2016-03-08 10:49:21.000000000","message":"shouldn\u0027t we have \"boot_partition\" and \"boot_whole_disk\" sections here as does PXE? [0]\n\n[0] https://github.com/openstack/ironic/blob/master/ironic/drivers/modules/pxe_config.template#L9-L16","commit_id":"769afcd0fadd4146d07c9d7499b930ff8038c398"}],"ironic/drivers/modules/deploy_utils.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"38ed8c6e93ed5f15da01a88c08a3601fcfde7830","unresolved":false,"context_lines":[{"line_number":1116,"context_line":"            i_info[\u0027ramdisk\u0027] \u003d info.get(\u0027ramdisk\u0027)"},{"line_number":1117,"context_line":"    i_info[\u0027root_gb\u0027] \u003d info.get(\u0027root_gb\u0027)"},{"line_number":1118,"context_line":""},{"line_number":1119,"context_line":"    error_msg \u003d _(\"Cannot validate iSCSI deploy. Some parameters were missing\""},{"line_number":1120,"context_line":"                  \" in node\u0027s instance_info\")"},{"line_number":1121,"context_line":"    check_for_missing_params(i_info, error_msg)"},{"line_number":1122,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"5aef4532_91026cb3","line":1119,"range":{"start_line":1119,"start_character":35,"end_line":1119,"end_character":47},"updated":"2016-03-11 08:00:03.000000000","message":"this is not necessarily be iscsi deploy anymore.","commit_id":"3b7060e01efa2c30e8ae0ab3059c96085004d78a"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"b3d81a312aa4e1e16016c68a2455c13abc960ddd","unresolved":false,"context_lines":[{"line_number":1116,"context_line":"            i_info[\u0027ramdisk\u0027] \u003d info.get(\u0027ramdisk\u0027)"},{"line_number":1117,"context_line":"    i_info[\u0027root_gb\u0027] \u003d info.get(\u0027root_gb\u0027)"},{"line_number":1118,"context_line":""},{"line_number":1119,"context_line":"    error_msg \u003d _(\"Cannot validate iSCSI deploy. Some parameters were missing\""},{"line_number":1120,"context_line":"                  \" in node\u0027s instance_info\")"},{"line_number":1121,"context_line":"    check_for_missing_params(i_info, error_msg)"},{"line_number":1122,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"3afc51ec_76d8701e","line":1119,"range":{"start_line":1119,"start_character":35,"end_line":1119,"end_character":47},"in_reply_to":"5aef4532_91026cb3","updated":"2016-03-11 12:42:42.000000000","message":"Yeah. will update the message.","commit_id":"3b7060e01efa2c30e8ae0ab3059c96085004d78a"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"57855fb197838c0ead4ae95ee786fe4f1c775a7e","unresolved":false,"context_lines":[{"line_number":1116,"context_line":"            i_info[\u0027ramdisk\u0027] \u003d info.get(\u0027ramdisk\u0027)"},{"line_number":1117,"context_line":"    i_info[\u0027root_gb\u0027] \u003d info.get(\u0027root_gb\u0027)"},{"line_number":1118,"context_line":""},{"line_number":1119,"context_line":"    error_msg \u003d _(\"Cannot validate iSCSI deploy. Some parameters were missing\""},{"line_number":1120,"context_line":"                  \" in node\u0027s instance_info\")"},{"line_number":1121,"context_line":"    check_for_missing_params(i_info, error_msg)"},{"line_number":1122,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_3f95bcdd","line":1119,"updated":"2016-03-14 17:12:29.000000000","message":"This might become confusing. It\u0027s not only for iscsi anymore.","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"3cdf91aa3755487d11cadc14758c6c4c3e048dd0","unresolved":false,"context_lines":[{"line_number":1116,"context_line":"            i_info[\u0027ramdisk\u0027] \u003d info.get(\u0027ramdisk\u0027)"},{"line_number":1117,"context_line":"    i_info[\u0027root_gb\u0027] \u003d info.get(\u0027root_gb\u0027)"},{"line_number":1118,"context_line":""},{"line_number":1119,"context_line":"    error_msg \u003d _(\"Cannot validate iSCSI deploy. Some parameters were missing\""},{"line_number":1120,"context_line":"                  \" in node\u0027s instance_info\")"},{"line_number":1121,"context_line":"    check_for_missing_params(i_info, error_msg)"},{"line_number":1122,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_db4994d2","line":1119,"in_reply_to":"3afc51ec_3f95bcdd","updated":"2016-03-15 19:28:50.000000000","message":"yes, forgot to address from previous patch set comments.","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"57855fb197838c0ead4ae95ee786fe4f1c775a7e","unresolved":false,"context_lines":[{"line_number":1124,"context_line":"    i_info[\u0027deploy_key\u0027] \u003d info.get(\u0027deploy_key\u0027)"},{"line_number":1125,"context_line":"    i_info[\u0027swap_mb\u0027] \u003d info.get(\u0027swap_mb\u0027, 0)"},{"line_number":1126,"context_line":"    i_info[\u0027ephemeral_gb\u0027] \u003d info.get(\u0027ephemeral_gb\u0027, 0)"},{"line_number":1127,"context_line":"    err_msg_invalid \u003d _(\"Cannot validate parameter for iSCSI deploy. \""},{"line_number":1128,"context_line":"                        \"Invalid parameter %(param)s. Reason: %(reason)s\")"},{"line_number":1129,"context_line":"    for param in DISK_LAYOUT_PARAMS:"},{"line_number":1130,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_7fbd8467","line":1127,"updated":"2016-03-14 17:12:29.000000000","message":"ditto","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"3cdf91aa3755487d11cadc14758c6c4c3e048dd0","unresolved":false,"context_lines":[{"line_number":1124,"context_line":"    i_info[\u0027deploy_key\u0027] \u003d info.get(\u0027deploy_key\u0027)"},{"line_number":1125,"context_line":"    i_info[\u0027swap_mb\u0027] \u003d info.get(\u0027swap_mb\u0027, 0)"},{"line_number":1126,"context_line":"    i_info[\u0027ephemeral_gb\u0027] \u003d info.get(\u0027ephemeral_gb\u0027, 0)"},{"line_number":1127,"context_line":"    err_msg_invalid \u003d _(\"Cannot validate parameter for iSCSI deploy. \""},{"line_number":1128,"context_line":"                        \"Invalid parameter %(param)s. Reason: %(reason)s\")"},{"line_number":1129,"context_line":"    for param in DISK_LAYOUT_PARAMS:"},{"line_number":1130,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_1b12dcb4","line":1127,"in_reply_to":"3afc51ec_7fbd8467","updated":"2016-03-15 19:28:50.000000000","message":"ditto","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":10343,"name":"Jim Rollenhagen","email":"jim@jimrollenhagen.com","username":"jimrollenhagen"},"change_message_id":"928ff006ba39189b8ea720613e83c3fb6dffcca0","unresolved":false,"context_lines":[{"line_number":1122,"context_line":""},{"line_number":1123,"context_line":"    # Internal use only"},{"line_number":1124,"context_line":"    i_info[\u0027deploy_key\u0027] \u003d info.get(\u0027deploy_key\u0027)"},{"line_number":1125,"context_line":"    i_info[\u0027swap_mb\u0027] \u003d int(info.get(\u0027swap_mb\u0027, 0))"},{"line_number":1126,"context_line":"    i_info[\u0027ephemeral_gb\u0027] \u003d info.get(\u0027ephemeral_gb\u0027, 0)"},{"line_number":1127,"context_line":"    err_msg_invalid \u003d _(\"Cannot validate parameter for driver deploy. \""},{"line_number":1128,"context_line":"                        \"Invalid parameter %(param)s. Reason: %(reason)s\")"}],"source_content_type":"text/x-python","patch_set":20,"id":"fa0719c6_501710a3","line":1125,"updated":"2016-03-21 15:09:19.000000000","message":"Could we add a test case for a unicode value here?","commit_id":"6c2a1a9fe5fa5896d1095a5babaec9c47e9d4f43"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"896d00cbfb6c38a435282090a7e3e454ce0ab5f0","unresolved":false,"context_lines":[{"line_number":1122,"context_line":""},{"line_number":1123,"context_line":"    # Internal use only"},{"line_number":1124,"context_line":"    i_info[\u0027deploy_key\u0027] \u003d info.get(\u0027deploy_key\u0027)"},{"line_number":1125,"context_line":"    i_info[\u0027swap_mb\u0027] \u003d int(info.get(\u0027swap_mb\u0027, 0))"},{"line_number":1126,"context_line":"    i_info[\u0027ephemeral_gb\u0027] \u003d info.get(\u0027ephemeral_gb\u0027, 0)"},{"line_number":1127,"context_line":"    err_msg_invalid \u003d _(\"Cannot validate parameter for driver deploy. \""},{"line_number":1128,"context_line":"                        \"Invalid parameter %(param)s. Reason: %(reason)s\")"}],"source_content_type":"text/x-python","patch_set":20,"id":"fa0719c6_f0dbc4eb","line":1125,"in_reply_to":"fa0719c6_501710a3","updated":"2016-03-21 15:10:48.000000000","message":"Ok.","commit_id":"6c2a1a9fe5fa5896d1095a5babaec9c47e9d4f43"}],"ironic/drivers/modules/ilo/vendor.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6c6db016fcb8ca27e2bbf942f881de79f1ac88b9","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    \"\"\"Interface for vendor passthru related actions.\"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @task_manager.require_exclusive_lock"},{"line_number":41,"context_line":"    def continue_deploy(self, task, **kwargs):"},{"line_number":42,"context_line":"        \"\"\"Method invoked when deployed with the IPA ramdisk."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        This method is invoked during a heartbeat from an agent when"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_5cf3a49e","line":41,"range":{"start_line":41,"start_character":8,"end_line":41,"end_character":23},"updated":"2016-03-14 07:43:54.000000000","message":"Why do we need to re-define this? It is already part of \nhttps://github.com/openstack/ironic/blob/master/ironic/drivers/modules/ilo/vendor.py#L40-L54\n\nAgent will call reboot_to_instance() when deployment is complete, as done in the case of whole disk image.\nhttps://github.com/openstack/ironic/blob/master/ironic/drivers/modules/agent_base_vendor.py#L430-L433","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"3cdf91aa3755487d11cadc14758c6c4c3e048dd0","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    \"\"\"Interface for vendor passthru related actions.\"\"\""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @task_manager.require_exclusive_lock"},{"line_number":41,"context_line":"    def continue_deploy(self, task, **kwargs):"},{"line_number":42,"context_line":"        \"\"\"Method invoked when deployed with the IPA ramdisk."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        This method is invoked during a heartbeat from an agent when"}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_5be8e47c","line":41,"range":{"start_line":41,"start_character":8,"end_line":41,"end_character":23},"in_reply_to":"3afc51ec_5cf3a49e","updated":"2016-03-15 19:28:50.000000000","message":"Ok will remove and test. I added it because of some failures initially. need to re-test without this function as what you say makes sense.","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"}],"ironic/tests/unit/common/test_pxe_utils.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6c6db016fcb8ca27e2bbf942f881de79f1ac88b9","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        self.pxe_options \u003d {"},{"line_number":54,"context_line":"            \u0027deployment_key\u0027: \u00270123456789ABCDEFGHIJKLMNOPQRSTUV\u0027,"},{"line_number":55,"context_line":"            \u0027ari_path\u0027: u\u0027/tftpboot/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/\u0027"},{"line_number":56,"context_line":"                        u\u0027ramdisk\u0027,"},{"line_number":57,"context_line":"            \u0027iscsi_target_iqn\u0027: u\u0027iqn-1be26c0b-03f2-4d2e-ae87-c02d7f33\u0027"},{"line_number":58,"context_line":"                                u\u0027c123\u0027,"},{"line_number":59,"context_line":"            \u0027deployment_id\u0027: u\u00271be26c0b-03f2-4d2e-ae87-c02d7f33c123\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_3ade913f","line":56,"range":{"start_line":55,"start_character":13,"end_line":56,"end_character":35},"updated":"2016-03-14 07:43:54.000000000","message":"you can remove this from here as this is moved to common_pxe_options above.","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"3cdf91aa3755487d11cadc14758c6c4c3e048dd0","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"        self.pxe_options \u003d {"},{"line_number":54,"context_line":"            \u0027deployment_key\u0027: \u00270123456789ABCDEFGHIJKLMNOPQRSTUV\u0027,"},{"line_number":55,"context_line":"            \u0027ari_path\u0027: u\u0027/tftpboot/1be26c0b-03f2-4d2e-ae87-c02d7f33c123/\u0027"},{"line_number":56,"context_line":"                        u\u0027ramdisk\u0027,"},{"line_number":57,"context_line":"            \u0027iscsi_target_iqn\u0027: u\u0027iqn-1be26c0b-03f2-4d2e-ae87-c02d7f33\u0027"},{"line_number":58,"context_line":"                                u\u0027c123\u0027,"},{"line_number":59,"context_line":"            \u0027deployment_id\u0027: u\u00271be26c0b-03f2-4d2e-ae87-c02d7f33c123\u0027,"}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_7b8680ba","line":56,"range":{"start_line":55,"start_character":13,"end_line":56,"end_character":35},"in_reply_to":"3afc51ec_3ade913f","updated":"2016-03-15 19:28:50.000000000","message":"ok","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"}],"ironic/tests/unit/drivers/modules/test_agent.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6c6db016fcb8ca27e2bbf942f881de79f1ac88b9","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            glance_mock.return_value.swift_temp_url.assert_called_once_with("},{"line_number":119,"context_line":"                image_info)"},{"line_number":120,"context_line":"            image_type \u003d task.node.instance_info.get(\u0027image_type\u0027)"},{"line_number":121,"context_line":"            self.assertTrue(image_type, \u0027partition\u0027)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    @mock.patch.object(image_service.HttpImageService, \u0027validate_href\u0027,"},{"line_number":124,"context_line":"                       autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_3d45eb6f","line":121,"range":{"start_line":121,"start_character":48,"end_line":121,"end_character":52},"updated":"2016-03-14 07:43:54.000000000","message":"Also need to add assert for \u0027kernel\u0027 and \u0027ramdisk\u0027\nself.assertEqual(\u0027kernel\u0027, task.node.instance_info.get(\u0027kernel\u0027))\nself.assertEqual(\u0027ramdisk\u0027, task.node.instance_info.get(\u0027ramdisk\u0027))\n\nAlso need to validate other properties filled using (agent.py L165-L166)\n    deploy_utils.parse_instance_info(node)\n    instance_info.update(i_info)","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6c6db016fcb8ca27e2bbf942f881de79f1ac88b9","unresolved":false,"context_lines":[{"line_number":118,"context_line":"            glance_mock.return_value.swift_temp_url.assert_called_once_with("},{"line_number":119,"context_line":"                image_info)"},{"line_number":120,"context_line":"            image_type \u003d task.node.instance_info.get(\u0027image_type\u0027)"},{"line_number":121,"context_line":"            self.assertTrue(image_type, \u0027partition\u0027)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    @mock.patch.object(image_service.HttpImageService, \u0027validate_href\u0027,"},{"line_number":124,"context_line":"                       autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_3d6e8b01","line":121,"range":{"start_line":121,"start_character":11,"end_line":121,"end_character":52},"updated":"2016-03-14 07:43:54.000000000","message":"It should be \nself.assertEqual(\u0027partition\u0027, image_type)","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6c6db016fcb8ca27e2bbf942f881de79f1ac88b9","unresolved":false,"context_lines":[{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    @mock.patch.object(image_service.HttpImageService, \u0027validate_href\u0027,"},{"line_number":124,"context_line":"                       autospec\u003dTrue)"},{"line_number":125,"context_line":"    def test_build_instance_info_for_deploy_nonglance_image("},{"line_number":126,"context_line":"            self, validate_href_mock):"},{"line_number":127,"context_line":"        i_info \u003d self.node.instance_info"},{"line_number":128,"context_line":"        driver_internal_info \u003d self.node.driver_internal_info"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_e8a463ba","line":125,"range":{"start_line":125,"start_character":8,"end_line":125,"end_character":59},"updated":"2016-03-14 07:43:54.000000000","message":"Don\u0027t we need this testcase for partition image?","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6c6db016fcb8ca27e2bbf942f881de79f1ac88b9","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        i_info[\u0027image_source\u0027] \u003d \u0027http://image-ref\u0027"},{"line_number":130,"context_line":"        i_info[\u0027image_checksum\u0027] \u003d \u0027aa\u0027"},{"line_number":131,"context_line":"        i_info[\u0027root_gb\u0027] \u003d 10"},{"line_number":132,"context_line":"        i_info[\u0027image_checksum\u0027] \u003d \u0027aa\u0027"},{"line_number":133,"context_line":"        driver_internal_info[\u0027is_whole_disk_image\u0027] \u003d True"},{"line_number":134,"context_line":"        self.node.instance_info \u003d i_info"},{"line_number":135,"context_line":"        self.node.driver_internal_info \u003d driver_internal_info"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_88695fc1","line":132,"range":{"start_line":132,"start_character":8,"end_line":132,"end_character":39},"updated":"2016-03-14 07:43:54.000000000","message":"This is repeat of L130 above.","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6c6db016fcb8ca27e2bbf942f881de79f1ac88b9","unresolved":false,"context_lines":[{"line_number":681,"context_line":"                                get_power_state_mock, node_power_action_mock,"},{"line_number":682,"context_line":"                                uuid_mock):"},{"line_number":683,"context_line":"        check_deploy_mock.return_value \u003d None"},{"line_number":684,"context_line":"        uuid_mock.return_value \u003d \u0027root_uuid\u0027"},{"line_number":685,"context_line":"        self.node.provision_state \u003d states.DEPLOYWAIT"},{"line_number":686,"context_line":"        self.node.target_provision_state \u003d states.ACTIVE"},{"line_number":687,"context_line":"        self.node.save()"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_88cb1f53","line":684,"range":{"start_line":684,"start_character":7,"end_line":684,"end_character":8},"updated":"2016-03-14 07:43:54.000000000","message":"_get_uuid_from_result() will not be called in the whole disk image code path.","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6c6db016fcb8ca27e2bbf942f881de79f1ac88b9","unresolved":false,"context_lines":[{"line_number":702,"context_line":"            self.assertEqual(states.ACTIVE, task.node.provision_state)"},{"line_number":703,"context_line":"            self.assertEqual(states.NOSTATE, task.node.target_provision_state)"},{"line_number":704,"context_line":"            driver_int_info \u003d task.node.driver_internal_info"},{"line_number":705,"context_line":"            self.assertIsNone(driver_int_info.get(\u0027root_uuid_or_disk_id\u0027))"},{"line_number":706,"context_line":""},{"line_number":707,"context_line":"    @mock.patch.object(agent.AgentVendorInterface, \u0027_get_uuid_from_result\u0027,"},{"line_number":708,"context_line":"                       autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_a81c1bc2","line":705,"range":{"start_line":705,"start_character":12,"end_line":705,"end_character":74},"updated":"2016-03-14 07:43:54.000000000","message":"key \u0027root_uuid_or_disk_id\u0027 shoudl not be present in \u0027driver_internal_info\u0027\nmay be you can test it like:-\nself.assertFalse(driver_int_info.has_key(\u0027root_uuid_or_disk_id\u0027)","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"3cdf91aa3755487d11cadc14758c6c4c3e048dd0","unresolved":false,"context_lines":[{"line_number":702,"context_line":"            self.assertEqual(states.ACTIVE, task.node.provision_state)"},{"line_number":703,"context_line":"            self.assertEqual(states.NOSTATE, task.node.target_provision_state)"},{"line_number":704,"context_line":"            driver_int_info \u003d task.node.driver_internal_info"},{"line_number":705,"context_line":"            self.assertIsNone(driver_int_info.get(\u0027root_uuid_or_disk_id\u0027))"},{"line_number":706,"context_line":""},{"line_number":707,"context_line":"    @mock.patch.object(agent.AgentVendorInterface, \u0027_get_uuid_from_result\u0027,"},{"line_number":708,"context_line":"                       autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":13,"id":"1af94dfe_9b254cc4","line":705,"range":{"start_line":705,"start_character":12,"end_line":705,"end_character":74},"in_reply_to":"3afc51ec_a81c1bc2","updated":"2016-03-15 19:28:50.000000000","message":"it should be present for agent_ilo to do netboot for partition images else boot_iso creation fails.","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6c6db016fcb8ca27e2bbf942f881de79f1ac88b9","unresolved":false,"context_lines":[{"line_number":766,"context_line":"                                          node_power_action_mock,"},{"line_number":767,"context_line":"                                          uuid_mock):"},{"line_number":768,"context_line":"        check_deploy_mock.return_value \u003d None"},{"line_number":769,"context_line":"        uuid_mock.return_value \u003d None"},{"line_number":770,"context_line":"        self.node.provision_state \u003d states.DEPLOYWAIT"},{"line_number":771,"context_line":"        self.node.target_provision_state \u003d states.ACTIVE"},{"line_number":772,"context_line":"        self.node.save()"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_68697325","line":769,"range":{"start_line":769,"start_character":8,"end_line":769,"end_character":37},"updated":"2016-03-14 07:43:54.000000000","message":"_get_uuid_from_result() will not get called for whole disk image.","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6c6db016fcb8ca27e2bbf942f881de79f1ac88b9","unresolved":false,"context_lines":[{"line_number":783,"context_line":"            power_off_mock.assert_called_once_with(task.node)"},{"line_number":784,"context_line":"            check_deploy_mock.assert_called_once_with(mock.ANY, task.node)"},{"line_number":785,"context_line":"            driver_int_info \u003d task.node.driver_internal_info"},{"line_number":786,"context_line":"            self.assertIsNone(driver_int_info.get(\u0027root_uuid_or_disk_id\u0027))"},{"line_number":787,"context_line":""},{"line_number":788,"context_line":"            get_power_state_mock.assert_called_once_with(task)"},{"line_number":789,"context_line":"            node_power_action_mock.assert_called_once_with("}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_a8737b14","line":786,"range":{"start_line":786,"start_character":12,"end_line":786,"end_character":74},"updated":"2016-03-14 07:43:54.000000000","message":"ditto","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6c6db016fcb8ca27e2bbf942f881de79f1ac88b9","unresolved":false,"context_lines":[{"line_number":822,"context_line":"            self.passthru.reboot_to_instance(task)"},{"line_number":823,"context_line":""},{"line_number":824,"context_line":"            self.assertFalse(clean_pxe_mock.called)"},{"line_number":825,"context_line":"            self.assertFalse(clean_pxe_mock.called)"},{"line_number":826,"context_line":"            self.assertFalse(prepare_mock.called)"},{"line_number":827,"context_line":"            self.assertFalse(power_off_mock.called)"},{"line_number":828,"context_line":"            check_deploy_mock.assert_called_once_with(mock.ANY, task.node)"}],"source_content_type":"text/x-python","patch_set":13,"id":"3afc51ec_2ebad36e","line":825,"range":{"start_line":825,"start_character":12,"end_line":825,"end_character":51},"updated":"2016-03-14 07:43:54.000000000","message":"This statement is repeated see L824.","commit_id":"d9535773d54eb6d73554fe5d5b6410b872aee4a9"},{"author":{"_account_id":5805,"name":"Chris Krelle","email":"nobodycam@gmail.com","username":"nobodycam"},"change_message_id":"583dc6c9969c00f355fbdfa7ed1c1b750a663861","unresolved":false,"context_lines":[{"line_number":683,"context_line":"        i_info[\u0027ramdisk\u0027] \u003d \u0027ramdisk\u0027"},{"line_number":684,"context_line":"        i_info[\u0027root_gb\u0027] \u003d 10"},{"line_number":685,"context_line":"        i_info[\u0027swap_mb\u0027] \u003d 10"},{"line_number":686,"context_line":"        i_info[\u0027ephemeral_mb\u0027] \u003d 0"},{"line_number":687,"context_line":"        i_info[\u0027ephemeral_format\u0027] \u003d \u0027abc\u0027"},{"line_number":688,"context_line":"        i_info[\u0027configdrive\u0027] \u003d \u0027configdrive\u0027"},{"line_number":689,"context_line":"        i_info[\u0027preserve_ephemeral\u0027] \u003d False"}],"source_content_type":"text/x-python","patch_set":18,"id":"1af94dfe_0412f808","line":686,"range":{"start_line":686,"start_character":26,"end_line":686,"end_character":28},"updated":"2016-03-17 22:55:36.000000000","message":"should this be gb here?","commit_id":"15540c720bc2433b8dbceaef1222b383c12cad78"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"1d3622c747198bc553a80dad23ecb8bef2d31945","unresolved":false,"context_lines":[{"line_number":683,"context_line":"        i_info[\u0027ramdisk\u0027] \u003d \u0027ramdisk\u0027"},{"line_number":684,"context_line":"        i_info[\u0027root_gb\u0027] \u003d 10"},{"line_number":685,"context_line":"        i_info[\u0027swap_mb\u0027] \u003d 10"},{"line_number":686,"context_line":"        i_info[\u0027ephemeral_mb\u0027] \u003d 0"},{"line_number":687,"context_line":"        i_info[\u0027ephemeral_format\u0027] \u003d \u0027abc\u0027"},{"line_number":688,"context_line":"        i_info[\u0027configdrive\u0027] \u003d \u0027configdrive\u0027"},{"line_number":689,"context_line":"        i_info[\u0027preserve_ephemeral\u0027] \u003d False"}],"source_content_type":"text/x-python","patch_set":18,"id":"1af94dfe_0c333a63","line":686,"range":{"start_line":686,"start_character":26,"end_line":686,"end_character":28},"in_reply_to":"1af94dfe_0412f808","updated":"2016-03-18 02:35:30.000000000","message":"While passing to disk_utils.work_on_disk() we pass it as ephemeral_mb. So in test case it should be ephemeral_mb.\nSee: https://github.com/openstack/ironic/blob/master/ironic/drivers/modules/deploy_utils.py#L350","commit_id":"15540c720bc2433b8dbceaef1222b383c12cad78"}]}
