)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"8fbd56a232f1e0b1f60f813c01c8e0cd58ca25d1","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Nisha Agarwal \u003cagarwalnisha1980@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-09-09 01:55:02 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implements take_over() for ilo drivers"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The boot-iso is created on the conductor."},{"line_number":10,"context_line":"If original conductor is unreachable, the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"da20952f_1202100c","line":7,"updated":"2015-09-09 10:35:59.000000000","message":"I think only for iscsi_ilo driver.  How about \n\n  Implement take_over for iscsi_ilo driver\n\n  When iscsi_ilo driver is using a web server for storing boot images, \n  an active node is tied down to a specific conductor running the \n  webserver.  When it is taken over by a different conductor, the boot\n  image needs to be recreated on the new conductor when took over \n  the node.","commit_id":"f1122f1c767f4d433614a329baa2cd048c48d0c8"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"63381255327832318497a4fdcb597fb1d7ba148c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Nisha Agarwal \u003cagarwalnisha1980@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-09-09 01:55:02 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Implements take_over() for ilo drivers"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The boot-iso is created on the conductor."},{"line_number":10,"context_line":"If original conductor is unreachable, the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"da20952f_4013a45c","line":7,"in_reply_to":"da20952f_1202100c","updated":"2015-09-10 08:23:52.000000000","message":"ok","commit_id":"f1122f1c767f4d433614a329baa2cd048c48d0c8"}],"ironic/drivers/modules/ilo/common.py":[{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"9eb3d17068034e002655bd649eb5365f575473cf","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                                          web_server\u003dCONF.deploy.http_url,"},{"line_number":131,"context_line":"                                          reason\u003dexc)"},{"line_number":132,"context_line":"    os.chmod(image_path, 0o644)"},{"line_number":133,"context_line":"    driver_internal_info \u003d node.driver_internal_info"},{"line_number":134,"context_line":"    driver_internal_info[\u0027ilo_boot_iso_created\u0027] \u003d True"},{"line_number":135,"context_line":"    node.driver_internal_info \u003d driver_internal_info"},{"line_number":136,"context_line":"    node.save()"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba15a1d1_7b4eb097","line":133,"updated":"2015-09-15 10:52:20.000000000","message":"Doing this here is wrong in my opinion.  This is because this gets called even for putting the floppy image onto the webserver. So it\u0027s not always hosting the boot iso.  Why don\u0027t we do this in deploy._get_boot_iso() as we did in previous patch.  I think Yuriy meant in PS17 to move that part of code after copy_image_to_web_server is completed successfully.","commit_id":"653161a824fb9efbbe5a2df32eee69988677f1e5"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"24b8a6bec9510496955bd1710db27a438b7a3e4d","unresolved":false,"context_lines":[{"line_number":130,"context_line":"                                          web_server\u003dCONF.deploy.http_url,"},{"line_number":131,"context_line":"                                          reason\u003dexc)"},{"line_number":132,"context_line":"    os.chmod(image_path, 0o644)"},{"line_number":133,"context_line":"    driver_internal_info \u003d node.driver_internal_info"},{"line_number":134,"context_line":"    driver_internal_info[\u0027ilo_boot_iso_created\u0027] \u003d True"},{"line_number":135,"context_line":"    node.driver_internal_info \u003d driver_internal_info"},{"line_number":136,"context_line":"    node.save()"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba15a1d1_48f3d29e","line":133,"in_reply_to":"ba15a1d1_7b4eb097","updated":"2015-09-15 19:10:12.000000000","message":"hmm i agree to ur point. I didnt think on that.","commit_id":"653161a824fb9efbbe5a2df32eee69988677f1e5"}],"ironic/drivers/modules/ilo/deploy.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"79955ffe2efb5cf3edf37b209af21a48713541b5","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    :param boot_iso: boot iso as required by the iscsi_ilo driver"},{"line_number":81,"context_line":"                     for successful boot."},{"line_number":82,"context_line":"    :returns True if the given boot iso is a glance uuid or a swift"},{"line_number":83,"context_line":"                  hosted boot iso or a valid href."},{"line_number":84,"context_line":"    :returns False if boot iso is not a glance uuid or not hosted"},{"line_number":85,"context_line":"                   on swift or is an invalid href."},{"line_number":86,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_a34036a6","line":83,"updated":"2015-08-26 12:16:57.000000000","message":"maybe just \u0027False otherwise\u0027?","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f5ce36cdc51dffabe3d27bfdd47270f0f071732c","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    :param boot_iso: boot iso as required by the iscsi_ilo driver"},{"line_number":81,"context_line":"                     for successful boot."},{"line_number":82,"context_line":"    :returns True if the given boot iso is a glance uuid or a swift"},{"line_number":83,"context_line":"                  hosted boot iso or a valid href."},{"line_number":84,"context_line":"    :returns False if boot iso is not a glance uuid or not hosted"},{"line_number":85,"context_line":"                   on swift or is an invalid href."},{"line_number":86,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_bf5ebf74","line":83,"in_reply_to":"fa1b9901_a34036a6","updated":"2015-08-26 16:56:11.000000000","message":"Ok.","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"79955ffe2efb5cf3edf37b209af21a48713541b5","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    \"\"\""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    status \u003d False"},{"line_number":89,"context_line":"    if service_utils.is_glance_image(boot_iso):"},{"line_number":90,"context_line":"        status \u003d True"},{"line_number":91,"context_line":"    elif CONF.ilo.use_web_server_for_images:"},{"line_number":92,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_83d5f2e5","line":89,"updated":"2015-08-26 12:16:57.000000000","message":"small improvements:\n\n if service_utils.is_glance_image(boot_iso) or boot_iso.startswith(\u0027swift\u0027):\n     return True\n elif CONF.ilo.use_web_server_for_images:\n     try:\n         image_service.HttpImageService().validate_href(boot_iso)\n         return True\n     except ...\n         ...\n return False","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f5ce36cdc51dffabe3d27bfdd47270f0f071732c","unresolved":false,"context_lines":[{"line_number":86,"context_line":"    \"\"\""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    status \u003d False"},{"line_number":89,"context_line":"    if service_utils.is_glance_image(boot_iso):"},{"line_number":90,"context_line":"        status \u003d True"},{"line_number":91,"context_line":"    elif CONF.ilo.use_web_server_for_images:"},{"line_number":92,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_ffcbd71c","line":89,"in_reply_to":"fa1b9901_83d5f2e5","updated":"2015-08-26 16:56:11.000000000","message":"ok","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"79955ffe2efb5cf3edf37b209af21a48713541b5","unresolved":false,"context_lines":[{"line_number":88,"context_line":"    status \u003d False"},{"line_number":89,"context_line":"    if service_utils.is_glance_image(boot_iso):"},{"line_number":90,"context_line":"        status \u003d True"},{"line_number":91,"context_line":"    elif CONF.ilo.use_web_server_for_images:"},{"line_number":92,"context_line":"        try:"},{"line_number":93,"context_line":"            image_service.HttpImageService().validate_href(boot_iso)"},{"line_number":94,"context_line":"            status \u003d True"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_8e70b941","line":91,"updated":"2015-08-26 12:16:57.000000000","message":"And what if boot_iso is an image that is hosted on http server not managed by ironic?","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"c4f71a38feeb6859d0b0486f0476e2dabd7bde85","unresolved":false,"context_lines":[{"line_number":88,"context_line":"    status \u003d False"},{"line_number":89,"context_line":"    if service_utils.is_glance_image(boot_iso):"},{"line_number":90,"context_line":"        status \u003d True"},{"line_number":91,"context_line":"    elif CONF.ilo.use_web_server_for_images:"},{"line_number":92,"context_line":"        try:"},{"line_number":93,"context_line":"            image_service.HttpImageService().validate_href(boot_iso)"},{"line_number":94,"context_line":"            status \u003d True"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_e1ceb582","line":91,"in_reply_to":"da20952f_ce5bbf2d","updated":"2015-08-27 09:51:17.000000000","message":"IIRC Ironic supports http:// (on some existing server) links for images (and for boot_iso too), no matter if ipxe is used or not. In this case boot_iso not being created, it is just downloaded from this server. If it is the case, boot_iso will be http link, but return value of this function will still be False if CONF.ilo.use_web_server_for_images is False. Then this ilo_boot_iso will be removed from instance_info, and it is possible that it can not be recreated (if you provided ilo_boot_iso manually this means that you could omit boot_iso, kernel_id or ramdisk_id parameters for image_source), so you\u0027ll delete this link and conductor won\u0027t be able to take over. So I\u0027d say this function should return True if some server other than ipxe\u0027s one is used for boot_iso hosting.","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"0f913a0a1b52c0a500515be85c3e2d49b6ec9a0c","unresolved":false,"context_lines":[{"line_number":88,"context_line":"    status \u003d False"},{"line_number":89,"context_line":"    if service_utils.is_glance_image(boot_iso):"},{"line_number":90,"context_line":"        status \u003d True"},{"line_number":91,"context_line":"    elif CONF.ilo.use_web_server_for_images:"},{"line_number":92,"context_line":"        try:"},{"line_number":93,"context_line":"            image_service.HttpImageService().validate_href(boot_iso)"},{"line_number":94,"context_line":"            status \u003d True"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_ce5bbf2d","line":91,"in_reply_to":"fa1b9901_8e70b941","updated":"2015-08-26 21:31:14.000000000","message":"IMO ironic assumes the https server given in http_url and http_root in [deploy] section as the valid urls set by the operator.","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f5ce36cdc51dffabe3d27bfdd47270f0f071732c","unresolved":false,"context_lines":[{"line_number":88,"context_line":"    status \u003d False"},{"line_number":89,"context_line":"    if service_utils.is_glance_image(boot_iso):"},{"line_number":90,"context_line":"        status \u003d True"},{"line_number":91,"context_line":"    elif CONF.ilo.use_web_server_for_images:"},{"line_number":92,"context_line":"        try:"},{"line_number":93,"context_line":"            image_service.HttpImageService().validate_href(boot_iso)"},{"line_number":94,"context_line":"            status \u003d True"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_bf71dfe2","line":91,"in_reply_to":"fa1b9901_8e70b941","updated":"2015-08-26 16:56:11.000000000","message":"the http server setup is out of scope of ironic (atleast afaik). \nDoes devstack takes care of https server setup for ipxe?","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"79955ffe2efb5cf3edf37b209af21a48713541b5","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            image_service.HttpImageService().validate_href(boot_iso)"},{"line_number":94,"context_line":"            status \u003d True"},{"line_number":95,"context_line":"        except exception.ImageRefValidationFailed:"},{"line_number":96,"context_line":"            LOG.warning(_LW(\"Virtual media deploy accepts only glance \""},{"line_number":97,"context_line":"                            \"images or HTTP(S) URLs as \""},{"line_number":98,"context_line":"                            \"instance_info[\u0027ilo_boot_iso\u0027]. Either %s \""},{"line_number":99,"context_line":"                            \"is not a valid HTTP(s) URL or is \""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_e90b6fd3","line":96,"updated":"2015-08-26 12:16:57.000000000","message":"Not sure if this should be logged as you try to recreate it anyway.","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f5ce36cdc51dffabe3d27bfdd47270f0f071732c","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            image_service.HttpImageService().validate_href(boot_iso)"},{"line_number":94,"context_line":"            status \u003d True"},{"line_number":95,"context_line":"        except exception.ImageRefValidationFailed:"},{"line_number":96,"context_line":"            LOG.warning(_LW(\"Virtual media deploy accepts only glance \""},{"line_number":97,"context_line":"                            \"images or HTTP(S) URLs as \""},{"line_number":98,"context_line":"                            \"instance_info[\u0027ilo_boot_iso\u0027]. Either %s \""},{"line_number":99,"context_line":"                            \"is not a valid HTTP(s) URL or is \""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_22f2949b","line":96,"in_reply_to":"fa1b9901_e90b6fd3","updated":"2015-08-26 16:56:11.000000000","message":"before recreating we try to see if the attached boot iso is reachable. If that is not reachable then only we create the boot iso. IMO this is helpful to know that the current attached one is not not a valid URL and hence needs recreating.","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"79955ffe2efb5cf3edf37b209af21a48713541b5","unresolved":false,"context_lines":[{"line_number":110,"context_line":"    :param node: The node object on which to act on."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    \"\"\""},{"line_number":113,"context_line":"    instance_info \u003d {}"},{"line_number":114,"context_line":"    for key, value in (node.instance_info).items():"},{"line_number":115,"context_line":"        if \u0027ilo_boot_iso\u0027 not in key:"},{"line_number":116,"context_line":"            instance_info[key] \u003d value"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_43cd9a2f","line":113,"updated":"2015-08-26 12:16:57.000000000","message":"Why not just\n\n instance_info \u003d node.instance_info\n instance_info.pop(\u0027ilo_boot_iso\u0027, None)\n node.instance_info \u003d instance_info\n node.save()","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f5ce36cdc51dffabe3d27bfdd47270f0f071732c","unresolved":false,"context_lines":[{"line_number":110,"context_line":"    :param node: The node object on which to act on."},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"    \"\"\""},{"line_number":113,"context_line":"    instance_info \u003d {}"},{"line_number":114,"context_line":"    for key, value in (node.instance_info).items():"},{"line_number":115,"context_line":"        if \u0027ilo_boot_iso\u0027 not in key:"},{"line_number":116,"context_line":"            instance_info[key] \u003d value"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_adf21505","line":113,"in_reply_to":"fa1b9901_43cd9a2f","updated":"2015-08-26 16:56:11.000000000","message":"Ohk , Good way. :)","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"92faf9788e043734a79c8f06e886fef750c03d45","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"def _recreate_and_attach_boot_iso(task):"},{"line_number":122,"context_line":"    \"\"\"Recreate and attaches the boot iso to the node."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    Recreates the boot iso for the image and host it"},{"line_number":125,"context_line":"    on a valid image service. Attaches the new boot iso"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_7ec2b454","line":122,"updated":"2015-08-26 12:55:51.000000000","message":"This function does not attach iso to the hardware.","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f5ce36cdc51dffabe3d27bfdd47270f0f071732c","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"def _recreate_and_attach_boot_iso(task):"},{"line_number":122,"context_line":"    \"\"\"Recreate and attaches the boot iso to the node."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    Recreates the boot iso for the image and host it"},{"line_number":125,"context_line":"    on a valid image service. Attaches the new boot iso"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_2d6cc59b","line":122,"in_reply_to":"fa1b9901_7ec2b454","updated":"2015-08-26 16:56:11.000000000","message":"Yes. It just populates the ilo_boot_iso. Will update it accordingly","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"79955ffe2efb5cf3edf37b209af21a48713541b5","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    :returns valid boot iso link."},{"line_number":130,"context_line":"    \"\"\""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    root_uuid \u003d task.node.driver_internal_info[\u0027root_uuid_or_disk_id\u0027]"},{"line_number":133,"context_line":"    boot_iso \u003d _get_boot_iso(task, root_uuid)"},{"line_number":134,"context_line":"    task.node.instance_info[\u0027ilo_boot_iso\u0027] \u003d boot_iso"},{"line_number":135,"context_line":"    task.node.save()"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_a37836c5","line":132,"updated":"2015-08-26 12:16:57.000000000","message":"So this will cause failure for already deployed nodes as they do not contain root_uuid_or_disk_id in driver_internal_info?","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"bf76fc8a67e8be1fc7734165faca719cee5891ac","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    :returns valid boot iso link."},{"line_number":130,"context_line":"    \"\"\""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    root_uuid \u003d task.node.driver_internal_info[\u0027root_uuid_or_disk_id\u0027]"},{"line_number":133,"context_line":"    boot_iso \u003d _get_boot_iso(task, root_uuid)"},{"line_number":134,"context_line":"    task.node.instance_info[\u0027ilo_boot_iso\u0027] \u003d boot_iso"},{"line_number":135,"context_line":"    task.node.save()"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_1cae2798","line":132,"in_reply_to":"da20952f_949379fa","updated":"2015-08-31 06:20:38.000000000","message":"Ok. Will add that in documentation. :)","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"c4f71a38feeb6859d0b0486f0476e2dabd7bde85","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    :returns valid boot iso link."},{"line_number":130,"context_line":"    \"\"\""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    root_uuid \u003d task.node.driver_internal_info[\u0027root_uuid_or_disk_id\u0027]"},{"line_number":133,"context_line":"    boot_iso \u003d _get_boot_iso(task, root_uuid)"},{"line_number":134,"context_line":"    task.node.instance_info[\u0027ilo_boot_iso\u0027] \u003d boot_iso"},{"line_number":135,"context_line":"    task.node.save()"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_949379fa","line":132,"in_reply_to":"da20952f_addc5547","updated":"2015-08-27 09:51:17.000000000","message":"Then maybe it should be mentioned in docs, that if you want to enable take over for some nodes they should be rebuilt, idk a good solution for it honestly :)","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f5ce36cdc51dffabe3d27bfdd47270f0f071732c","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    :returns valid boot iso link."},{"line_number":130,"context_line":"    \"\"\""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    root_uuid \u003d task.node.driver_internal_info[\u0027root_uuid_or_disk_id\u0027]"},{"line_number":133,"context_line":"    boot_iso \u003d _get_boot_iso(task, root_uuid)"},{"line_number":134,"context_line":"    task.node.instance_info[\u0027ilo_boot_iso\u0027] \u003d boot_iso"},{"line_number":135,"context_line":"    task.node.save()"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_addc5547","line":132,"in_reply_to":"fa1b9901_a37836c5","updated":"2015-08-26 16:56:11.000000000","message":"Yes, But without root uuid, there is no way to recreate the boot iso.  Is there any way we can get root uuid for an already deployed node?","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"79955ffe2efb5cf3edf37b209af21a48713541b5","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    root_uuid \u003d task.node.driver_internal_info[\u0027root_uuid_or_disk_id\u0027]"},{"line_number":133,"context_line":"    boot_iso \u003d _get_boot_iso(task, root_uuid)"},{"line_number":134,"context_line":"    task.node.instance_info[\u0027ilo_boot_iso\u0027] \u003d boot_iso"},{"line_number":135,"context_line":"    task.node.save()"},{"line_number":136,"context_line":"    return boot_iso"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_4337dafe","line":134,"updated":"2015-08-26 12:16:57.000000000","message":"instance_info \u003d task.node.instance_info\n\n...\n\ntask.node.instance_info \u003d instance_info","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f5ce36cdc51dffabe3d27bfdd47270f0f071732c","unresolved":false,"context_lines":[{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    root_uuid \u003d task.node.driver_internal_info[\u0027root_uuid_or_disk_id\u0027]"},{"line_number":133,"context_line":"    boot_iso \u003d _get_boot_iso(task, root_uuid)"},{"line_number":134,"context_line":"    task.node.instance_info[\u0027ilo_boot_iso\u0027] \u003d boot_iso"},{"line_number":135,"context_line":"    task.node.save()"},{"line_number":136,"context_line":"    return boot_iso"},{"line_number":137,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_4d9c9969","line":134,"in_reply_to":"fa1b9901_4337dafe","updated":"2015-08-26 16:56:11.000000000","message":"ohk. Will update the code this way. But the current code also works fine.","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"79955ffe2efb5cf3edf37b209af21a48713541b5","unresolved":false,"context_lines":[{"line_number":591,"context_line":"        status \u003d _validate_boot_iso(boot_iso)"},{"line_number":592,"context_line":"        if not status:"},{"line_number":593,"context_line":"            _clean_up_ilo_boot_iso(task.node)"},{"line_number":594,"context_line":"            boot_iso \u003d _recreate_and_attach_boot_iso(task)"},{"line_number":595,"context_line":"            if not boot_iso:"},{"line_number":596,"context_line":"                LOG.warning(_(\"Boot iso for the node %(node)s \""},{"line_number":597,"context_line":"                            \"could not be created succeefully. \"),"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_c30a0a26","line":594,"updated":"2015-08-26 12:16:57.000000000","message":"You do node.save in both _clean_up_ilo_boot_iso and _recreate_and_attach_boot_iso. Maybe better to add one node.save after this line?","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f5ce36cdc51dffabe3d27bfdd47270f0f071732c","unresolved":false,"context_lines":[{"line_number":591,"context_line":"        status \u003d _validate_boot_iso(boot_iso)"},{"line_number":592,"context_line":"        if not status:"},{"line_number":593,"context_line":"            _clean_up_ilo_boot_iso(task.node)"},{"line_number":594,"context_line":"            boot_iso \u003d _recreate_and_attach_boot_iso(task)"},{"line_number":595,"context_line":"            if not boot_iso:"},{"line_number":596,"context_line":"                LOG.warning(_(\"Boot iso for the node %(node)s \""},{"line_number":597,"context_line":"                            \"could not be created succeefully. \"),"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_ed8ecd26","line":594,"in_reply_to":"fa1b9901_c30a0a26","updated":"2015-08-26 16:56:11.000000000","message":"ok","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"79955ffe2efb5cf3edf37b209af21a48713541b5","unresolved":false,"context_lines":[{"line_number":594,"context_line":"            boot_iso \u003d _recreate_and_attach_boot_iso(task)"},{"line_number":595,"context_line":"            if not boot_iso:"},{"line_number":596,"context_line":"                LOG.warning(_(\"Boot iso for the node %(node)s \""},{"line_number":597,"context_line":"                            \"could not be created succeefully. \"),"},{"line_number":598,"context_line":"                            {\u0027node\u0027: task.node.uuid})"},{"line_number":599,"context_line":"        if boot_iso:"},{"line_number":600,"context_line":"            _reboot_into(task, boot_iso, ramdisk_options\u003dNone)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_2ed40d1e","line":597,"updated":"2015-08-26 12:16:57.000000000","message":"nit - successfully","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f5ce36cdc51dffabe3d27bfdd47270f0f071732c","unresolved":false,"context_lines":[{"line_number":594,"context_line":"            boot_iso \u003d _recreate_and_attach_boot_iso(task)"},{"line_number":595,"context_line":"            if not boot_iso:"},{"line_number":596,"context_line":"                LOG.warning(_(\"Boot iso for the node %(node)s \""},{"line_number":597,"context_line":"                            \"could not be created succeefully. \"),"},{"line_number":598,"context_line":"                            {\u0027node\u0027: task.node.uuid})"},{"line_number":599,"context_line":"        if boot_iso:"},{"line_number":600,"context_line":"            _reboot_into(task, boot_iso, ramdisk_options\u003dNone)"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_cd9d095b","line":597,"in_reply_to":"fa1b9901_2ed40d1e","updated":"2015-08-26 16:56:11.000000000","message":":)","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"92faf9788e043734a79c8f06e886fef750c03d45","unresolved":false,"context_lines":[{"line_number":597,"context_line":"                            \"could not be created succeefully. \"),"},{"line_number":598,"context_line":"                            {\u0027node\u0027: task.node.uuid})"},{"line_number":599,"context_line":"        if boot_iso:"},{"line_number":600,"context_line":"            _reboot_into(task, boot_iso, ramdisk_options\u003dNone)"},{"line_number":601,"context_line":"        else:"},{"line_number":602,"context_line":"            LOG.warning(_(\"The node %(node)s cannot be taken over \""},{"line_number":603,"context_line":"                          \"by this conductor.\"),"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_5b55821b","line":600,"updated":"2015-08-26 12:55:51.000000000","message":"If the node already booted and in ACTIVE state why this additional reboot is needed? This causes a reboot of user\u0027s instance if a conductor died.","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"0f913a0a1b52c0a500515be85c3e2d49b6ec9a0c","unresolved":false,"context_lines":[{"line_number":597,"context_line":"                            \"could not be created succeefully. \"),"},{"line_number":598,"context_line":"                            {\u0027node\u0027: task.node.uuid})"},{"line_number":599,"context_line":"        if boot_iso:"},{"line_number":600,"context_line":"            _reboot_into(task, boot_iso, ramdisk_options\u003dNone)"},{"line_number":601,"context_line":"        else:"},{"line_number":602,"context_line":"            LOG.warning(_(\"The node %(node)s cannot be taken over \""},{"line_number":603,"context_line":"                          \"by this conductor.\"),"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_c76f1c91","line":600,"in_reply_to":"da20952f_4d9019ed","updated":"2015-08-26 21:31:14.000000000","message":"the conductor does \"task.driver.deploy.prepare()\" with which the first action is to power off the node. So during take_over, by default system has to do all the steps of powering on the system and attaching vmedia etc.","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f5ce36cdc51dffabe3d27bfdd47270f0f071732c","unresolved":false,"context_lines":[{"line_number":597,"context_line":"                            \"could not be created succeefully. \"),"},{"line_number":598,"context_line":"                            {\u0027node\u0027: task.node.uuid})"},{"line_number":599,"context_line":"        if boot_iso:"},{"line_number":600,"context_line":"            _reboot_into(task, boot_iso, ramdisk_options\u003dNone)"},{"line_number":601,"context_line":"        else:"},{"line_number":602,"context_line":"            LOG.warning(_(\"The node %(node)s cannot be taken over \""},{"line_number":603,"context_line":"                          \"by this conductor.\"),"}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_4d9019ed","line":600,"in_reply_to":"fa1b9901_5b55821b","updated":"2015-08-26 16:56:11.000000000","message":"This is needed to boot up the instance from new boot iso. I am not sure if we should defer the reboot if node is in power on state. But for sure this is required for a node in POWER OFF \u0026 ACTIVE states.","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"92faf9788e043734a79c8f06e886fef750c03d45","unresolved":false,"context_lines":[{"line_number":599,"context_line":"        if boot_iso:"},{"line_number":600,"context_line":"            _reboot_into(task, boot_iso, ramdisk_options\u003dNone)"},{"line_number":601,"context_line":"        else:"},{"line_number":602,"context_line":"            LOG.warning(_(\"The node %(node)s cannot be taken over \""},{"line_number":603,"context_line":"                          \"by this conductor.\"),"},{"line_number":604,"context_line":"                        {\u0027node\u0027: task.node.uuid})"},{"line_number":605,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_1b64ea1f","line":602,"updated":"2015-08-26 12:55:51.000000000","message":"Looks like LOG.error needed here.","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"f5ce36cdc51dffabe3d27bfdd47270f0f071732c","unresolved":false,"context_lines":[{"line_number":599,"context_line":"        if boot_iso:"},{"line_number":600,"context_line":"            _reboot_into(task, boot_iso, ramdisk_options\u003dNone)"},{"line_number":601,"context_line":"        else:"},{"line_number":602,"context_line":"            LOG.warning(_(\"The node %(node)s cannot be taken over \""},{"line_number":603,"context_line":"                          \"by this conductor.\"),"},{"line_number":604,"context_line":"                        {\u0027node\u0027: task.node.uuid})"},{"line_number":605,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"da20952f_2d812590","line":602,"in_reply_to":"fa1b9901_1b64ea1f","updated":"2015-08-26 16:56:11.000000000","message":"hmmm. I was confused if this should be error or warning. Will make it error","commit_id":"54319f1e089cabee814dc7590093dcc7602f54a2"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"5bd23a0cc0e0b8c0764b67ea67ea9d7209d92214","unresolved":false,"context_lines":[{"line_number":578,"context_line":"        if not status:"},{"line_number":579,"context_line":"            boot_iso \u003d _recreate_and_populate_ilo_boot_iso(task)"},{"line_number":580,"context_line":"            if not boot_iso:"},{"line_number":581,"context_line":"                LOG.warning(_(\"Boot iso for the node %(node)s \""},{"line_number":582,"context_line":"                            \"could not be created successfully. \"),"},{"line_number":583,"context_line":"                            {\u0027node\u0027: task.node.uuid})"},{"line_number":584,"context_line":"        if boot_iso:"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_74090595","line":581,"updated":"2015-08-27 09:52:31.000000000","message":"_LW","commit_id":"d2482bc158cb4ec0d6f640ba6940b61ff6eda7e3"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"1c098089f56acf17c743af7d103d5ddb036ca147","unresolved":false,"context_lines":[{"line_number":582,"context_line":"                            \"could not be created successfully. \"),"},{"line_number":583,"context_line":"                            {\u0027node\u0027: task.node.uuid})"},{"line_number":584,"context_line":"        if boot_iso:"},{"line_number":585,"context_line":"            _reboot_into(task, boot_iso, ramdisk_options\u003dNone)"},{"line_number":586,"context_line":"        else:"},{"line_number":587,"context_line":"            LOG.error(_(\"The node %(node)s cannot be taken over \""},{"line_number":588,"context_line":"                      \"by this conductor.\"),"}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_a8f17acf","line":585,"updated":"2015-08-27 10:53:46.000000000","message":"Sorry, but I\u0027m strongly against if an active node will reboot during  take_over(). Is there a way for attaching iso without reboot? And another problem - power action in prepare() l396. I\u0027m not an iLO expert, is it really needed?","commit_id":"d2482bc158cb4ec0d6f640ba6940b61ff6eda7e3"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"5bd23a0cc0e0b8c0764b67ea67ea9d7209d92214","unresolved":false,"context_lines":[{"line_number":584,"context_line":"        if boot_iso:"},{"line_number":585,"context_line":"            _reboot_into(task, boot_iso, ramdisk_options\u003dNone)"},{"line_number":586,"context_line":"        else:"},{"line_number":587,"context_line":"            LOG.error(_(\"The node %(node)s cannot be taken over \""},{"line_number":588,"context_line":"                      \"by this conductor.\"),"},{"line_number":589,"context_line":"                      {\u0027node\u0027: task.node.uuid})"},{"line_number":590,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"da20952f_34038d75","line":587,"updated":"2015-08-27 09:52:31.000000000","message":"_LE","commit_id":"d2482bc158cb4ec0d6f640ba6940b61ff6eda7e3"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"7f95b34c22d6cbccc89a46f8e97ca9f9da6f4d74","unresolved":false,"context_lines":[{"line_number":71,"context_line":"CONF.register_opts(clean_opts, group\u003d\u0027ilo\u0027)"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"def _validate_boot_iso(boot_iso):"},{"line_number":75,"context_line":"    \"\"\"Validates the boot iso."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    Validates if boot iso is a glance uuid, or a swift hosted boot iso"}],"source_content_type":"text/x-python","patch_set":9,"id":"da20952f_8b04224a","line":74,"updated":"2015-09-01 05:50:55.000000000","message":"What is the purpose of this validation here.  If it is wasn\u0027t a glance image, swift object or http url, the deploy wouldn\u0027t have completed and we wouldn\u0027t have reached this code.  I meant to say, I can\u0027t imagine a scenario where we would return False here (unless operator changes it manually themselves).","commit_id":"c9c41cac00916541f46b07ef2a81e8c8b6dab2a6"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"f69f0905276088c0bdda669f4e15e922d5ac9ed6","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    \"\"\""},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"    if (service_utils.is_glance_image(boot_iso) or"},{"line_number":88,"context_line":"            (boot_iso.startswith(\u0027swift\u0027))):"},{"line_number":89,"context_line":"        return True"},{"line_number":90,"context_line":"    else:"},{"line_number":91,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"da20952f_501b1b73","line":88,"updated":"2015-08-31 10:42:47.000000000","message":"() around boot_iso.startswith not needed","commit_id":"c9c41cac00916541f46b07ef2a81e8c8b6dab2a6"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"f69f0905276088c0bdda669f4e15e922d5ac9ed6","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    if (service_utils.is_glance_image(boot_iso) or"},{"line_number":88,"context_line":"            (boot_iso.startswith(\u0027swift\u0027))):"},{"line_number":89,"context_line":"        return True"},{"line_number":90,"context_line":"    else:"},{"line_number":91,"context_line":"        try:"},{"line_number":92,"context_line":"            image_service.HttpImageService().validate_href(boot_iso)"},{"line_number":93,"context_line":"            return True"}],"source_content_type":"text/x-python","patch_set":9,"id":"da20952f_f0f58fec","line":90,"updated":"2015-08-31 10:42:47.000000000","message":"else not needed","commit_id":"c9c41cac00916541f46b07ef2a81e8c8b6dab2a6"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"f69f0905276088c0bdda669f4e15e922d5ac9ed6","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    instance_info.pop(\u0027ilo_boot_iso\u0027, None)"},{"line_number":116,"context_line":"    task.node.instance_info \u003d instance_info"},{"line_number":117,"context_line":"    # Now recreate the boot iso and populate the same in node.instance_info"},{"line_number":118,"context_line":"    root_uuid \u003d task.node.driver_internal_info[\u0027root_uuid_or_disk_id\u0027]"},{"line_number":119,"context_line":"    boot_iso \u003d _get_boot_iso(task, root_uuid)"},{"line_number":120,"context_line":"    instance_info[\u0027ilo_boot_iso\u0027] \u003d boot_iso"},{"line_number":121,"context_line":"    task.node.instance_info \u003d instance_info"}],"source_content_type":"text/x-python","patch_set":9,"id":"da20952f_90221351","line":118,"updated":"2015-08-31 10:42:47.000000000","message":"This \"root_uuid_or_disk_id\" seems to be only populated when using the bash ramdisk (via pass_deploy_info). So I wonder if we can rely that it\u0027s going to be there if we use the IPA ramdisk with the iSCSI methodology.\n\nPerhaps we should play safe here and use task.node.driver_internal_info.get(\u0027root_uuid_or_disk_id\u0027)","commit_id":"c9c41cac00916541f46b07ef2a81e8c8b6dab2a6"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"7f95b34c22d6cbccc89a46f8e97ca9f9da6f4d74","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    instance_info.pop(\u0027ilo_boot_iso\u0027, None)"},{"line_number":116,"context_line":"    task.node.instance_info \u003d instance_info"},{"line_number":117,"context_line":"    # Now recreate the boot iso and populate the same in node.instance_info"},{"line_number":118,"context_line":"    root_uuid \u003d task.node.driver_internal_info[\u0027root_uuid_or_disk_id\u0027]"},{"line_number":119,"context_line":"    boot_iso \u003d _get_boot_iso(task, root_uuid)"},{"line_number":120,"context_line":"    instance_info[\u0027ilo_boot_iso\u0027] \u003d boot_iso"},{"line_number":121,"context_line":"    task.node.instance_info \u003d instance_info"}],"source_content_type":"text/x-python","patch_set":9,"id":"da20952f_2b1f166d","line":118,"in_reply_to":"da20952f_90221351","updated":"2015-09-01 05:50:55.000000000","message":"It is populated here - https://github.com/openstack/ironic/blob/master/ironic/drivers/modules/iscsi_deploy.py#L460-L469\n\nBut +1 to be on the safer side and use .get().  We hit this bug once.  What if the instance was created long long back.  We already hit such a bug.\nhttps://review.openstack.org/#/c/165676/","commit_id":"c9c41cac00916541f46b07ef2a81e8c8b6dab2a6"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"7f95b34c22d6cbccc89a46f8e97ca9f9da6f4d74","unresolved":false,"context_lines":[{"line_number":565,"context_line":"        else:"},{"line_number":566,"context_line":"            ilo_common.destroy_floppy_image_from_web_server(task)"},{"line_number":567,"context_line":""},{"line_number":568,"context_line":"    def take_over(self, task):"},{"line_number":569,"context_line":"        \"\"\"Enables boot up of an ACTIVE node."},{"line_number":570,"context_line":""},{"line_number":571,"context_line":"        It ensures that the ACTIVE node can be booted up successfully"}],"source_content_type":"text/x-python","patch_set":9,"id":"da20952f_066009a4","line":568,"updated":"2015-09-01 05:50:55.000000000","message":"How do we differentiate if the user had provided an ilo_boot_iso or we had generated it.  We should be doing that.  If user provided ilo_boot_iso, we shouldn\u0027t recreate it, rather we should just use it.  Do we need a mechanism to remember if we created the boot iso ? May be store a new attribute in driver_internal_info ?","commit_id":"c9c41cac00916541f46b07ef2a81e8c8b6dab2a6"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"7f95b34c22d6cbccc89a46f8e97ca9f9da6f4d74","unresolved":false,"context_lines":[{"line_number":576,"context_line":"        boot_iso \u003d task.node.instance_info[\u0027ilo_boot_iso\u0027]"},{"line_number":577,"context_line":"        status \u003d _validate_boot_iso(boot_iso)"},{"line_number":578,"context_line":"        if not status:"},{"line_number":579,"context_line":"            boot_iso \u003d _recreate_and_populate_ilo_boot_iso(task)"},{"line_number":580,"context_line":"            if not boot_iso:"},{"line_number":581,"context_line":"                LOG.warning(_LW(\"Boot iso for the node %(node)s \""},{"line_number":582,"context_line":"                                \"could not be created successfully. \""}],"source_content_type":"text/x-python","patch_set":9,"id":"da20952f_262d0d95","line":579,"updated":"2015-09-01 05:50:55.000000000","message":"I think we need to do this only if CONF.ilo.use_webserver_for_image is True.  Otherwise we are going to recreate the swift objects unnecessarily during a take over (swift is already a centralized place).","commit_id":"c9c41cac00916541f46b07ef2a81e8c8b6dab2a6"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"f69f0905276088c0bdda669f4e15e922d5ac9ed6","unresolved":false,"context_lines":[{"line_number":1003,"context_line":"        driver_internal_info \u003d task.node.driver_internal_info"},{"line_number":1004,"context_line":"        driver_internal_info[\u0027root_uuid_or_disk_id\u0027] \u003d root_uuid_or_disk_id"},{"line_number":1005,"context_line":"        task.node.driver_internal_info \u003d driver_internal_info"},{"line_number":1006,"context_line":"        task.node.save()"},{"line_number":1007,"context_line":""},{"line_number":1008,"context_line":"        try:"},{"line_number":1009,"context_line":"            # Set boot mode"}],"source_content_type":"text/x-python","patch_set":9,"id":"da20952f_d055ebc1","line":1006,"updated":"2015-08-31 10:42:47.000000000","message":"This function is only called with the bash ramdisk, what happens if we use IPA to deploy the node (via iSCSI methodology) ? Perhaps we should populate it in another place which is common for both since it will be used in the take_over()","commit_id":"c9c41cac00916541f46b07ef2a81e8c8b6dab2a6"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"7f95b34c22d6cbccc89a46f8e97ca9f9da6f4d74","unresolved":false,"context_lines":[{"line_number":1003,"context_line":"        driver_internal_info \u003d task.node.driver_internal_info"},{"line_number":1004,"context_line":"        driver_internal_info[\u0027root_uuid_or_disk_id\u0027] \u003d root_uuid_or_disk_id"},{"line_number":1005,"context_line":"        task.node.driver_internal_info \u003d driver_internal_info"},{"line_number":1006,"context_line":"        task.node.save()"},{"line_number":1007,"context_line":""},{"line_number":1008,"context_line":"        try:"},{"line_number":1009,"context_line":"            # Set boot mode"}],"source_content_type":"text/x-python","patch_set":9,"id":"da20952f_6bed0eb6","line":1006,"in_reply_to":"da20952f_d055ebc1","updated":"2015-09-01 05:50:55.000000000","message":"This is already done today for agent ramdisk in a common place. \n\nhttps://github.com/openstack/ironic/blob/master/ironic/drivers/modules/iscsi_deploy.py#L460-L469","commit_id":"c9c41cac00916541f46b07ef2a81e8c8b6dab2a6"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"f4cbb2570f9ae1cdef22250990d0b3f54d8ed77a","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    :param boot_iso: boot iso as required by the iscsi_ilo driver"},{"line_number":81,"context_line":"                     for successful boot."},{"line_number":82,"context_line":"    :returns False if the given boot iso was auto-created during deploy"},{"line_number":83,"context_line":"                   and is not reachable http url else returns False."},{"line_number":84,"context_line":"    \"\"\""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    if (ilo_boot_iso_created and"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_5bec69ba","line":83,"updated":"2015-09-01 09:09:23.000000000","message":"Should be \u0027otherwise returns True\u0027.","commit_id":"8b5a7cffa1664ef7b8ccac898a0a0de82b87bc9b"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"69d50505950873bd0602342cdc434294b662a55f","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    :param boot_iso: boot iso as required by the iscsi_ilo driver"},{"line_number":81,"context_line":"                     for successful boot."},{"line_number":82,"context_line":"    :returns False if the given boot iso was auto-created during deploy"},{"line_number":83,"context_line":"                   and is not reachable http url else returns False."},{"line_number":84,"context_line":"    \"\"\""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    if (ilo_boot_iso_created and"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_e46efafe","line":83,"in_reply_to":"da20952f_5bec69ba","updated":"2015-09-01 09:59:55.000000000","message":"ahhh :)","commit_id":"8b5a7cffa1664ef7b8ccac898a0a0de82b87bc9b"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"f4cbb2570f9ae1cdef22250990d0b3f54d8ed77a","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    instance_info.pop(\u0027ilo_boot_iso\u0027, None)"},{"line_number":108,"context_line":"    task.node.instance_info \u003d instance_info"},{"line_number":109,"context_line":"    # Now recreate the boot iso and populate the same in node.instance_info"},{"line_number":110,"context_line":"    root_uuid \u003d task.node.driver_internal_info.get(\u0027root_uuid_or_disk_id\u0027)"},{"line_number":111,"context_line":"    boot_iso \u003d _get_boot_iso(task, root_uuid)"},{"line_number":112,"context_line":"    instance_info[\u0027ilo_boot_iso\u0027] \u003d boot_iso"},{"line_number":113,"context_line":"    task.node.instance_info \u003d instance_info"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_1b6911f9","line":110,"updated":"2015-09-01 09:09:23.000000000","message":"Should there be some warning/info if root_uuid is None?","commit_id":"8b5a7cffa1664ef7b8ccac898a0a0de82b87bc9b"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"69d50505950873bd0602342cdc434294b662a55f","unresolved":false,"context_lines":[{"line_number":107,"context_line":"    instance_info.pop(\u0027ilo_boot_iso\u0027, None)"},{"line_number":108,"context_line":"    task.node.instance_info \u003d instance_info"},{"line_number":109,"context_line":"    # Now recreate the boot iso and populate the same in node.instance_info"},{"line_number":110,"context_line":"    root_uuid \u003d task.node.driver_internal_info.get(\u0027root_uuid_or_disk_id\u0027)"},{"line_number":111,"context_line":"    boot_iso \u003d _get_boot_iso(task, root_uuid)"},{"line_number":112,"context_line":"    instance_info[\u0027ilo_boot_iso\u0027] \u003d boot_iso"},{"line_number":113,"context_line":"    task.node.instance_info \u003d instance_info"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_e4459a6e","line":110,"in_reply_to":"da20952f_1b6911f9","updated":"2015-09-01 09:59:55.000000000","message":"hmmm i think that makes sense. will add :)","commit_id":"8b5a7cffa1664ef7b8ccac898a0a0de82b87bc9b"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"f4cbb2570f9ae1cdef22250990d0b3f54d8ed77a","unresolved":false,"context_lines":[{"line_number":215,"context_line":"                               kernel_href, ramdisk_href,"},{"line_number":216,"context_line":"                               deploy_iso_uuid, root_uuid,"},{"line_number":217,"context_line":"                               kernel_params, boot_mode)"},{"line_number":218,"context_line":"        task.node.driver_internal_info[\u0027ilo_boot_iso_created\u0027] \u003d True"},{"line_number":219,"context_line":"        task.node.save()"},{"line_number":220,"context_line":"        if CONF.ilo.use_web_server_for_images:"},{"line_number":221,"context_line":"            boot_iso_url \u003d ("}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_bbb4a581","line":218,"updated":"2015-09-01 09:09:23.000000000","message":"Should also do the usual thing here with\n\n driver_internal_info \u003d task.node.driver_internal_info\n ...\n task.node.driver_internal_info \u003d driver_internal_info","commit_id":"8b5a7cffa1664ef7b8ccac898a0a0de82b87bc9b"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"69d50505950873bd0602342cdc434294b662a55f","unresolved":false,"context_lines":[{"line_number":215,"context_line":"                               kernel_href, ramdisk_href,"},{"line_number":216,"context_line":"                               deploy_iso_uuid, root_uuid,"},{"line_number":217,"context_line":"                               kernel_params, boot_mode)"},{"line_number":218,"context_line":"        task.node.driver_internal_info[\u0027ilo_boot_iso_created\u0027] \u003d True"},{"line_number":219,"context_line":"        task.node.save()"},{"line_number":220,"context_line":"        if CONF.ilo.use_web_server_for_images:"},{"line_number":221,"context_line":"            boot_iso_url \u003d ("}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_a45c824b","line":218,"in_reply_to":"da20952f_bbb4a581","updated":"2015-09-01 09:59:55.000000000","message":"ok","commit_id":"8b5a7cffa1664ef7b8ccac898a0a0de82b87bc9b"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"853cbea73167b70ef031c91e1af17c2f54b9c6f4","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    \"\"\"Validates the boot iso."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    Validates if boot iso is a glance uuid, or a swift hosted boot iso"},{"line_number":78,"context_line":"    or a valid href link."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    :param boot_iso: boot iso as required by the iscsi_ilo driver"},{"line_number":81,"context_line":"                     for successful boot."}],"source_content_type":"text/x-python","patch_set":14,"id":"da20952f_4a301656","line":78,"updated":"2015-09-07 15:46:06.000000000","message":"This docstring looks confusing wrt implementation of this function. Can we just mention functionality of this function.","commit_id":"da5eecd7208135b33cd38495729f6025b7630fb4"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"22bd4c5f61469186a706ea744eb851f3b4cb3702","unresolved":false,"context_lines":[{"line_number":75,"context_line":"    \"\"\"Validates the boot iso."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    Validates if boot iso is a glance uuid, or a swift hosted boot iso"},{"line_number":78,"context_line":"    or a valid href link."},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    :param boot_iso: boot iso as required by the iscsi_ilo driver"},{"line_number":81,"context_line":"                     for successful boot."}],"source_content_type":"text/x-python","patch_set":14,"id":"da20952f_708b84c3","line":78,"in_reply_to":"da20952f_4a301656","updated":"2015-09-08 03:46:13.000000000","message":"Ok","commit_id":"da5eecd7208135b33cd38495729f6025b7630fb4"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"853cbea73167b70ef031c91e1af17c2f54b9c6f4","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    \"\"\""},{"line_number":105,"context_line":"    # First clean up the ilo_boot_iso from node.instance_info."},{"line_number":106,"context_line":"    instance_info \u003d task.node.instance_info"},{"line_number":107,"context_line":"    instance_info.pop(\u0027ilo_boot_iso\u0027, None)"},{"line_number":108,"context_line":"    task.node.instance_info \u003d instance_info"},{"line_number":109,"context_line":"    # Now recreate the boot iso and populate the same in node.instance_info"},{"line_number":110,"context_line":"    root_uuid \u003d task.node.driver_internal_info.get(\u0027root_uuid_or_disk_id\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da20952f_0a277e63","line":107,"updated":"2015-09-07 15:46:06.000000000","message":"It is better to move this statement to \u0027if\u0027 block below where \u0027ilo_boot_iso\u0027 is being overwritten as node is being saved only if \u0027ilo_boot_iso\u0027 is created.","commit_id":"da5eecd7208135b33cd38495729f6025b7630fb4"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"22bd4c5f61469186a706ea744eb851f3b4cb3702","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    \"\"\""},{"line_number":105,"context_line":"    # First clean up the ilo_boot_iso from node.instance_info."},{"line_number":106,"context_line":"    instance_info \u003d task.node.instance_info"},{"line_number":107,"context_line":"    instance_info.pop(\u0027ilo_boot_iso\u0027, None)"},{"line_number":108,"context_line":"    task.node.instance_info \u003d instance_info"},{"line_number":109,"context_line":"    # Now recreate the boot iso and populate the same in node.instance_info"},{"line_number":110,"context_line":"    root_uuid \u003d task.node.driver_internal_info.get(\u0027root_uuid_or_disk_id\u0027)"}],"source_content_type":"text/x-python","patch_set":14,"id":"da20952f_908658b7","line":107,"in_reply_to":"da20952f_0a277e63","updated":"2015-09-08 03:46:13.000000000","message":"ok","commit_id":"da5eecd7208135b33cd38495729f6025b7630fb4"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"853cbea73167b70ef031c91e1af17c2f54b9c6f4","unresolved":false,"context_lines":[{"line_number":582,"context_line":"        if not status:"},{"line_number":583,"context_line":"            boot_iso \u003d _recreate_and_populate_ilo_boot_iso(task)"},{"line_number":584,"context_line":"            if not boot_iso:"},{"line_number":585,"context_line":"                LOG.warning(_LW(\"Boot iso for the node %(node)s \""},{"line_number":586,"context_line":"                                \"could not be created successfully. \""},{"line_number":587,"context_line":"                                \"The system may not start up successfully \""},{"line_number":588,"context_line":"                                \"on reboot. \"), {\u0027node\u0027: task.node.uuid})"}],"source_content_type":"text/x-python","patch_set":14,"id":"da20952f_2aa362b3","line":585,"updated":"2015-09-07 15:46:06.000000000","message":"Two warnings of similar meaning are generated in this path. first one is generated by _recreate_and_populate_ilo_boot_iso(). Both are similar. Can it  be made into one warning?","commit_id":"da5eecd7208135b33cd38495729f6025b7630fb4"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"22bd4c5f61469186a706ea744eb851f3b4cb3702","unresolved":false,"context_lines":[{"line_number":582,"context_line":"        if not status:"},{"line_number":583,"context_line":"            boot_iso \u003d _recreate_and_populate_ilo_boot_iso(task)"},{"line_number":584,"context_line":"            if not boot_iso:"},{"line_number":585,"context_line":"                LOG.warning(_LW(\"Boot iso for the node %(node)s \""},{"line_number":586,"context_line":"                                \"could not be created successfully. \""},{"line_number":587,"context_line":"                                \"The system may not start up successfully \""},{"line_number":588,"context_line":"                                \"on reboot. \"), {\u0027node\u0027: task.node.uuid})"}],"source_content_type":"text/x-python","patch_set":14,"id":"da20952f_f096b4ee","line":585,"in_reply_to":"da20952f_2aa362b3","updated":"2015-09-08 03:46:13.000000000","message":"Ok thanks","commit_id":"da5eecd7208135b33cd38495729f6025b7630fb4"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"8fbd56a232f1e0b1f60f813c01c8e0cd58ca25d1","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        task.node.instance_info \u003d instance_info"},{"line_number":117,"context_line":"        task.node.save()"},{"line_number":118,"context_line":"    else:"},{"line_number":119,"context_line":"        LOG.warning(_LW(\"There is not enough information to recreate \""},{"line_number":120,"context_line":"                        \"boot iso. The system may not come up with \""},{"line_number":121,"context_line":"                        \"current boot_iso %(boot_iso)s at \""},{"line_number":122,"context_line":"                        \"node.instance_info[\u0027ilo_boot_iso\u0027].\"),"}],"source_content_type":"text/x-python","patch_set":16,"id":"da20952f_fd75edf9","line":119,"updated":"2015-09-09 10:35:59.000000000","message":"This shouldn\u0027t be the case, but can we log what is missing\n\n  The UUID for the root partition can\u0027t be found. So boot ISO couldn\u0027t\n  be created.  The node %(node)s may not come up after a reboot.","commit_id":"f1122f1c767f4d433614a329baa2cd048c48d0c8"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"63381255327832318497a4fdcb597fb1d7ba148c","unresolved":false,"context_lines":[{"line_number":116,"context_line":"        task.node.instance_info \u003d instance_info"},{"line_number":117,"context_line":"        task.node.save()"},{"line_number":118,"context_line":"    else:"},{"line_number":119,"context_line":"        LOG.warning(_LW(\"There is not enough information to recreate \""},{"line_number":120,"context_line":"                        \"boot iso. The system may not come up with \""},{"line_number":121,"context_line":"                        \"current boot_iso %(boot_iso)s at \""},{"line_number":122,"context_line":"                        \"node.instance_info[\u0027ilo_boot_iso\u0027].\"),"}],"source_content_type":"text/x-python","patch_set":16,"id":"da20952f_801f7c5a","line":119,"in_reply_to":"da20952f_fd75edf9","updated":"2015-09-10 08:23:52.000000000","message":"Yeah this shouldnt be reachable...but still adding a log message to know if it reaches this place.","commit_id":"f1122f1c767f4d433614a329baa2cd048c48d0c8"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"8fbd56a232f1e0b1f60f813c01c8e0cd58ca25d1","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                               deploy_iso_uuid, root_uuid,"},{"line_number":225,"context_line":"                               kernel_params, boot_mode)"},{"line_number":226,"context_line":"        driver_internal_info \u003d task.node.driver_internal_info"},{"line_number":227,"context_line":"        driver_internal_info[\u0027ilo_boot_iso_created\u0027] \u003d True"},{"line_number":228,"context_line":"        task.node.driver_internal_info \u003d driver_internal_info"},{"line_number":229,"context_line":"        task.node.save()"},{"line_number":230,"context_line":"        if CONF.ilo.use_web_server_for_images:"}],"source_content_type":"text/x-python","patch_set":16,"id":"da20952f_fd472dba","line":227,"updated":"2015-09-09 10:35:59.000000000","message":"Shouldn\u0027t we delete it at the time of tear down ?","commit_id":"f1122f1c767f4d433614a329baa2cd048c48d0c8"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"067f0d38a38827b77738530a7dae6ad65f584bce","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                               deploy_iso_uuid, root_uuid,"},{"line_number":225,"context_line":"                               kernel_params, boot_mode)"},{"line_number":226,"context_line":"        driver_internal_info \u003d task.node.driver_internal_info"},{"line_number":227,"context_line":"        driver_internal_info[\u0027ilo_boot_iso_created\u0027] \u003d True"},{"line_number":228,"context_line":"        task.node.driver_internal_info \u003d driver_internal_info"},{"line_number":229,"context_line":"        task.node.save()"},{"line_number":230,"context_line":"        if CONF.ilo.use_web_server_for_images:"}],"source_content_type":"text/x-python","patch_set":16,"id":"da20952f_e0c99826","line":227,"in_reply_to":"da20952f_07c62716","updated":"2015-09-10 08:25:13.000000000","message":"no. only instance_info is cleared at the time of tear_down. driver_internal_info is cleared only when driver is changed.","commit_id":"f1122f1c767f4d433614a329baa2cd048c48d0c8"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"63381255327832318497a4fdcb597fb1d7ba148c","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                               deploy_iso_uuid, root_uuid,"},{"line_number":225,"context_line":"                               kernel_params, boot_mode)"},{"line_number":226,"context_line":"        driver_internal_info \u003d task.node.driver_internal_info"},{"line_number":227,"context_line":"        driver_internal_info[\u0027ilo_boot_iso_created\u0027] \u003d True"},{"line_number":228,"context_line":"        task.node.driver_internal_info \u003d driver_internal_info"},{"line_number":229,"context_line":"        task.node.save()"},{"line_number":230,"context_line":"        if CONF.ilo.use_web_server_for_images:"}],"source_content_type":"text/x-python","patch_set":16,"id":"da20952f_07c62716","line":227,"in_reply_to":"da20952f_fd472dba","updated":"2015-09-10 08:23:52.000000000","message":"hmmm yes a good point. In tear down will it not delete driver_internal_info contents by itself? It should ideally because that was for that particular instance of the node.","commit_id":"f1122f1c767f4d433614a329baa2cd048c48d0c8"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"8fbd56a232f1e0b1f60f813c01c8e0cd58ca25d1","unresolved":false,"context_lines":[{"line_number":580,"context_line":"        boot_iso \u003d task.node.instance_info.get(\u0027ilo_boot_iso\u0027)"},{"line_number":581,"context_line":"        driver_internal_info \u003d task.node.driver_internal_info"},{"line_number":582,"context_line":"        ilo_boot_iso_created \u003d driver_internal_info.get(\u0027ilo_boot_iso_created\u0027)"},{"line_number":583,"context_line":"        status \u003d _validate_boot_iso(boot_iso, ilo_boot_iso_created)"},{"line_number":584,"context_line":"        if not status:"},{"line_number":585,"context_line":"            _recreate_and_populate_ilo_boot_iso(task)"},{"line_number":586,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"da20952f_fdef2de7","line":583,"updated":"2015-09-09 10:35:59.000000000","message":"I am still not sure about why we do validate boot iso and then create only if it\u0027s not reachable.  Since all conductor run web server, and the boot image should always be present with the conductor who is managing the node, why do we skip creating boot image if image is reachable on the other conductor ? What if the operator had plans to retire the other conductor and never bring it up again.  So in that case, the http server might go off quickly.  In my opinion, it should just be\n\n  ilo_boot_iso_created \u003d driver_internal_info.get(\u0027ilo_boot_iso_created\u0027)\n  if ilo_boot_iso_created and CONF.ilo.use_web_server_for_images is True:\n    _recreate_and_populate_ilo_boot_iso(task)","commit_id":"f1122f1c767f4d433614a329baa2cd048c48d0c8"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"63381255327832318497a4fdcb597fb1d7ba148c","unresolved":false,"context_lines":[{"line_number":580,"context_line":"        boot_iso \u003d task.node.instance_info.get(\u0027ilo_boot_iso\u0027)"},{"line_number":581,"context_line":"        driver_internal_info \u003d task.node.driver_internal_info"},{"line_number":582,"context_line":"        ilo_boot_iso_created \u003d driver_internal_info.get(\u0027ilo_boot_iso_created\u0027)"},{"line_number":583,"context_line":"        status \u003d _validate_boot_iso(boot_iso, ilo_boot_iso_created)"},{"line_number":584,"context_line":"        if not status:"},{"line_number":585,"context_line":"            _recreate_and_populate_ilo_boot_iso(task)"},{"line_number":586,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"da20952f_201b10cc","line":583,"in_reply_to":"da20952f_fdef2de7","updated":"2015-09-10 08:23:52.000000000","message":"ok.","commit_id":"f1122f1c767f4d433614a329baa2cd048c48d0c8"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"e2f0ac778c9ef664981000a9551a3cbe66f7dd64","unresolved":false,"context_lines":[{"line_number":205,"context_line":"        driver_internal_info \u003d task.node.driver_internal_info"},{"line_number":206,"context_line":"        driver_internal_info[\u0027ilo_boot_iso_created\u0027] \u003d True"},{"line_number":207,"context_line":"        task.node.driver_internal_info \u003d driver_internal_info"},{"line_number":208,"context_line":"        task.node.save()"},{"line_number":209,"context_line":"        if CONF.ilo.use_web_server_for_images:"},{"line_number":210,"context_line":"            boot_iso_url \u003d ("},{"line_number":211,"context_line":"                ilo_common.copy_image_to_web_server(boot_iso_tmp_file,"}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_c94cb89f","line":208,"updated":"2015-09-10 11:57:22.000000000","message":"These new lines should be moved after copy_image_to_web_server(), because copy can fails.","commit_id":"2143cd850a7d621ee612799472a049fbe2919f1c"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"9eb3d17068034e002655bd649eb5365f575473cf","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    root_uuid \u003d task.node.driver_internal_info.get(\u0027root_uuid_or_disk_id\u0027)"},{"line_number":85,"context_line":"    if root_uuid:"},{"line_number":86,"context_line":"        # First clean up the ilo_boot_iso from node.instance_info."},{"line_number":87,"context_line":"        instance_info.pop(\u0027ilo_boot_iso\u0027, None)"},{"line_number":88,"context_line":"        task.node.instance_info \u003d instance_info"},{"line_number":89,"context_line":"        # Now recreate the boot iso and populate the same in"},{"line_number":90,"context_line":"        # node.instance_info"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba15a1d1_f66415e6","line":87,"updated":"2015-09-15 10:52:20.000000000","message":"Why do we pop here first ? If it was to remove the ilo_boot_iso if there is an error in  _get_boot_iso(), then we should have saved it.","commit_id":"653161a824fb9efbbe5a2df32eee69988677f1e5"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"24b8a6bec9510496955bd1710db27a438b7a3e4d","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    root_uuid \u003d task.node.driver_internal_info.get(\u0027root_uuid_or_disk_id\u0027)"},{"line_number":85,"context_line":"    if root_uuid:"},{"line_number":86,"context_line":"        # First clean up the ilo_boot_iso from node.instance_info."},{"line_number":87,"context_line":"        instance_info.pop(\u0027ilo_boot_iso\u0027, None)"},{"line_number":88,"context_line":"        task.node.instance_info \u003d instance_info"},{"line_number":89,"context_line":"        # Now recreate the boot iso and populate the same in"},{"line_number":90,"context_line":"        # node.instance_info"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba15a1d1_91426a0f","line":87,"in_reply_to":"ba15a1d1_f66415e6","updated":"2015-09-15 19:10:12.000000000","message":"Moved it after _get_boot_iso().","commit_id":"653161a824fb9efbbe5a2df32eee69988677f1e5"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"a8690b414f0cd57390fb132fa550d4752a2b1594","unresolved":false,"context_lines":[{"line_number":84,"context_line":"    root_uuid \u003d task.node.driver_internal_info.get(\u0027root_uuid_or_disk_id\u0027)"},{"line_number":85,"context_line":"    if root_uuid:"},{"line_number":86,"context_line":"        # Recreate the boot iso"},{"line_number":87,"context_line":"        boot_iso \u003d _get_boot_iso(task, root_uuid)"},{"line_number":88,"context_line":"        # Clean up the ilo_boot_iso from node.instance_info."},{"line_number":89,"context_line":"        instance_info.pop(\u0027ilo_boot_iso\u0027, None)"},{"line_number":90,"context_line":"        task.node.instance_info \u003d instance_info"}],"source_content_type":"text/x-python","patch_set":21,"id":"ba15a1d1_63ba5e70","line":87,"updated":"2015-09-16 05:54:03.000000000","message":"I just checked the conductor code and looks like if this raises, there is no check.  It is a spawned thread for take over, so it\u0027s fine.  If this raises, then  conductor affinity is not set.\n\nhttps://github.com/openstack/ironic/blob/master/ironic/conductor/manager.py#L1256-L1260\n\nSo better to add a try except block around _get_boot_iso and then log a warning similar to what we do when there is no root uuid.","commit_id":"900794fadb29426c1e247bf7b82d4240e0f0a9d6"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"a8690b414f0cd57390fb132fa550d4752a2b1594","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        # Recreate the boot iso"},{"line_number":87,"context_line":"        boot_iso \u003d _get_boot_iso(task, root_uuid)"},{"line_number":88,"context_line":"        # Clean up the ilo_boot_iso from node.instance_info."},{"line_number":89,"context_line":"        instance_info.pop(\u0027ilo_boot_iso\u0027, None)"},{"line_number":90,"context_line":"        task.node.instance_info \u003d instance_info"},{"line_number":91,"context_line":"        # populate the new ilo_boot_iso in node.instance_info."},{"line_number":92,"context_line":"        instance_info[\u0027ilo_boot_iso\u0027] \u003d boot_iso"}],"source_content_type":"text/x-python","patch_set":21,"id":"ba15a1d1_e3450eb3","line":89,"updated":"2015-09-16 05:54:03.000000000","message":"Not required to pop. It will be overwritten anyway. \n\n  boot_iso \u003d _get_boot_iso(task, root_uuid)\n  instance_info[\u0027ilo_boot_iso\u0027] \u003d boot_iso\n  task.node.instance_info \u003d instance_info\n  task.node.save()","commit_id":"900794fadb29426c1e247bf7b82d4240e0f0a9d6"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"a8690b414f0cd57390fb132fa550d4752a2b1594","unresolved":false,"context_lines":[{"line_number":207,"context_line":"                ilo_common.copy_image_to_web_server(boot_iso_tmp_file,"},{"line_number":208,"context_line":"                                                    boot_iso_object_name))"},{"line_number":209,"context_line":"            driver_internal_info \u003d task.node.driver_internal_info"},{"line_number":210,"context_line":"            driver_internal_info[\u0027ilo_boot_iso_created\u0027] \u003d True"},{"line_number":211,"context_line":"            task.node.driver_internal_info \u003d driver_internal_info"},{"line_number":212,"context_line":"            task.node.save()"},{"line_number":213,"context_line":"            LOG.debug(\"Created boot_iso %(boot_iso)s for node %(node)s\","}],"source_content_type":"text/x-python","patch_set":21,"id":"ba15a1d1_c3780af5","line":210,"updated":"2015-09-16 05:54:03.000000000","message":"If we are storing this only when we use a web server, can we rename this to something like\n\n  driver_internal_info[\u0027ilo_boot_iso_in_web_server\u0027] \u003d True\n\nMay be we need a better name, open to suggestion from others.","commit_id":"900794fadb29426c1e247bf7b82d4240e0f0a9d6"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0983fc30f61fe1580c9283469171f87a160ac989","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            LOG.warning(_LW(\"Boot iso recreation failed during take over. \""},{"line_number":92,"context_line":"                            \"Reason: %(reason)s. The system may not come up \""},{"line_number":93,"context_line":"                            \"with current boot_iso %(boot_iso)s at \""},{"line_number":94,"context_line":"                            \"node.instance_info[\u0027ilo_boot_iso\u0027].\"),"},{"line_number":95,"context_line":"                        {\u0027boot_iso\u0027: instance_info[\u0027ilo_boot_iso\u0027],"},{"line_number":96,"context_line":"                         \u0027reason\u0027: e})"},{"line_number":97,"context_line":"        # populate the new ilo_boot_iso in node.instance_info."}],"source_content_type":"text/x-python","patch_set":22,"id":"ba15a1d1_ab536538","line":94,"updated":"2015-09-16 10:52:27.000000000","message":"nit: IMHO, \"at node.instance_info[\u0027ilo_boot_iso\u0027]\" is not required.","commit_id":"0160e2954ede7a5464e1a92ccef9fb058f5e35cf"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"1ada4be35a80d92acd1a76df90a11b032ffc6ba7","unresolved":false,"context_lines":[{"line_number":88,"context_line":"            # Recreate the boot iso"},{"line_number":89,"context_line":"            boot_iso \u003d _get_boot_iso(task, root_uuid)"},{"line_number":90,"context_line":"        except Exception as e:"},{"line_number":91,"context_line":"            LOG.warning(_LW(\"Boot iso recreation failed during take over. \""},{"line_number":92,"context_line":"                            \"Reason: %(reason)s. The system may not come up \""},{"line_number":93,"context_line":"                            \"with current boot_iso %(boot_iso)s. \"),"},{"line_number":94,"context_line":"                        {\u0027boot_iso\u0027: instance_info[\u0027ilo_boot_iso\u0027],"}],"source_content_type":"text/x-python","patch_set":23,"id":"ba15a1d1_1f4ec496","line":91,"updated":"2015-09-19 03:47:28.000000000","message":"Need to log node uuid in the log warning.","commit_id":"2496b2255dab6cfd5141c537f8f1d25ee88269eb"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"1ada4be35a80d92acd1a76df90a11b032ffc6ba7","unresolved":false,"context_lines":[{"line_number":99,"context_line":"            task.node.instance_info \u003d instance_info"},{"line_number":100,"context_line":"            task.node.save()"},{"line_number":101,"context_line":"        else:"},{"line_number":102,"context_line":"            LOG.warning(_LW(\"Boot iso recreation failed during take over. \""},{"line_number":103,"context_line":"                            \"The system may not come up \""},{"line_number":104,"context_line":"                            \"with current boot_iso %(boot_iso)s. \"),"},{"line_number":105,"context_line":"                        {\u0027boot_iso\u0027: instance_info[\u0027ilo_boot_iso\u0027]})"}],"source_content_type":"text/x-python","patch_set":23,"id":"ba15a1d1_bf423867","line":102,"updated":"2015-09-19 03:47:28.000000000","message":"Need to log node uuid in the log warning.","commit_id":"2496b2255dab6cfd5141c537f8f1d25ee88269eb"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"1ada4be35a80d92acd1a76df90a11b032ffc6ba7","unresolved":false,"context_lines":[{"line_number":104,"context_line":"                            \"with current boot_iso %(boot_iso)s. \"),"},{"line_number":105,"context_line":"                        {\u0027boot_iso\u0027: instance_info[\u0027ilo_boot_iso\u0027]})"},{"line_number":106,"context_line":"    else:"},{"line_number":107,"context_line":"        LOG.warning(_LW(\"There is not enough information to recreate \""},{"line_number":108,"context_line":"                        \"boot iso. The UUID for the root partition \""},{"line_number":109,"context_line":"                        \"could not be found. The boot-iso cannot be \""},{"line_number":110,"context_line":"                        \"created without root_uuid. The system may \""}],"source_content_type":"text/x-python","patch_set":23,"id":"ba15a1d1_df47ec75","line":107,"updated":"2015-09-19 03:47:28.000000000","message":"Need to log node uuid in the log warning.","commit_id":"2496b2255dab6cfd5141c537f8f1d25ee88269eb"}],"ironic/tests/drivers/ilo/test_deploy.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"f4cbb2570f9ae1cdef22250990d0b3f54d8ed77a","unresolved":false,"context_lines":[{"line_number":1213,"context_line":""},{"line_number":1214,"context_line":"            self.assertEqual(\u0027boot-iso\u0027,"},{"line_number":1215,"context_line":"                             task.node.instance_info[\u0027ilo_boot_iso\u0027])"},{"line_number":1216,"context_line":"            info \u003d {}"},{"line_number":1217,"context_line":"            info \u003d task.node.driver_internal_info[\u0027root_uuid_or_disk_id\u0027]"},{"line_number":1218,"context_line":"            self.assertEqual(\u0027root-uuid\u0027, info)"},{"line_number":1219,"context_line":"            notify_ramdisk_to_proceed_mock.assert_called_once_with(\u0027123456\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_5b00e901","line":1216,"updated":"2015-09-01 09:09:23.000000000","message":"this line is not needed.","commit_id":"8b5a7cffa1664ef7b8ccac898a0a0de82b87bc9b"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"69d50505950873bd0602342cdc434294b662a55f","unresolved":false,"context_lines":[{"line_number":1213,"context_line":""},{"line_number":1214,"context_line":"            self.assertEqual(\u0027boot-iso\u0027,"},{"line_number":1215,"context_line":"                             task.node.instance_info[\u0027ilo_boot_iso\u0027])"},{"line_number":1216,"context_line":"            info \u003d {}"},{"line_number":1217,"context_line":"            info \u003d task.node.driver_internal_info[\u0027root_uuid_or_disk_id\u0027]"},{"line_number":1218,"context_line":"            self.assertEqual(\u0027root-uuid\u0027, info)"},{"line_number":1219,"context_line":"            notify_ramdisk_to_proceed_mock.assert_called_once_with(\u0027123456\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"da20952f_e43cbae2","line":1216,"in_reply_to":"da20952f_5b00e901","updated":"2015-09-01 09:59:55.000000000","message":"ok","commit_id":"8b5a7cffa1664ef7b8ccac898a0a0de82b87bc9b"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"8fbd56a232f1e0b1f60f813c01c8e0cd58ca25d1","unresolved":false,"context_lines":[{"line_number":595,"context_line":""},{"line_number":596,"context_line":"    @mock.patch.object(ilo_deploy, \u0027_get_boot_iso\u0027, spec_set\u003dTrue,"},{"line_number":597,"context_line":"                       autospec\u003dTrue)"},{"line_number":598,"context_line":"    def test__recreate_and_populate_ilo_boot_iso(self, get_boot_iso_mock):"},{"line_number":599,"context_line":"        driver_internal_info \u003d {}"},{"line_number":600,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":601,"context_line":"                                  shared\u003dFalse) as task:"}],"source_content_type":"text/x-python","patch_set":16,"id":"da20952f_fde3ada2","line":598,"updated":"2015-09-09 10:35:59.000000000","message":"Can we add a test case for the other path when root uuid is missing.","commit_id":"f1122f1c767f4d433614a329baa2cd048c48d0c8"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"63381255327832318497a4fdcb597fb1d7ba148c","unresolved":false,"context_lines":[{"line_number":595,"context_line":""},{"line_number":596,"context_line":"    @mock.patch.object(ilo_deploy, \u0027_get_boot_iso\u0027, spec_set\u003dTrue,"},{"line_number":597,"context_line":"                       autospec\u003dTrue)"},{"line_number":598,"context_line":"    def test__recreate_and_populate_ilo_boot_iso(self, get_boot_iso_mock):"},{"line_number":599,"context_line":"        driver_internal_info \u003d {}"},{"line_number":600,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":601,"context_line":"                                  shared\u003dFalse) as task:"}],"source_content_type":"text/x-python","patch_set":16,"id":"da20952f_20d6b0f1","line":598,"in_reply_to":"da20952f_fde3ada2","updated":"2015-09-10 08:23:52.000000000","message":"ok","commit_id":"f1122f1c767f4d433614a329baa2cd048c48d0c8"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"8fbd56a232f1e0b1f60f813c01c8e0cd58ca25d1","unresolved":false,"context_lines":[{"line_number":878,"context_line":"                       spec_set\u003dTrue, autospec\u003dTrue)"},{"line_number":879,"context_line":"    @mock.patch.object(ilo_deploy, \u0027_get_boot_iso\u0027,"},{"line_number":880,"context_line":"                       spec_set\u003dTrue, autospec\u003dTrue)"},{"line_number":881,"context_line":"    def test_take_over_recreate_iso_returns_none(self, get_boot_iso_mock,"},{"line_number":882,"context_line":"                                                 mock_validate_iso):"},{"line_number":883,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":884,"context_line":"                                  shared\u003dFalse) as task:"}],"source_content_type":"text/x-python","patch_set":16,"id":"da20952f_fd916df2","line":881,"updated":"2015-09-09 10:35:59.000000000","message":"This test case has the exact same path as above ? So is it required ?","commit_id":"f1122f1c767f4d433614a329baa2cd048c48d0c8"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"63381255327832318497a4fdcb597fb1d7ba148c","unresolved":false,"context_lines":[{"line_number":878,"context_line":"                       spec_set\u003dTrue, autospec\u003dTrue)"},{"line_number":879,"context_line":"    @mock.patch.object(ilo_deploy, \u0027_get_boot_iso\u0027,"},{"line_number":880,"context_line":"                       spec_set\u003dTrue, autospec\u003dTrue)"},{"line_number":881,"context_line":"    def test_take_over_recreate_iso_returns_none(self, get_boot_iso_mock,"},{"line_number":882,"context_line":"                                                 mock_validate_iso):"},{"line_number":883,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":884,"context_line":"                                  shared\u003dFalse) as task:"}],"source_content_type":"text/x-python","patch_set":16,"id":"da20952f_a0e960b9","line":881,"in_reply_to":"da20952f_fd916df2","updated":"2015-09-10 08:23:52.000000000","message":"ok after changing the code from previous patch , i didnt realize both are now doing same thing. will update/remove as required.","commit_id":"f1122f1c767f4d433614a329baa2cd048c48d0c8"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"8fbd56a232f1e0b1f60f813c01c8e0cd58ca25d1","unresolved":false,"context_lines":[{"line_number":1238,"context_line":""},{"line_number":1239,"context_line":"            self.assertEqual(\u0027boot-iso\u0027,"},{"line_number":1240,"context_line":"                             task.node.instance_info[\u0027ilo_boot_iso\u0027])"},{"line_number":1241,"context_line":"            info \u003d {}"},{"line_number":1242,"context_line":"            info \u003d task.node.driver_internal_info[\u0027root_uuid_or_disk_id\u0027]"},{"line_number":1243,"context_line":"            self.assertEqual(\u0027root-uuid\u0027, info)"},{"line_number":1244,"context_line":"            notify_ramdisk_to_proceed_mock.assert_called_once_with(\u0027123456\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"da20952f_bd61b513","line":1241,"updated":"2015-09-09 10:35:59.000000000","message":"self.assertEqual(\n    \u0027root-uuid\u0027, task.node.driver_internal_info[\u0027root_uuid_or_disk_id\u0027])","commit_id":"f1122f1c767f4d433614a329baa2cd048c48d0c8"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"63381255327832318497a4fdcb597fb1d7ba148c","unresolved":false,"context_lines":[{"line_number":1238,"context_line":""},{"line_number":1239,"context_line":"            self.assertEqual(\u0027boot-iso\u0027,"},{"line_number":1240,"context_line":"                             task.node.instance_info[\u0027ilo_boot_iso\u0027])"},{"line_number":1241,"context_line":"            info \u003d {}"},{"line_number":1242,"context_line":"            info \u003d task.node.driver_internal_info[\u0027root_uuid_or_disk_id\u0027]"},{"line_number":1243,"context_line":"            self.assertEqual(\u0027root-uuid\u0027, info)"},{"line_number":1244,"context_line":"            notify_ramdisk_to_proceed_mock.assert_called_once_with(\u0027123456\u0027)"}],"source_content_type":"text/x-python","patch_set":16,"id":"da20952f_c0b574d0","line":1241,"in_reply_to":"da20952f_bd61b513","updated":"2015-09-10 08:23:52.000000000","message":"ok","commit_id":"f1122f1c767f4d433614a329baa2cd048c48d0c8"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"e2f0ac778c9ef664981000a9551a3cbe66f7dd64","unresolved":false,"context_lines":[{"line_number":1177,"context_line":""},{"line_number":1178,"context_line":"            self.assertEqual(\u0027boot-iso\u0027,"},{"line_number":1179,"context_line":"                             task.node.instance_info[\u0027ilo_boot_iso\u0027])"},{"line_number":1180,"context_line":"            info \u003d {}"},{"line_number":1181,"context_line":"            info \u003d task.node.driver_internal_info[\u0027root_uuid_or_disk_id\u0027]"},{"line_number":1182,"context_line":"            self.assertEqual(\u0027root-uuid\u0027, info)"},{"line_number":1183,"context_line":"            notify_ramdisk_to_proceed_mock.assert_called_once_with(\u0027123456\u0027)"}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_290c5441","line":1180,"updated":"2015-09-10 11:57:22.000000000","message":"You redefine info on the next line.","commit_id":"2143cd850a7d621ee612799472a049fbe2919f1c"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"9eb3d17068034e002655bd649eb5365f575473cf","unresolved":false,"context_lines":[{"line_number":549,"context_line":""},{"line_number":550,"context_line":"    @mock.patch.object(ilo_deploy, \u0027_get_boot_iso\u0027, spec_set\u003dTrue,"},{"line_number":551,"context_line":"                       autospec\u003dTrue)"},{"line_number":552,"context_line":"    def test__recreate_and_populate_ilo_boot_iso(self, get_boot_iso_mock):"},{"line_number":553,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":554,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":555,"context_line":"            driver_internal_info \u003d {}"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba15a1d1_1642e910","line":552,"updated":"2015-09-15 10:52:20.000000000","message":"Can we add a test case for the other path when root uuid is missing. - From patch set 16","commit_id":"653161a824fb9efbbe5a2df32eee69988677f1e5"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"24b8a6bec9510496955bd1710db27a438b7a3e4d","unresolved":false,"context_lines":[{"line_number":549,"context_line":""},{"line_number":550,"context_line":"    @mock.patch.object(ilo_deploy, \u0027_get_boot_iso\u0027, spec_set\u003dTrue,"},{"line_number":551,"context_line":"                       autospec\u003dTrue)"},{"line_number":552,"context_line":"    def test__recreate_and_populate_ilo_boot_iso(self, get_boot_iso_mock):"},{"line_number":553,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":554,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":555,"context_line":"            driver_internal_info \u003d {}"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba15a1d1_9127ca63","line":552,"in_reply_to":"ba15a1d1_1642e910","updated":"2015-09-15 19:10:12.000000000","message":"done.","commit_id":"653161a824fb9efbbe5a2df32eee69988677f1e5"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"9eb3d17068034e002655bd649eb5365f575473cf","unresolved":false,"context_lines":[{"line_number":749,"context_line":"            update_secure_boot_mode_mock.assert_called_once_with(task, False)"},{"line_number":750,"context_line":"            self.assertEqual(states.DELETED, returned_state)"},{"line_number":751,"context_line":"            driver_internal_info \u003d task.node.driver_internal_info"},{"line_number":752,"context_line":"            iso_created \u003d driver_internal_info.get(\u0027ilo_boot_iso_created\u0027)"},{"line_number":753,"context_line":"            root_uuid \u003d driver_internal_info.get(\u0027root_uuid_or_disk_id\u0027)"},{"line_number":754,"context_line":"            self.assertIsNone(iso_created)"},{"line_number":755,"context_line":"            self.assertIsNone(root_uuid)"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba15a1d1_d6fa31bd","line":752,"updated":"2015-09-15 10:52:20.000000000","message":"self.assertNotIn(\u0027ilo_boot_iso_created\u0027, driver_internal_info)\n  self.assertNotIn(\u0027root_uuid_or_disk_id\u0027, driver_internal_info)","commit_id":"653161a824fb9efbbe5a2df32eee69988677f1e5"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"24b8a6bec9510496955bd1710db27a438b7a3e4d","unresolved":false,"context_lines":[{"line_number":749,"context_line":"            update_secure_boot_mode_mock.assert_called_once_with(task, False)"},{"line_number":750,"context_line":"            self.assertEqual(states.DELETED, returned_state)"},{"line_number":751,"context_line":"            driver_internal_info \u003d task.node.driver_internal_info"},{"line_number":752,"context_line":"            iso_created \u003d driver_internal_info.get(\u0027ilo_boot_iso_created\u0027)"},{"line_number":753,"context_line":"            root_uuid \u003d driver_internal_info.get(\u0027root_uuid_or_disk_id\u0027)"},{"line_number":754,"context_line":"            self.assertIsNone(iso_created)"},{"line_number":755,"context_line":"            self.assertIsNone(root_uuid)"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba15a1d1_b080cc47","line":752,"in_reply_to":"ba15a1d1_d6fa31bd","updated":"2015-09-15 19:10:12.000000000","message":"Thanks. done.","commit_id":"653161a824fb9efbbe5a2df32eee69988677f1e5"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"9eb3d17068034e002655bd649eb5365f575473cf","unresolved":false,"context_lines":[{"line_number":820,"context_line":""},{"line_number":821,"context_line":"    @mock.patch.object(ilo_deploy, \u0027_get_boot_iso\u0027,"},{"line_number":822,"context_line":"                       spec_set\u003dTrue, autospec\u003dTrue)"},{"line_number":823,"context_line":"    def test_take_over_recreate_iso_success(self, get_boot_iso_mock):"},{"line_number":824,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":825,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":826,"context_line":"            CONF.ilo.use_web_server_for_images \u003d True"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba15a1d1_d6e8f1e4","line":823,"updated":"2015-09-15 10:52:20.000000000","message":"Ideally, we can just mock _recreate_and_populate_ilo_boot_iso. But if you think it\u0027s too much mocking, then we can just validate if new iso is in task.node.instance_info[\u0027ilo_boot_iso\u0027] which is the most important thing.","commit_id":"653161a824fb9efbbe5a2df32eee69988677f1e5"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"24b8a6bec9510496955bd1710db27a438b7a3e4d","unresolved":false,"context_lines":[{"line_number":820,"context_line":""},{"line_number":821,"context_line":"    @mock.patch.object(ilo_deploy, \u0027_get_boot_iso\u0027,"},{"line_number":822,"context_line":"                       spec_set\u003dTrue, autospec\u003dTrue)"},{"line_number":823,"context_line":"    def test_take_over_recreate_iso_success(self, get_boot_iso_mock):"},{"line_number":824,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":825,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":826,"context_line":"            CONF.ilo.use_web_server_for_images \u003d True"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba15a1d1_3ec9f478","line":823,"in_reply_to":"ba15a1d1_d6e8f1e4","updated":"2015-09-15 19:10:12.000000000","message":"thanks for pointing this assert. I havent mocked the recreate_and_populate_ilo_boot_iso because the function doesnt return anything now. I will add the given assert.","commit_id":"653161a824fb9efbbe5a2df32eee69988677f1e5"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"a8690b414f0cd57390fb132fa550d4752a2b1594","unresolved":false,"context_lines":[{"line_number":569,"context_line":"                       autospec\u003dTrue)"},{"line_number":570,"context_line":"    @mock.patch.object(ilo_deploy, \u0027_get_boot_iso\u0027, spec_set\u003dTrue,"},{"line_number":571,"context_line":"                       autospec\u003dTrue)"},{"line_number":572,"context_line":"    def test__recreate_and_populate_ilo_boot_iso_warns(self,"},{"line_number":573,"context_line":"                                                       get_boot_iso_mock,"},{"line_number":574,"context_line":"                                                       log_mock):"},{"line_number":575,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"}],"source_content_type":"text/x-python","patch_set":21,"id":"ba15a1d1_23ad4631","line":572,"updated":"2015-09-16 05:54:03.000000000","message":"s/test__recreate_and_populate_ilo_boot_iso_warns/test__recreate_and_populate_ilo_boot_iso_no_root_uuid","commit_id":"900794fadb29426c1e247bf7b82d4240e0f0a9d6"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"a8690b414f0cd57390fb132fa550d4752a2b1594","unresolved":false,"context_lines":[{"line_number":854,"context_line":""},{"line_number":855,"context_line":"    @mock.patch.object(ilo_deploy, \u0027_get_boot_iso\u0027,"},{"line_number":856,"context_line":"                       spec_set\u003dTrue, autospec\u003dTrue)"},{"line_number":857,"context_line":"    def test_take_over_recreate_iso_fails(self, get_boot_iso_mock):"},{"line_number":858,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":859,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":860,"context_line":"            boot_iso \u003d \u0027http://xyz.com/ilo-iso\u0027"}],"source_content_type":"text/x-python","patch_set":21,"id":"ba15a1d1_c3824a94","line":857,"updated":"2015-09-16 05:54:03.000000000","message":"s/test_take_over_recreate_iso_fails/test_take_over_recreate_iso_not_web_server","commit_id":"900794fadb29426c1e247bf7b82d4240e0f0a9d6"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0983fc30f61fe1580c9283469171f87a160ac989","unresolved":false,"context_lines":[{"line_number":581,"context_line":"            self.assertEqual(task.node.instance_info[\u0027ilo_boot_iso\u0027],"},{"line_number":582,"context_line":"                             \u0027boot-uuid-old-iso\u0027)"},{"line_number":583,"context_line":"            self.assertFalse(get_boot_iso_mock.called)"},{"line_number":584,"context_line":"            self.assertIsNone(r_uuid)"},{"line_number":585,"context_line":"            self.assertTrue(log_mock.called)"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"    @mock.patch.object(ilo_deploy.LOG, \u0027warning\u0027,"}],"source_content_type":"text/x-python","patch_set":22,"id":"ba15a1d1_ab012508","line":584,"updated":"2015-09-16 10:52:27.000000000","message":"This is not required.","commit_id":"0160e2954ede7a5464e1a92ccef9fb058f5e35cf"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0983fc30f61fe1580c9283469171f87a160ac989","unresolved":false,"context_lines":[{"line_number":895,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":896,"context_line":"            CONF.ilo.use_web_server_for_images \u003d True"},{"line_number":897,"context_line":"            driver_internal_info[\u0027boot_iso_created_in_web_server\u0027] \u003d True"},{"line_number":898,"context_line":"            driver_internal_info[\u0027root_uuid_or_disk_id\u0027] \u003d \u0027uuid\u0027"},{"line_number":899,"context_line":"            task.node.driver_internal_info \u003d driver_internal_info"},{"line_number":900,"context_line":"            task.node.save()"},{"line_number":901,"context_line":"            task.driver.deploy.take_over(task)"}],"source_content_type":"text/x-python","patch_set":22,"id":"ba15a1d1_8e49cf62","line":898,"updated":"2015-09-16 10:52:27.000000000","message":"This is not required.","commit_id":"0160e2954ede7a5464e1a92ccef9fb058f5e35cf"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0983fc30f61fe1580c9283469171f87a160ac989","unresolved":false,"context_lines":[{"line_number":909,"context_line":"        with task_manager.acquire(self.context, self.node.uuid,"},{"line_number":910,"context_line":"                                  shared\u003dFalse) as task:"},{"line_number":911,"context_line":"            CONF.ilo.use_web_server_for_images \u003d True"},{"line_number":912,"context_line":"            driver_internal_info[\u0027root_uuid_or_disk_id\u0027] \u003d \u0027uuid\u0027"},{"line_number":913,"context_line":"            task.node.driver_internal_info \u003d driver_internal_info"},{"line_number":914,"context_line":"            task.node.save()"},{"line_number":915,"context_line":"            task.driver.deploy.take_over(task)"}],"source_content_type":"text/x-python","patch_set":22,"id":"ba15a1d1_2e5a032b","line":912,"updated":"2015-09-16 10:52:27.000000000","message":"This is not required.","commit_id":"0160e2954ede7a5464e1a92ccef9fb058f5e35cf"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"0983fc30f61fe1580c9283469171f87a160ac989","unresolved":false,"context_lines":[{"line_number":914,"context_line":"            task.node.save()"},{"line_number":915,"context_line":"            task.driver.deploy.take_over(task)"},{"line_number":916,"context_line":"            self.assertFalse(mock_recreate.called)"},{"line_number":917,"context_line":""},{"line_number":918,"context_line":""},{"line_number":919,"context_line":"class IloVirtualMediaAgentDeployTestCase(db_base.DbTestCase):"},{"line_number":920,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"ba15a1d1_eedc0b75","line":917,"updated":"2015-09-16 10:52:27.000000000","message":"There is one more test case in which CONF.ilo.use_web_server_for_images is False by default. May be we can assert that _recreate_and_populate_ilo_boot_iso is not called.","commit_id":"0160e2954ede7a5464e1a92ccef9fb058f5e35cf"},{"author":{"_account_id":11297,"name":"Nisha Agarwal","email":"agarwalnisha1980@gmail.com","username":"Nisha"},"change_message_id":"769d16f3c285dc8e17ab86b66aa1e45a9fc93ae7","unresolved":false,"context_lines":[{"line_number":914,"context_line":"            task.node.save()"},{"line_number":915,"context_line":"            task.driver.deploy.take_over(task)"},{"line_number":916,"context_line":"            self.assertFalse(mock_recreate.called)"},{"line_number":917,"context_line":""},{"line_number":918,"context_line":""},{"line_number":919,"context_line":"class IloVirtualMediaAgentDeployTestCase(db_base.DbTestCase):"},{"line_number":920,"context_line":""}],"source_content_type":"text/x-python","patch_set":22,"id":"ba15a1d1_34aec581","line":917,"in_reply_to":"ba15a1d1_eedc0b75","updated":"2015-09-16 16:17:11.000000000","message":"I didnt add because it follows the same path as \"test_take_over_recreate_iso_config_set_and_dif_not_set\".\nI will add.","commit_id":"0160e2954ede7a5464e1a92ccef9fb058f5e35cf"}]}
