)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7625,"name":"Martyn Taylor","email":"mtaylor@redhat.com","username":"mtaylor"},"change_message_id":"1b4184d5b233791cf883f5d54cdc3a64621d9eba","unresolved":false,"context_lines":[{"line_number":14,"context_line":"{\u0027deploy\u0027: {\u0027result\u0027: True},"},{"line_number":15,"context_line":" \u0027power\u0027: {\u0027result\u0027: False, \u0027reason\u0027: \u0027Invalid IPMI username\u0027},"},{"line_number":16,"context_line":" \u0027console\u0027: {\u0027reason\u0027: \u0027not supported\u0027},"},{"line_number":17,"context_line":" \u0027rescue\u0027: {\u0027reason\u0027: \u0027not supported\u0027}}"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: Id5d8aa1bd150b7d85f359471daccfacb6d9e2ede"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAT3%2F%2Fvvo%3D","line":17,"updated":"2014-01-02 14:05:32.000000000","message":"I wonder whether reason should be a list rather than a string?  Is it possible to have several validation failures per attribute?","commit_id":"affb4f0098e951dfa8eb11b215caaee1d9b9d74e"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"f3b3a2b44a70ec74e99abd4058ebf4222aa9577f","unresolved":false,"context_lines":[{"line_number":14,"context_line":"{\u0027deploy\u0027: {\u0027result\u0027: True},"},{"line_number":15,"context_line":" \u0027power\u0027: {\u0027result\u0027: False, \u0027reason\u0027: \u0027Invalid IPMI username\u0027},"},{"line_number":16,"context_line":" \u0027console\u0027: {\u0027reason\u0027: \u0027not supported\u0027},"},{"line_number":17,"context_line":" \u0027rescue\u0027: {\u0027reason\u0027: \u0027not supported\u0027}}"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: Id5d8aa1bd150b7d85f359471daccfacb6d9e2ede"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAT3%2F%2FvsU%3D","line":17,"in_reply_to":"AAAAT3%2F%2Fvvo%3D","updated":"2014-01-02 14:22:31.000000000","message":"These are not object attributes validation, it\u0027s an improvement on the node\u0027s driver interfaces validation.\n\nI think I should improve the first line of my commit message to reflect it better.","commit_id":"affb4f0098e951dfa8eb11b215caaee1d9b9d74e"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"32b28107aa18e05b7aedfd705113cc7c93ce9561","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"{\u0027deploy\u0027: {\u0027result\u0027: True},"},{"line_number":15,"context_line":" \u0027power\u0027: {\u0027result\u0027: False, \u0027reason\u0027: \u0027Invalid IPMI username\u0027},"},{"line_number":16,"context_line":" \u0027console\u0027: {\u0027reason\u0027: \u0027not supported\u0027},"},{"line_number":17,"context_line":" \u0027rescue\u0027: {\u0027reason\u0027: \u0027not supported\u0027}}"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: Id5d8aa1bd150b7d85f359471daccfacb6d9e2ede"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAUH%2F%2F6WY%3D","line":16,"updated":"2014-01-06 21:40:06.000000000","message":"I was a bit confused by this when I first looked. I guess you don\u0027t want to add \u0027result\u0027 \u003d eg \u0027unknown\u0027?","commit_id":"3e67982506ededfb2c23ee2f2e048a0a231c2b4b"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"01ccbca458eebc367551f0a0846013b41c6212ee","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"{\u0027deploy\u0027: {\u0027result\u0027: True},"},{"line_number":15,"context_line":" \u0027power\u0027: {\u0027result\u0027: False, \u0027reason\u0027: \u0027Invalid IPMI username\u0027},"},{"line_number":16,"context_line":" \u0027console\u0027: {\u0027reason\u0027: \u0027not supported\u0027},"},{"line_number":17,"context_line":" \u0027rescue\u0027: {\u0027reason\u0027: \u0027not supported\u0027}}"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: Id5d8aa1bd150b7d85f359471daccfacb6d9e2ede"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"AAAAUH%2F%2F38o%3D","line":16,"in_reply_to":"AAAAUH%2F%2F6WY%3D","updated":"2014-01-07 11:18:52.000000000","message":"Please take a look at my comment in ironic/conductor/manager.py (L392)","commit_id":"3e67982506ededfb2c23ee2f2e048a0a231c2b4b"}],"ironic/conductor/manager.py":[{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"2d907c7249a9b4cbe1a8cffd72d9b16a3ec8bb21","unresolved":false,"context_lines":[{"line_number":388,"context_line":"                    ret_dict[iface_name][\u0027result\u0027] \u003d result"},{"line_number":389,"context_line":"                if reason is not None:"},{"line_number":390,"context_line":"                    ret_dict[iface_name][\u0027reason\u0027] \u003d reason"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"                LOG.debug(_(\"Node %(node)s driver \u0027%(iface)s\u0027 interface \""},{"line_number":393,"context_line":"                            \"validation: %(validation)s\") %"},{"line_number":394,"context_line":"                            {\u0027node\u0027: node_id, \u0027iface\u0027: iface_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2F95M%3D","line":391,"updated":"2014-01-06 04:30:30.000000000","message":"Is debug logging the result for each interface, every time this is called, going to be helpful? I think the driver\u0027s should be logging debug info at a lower level. To, you know, maybe assist with debugging their validate() methods :)","commit_id":"5c4a64805662455dde7e713aa08588db78e4b663"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"e6f5229f612f7a2025aae3146d7c8d380328c97f","unresolved":false,"context_lines":[{"line_number":388,"context_line":"                    ret_dict[iface_name][\u0027result\u0027] \u003d result"},{"line_number":389,"context_line":"                if reason is not None:"},{"line_number":390,"context_line":"                    ret_dict[iface_name][\u0027reason\u0027] \u003d reason"},{"line_number":391,"context_line":""},{"line_number":392,"context_line":"                LOG.debug(_(\"Node %(node)s driver \u0027%(iface)s\u0027 interface \""},{"line_number":393,"context_line":"                            \"validation: %(validation)s\") %"},{"line_number":394,"context_line":"                            {\u0027node\u0027: node_id, \u0027iface\u0027: iface_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F%2F8Ws%3D","line":391,"in_reply_to":"AAAAUH%2F%2F95M%3D","updated":"2014-01-06 13:16:07.000000000","message":"That\u0027s right, I agree with it. Having these logs for each interface + having the drivers logging similar information might not be that helpful and extremely verbose.\n\nI will get rid of this log on another patch set.\n\nThanks for pointing it out!","commit_id":"5c4a64805662455dde7e713aa08588db78e4b663"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"32b28107aa18e05b7aedfd705113cc7c93ce9561","unresolved":false,"context_lines":[{"line_number":389,"context_line":"                        result \u003d False"},{"line_number":390,"context_line":"                        reason \u003d str(e)"},{"line_number":391,"context_line":"                else:"},{"line_number":392,"context_line":"                    reason \u003d \u0027not supported\u0027"},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"                ret_dict[iface_name] \u003d {}"},{"line_number":395,"context_line":"                if result is not None:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2F6ZE%3D","line":392,"updated":"2014-01-06 21:40:06.000000000","message":"Do we want to return an i18n string?","commit_id":"3e67982506ededfb2c23ee2f2e048a0a231c2b4b"},{"author":{"_account_id":6618,"name":"Ruby Loo","email":"opensrloo@gmail.com","username":"rloo"},"change_message_id":"36f6e096440ddeee110a334f8e5e412285ae9977","unresolved":false,"context_lines":[{"line_number":389,"context_line":"                        result \u003d False"},{"line_number":390,"context_line":"                        reason \u003d str(e)"},{"line_number":391,"context_line":"                else:"},{"line_number":392,"context_line":"                    reason \u003d \u0027not supported\u0027"},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"                ret_dict[iface_name] \u003d {}"},{"line_number":395,"context_line":"                if result is not None:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2F3ZA%3D","line":392,"in_reply_to":"AAAAUH%2F%2F39I%3D","updated":"2014-01-07 14:13:27.000000000","message":"Yes, I guess result shouldn\u0027t have a string value. I like result\u003dNone better than no result. What do you think. Which is clearer?\n\n {\u0027deploy\u0027: {\u0027result\u0027: True},\n   \u0027power\u0027: {\u0027result\u0027: False, \u0027reason\u0027: \u0027Invalid IPMI username\u0027},\n   \u0027console\u0027: {\u0027reason\u0027: \u0027not supported\u0027},\n   \u0027rescue\u0027: {\u0027reason\u0027: \u0027not supported\u0027}}\n\nor\n\n {\u0027deploy\u0027: {\u0027result\u0027: True},\n  \u0027power\u0027: {\u0027result\u0027: False, \u0027reason\u0027: \u0027Invalid IPMI username\u0027},\n  \u0027console\u0027: {\u0027result\u0027: None, \u0027reason\u0027: \u0027not supported\u0027},\n  \u0027rescue\u0027: {\u0027result\u0027: None, \u0027reason\u0027: \u0027not supported\u0027}}","commit_id":"3e67982506ededfb2c23ee2f2e048a0a231c2b4b"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"320d770c83cc040b997f674cc7dfc502d56d1fad","unresolved":false,"context_lines":[{"line_number":389,"context_line":"                        result \u003d False"},{"line_number":390,"context_line":"                        reason \u003d str(e)"},{"line_number":391,"context_line":"                else:"},{"line_number":392,"context_line":"                    reason \u003d \u0027not supported\u0027"},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"                ret_dict[iface_name] \u003d {}"},{"line_number":395,"context_line":"                if result is not None:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2F2WE%3D","line":392,"in_reply_to":"AAAAUH%2F%2F3ZA%3D","updated":"2014-01-07 17:46:47.000000000","message":"I like the \"result: None\".\n\nIt looks easier to parse as well by making all interfaces to have a \"result\" field. I will make the change :) \n\nI also would like to see deva\u0027s opnion about it, since we had a chat about how this should structure should looks like.\n\nTa much","commit_id":"3e67982506ededfb2c23ee2f2e048a0a231c2b4b"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"01ccbca458eebc367551f0a0846013b41c6212ee","unresolved":false,"context_lines":[{"line_number":389,"context_line":"                        result \u003d False"},{"line_number":390,"context_line":"                        reason \u003d str(e)"},{"line_number":391,"context_line":"                else:"},{"line_number":392,"context_line":"                    reason \u003d \u0027not supported\u0027"},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"                ret_dict[iface_name] \u003d {}"},{"line_number":395,"context_line":"                if result is not None:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUH%2F%2F39I%3D","line":392,"in_reply_to":"AAAAUH%2F%2F6ZE%3D","updated":"2014-01-07 11:18:52.000000000","message":"Good point, as the reasons returned by the validate method are being i18n it would make sense to i18n this one as well.\n\nMy only concern is if it would make the parser a bit more difficult, but I don\u0027t think so because we the absence of result act as a flag.\n\n***\n\nNow this makes me think about ur first question re result \u003d \u0027unknown\u0027. Using a string like that might would need to be i18n like the other strings returned by this function, perhaps having result \u003d None would make more sense here?","commit_id":"3e67982506ededfb2c23ee2f2e048a0a231c2b4b"},{"author":{"_account_id":2889,"name":"Aeva Black","email":"aeva.online@gmail.com","username":"tenbrae"},"change_message_id":"e1bbb0186f90e2cc0bd60fd388f6e5f8d28d2ba7","unresolved":false,"context_lines":[{"line_number":385,"context_line":"                    try:"},{"line_number":386,"context_line":"                        iface.validate(task.node)"},{"line_number":387,"context_line":"                        result \u003d True"},{"line_number":388,"context_line":"                    except exception.InvalidParameterValue as e:"},{"line_number":389,"context_line":"                        result \u003d False"},{"line_number":390,"context_line":"                        reason \u003d str(e)"},{"line_number":391,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUH%2F%2FvKE%3D","line":388,"updated":"2014-01-09 01:44:19.000000000","message":"SSHPowerDriver.validate() may raise a different exception. I\u0027m posting a patch to fix that.","commit_id":"793fed00de709893022eaf42291f4c6989088182"}]}
