)]}'
{"ironic/conductor/manager.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"8046a1b2ab04fcacb4c6a58da7e691d0e2f4ca86","unresolved":false,"context_lines":[{"line_number":655,"context_line":""},{"line_number":656,"context_line":"        * If no clean steps have been started yet, all the clean steps"},{"line_number":657,"context_line":"          must be executed"},{"line_number":658,"context_line":"        * If skip_current_step is False, the remaining clean steps starts"},{"line_number":659,"context_line":"          with the current clean step. Otherwise, the remaining clean steps"},{"line_number":660,"context_line":"          starts with the clean step after the current one."},{"line_number":661,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a68dd71_e3e5e037","line":658,"updated":"2016-01-22 18:10:38.000000000","message":"nit - s/starts/start?","commit_id":"dc5bc3990e6cf73de29e4dfab7d4159d539449db"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ced1386afd4fb4d56c4c2736aa4eac375aadb6d3","unresolved":false,"context_lines":[{"line_number":655,"context_line":""},{"line_number":656,"context_line":"        * If no clean steps have been started yet, all the clean steps"},{"line_number":657,"context_line":"          must be executed"},{"line_number":658,"context_line":"        * If skip_current_step is False, the remaining clean steps starts"},{"line_number":659,"context_line":"          with the current clean step. Otherwise, the remaining clean steps"},{"line_number":660,"context_line":"          starts with the clean step after the current one."},{"line_number":661,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a68dd71_3d1f035d","line":658,"in_reply_to":"9a68dd71_e3e5e037","updated":"2016-01-26 17:55:09.000000000","message":"done","commit_id":"dc5bc3990e6cf73de29e4dfab7d4159d539449db"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"8046a1b2ab04fcacb4c6a58da7e691d0e2f4ca86","unresolved":false,"context_lines":[{"line_number":903,"context_line":"            node.clean_step \u003d {}"},{"line_number":904,"context_line":"            info \u003d node.driver_internal_info"},{"line_number":905,"context_line":"            info[\u0027clean_steps\u0027] \u003d clean_steps"},{"line_number":906,"context_line":"            info[\u0027clean_step_index\u0027] \u003d -1"},{"line_number":907,"context_line":"            node.driver_internal_info \u003d info"},{"line_number":908,"context_line":"            node.save()"},{"line_number":909,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a68dd71_de60afd1","line":906,"updated":"2016-01-22 18:10:38.000000000","message":"This seems to be not necessary, as on L980 it be reinitialized anyway.","commit_id":"dc5bc3990e6cf73de29e4dfab7d4159d539449db"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ced1386afd4fb4d56c4c2736aa4eac375aadb6d3","unresolved":false,"context_lines":[{"line_number":903,"context_line":"            node.clean_step \u003d {}"},{"line_number":904,"context_line":"            info \u003d node.driver_internal_info"},{"line_number":905,"context_line":"            info[\u0027clean_steps\u0027] \u003d clean_steps"},{"line_number":906,"context_line":"            info[\u0027clean_step_index\u0027] \u003d -1"},{"line_number":907,"context_line":"            node.driver_internal_info \u003d info"},{"line_number":908,"context_line":"            node.save()"},{"line_number":909,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a68dd71_d2725649","line":906,"in_reply_to":"9a68dd71_de60afd1","updated":"2016-01-26 17:55:09.000000000","message":"I wanted to keep info[\u0027clean_step_index\u0027] in sync with node.clean_step. I thought that would cause less confusion than setting one but not the other. What do you think? (Clearly, you didn\u0027t see it that way, so I dunno.)","commit_id":"dc5bc3990e6cf73de29e4dfab7d4159d539449db"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"8046a1b2ab04fcacb4c6a58da7e691d0e2f4ca86","unresolved":false,"context_lines":[{"line_number":1026,"context_line":"        # Clear clean_step"},{"line_number":1027,"context_line":"        node.clean_step \u003d None"},{"line_number":1028,"context_line":"        driver_internal_info[\u0027clean_steps\u0027] \u003d None"},{"line_number":1029,"context_line":"        driver_internal_info[\u0027clean_step_index\u0027] \u003d -1"},{"line_number":1030,"context_line":"        node.driver_internal_info \u003d driver_internal_info"},{"line_number":1031,"context_line":"        node.save()"},{"line_number":1032,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a68dd71_9eeb1713","line":1029,"updated":"2016-01-22 18:10:38.000000000","message":"ditto it seems it can be left as is, cleaning will not proceed if index exceeds the array length, and when cleaning is restarted it will be reinitialized by L980.","commit_id":"dc5bc3990e6cf73de29e4dfab7d4159d539449db"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ced1386afd4fb4d56c4c2736aa4eac375aadb6d3","unresolved":false,"context_lines":[{"line_number":1026,"context_line":"        # Clear clean_step"},{"line_number":1027,"context_line":"        node.clean_step \u003d None"},{"line_number":1028,"context_line":"        driver_internal_info[\u0027clean_steps\u0027] \u003d None"},{"line_number":1029,"context_line":"        driver_internal_info[\u0027clean_step_index\u0027] \u003d -1"},{"line_number":1030,"context_line":"        node.driver_internal_info \u003d driver_internal_info"},{"line_number":1031,"context_line":"        node.save()"},{"line_number":1032,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a68dd71_dd5ee711","line":1029,"in_reply_to":"9a68dd71_9eeb1713","updated":"2016-01-26 17:55:09.000000000","message":"Again, I wanted to keep it in sync with node.clean_step. Maybe I should pop it since .clean_step is None. But then it isn\u0027t consistent with info[\u0027clean_steps\u0027]. Sigh.","commit_id":"dc5bc3990e6cf73de29e4dfab7d4159d539449db"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"45c4bd12c25983e22f28da6180765a7630b6c4c6","unresolved":false,"context_lines":[{"line_number":691,"context_line":"                next_steps \u003d node.driver_internal_info[\u0027clean_steps\u0027]"},{"line_number":692,"context_line":"                ind \u003d next_steps.index(node.clean_step)"},{"line_number":693,"context_line":"            except (KeyError, ValueError):"},{"line_number":694,"context_line":"                msg \u003d (_(\u0027Node %(node)s got an invalid last step for \u0027"},{"line_number":695,"context_line":"                         \u0027%(state)s: %(step)s.\u0027) %"},{"line_number":696,"context_line":"                       {\u0027node\u0027: node.uuid, \u0027step\u0027: node.clean_step,"},{"line_number":697,"context_line":"                        \u0027state\u0027: node.provision_state})"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_bce9dc80","line":694,"updated":"2016-02-02 09:14:20.000000000","message":"nit: s/last step/next step/","commit_id":"107c2b3f6633aeb0d94786847f2cd9ff88374e90"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"1dd7252586e67f2d7c9a1b497bf6f5e30e75fa43","unresolved":false,"context_lines":[{"line_number":691,"context_line":"                next_steps \u003d node.driver_internal_info[\u0027clean_steps\u0027]"},{"line_number":692,"context_line":"                ind \u003d next_steps.index(node.clean_step)"},{"line_number":693,"context_line":"            except (KeyError, ValueError):"},{"line_number":694,"context_line":"                msg \u003d (_(\u0027Node %(node)s got an invalid last step for \u0027"},{"line_number":695,"context_line":"                         \u0027%(state)s: %(step)s.\u0027) %"},{"line_number":696,"context_line":"                       {\u0027node\u0027: node.uuid, \u0027step\u0027: node.clean_step,"},{"line_number":697,"context_line":"                        \u0027state\u0027: node.provision_state})"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_69162bf3","line":694,"in_reply_to":"7a5de9d1_bce9dc80","updated":"2016-02-03 01:02:23.000000000","message":"I am not sure that \u0027last\u0027 or \u0027next\u0027 are correct. The problem seems to be the current step? So I\u0027d rather not touch that since it was already there.","commit_id":"107c2b3f6633aeb0d94786847f2cd9ff88374e90"},{"author":{"_account_id":13362,"name":"Tan Lin","email":"lin.tan@intel.com","username":"zero"},"change_message_id":"45c4bd12c25983e22f28da6180765a7630b6c4c6","unresolved":false,"context_lines":[{"line_number":903,"context_line":"            node.clean_step \u003d {}"},{"line_number":904,"context_line":"            info \u003d node.driver_internal_info"},{"line_number":905,"context_line":"            info[\u0027clean_steps\u0027] \u003d clean_steps"},{"line_number":906,"context_line":"            info[\u0027clean_step_index\u0027] \u003d -1"},{"line_number":907,"context_line":"            node.driver_internal_info \u003d info"},{"line_number":908,"context_line":"            node.save()"},{"line_number":909,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_06c77a65","line":906,"updated":"2016-02-02 09:14:20.000000000","message":"why this is -1?　I thought -1 means will not do clean at all. I go through the code and it seems that it will be override in next function, but still think 0 is more meaningful.","commit_id":"107c2b3f6633aeb0d94786847f2cd9ff88374e90"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"c14282d456eb891397083f665badd8ee1fddc98c","unresolved":false,"context_lines":[{"line_number":903,"context_line":"            node.clean_step \u003d {}"},{"line_number":904,"context_line":"            info \u003d node.driver_internal_info"},{"line_number":905,"context_line":"            info[\u0027clean_steps\u0027] \u003d clean_steps"},{"line_number":906,"context_line":"            info[\u0027clean_step_index\u0027] \u003d -1"},{"line_number":907,"context_line":"            node.driver_internal_info \u003d info"},{"line_number":908,"context_line":"            node.save()"},{"line_number":909,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a5de9d1_afeaf9aa","line":906,"in_reply_to":"7a5de9d1_06c77a65","updated":"2016-02-02 10:02:57.000000000","message":"Hmm I find both values not ideal. 0 or -1 are valid indexes, the former points to the first step and the latter to the last.\n\nWouldn\u0027t it be more elegant to just remove clean_step_index? Or set a place holder to it which is not a valid index by any means? (e.g None)","commit_id":"107c2b3f6633aeb0d94786847f2cd9ff88374e90"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"1dd7252586e67f2d7c9a1b497bf6f5e30e75fa43","unresolved":false,"context_lines":[{"line_number":903,"context_line":"            node.clean_step \u003d {}"},{"line_number":904,"context_line":"            info \u003d node.driver_internal_info"},{"line_number":905,"context_line":"            info[\u0027clean_steps\u0027] \u003d clean_steps"},{"line_number":906,"context_line":"            info[\u0027clean_step_index\u0027] \u003d -1"},{"line_number":907,"context_line":"            node.driver_internal_info \u003d info"},{"line_number":908,"context_line":"            node.save()"},{"line_number":909,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a5ae5dd_6ecba373","line":906,"in_reply_to":"7a5de9d1_afeaf9aa","updated":"2016-02-03 01:02:23.000000000","message":"@Tan. 0 is wrong because I want clean_step_index to mirror/reflect node.clean_step. It should only be 0 when node.clean_step is the first step.\n\n@Tan, Lucas. I used -1 to indicate that it isn\u0027t set to anything valid. Coming from the C world, -1 isn\u0027t a valid index into anything. I\u0027ll change it to None and you can tell me what you think.\n\n@Lucas. wrt elegance -- if node.clean_step was None, maybe I\u0027d remove it, but node.clean_step is set to something, and I wanted clean_step_index to correspond to node.clean_step.","commit_id":"107c2b3f6633aeb0d94786847f2cd9ff88374e90"},{"author":{"_account_id":14525,"name":"Vasyl Saienko","email":"vsaienko@mirantis.com","username":"vsaienko"},"change_message_id":"92cbcda077d72c2bc7eed67c4dea45ba921d7cbe","unresolved":false,"context_lines":[{"line_number":689,"context_line":"            # step. This will be deleted in the Newton cycle."},{"line_number":690,"context_line":"            try:"},{"line_number":691,"context_line":"                next_steps \u003d node.driver_internal_info[\u0027clean_steps\u0027]"},{"line_number":692,"context_line":"                ind \u003d next_steps.index(node.clean_step)"},{"line_number":693,"context_line":"            except (KeyError, ValueError):"},{"line_number":694,"context_line":"                msg \u003d (_(\u0027Node %(node)s got an invalid last step for \u0027"},{"line_number":695,"context_line":"                         \u0027%(state)s: %(step)s.\u0027) %"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a5ae5dd_3bbb62e7","line":692,"range":{"start_line":692,"start_character":39,"end_line":692,"end_character":54},"updated":"2016-02-04 08:28:27.000000000","message":"How it is possible that current clean step \u0027node.clean_step\u0027 is not in the node.driver_internal_info[\u0027clean_steps\u0027]?","commit_id":"46f198a7fdeecb4491fde04e33e541ac1e02d51e"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"28d1b62becaf188c89dde321edbdcf4c9fd98bbd","unresolved":false,"context_lines":[{"line_number":689,"context_line":"            # step. This will be deleted in the Newton cycle."},{"line_number":690,"context_line":"            try:"},{"line_number":691,"context_line":"                next_steps \u003d node.driver_internal_info[\u0027clean_steps\u0027]"},{"line_number":692,"context_line":"                ind \u003d next_steps.index(node.clean_step)"},{"line_number":693,"context_line":"            except (KeyError, ValueError):"},{"line_number":694,"context_line":"                msg \u003d (_(\u0027Node %(node)s got an invalid last step for \u0027"},{"line_number":695,"context_line":"                         \u0027%(state)s: %(step)s.\u0027) %"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a5ae5dd_e9bf24f9","line":692,"range":{"start_line":692,"start_character":39,"end_line":692,"end_character":54},"in_reply_to":"5a5ae5dd_3bbb62e7","updated":"2016-02-04 17:07:11.000000000","message":"It shouldn\u0027t be possible unless there was a programming error. I guess it is questionable as to whether we should have this code snippet or not, but it was already there and we will delete it one day, so I left it in.","commit_id":"46f198a7fdeecb4491fde04e33e541ac1e02d51e"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"bf06dabcc36cc5f8fee0cf8007802948e0d52d52","unresolved":false,"context_lines":[{"line_number":1029,"context_line":"        # Clear clean_step"},{"line_number":1030,"context_line":"        node.clean_step \u003d None"},{"line_number":1031,"context_line":"        driver_internal_info[\u0027clean_steps\u0027] \u003d None"},{"line_number":1032,"context_line":"        driver_internal_info.pop(\u0027clean_step_index\u0027)"},{"line_number":1033,"context_line":"        node.driver_internal_info \u003d driver_internal_info"},{"line_number":1034,"context_line":"        node.save()"},{"line_number":1035,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a5ae5dd_2a47854c","line":1032,"updated":"2016-02-04 10:08:52.000000000","message":"The error is coming from here [0]. Apparently not always clean_step_index is going to be set, if that\u0027s the case you may want to change the code to:\n\n driver_internal_info.pop(\u0027clean_step_index\u0027, None) \n\nSo None gets returned if \u0027clean_step_index\u0027 is not present\n\n[0] http://logs.openstack.org/86/270986/6/check/gate-tempest-dsvm-ironic-pxe_ssh/7d1cd7d/logs/screen-ir-cond.txt.gz#_2016-02-04_03_17_46_922","commit_id":"46f198a7fdeecb4491fde04e33e541ac1e02d51e"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"28d1b62becaf188c89dde321edbdcf4c9fd98bbd","unresolved":false,"context_lines":[{"line_number":1029,"context_line":"        # Clear clean_step"},{"line_number":1030,"context_line":"        node.clean_step \u003d None"},{"line_number":1031,"context_line":"        driver_internal_info[\u0027clean_steps\u0027] \u003d None"},{"line_number":1032,"context_line":"        driver_internal_info.pop(\u0027clean_step_index\u0027)"},{"line_number":1033,"context_line":"        node.driver_internal_info \u003d driver_internal_info"},{"line_number":1034,"context_line":"        node.save()"},{"line_number":1035,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":6,"id":"5a5ae5dd_e91ba419","line":1032,"in_reply_to":"5a5ae5dd_2a47854c","updated":"2016-02-04 17:07:11.000000000","message":"Thanks for looking into it! I fixed the code to ensure that \u0027clean_step_index\u0027 exists, but just in case the code changes in the future, I also fixed this too :)","commit_id":"46f198a7fdeecb4491fde04e33e541ac1e02d51e"},{"author":{"_account_id":14760,"name":"John L. Villalovos","email":"openstack.org@sodarock.com","username":"jlvillal"},"change_message_id":"eed082d2be285fb9fea0af74ba808676f800e855","unresolved":false,"context_lines":[{"line_number":646,"context_line":"                state\u003dnode.provision_state)"},{"line_number":647,"context_line":"        self._do_node_clean(task)"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"    def _get_node_next_clean_steps(self, task, skip_current_step\u003dTrue):"},{"line_number":650,"context_line":"        \"\"\"Get the task\u0027s node\u0027s next clean steps."},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"        This determines what the next (remaining) clean steps are, and"}],"source_content_type":"text/x-python","patch_set":9,"id":"dae33548_e44702ba","line":649,"updated":"2016-02-17 19:40:16.000000000","message":"nit: Maybe name should be\n\n _get_node_next_clean_step_index  ??","commit_id":"5b724be91f971cfd2ba539b0d96f197edc7b113d"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"b2cc65f402d163db977d05943f2b1f2aa91cec02","unresolved":false,"context_lines":[{"line_number":646,"context_line":"                state\u003dnode.provision_state)"},{"line_number":647,"context_line":"        self._do_node_clean(task)"},{"line_number":648,"context_line":""},{"line_number":649,"context_line":"    def _get_node_next_clean_steps(self, task, skip_current_step\u003dTrue):"},{"line_number":650,"context_line":"        \"\"\"Get the task\u0027s node\u0027s next clean steps."},{"line_number":651,"context_line":""},{"line_number":652,"context_line":"        This determines what the next (remaining) clean steps are, and"}],"source_content_type":"text/x-python","patch_set":9,"id":"dae33548_10286085","line":649,"in_reply_to":"dae33548_e44702ba","updated":"2016-02-17 20:17:20.000000000","message":"yeah, I think it should have been originally called \u0027get_remaining_clean_steps\u0027. This could be _get_next_clean_step_index\n\nFeel free to update if you want.","commit_id":"5b724be91f971cfd2ba539b0d96f197edc7b113d"}],"ironic/conductor/utils.py":[{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"8046a1b2ab04fcacb4c6a58da7e691d0e2f4ca86","unresolved":false,"context_lines":[{"line_number":209,"context_line":"    if node.provision_state in (states.CLEANING, states.CLEANWAIT):"},{"line_number":210,"context_line":"        node.clean_step \u003d {}"},{"line_number":211,"context_line":"        info \u003d node.driver_internal_info"},{"line_number":212,"context_line":"        info[\u0027clean_step_index\u0027] \u003d -1"},{"line_number":213,"context_line":"        node.driver_internal_info \u003d info"},{"line_number":214,"context_line":"    # For manual cleaning, the target provision state is MANAGEABLE, whereas"},{"line_number":215,"context_line":"    # for automated cleaning, it is AVAILABLE."}],"source_content_type":"text/x-python","patch_set":1,"id":"9a68dd71_feb9f315","line":212,"updated":"2016-01-22 18:10:38.000000000","message":"Here too, it seems that it should work without this reassignment, as 0 index will be returned if clean_step\u003d{}","commit_id":"dc5bc3990e6cf73de29e4dfab7d4159d539449db"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ced1386afd4fb4d56c4c2736aa4eac375aadb6d3","unresolved":false,"context_lines":[{"line_number":209,"context_line":"    if node.provision_state in (states.CLEANING, states.CLEANWAIT):"},{"line_number":210,"context_line":"        node.clean_step \u003d {}"},{"line_number":211,"context_line":"        info \u003d node.driver_internal_info"},{"line_number":212,"context_line":"        info[\u0027clean_step_index\u0027] \u003d -1"},{"line_number":213,"context_line":"        node.driver_internal_info \u003d info"},{"line_number":214,"context_line":"    # For manual cleaning, the target provision state is MANAGEABLE, whereas"},{"line_number":215,"context_line":"    # for automated cleaning, it is AVAILABLE."}],"source_content_type":"text/x-python","patch_set":1,"id":"9a68dd71_f20bda29","line":212,"in_reply_to":"9a68dd71_feb9f315","updated":"2016-01-26 17:55:09.000000000","message":"Again, I want to keep it in sync with node.clean_step.\n\nAlthough node.clean_step can be {} or None. Really, I\u0027d like to pop it, but that may be more in line with clean_step \u003d None. And I have no idea why we don\u0027t clear info[\u0027clean_steps\u0027].\n\nIf I leave this alone, it could have some value eg 3. Anyone looking at the node, will see node.clean_step \u003d {}, some steps in info[\u0027clean_steps\u0027] and info[\u0027clean_step_index\u0027] \u003d 3. Don\u0027t you think that might be confusing?","commit_id":"dc5bc3990e6cf73de29e4dfab7d4159d539449db"},{"author":{"_account_id":12356,"name":"Vladyslav Drok","email":"vdrok@mirantis.com","username":"vdrok"},"change_message_id":"8046a1b2ab04fcacb4c6a58da7e691d0e2f4ca86","unresolved":false,"context_lines":[{"line_number":311,"context_line":"        driver_internal_info \u003d node.driver_internal_info"},{"line_number":312,"context_line":"        driver_internal_info[\u0027clean_steps\u0027] \u003d _get_cleaning_steps(task,"},{"line_number":313,"context_line":"                                                                  enabled\u003dTrue)"},{"line_number":314,"context_line":"        driver_internal_info[\u0027clean_step_index\u0027] \u003d -1"},{"line_number":315,"context_line":"        node.driver_internal_info \u003d driver_internal_info"},{"line_number":316,"context_line":"    else:"},{"line_number":317,"context_line":"        # For manual cleaning, the list of cleaning steps was specified by the"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a68dd71_be65bbb5","line":314,"updated":"2016-01-22 18:10:38.000000000","message":"ditto","commit_id":"dc5bc3990e6cf73de29e4dfab7d4159d539449db"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"ced1386afd4fb4d56c4c2736aa4eac375aadb6d3","unresolved":false,"context_lines":[{"line_number":311,"context_line":"        driver_internal_info \u003d node.driver_internal_info"},{"line_number":312,"context_line":"        driver_internal_info[\u0027clean_steps\u0027] \u003d _get_cleaning_steps(task,"},{"line_number":313,"context_line":"                                                                  enabled\u003dTrue)"},{"line_number":314,"context_line":"        driver_internal_info[\u0027clean_step_index\u0027] \u003d -1"},{"line_number":315,"context_line":"        node.driver_internal_info \u003d driver_internal_info"},{"line_number":316,"context_line":"    else:"},{"line_number":317,"context_line":"        # For manual cleaning, the list of cleaning steps was specified by the"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a68dd71_5248a687","line":314,"in_reply_to":"9a68dd71_be65bbb5","updated":"2016-01-26 17:55:09.000000000","message":"This one I am fine with removing.","commit_id":"dc5bc3990e6cf73de29e4dfab7d4159d539449db"}]}
