)]}'
{"ironic_python_agent/hardware.py":[{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"ddff7bb05b61e3d724a8b1b329f9bdd2a19794c8","unresolved":false,"context_lines":[{"line_number":397,"context_line":"                LOG.debug(\u0027Still waiting for the root device to appear, \u0027"},{"line_number":398,"context_line":"                          \u0027attempt %d of %d\u0027, attempt + 1,"},{"line_number":399,"context_line":"                          CONF.disk_wait_attempts)"},{"line_number":400,"context_line":"                time.sleep(CONF.disk_wait_delay)"},{"line_number":401,"context_line":"            else:"},{"line_number":402,"context_line":"                break"},{"line_number":403,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_28ed95ef","line":400,"updated":"2017-10-09 23:54:21.000000000","message":"I\u0027m not a super fan of this logic. I realize it is the same as before.\n\nBut lets say it is one attempt. It tries, fails, sleeps, and then logs the warning. Why do we sleep if we aren\u0027t going to try again?\n\nAlso not sure it is good that if the operator does CONF.disk_wait_attempts\u003d0 then it will never check for a disk as the for-loop is a no-op.","commit_id":"ef0c6f701e9e9a166d2a040625bab94fa3fa354c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"28b2f86dca5d1e469b34602a5375b3f3e16e200d","unresolved":false,"context_lines":[{"line_number":397,"context_line":"                LOG.debug(\u0027Still waiting for the root device to appear, \u0027"},{"line_number":398,"context_line":"                          \u0027attempt %d of %d\u0027, attempt + 1,"},{"line_number":399,"context_line":"                          CONF.disk_wait_attempts)"},{"line_number":400,"context_line":"                time.sleep(CONF.disk_wait_delay)"},{"line_number":401,"context_line":"            else:"},{"line_number":402,"context_line":"                break"},{"line_number":403,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f4e5783_addab347","line":400,"in_reply_to":"7f515b1d_28ed95ef","updated":"2017-10-16 13:38:19.000000000","message":"Done","commit_id":"ef0c6f701e9e9a166d2a040625bab94fa3fa354c"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"ddff7bb05b61e3d724a8b1b329f9bdd2a19794c8","unresolved":false,"context_lines":[{"line_number":710,"context_line":""},{"line_number":711,"context_line":"        block_devices \u003d self.list_block_devices()"},{"line_number":712,"context_line":"        if not root_device_hints:"},{"line_number":713,"context_line":"            result \u003d utils.guess_root_disk(block_devices).name"},{"line_number":714,"context_line":"        else:"},{"line_number":715,"context_line":"            serialized_devs \u003d [dev.serialize() for dev in block_devices]"},{"line_number":716,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_e8a1bdaa","line":713,"range":{"start_line":713,"start_character":12,"end_line":713,"end_character":19},"updated":"2017-10-09 23:54:21.000000000","message":"nit: Seems like \u0027name\u0027, \u0027device\u0027, or \u0027dev\u0027 would be a better variable name","commit_id":"ef0c6f701e9e9a166d2a040625bab94fa3fa354c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"28b2f86dca5d1e469b34602a5375b3f3e16e200d","unresolved":false,"context_lines":[{"line_number":710,"context_line":""},{"line_number":711,"context_line":"        block_devices \u003d self.list_block_devices()"},{"line_number":712,"context_line":"        if not root_device_hints:"},{"line_number":713,"context_line":"            result \u003d utils.guess_root_disk(block_devices).name"},{"line_number":714,"context_line":"        else:"},{"line_number":715,"context_line":"            serialized_devs \u003d [dev.serialize() for dev in block_devices]"},{"line_number":716,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f4e5783_8ddff738","line":713,"range":{"start_line":713,"start_character":12,"end_line":713,"end_character":19},"in_reply_to":"7f515b1d_e8a1bdaa","updated":"2017-10-16 13:38:19.000000000","message":"Done","commit_id":"ef0c6f701e9e9a166d2a040625bab94fa3fa354c"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"ddff7bb05b61e3d724a8b1b329f9bdd2a19794c8","unresolved":false,"context_lines":[{"line_number":731,"context_line":"                    \"No suitable device was found for \""},{"line_number":732,"context_line":"                    \"deployment using these hints %s\" % root_device_hints)"},{"line_number":733,"context_line":""},{"line_number":734,"context_line":"            result \u003d device[\u0027name\u0027]"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"        LOG.info(\u0027Picked root device %(dev)s for node %(node)s based on \u0027"},{"line_number":737,"context_line":"                 \u0027root device hints %(hints)s\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_c8a601c2","line":734,"range":{"start_line":734,"start_character":12,"end_line":734,"end_character":18},"updated":"2017-10-09 23:54:21.000000000","message":"nit: Seems like \u0027name\u0027, \u0027device\u0027, or \u0027dev\u0027 would be a better variable name","commit_id":"ef0c6f701e9e9a166d2a040625bab94fa3fa354c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"28b2f86dca5d1e469b34602a5375b3f3e16e200d","unresolved":false,"context_lines":[{"line_number":731,"context_line":"                    \"No suitable device was found for \""},{"line_number":732,"context_line":"                    \"deployment using these hints %s\" % root_device_hints)"},{"line_number":733,"context_line":""},{"line_number":734,"context_line":"            result \u003d device[\u0027name\u0027]"},{"line_number":735,"context_line":""},{"line_number":736,"context_line":"        LOG.info(\u0027Picked root device %(dev)s for node %(node)s based on \u0027"},{"line_number":737,"context_line":"                 \u0027root device hints %(hints)s\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f4e5783_2deec3ec","line":734,"range":{"start_line":734,"start_character":12,"end_line":734,"end_character":18},"in_reply_to":"7f515b1d_c8a601c2","updated":"2017-10-16 13:38:19.000000000","message":"Done","commit_id":"ef0c6f701e9e9a166d2a040625bab94fa3fa354c"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"ddff7bb05b61e3d724a8b1b329f9bdd2a19794c8","unresolved":false,"context_lines":[{"line_number":1169,"context_line":"    access of a node information in the hardware extensions."},{"line_number":1170,"context_line":""},{"line_number":1171,"context_line":"    If the new node does not match the previously cached one, wait for the"},{"line_number":1172,"context_line":"    expectd root device to appear."},{"line_number":1173,"context_line":""},{"line_number":1174,"context_line":"    :param node: Ironic node object"},{"line_number":1175,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"7f515b1d_08fc19b3","line":1172,"range":{"start_line":1172,"start_character":4,"end_line":1172,"end_character":11},"updated":"2017-10-09 23:54:21.000000000","message":"expected","commit_id":"ef0c6f701e9e9a166d2a040625bab94fa3fa354c"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"28b2f86dca5d1e469b34602a5375b3f3e16e200d","unresolved":false,"context_lines":[{"line_number":1169,"context_line":"    access of a node information in the hardware extensions."},{"line_number":1170,"context_line":""},{"line_number":1171,"context_line":"    If the new node does not match the previously cached one, wait for the"},{"line_number":1172,"context_line":"    expectd root device to appear."},{"line_number":1173,"context_line":""},{"line_number":1174,"context_line":"    :param node: Ironic node object"},{"line_number":1175,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"5f4e5783_edbd4bd8","line":1172,"range":{"start_line":1172,"start_character":4,"end_line":1172,"end_character":11},"in_reply_to":"7f515b1d_08fc19b3","updated":"2017-10-16 13:38:19.000000000","message":"Done","commit_id":"ef0c6f701e9e9a166d2a040625bab94fa3fa354c"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"c5d66edb2eadd2a5c142eb8156fb68884381a03b","unresolved":false,"context_lines":[{"line_number":389,"context_line":"        not deployment have any chances to succeed."},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"        \"\"\""},{"line_number":392,"context_line":"        if not CONF.disk_wait_attempts:"},{"line_number":393,"context_line":"            return"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"        for attempt in range(CONF.disk_wait_attempts):"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f4e5783_13bd6501","line":392,"updated":"2017-10-16 17:19:11.000000000","message":"Should we log an error about this? Wouldn\u0027t this be an error condition?","commit_id":"3189c16a5e95ade468fa8bc37302eb9979f5a8c9"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"165944512e531ea881bcb40743577c10b519a276","unresolved":false,"context_lines":[{"line_number":389,"context_line":"        not deployment have any chances to succeed."},{"line_number":390,"context_line":""},{"line_number":391,"context_line":"        \"\"\""},{"line_number":392,"context_line":"        if not CONF.disk_wait_attempts:"},{"line_number":393,"context_line":"            return"},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"        for attempt in range(CONF.disk_wait_attempts):"}],"source_content_type":"text/x-python","patch_set":6,"id":"5f4e5783_534cfd40","line":392,"in_reply_to":"5f4e5783_13bd6501","updated":"2017-10-16 17:20:51.000000000","message":"No, it\u0027s a feature (now documented in config.py). Operators may want to disable wait, if it misbehaves for any reason (or if they deal with diskless nodes)","commit_id":"3189c16a5e95ade468fa8bc37302eb9979f5a8c9"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ee69452df70f440a78d2094f51383958de76ead8","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                break"},{"line_number":407,"context_line":"        else:"},{"line_number":408,"context_line":"            LOG.warning(\u0027The root device was not detected in %d seconds\u0027,"},{"line_number":409,"context_line":"                        CONF.disk_wait_delay * CONF.disk_wait_attempts)"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"    def list_hardware_info(self):"},{"line_number":412,"context_line":"        \"\"\"Return full hardware inventory as a serializable dict."}],"source_content_type":"text/x-python","patch_set":6,"id":"5f4e5783_77c46540","line":409,"updated":"2017-10-17 17:19:26.000000000","message":"I think it is s/CONF.disk_wait_attempts/CONF.disk_wait_attempts-1/. Do we care?","commit_id":"3189c16a5e95ade468fa8bc37302eb9979f5a8c9"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"c3bf25097a8ec57008044c75fdb422ece9fc4d2e","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                break"},{"line_number":407,"context_line":"        else:"},{"line_number":408,"context_line":"            LOG.warning(\u0027The root device was not detected in %d seconds\u0027,"},{"line_number":409,"context_line":"                        CONF.disk_wait_delay * CONF.disk_wait_attempts)"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"    def list_hardware_info(self):"},{"line_number":412,"context_line":"        \"\"\"Return full hardware inventory as a serializable dict."}],"source_content_type":"text/x-python","patch_set":6,"id":"3f4b6375_82d3abd5","line":409,"in_reply_to":"3f4b6375_7862e918","updated":"2017-10-31 14:20:46.000000000","message":"Doesn\u0027t look like anyone did it, so here is my proposed fix: https://review.openstack.org/#/c/516693/","commit_id":"3189c16a5e95ade468fa8bc37302eb9979f5a8c9"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"4137b2dfcc14fee1bd8645ba5a11090d5df4e456","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                break"},{"line_number":407,"context_line":"        else:"},{"line_number":408,"context_line":"            LOG.warning(\u0027The root device was not detected in %d seconds\u0027,"},{"line_number":409,"context_line":"                        CONF.disk_wait_delay * CONF.disk_wait_attempts)"},{"line_number":410,"context_line":""},{"line_number":411,"context_line":"    def list_hardware_info(self):"},{"line_number":412,"context_line":"        \"\"\"Return full hardware inventory as a serializable dict."}],"source_content_type":"text/x-python","patch_set":6,"id":"3f4b6375_7862e918","line":409,"in_reply_to":"5f4e5783_77c46540","updated":"2017-10-18 08:53:45.000000000","message":"We may want to fix this indeed. This was not actually correct before as well, as the last sleep never counted. I don\u0027t think it makes this patch less valid though.","commit_id":"3189c16a5e95ade468fa8bc37302eb9979f5a8c9"}]}
