)]}'
{"ironic/drivers/modules/agent.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"1ad8966ab2f41286925385e129461426188c37b7","unresolved":false,"context_lines":[{"line_number":495,"context_line":"        # Tell the client to download and write the image with the given args"},{"line_number":496,"context_line":"        res \u003d self._client.prepare_image(node, image_info)"},{"line_number":497,"context_line":"        LOG.debug(\u0027prepare_image got response %(res)s for node %(node)s\u0027,"},{"line_number":498,"context_line":"                  {\u0027res\u0027: res, \u0027node\u0027: node.uuid})"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"        task.process_event(\u0027wait\u0027)"},{"line_number":501,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_f3a8d479","side":"PARENT","line":498,"updated":"2015-08-14 09:05:07.000000000","message":"Why this log was deleted? Looks like a valid debug message since prepare_image returns a message to Ironic [1]\n\n[1] https://github.com/openstack/ironic-python-agent/blob/bde6ed557034bc2eac633ff84f2e9515a5ef14d6/ironic_python_agent/extensions/standby.py#L245-L248","commit_id":"b210e41c48cfc88a309ac6671402578bc3d23abb"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0a52e78725008f3fa33c58fe8f11a1ffb218612c","unresolved":false,"context_lines":[{"line_number":495,"context_line":"        # Tell the client to download and write the image with the given args"},{"line_number":496,"context_line":"        res \u003d self._client.prepare_image(node, image_info)"},{"line_number":497,"context_line":"        LOG.debug(\u0027prepare_image got response %(res)s for node %(node)s\u0027,"},{"line_number":498,"context_line":"                  {\u0027res\u0027: res, \u0027node\u0027: node.uuid})"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"        task.process_event(\u0027wait\u0027)"},{"line_number":501,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_2e0fb32f","side":"PARENT","line":498,"in_reply_to":"1a4dcd0f_f3a8d479","updated":"2015-08-14 09:07:50.000000000","message":"because it duplicates what I introduced in agent client.","commit_id":"b210e41c48cfc88a309ac6671402578bc3d23abb"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"13265fe605364f7825a8730714cde76849b34377","unresolved":false,"context_lines":[{"line_number":478,"context_line":"        task.process_event(\u0027resume\u0027)"},{"line_number":479,"context_line":"        node \u003d task.node"},{"line_number":480,"context_line":"        image_source \u003d node.instance_info.get(\u0027image_source\u0027)"},{"line_number":481,"context_line":"        LOG.debug(\u0027Continuing deploy for node %(node)s: writing image %(img)s\u0027,"},{"line_number":482,"context_line":"                  {\u0027node\u0027: node.uuid, \u0027img\u0027: image_source})"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":"        image_info \u003d {"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_d56239d8","line":481,"updated":"2015-08-18 12:43:25.000000000","message":"nit: \u0027Continuing deploy for node %(node)s with image %(img)s\u0027, because deploy can fails before writing.","commit_id":"395caaa8fc44b2aaaee7dd4abdf93de85fe10e58"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"858284b857346dde0717b5f5a98521bf46ca00c2","unresolved":false,"context_lines":[{"line_number":522,"context_line":"            return"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"        LOG.info(_LI(\u0027Image successfully written to node %s, \u0027"},{"line_number":525,"context_line":"                     \u0027rebooting to disk\u0027), node.uuid)"},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"        manager_utils.node_set_boot_device(task, \u0027disk\u0027, persistent\u003dTrue)"},{"line_number":528,"context_line":"        self.reboot_and_finish_deploy(task)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_c8d7fbbd","line":525,"updated":"2015-08-18 14:22:58.000000000","message":"I know this log line was here before but it had been debug and now it is info. Shouldn\u0027t this be the last line in the method then? And or leave this as debug, and add a LOG.info at the end, that the reboot was successful?","commit_id":"395caaa8fc44b2aaaee7dd4abdf93de85fe10e58"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"1d20646f152091baf08e21bb2dd179ede95f39ca","unresolved":false,"context_lines":[{"line_number":522,"context_line":"            return"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"        LOG.info(_LI(\u0027Image successfully written to node %s, \u0027"},{"line_number":525,"context_line":"                     \u0027rebooting to disk\u0027), node.uuid)"},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"        manager_utils.node_set_boot_device(task, \u0027disk\u0027, persistent\u003dTrue)"},{"line_number":528,"context_line":"        self.reboot_and_finish_deploy(task)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_52db464f","line":525,"in_reply_to":"fa1b9901_ac9f0db3","updated":"2015-08-19 22:42:17.000000000","message":"I guess there are two things in that msg, 1. something successfully done which I\u0027m OK with. 2. something that is going to start. It is the latter that doesn\u0027t make sense to me in a LOG.info. Do we do that elsewhere?\n\nShouldn\u0027t the \u0027rebooting to disk\u0027 be logged from reboot_and_finish_deploy() then?","commit_id":"395caaa8fc44b2aaaee7dd4abdf93de85fe10e58"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"25c4c60de37465293178bba487d7a13d6a9eac65","unresolved":false,"context_lines":[{"line_number":522,"context_line":"            return"},{"line_number":523,"context_line":""},{"line_number":524,"context_line":"        LOG.info(_LI(\u0027Image successfully written to node %s, \u0027"},{"line_number":525,"context_line":"                     \u0027rebooting to disk\u0027), node.uuid)"},{"line_number":526,"context_line":""},{"line_number":527,"context_line":"        manager_utils.node_set_boot_device(task, \u0027disk\u0027, persistent\u003dTrue)"},{"line_number":528,"context_line":"        self.reboot_and_finish_deploy(task)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_ac9f0db3","line":525,"in_reply_to":"fa1b9901_c8d7fbbd","updated":"2015-08-19 09:56:45.000000000","message":"This is reporting success of imaging, so it\u0027s actually in the end of (async) imaging process. reboot_and_finish_deploy has logging for finishing reboot.","commit_id":"395caaa8fc44b2aaaee7dd4abdf93de85fe10e58"}],"ironic/drivers/modules/agent_base_vendor.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"1ad8966ab2f41286925385e129461426188c37b7","unresolved":false,"context_lines":[{"line_number":560,"context_line":"                node, root_uuid\u003droot_uuid,"},{"line_number":561,"context_line":"                efi_system_part_uuid\u003defi_system_part_uuid)"},{"line_number":562,"context_line":"            if result[\u0027command_status\u0027] \u003d\u003d \u0027FAILED\u0027:"},{"line_number":563,"context_line":"                msg \u003d (_(\"Failed to install a bootloader when \""},{"line_number":564,"context_line":"                         \"deploying node %(node)s. Error: %(error)s\") %"},{"line_number":565,"context_line":"                       {\u0027node\u0027: node.uuid,"},{"line_number":566,"context_line":"                        \u0027error\u0027: result[\u0027command_error\u0027]})"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_f34454b8","line":563,"updated":"2015-08-14 09:05:07.000000000","message":"s/install a bootloader/configure local boot \n\nOr something along those lines so it matches with the INFO message at L578","commit_id":"f66629c24e1c692f6c076457a4cd305f513e3fc3"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0a52e78725008f3fa33c58fe8f11a1ffb218612c","unresolved":false,"context_lines":[{"line_number":560,"context_line":"                node, root_uuid\u003droot_uuid,"},{"line_number":561,"context_line":"                efi_system_part_uuid\u003defi_system_part_uuid)"},{"line_number":562,"context_line":"            if result[\u0027command_status\u0027] \u003d\u003d \u0027FAILED\u0027:"},{"line_number":563,"context_line":"                msg \u003d (_(\"Failed to install a bootloader when \""},{"line_number":564,"context_line":"                         \"deploying node %(node)s. Error: %(error)s\") %"},{"line_number":565,"context_line":"                       {\u0027node\u0027: node.uuid,"},{"line_number":566,"context_line":"                        \u0027error\u0027: result[\u0027command_error\u0027]})"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_8e4b675f","line":563,"in_reply_to":"1a4dcd0f_f34454b8","updated":"2015-08-14 09:07:50.000000000","message":"I tend to disagree, this particular problem is about installing boot loaded, line 578 is about configuring local boot, which might or might not include installing a boot loader","commit_id":"f66629c24e1c692f6c076457a4cd305f513e3fc3"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"87295fd991ceffe0f6a4eef228f7c3b8d62b4c69","unresolved":false,"context_lines":[{"line_number":345,"context_line":""},{"line_number":346,"context_line":"            node \u003d self._find_node_by_macs(context, mac_addresses)"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"        LOG.info(_LI(\u0027Agent was started on a node %s\u0027), node.uuid)"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        return {"},{"line_number":351,"context_line":"            \u0027heartbeat_timeout\u0027: CONF.agent.heartbeat_timeout,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_b8822751","line":348,"updated":"2015-08-18 09:35:56.000000000","message":"s/on a node/on the node/\n\nWhy is this being changed from \u0027Initial lookup for node %s succeeded.\u0027.  That seems quite natural to me too (may be because I am used to seeing it).","commit_id":"395caaa8fc44b2aaaee7dd4abdf93de85fe10e58"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"25c4c60de37465293178bba487d7a13d6a9eac65","unresolved":false,"context_lines":[{"line_number":345,"context_line":""},{"line_number":346,"context_line":"            node \u003d self._find_node_by_macs(context, mac_addresses)"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"        LOG.info(_LI(\u0027Agent was started on a node %s\u0027), node.uuid)"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        return {"},{"line_number":351,"context_line":"            \u0027heartbeat_timeout\u0027: CONF.agent.heartbeat_timeout,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_cc4cc172","line":348,"in_reply_to":"fa1b9901_2afbe0c2","updated":"2015-08-19 09:56:45.000000000","message":"Folks, initial lookup does not make any sense to operators, who are not aware of agent implementation details :/ Should I leave 2 loggings here: one for lookup and one operator-friendly?","commit_id":"395caaa8fc44b2aaaee7dd4abdf93de85fe10e58"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"858284b857346dde0717b5f5a98521bf46ca00c2","unresolved":false,"context_lines":[{"line_number":345,"context_line":""},{"line_number":346,"context_line":"            node \u003d self._find_node_by_macs(context, mac_addresses)"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"        LOG.info(_LI(\u0027Agent was started on a node %s\u0027), node.uuid)"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        return {"},{"line_number":351,"context_line":"            \u0027heartbeat_timeout\u0027: CONF.agent.heartbeat_timeout,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_eb58b9fc","line":348,"in_reply_to":"fa1b9901_b8822751","updated":"2015-08-18 14:22:58.000000000","message":"Maybe add back the original string so it is \u0027Initial lookup succeeded. Agent was started on node %s.\u0027 ?\n\nThe method is lookup() so it might be helpful to have that word in the string.","commit_id":"395caaa8fc44b2aaaee7dd4abdf93de85fe10e58"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"1d20646f152091baf08e21bb2dd179ede95f39ca","unresolved":false,"context_lines":[{"line_number":345,"context_line":""},{"line_number":346,"context_line":"            node \u003d self._find_node_by_macs(context, mac_addresses)"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"        LOG.info(_LI(\u0027Agent was started on a node %s\u0027), node.uuid)"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        return {"},{"line_number":351,"context_line":"            \u0027heartbeat_timeout\u0027: CONF.agent.heartbeat_timeout,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_12294ee6","line":348,"in_reply_to":"fa1b9901_cc4cc172","updated":"2015-08-19 22:42:17.000000000","message":"Hey, I didn\u0027t call the method \u0027lookup\u0027. If you stand back and look at this method, it doesn\u0027t say anything about the agent being started on the node or that it is an \u0027initial\u0027 lookup. All you know is that it was successful in finding a node either via its UUID or a match with MAC addresses.","commit_id":"395caaa8fc44b2aaaee7dd4abdf93de85fe10e58"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"4001c0e396b2d89d40b9d01ab7ae7c5c93df6733","unresolved":false,"context_lines":[{"line_number":345,"context_line":""},{"line_number":346,"context_line":"            node \u003d self._find_node_by_macs(context, mac_addresses)"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"        LOG.info(_LI(\u0027Agent was started on a node %s\u0027), node.uuid)"},{"line_number":349,"context_line":""},{"line_number":350,"context_line":"        return {"},{"line_number":351,"context_line":"            \u0027heartbeat_timeout\u0027: CONF.agent.heartbeat_timeout,"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_2afbe0c2","line":348,"in_reply_to":"fa1b9901_eb58b9fc","updated":"2015-08-19 09:48:09.000000000","message":"++ Yeah the \u0027Initial lookup\u0027 seems more accurate for me too","commit_id":"395caaa8fc44b2aaaee7dd4abdf93de85fe10e58"},{"author":{"_account_id":9315,"name":"ramesh","email":"rameshg87@gmail.com","username":"rameshg87"},"change_message_id":"87295fd991ceffe0f6a4eef228f7c3b8d62b4c69","unresolved":false,"context_lines":[{"line_number":575,"context_line":"                    \u0027error\u0027: e})"},{"line_number":576,"context_line":"            self._log_and_raise_deployment_error(task, msg)"},{"line_number":577,"context_line":""},{"line_number":578,"context_line":"        LOG.info(_LI(\u0027Local boot successfully configured on node %s\u0027),"},{"line_number":579,"context_line":"                 node.uuid)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_58498b30","line":578,"updated":"2015-08-18 09:35:56.000000000","message":"If we did s/on node/for node/ above at line 552, this should be \"configured for node\" I guess.  (I don\u0027t know which one is correct :))","commit_id":"395caaa8fc44b2aaaee7dd4abdf93de85fe10e58"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"858284b857346dde0717b5f5a98521bf46ca00c2","unresolved":false,"context_lines":[{"line_number":575,"context_line":"                    \u0027error\u0027: e})"},{"line_number":576,"context_line":"            self._log_and_raise_deployment_error(task, msg)"},{"line_number":577,"context_line":""},{"line_number":578,"context_line":"        LOG.info(_LI(\u0027Local boot successfully configured on node %s\u0027),"},{"line_number":579,"context_line":"                 node.uuid)"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_6bdca912","line":578,"in_reply_to":"fa1b9901_58498b30","updated":"2015-08-18 14:22:58.000000000","message":"haha. I suspect both are correct and \u0027on\u0027 might be more accurate. Ie, it is configuring local boot for the node -- by configuring (on) the node itself to do a local boot.","commit_id":"395caaa8fc44b2aaaee7dd4abdf93de85fe10e58"}],"ironic/drivers/modules/agent_client.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"1ad8966ab2f41286925385e129461426188c37b7","unresolved":false,"context_lines":[{"line_number":89,"context_line":"            raise exception.IronicException(msg)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        LOG.debug(\u0027Agent command %(method)s for node %(node)s returned \u0027"},{"line_number":92,"context_line":"                  \u0027JSON response %(resp)s\u0027,"},{"line_number":93,"context_line":"                  {\u0027node\u0027: node.uuid, \u0027method\u0027: method, \u0027resp\u0027: result})"},{"line_number":94,"context_line":"        return result"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_33d71cc1","line":92,"updated":"2015-08-14 09:05:07.000000000","message":"Can we log the HTTP code and the response in one message? I\u0027m thinking about if there are many commands being logged at the same time it will be a bit messy to have a separated message for the HTTP code and response message. \n\n(Both code an message are part of the response so I think it makes sense to get those logged together)","commit_id":"f66629c24e1c692f6c076457a4cd305f513e3fc3"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"0a52e78725008f3fa33c58fe8f11a1ffb218612c","unresolved":false,"context_lines":[{"line_number":89,"context_line":"            raise exception.IronicException(msg)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"        LOG.debug(\u0027Agent command %(method)s for node %(node)s returned \u0027"},{"line_number":92,"context_line":"                  \u0027JSON response %(resp)s\u0027,"},{"line_number":93,"context_line":"                  {\u0027node\u0027: node.uuid, \u0027method\u0027: method, \u0027resp\u0027: result})"},{"line_number":94,"context_line":"        return result"},{"line_number":95,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_6e713ba8","line":92,"in_reply_to":"1a4dcd0f_33d71cc1","updated":"2015-08-14 09:07:50.000000000","message":"Done","commit_id":"f66629c24e1c692f6c076457a4cd305f513e3fc3"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"4001c0e396b2d89d40b9d01ab7ae7c5c93df6733","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    def get_commands_status(self, node):"},{"line_number":97,"context_line":"        url \u003d self._get_command_url(node)"},{"line_number":98,"context_line":"        LOG.debug(\u0027Fetching agent command statuses for node %s\u0027, node.uuid)"},{"line_number":99,"context_line":"        resp \u003d self.session.get(url)"},{"line_number":100,"context_line":"        result \u003d resp.json()[\u0027commands\u0027]"},{"line_number":101,"context_line":"        status \u003d \u0027, \u0027.join(\u0027%(cmd)s: result \"%(res)s\" error \"%(err)s\"\u0027 %"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_cabee4d3","line":98,"updated":"2015-08-19 09:48:09.000000000","message":"s/command/commands","commit_id":"395caaa8fc44b2aaaee7dd4abdf93de85fe10e58"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"858284b857346dde0717b5f5a98521bf46ca00c2","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        LOG.debug(\u0027Fetching agent command statuses for node %s\u0027, node.uuid)"},{"line_number":99,"context_line":"        resp \u003d self.session.get(url)"},{"line_number":100,"context_line":"        result \u003d resp.json()[\u0027commands\u0027]"},{"line_number":101,"context_line":"        status \u003d \u0027, \u0027.join(\u0027%(cmd)s: result \"%(res)s\" error \"%(err)s\"\u0027 %"},{"line_number":102,"context_line":"                           {\u0027cmd\u0027: r.get(\u0027command_name\u0027),"},{"line_number":103,"context_line":"                            \u0027res\u0027: r.get(\u0027command_result\u0027),"},{"line_number":104,"context_line":"                            \u0027err\u0027: r.get(\u0027command_error\u0027)}"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_cb85b5ad","line":101,"updated":"2015-08-18 14:22:58.000000000","message":"this is going to be a messy string. How about using \u0027; \u0027 as the separator for the different commands, and s/\"%(res)s\"/\"%(res)s\", / to separate the result from the error.","commit_id":"395caaa8fc44b2aaaee7dd4abdf93de85fe10e58"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"1d20646f152091baf08e21bb2dd179ede95f39ca","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        LOG.debug(\u0027Fetching agent command statuses for node %s\u0027, node.uuid)"},{"line_number":99,"context_line":"        resp \u003d self.session.get(url)"},{"line_number":100,"context_line":"        result \u003d resp.json()[\u0027commands\u0027]"},{"line_number":101,"context_line":"        status \u003d \u0027, \u0027.join(\u0027%(cmd)s: result \"%(res)s\" error \"%(err)s\"\u0027 %"},{"line_number":102,"context_line":"                           {\u0027cmd\u0027: r.get(\u0027command_name\u0027),"},{"line_number":103,"context_line":"                            \u0027res\u0027: r.get(\u0027command_result\u0027),"},{"line_number":104,"context_line":"                            \u0027err\u0027: r.get(\u0027command_error\u0027)}"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_d27516fa","line":101,"in_reply_to":"fa1b9901_4ac73445","updated":"2015-08-19 22:42:17.000000000","message":"I\u0027d prefer no newline. it is a debug; not sure how frequently/much it will log.","commit_id":"395caaa8fc44b2aaaee7dd4abdf93de85fe10e58"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"4001c0e396b2d89d40b9d01ab7ae7c5c93df6733","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        LOG.debug(\u0027Fetching agent command statuses for node %s\u0027, node.uuid)"},{"line_number":99,"context_line":"        resp \u003d self.session.get(url)"},{"line_number":100,"context_line":"        result \u003d resp.json()[\u0027commands\u0027]"},{"line_number":101,"context_line":"        status \u003d \u0027, \u0027.join(\u0027%(cmd)s: result \"%(res)s\" error \"%(err)s\"\u0027 %"},{"line_number":102,"context_line":"                           {\u0027cmd\u0027: r.get(\u0027command_name\u0027),"},{"line_number":103,"context_line":"                            \u0027res\u0027: r.get(\u0027command_result\u0027),"},{"line_number":104,"context_line":"                            \u0027err\u0027: r.get(\u0027command_error\u0027)}"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_4ac73445","line":101,"in_reply_to":"fa1b9901_cb85b5ad","updated":"2015-08-19 09:48:09.000000000","message":"Hmm yeah... I wonder even if we need a new line in the join? i.e\n\n \u0027\\n\u0027.join(\u0027%(cmd)s: result \"%(res)s\", error \"%(err)s\"\u0027 % ...)","commit_id":"395caaa8fc44b2aaaee7dd4abdf93de85fe10e58"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"858284b857346dde0717b5f5a98521bf46ca00c2","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                            \u0027res\u0027: r.get(\u0027command_result\u0027),"},{"line_number":104,"context_line":"                            \u0027err\u0027: r.get(\u0027command_error\u0027)}"},{"line_number":105,"context_line":"                           for r in result)"},{"line_number":106,"context_line":"        LOG.debug(\u0027Agent command status for node %(node)s: %(status)s\u0027,"},{"line_number":107,"context_line":"                  {\u0027node\u0027: node.uuid, \u0027status\u0027: status})"},{"line_number":108,"context_line":"        return result"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_2b4b1189","line":106,"updated":"2015-08-18 14:22:58.000000000","message":"maybe s/command/commands/\n\nor \u0027Status of agent commands for node...\u0027.","commit_id":"395caaa8fc44b2aaaee7dd4abdf93de85fe10e58"}]}
