)]}'
{"ironic/drivers/modules/ipmitool.py":[{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"11720c93f2464d15eef6f1693d786aafb7215366","unresolved":false,"context_lines":[{"line_number":42,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"VALID_BOOT_DEVICES \u003d [\u0027pxe\u0027, \u0027disk\u0027, \u0027safe\u0027, \u0027cdrom\u0027, \u0027bios\u0027]"},{"line_number":45,"context_line":"VALID_PRIV_LEVELS \u003d [\u0027ADMINISTRATOR\u0027, \u0027CALLBACK\u0027, \u0027OEM\u0027, \u0027OPERATOR\u0027, \u0027USER\u0027]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"@contextlib.contextmanager"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2FRB4%3D","line":45,"updated":"2014-02-14 12:01:03.000000000","message":"In ipmitool manual: \"Can be CALLBACK, USER, OPERATOR, ADMINISTRATOR\"\nwhat is OEM?","commit_id":"ebe5f1aa8283663ec352ba6189424f4f9d97d780"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"11720c93f2464d15eef6f1693d786aafb7215366","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    username \u003d info.get(\u0027ipmi_username\u0027)"},{"line_number":80,"context_line":"    password \u003d info.get(\u0027ipmi_password\u0027)"},{"line_number":81,"context_line":"    port \u003d info.get(\u0027ipmi_terminal_port\u0027)"},{"line_number":82,"context_line":"    priv_level \u003d info.get(\u0027ipmi_priv_level\u0027, VALID_PRIV_LEVELS[0])"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"    if not address:"},{"line_number":85,"context_line":"        raise exception.InvalidParameterValue(_("}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2FRBE%3D","line":82,"updated":"2014-02-14 12:01:03.000000000","message":"priv_level \u003d info.get(\u0027ipmi_priv_level\u0027, \u0027ADMINISTRATOR\u0027) IMO more clean.","commit_id":"ebe5f1aa8283663ec352ba6189424f4f9d97d780"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"11720c93f2464d15eef6f1693d786aafb7215366","unresolved":false,"context_lines":[{"line_number":88,"context_line":"    if priv_level not in VALID_PRIV_LEVELS:"},{"line_number":89,"context_line":"        raise exception.InvalidParameterValue(_("},{"line_number":90,"context_line":"            \"Invalid privilege level value:%(priv_level)s, the valid value\""},{"line_number":91,"context_line":"            \" can be one of %(valid_levels)\"),"},{"line_number":92,"context_line":"            {\u0027priv_level\u0027: priv_level, \u0027valid_levels\u0027: VALID_PRIV_LEVELS})"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    return {"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAUX%2F%2FRDA%3D","line":91,"updated":"2014-02-14 12:01:03.000000000","message":"Missing \u0027s\u0027","commit_id":"ebe5f1aa8283663ec352ba6189424f4f9d97d780"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"5fb9b04b675f2b3153bb6a15360f8616f6078193","unresolved":false,"context_lines":[{"line_number":88,"context_line":"    if priv_level not in VALID_PRIV_LEVELS:"},{"line_number":89,"context_line":"        raise exception.InvalidParameterValue(_("},{"line_number":90,"context_line":"            \"Invalid privilege level value:%(priv_level)s, the valid value\""},{"line_number":91,"context_line":"            \" can be one of %(valid_levels)s\"),"},{"line_number":92,"context_line":"            {\u0027priv_level\u0027: priv_level, \u0027valid_levels\u0027: VALID_PRIV_LEVELS})"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    return {"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUX%2F%2FQjI%3D","line":91,"updated":"2014-02-14 13:34:44.000000000","message":"You pass a message to exception init, I see obvious formatting (%) needed here.\nhttps://github.com/openstack/ironic/blob/master/ironic/common/exception.py#L73","commit_id":"95a2a363b8e5924edfdff1790f87c92bcf242932"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"3c9dc201b094f404676a19d4bc8bf742a19f788b","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        raise exception.InvalidParameterValue(_("},{"line_number":90,"context_line":"            \"Invalid privilege level value:%(priv_level)s, the valid value\""},{"line_number":91,"context_line":"            \" can be one of %(valid_levels)s\") %"},{"line_number":92,"context_line":"            {\u0027priv_level\u0027: priv_level, \u0027valid_levels\u0027: VALID_PRIV_LEVELS})"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    return {"},{"line_number":95,"context_line":"            \u0027address\u0027: address,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2FAnE%3D","line":92,"updated":"2014-02-17 17:09:23.000000000","message":"nit: instead of printing the list here I think it\u0027s more readable to join the values before printing it.\n\nMay I suggest:\n\nif priv_level not in VALID_PRIV_LEVELS:\n    valid_priv_lvls \u003d \u0027, \u0027.join(VALID_PRIV_LEVELS)\n    raise exception.InvalidParameterValue(_(\"Invalid privilege level value: \"\n         \"%(priv_level)s, the valid value can be one of: %(valid_levels)s\") % \n         {\u0027priv_level\u0027: priv_level, \u0027valid_levels\u0027: valid_priv_lvls})","commit_id":"c4d035b83a972e97eea1a98684e2fcdca9d4d8ca"},{"author":{"_account_id":8106,"name":"Haomeng,Wang","email":"wanghaomeng@gmail.com","username":"whaom"},"change_message_id":"27fc71c3d4231df09440d76d622892ba6ee665dd","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        raise exception.InvalidParameterValue(_("},{"line_number":90,"context_line":"            \"Invalid privilege level value:%(priv_level)s, the valid value\""},{"line_number":91,"context_line":"            \" can be one of %(valid_levels)s\") %"},{"line_number":92,"context_line":"            {\u0027priv_level\u0027: priv_level, \u0027valid_levels\u0027: VALID_PRIV_LEVELS})"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"    return {"},{"line_number":95,"context_line":"            \u0027address\u0027: address,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUX%2F%2B9jI%3D","line":92,"in_reply_to":"AAAAUX%2F%2FAnE%3D","updated":"2014-02-18 00:14:08.000000000","message":"Thanks Lucas, done","commit_id":"c4d035b83a972e97eea1a98684e2fcdca9d4d8ca"}],"ironic/tests/drivers/test_ipmitool.py":[{"author":{"_account_id":8968,"name":"Max Lobur","email":"max_lobur@outlook.com","username":"max_lobur"},"change_message_id":"ffc862997c11cb3b15b0ae8ca5f310bc2ac43075","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":99,"context_line":"                          ipmi._parse_driver_info,"},{"line_number":100,"context_line":"                          node)"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def test__exec_ipmitool(self):"},{"line_number":103,"context_line":"        pw_file_handle \u003d tempfile.NamedTemporaryFile()"},{"line_number":104,"context_line":"        pw_file \u003d pw_file_handle.name"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAUX%2F%2Bu7c%3D","line":101,"updated":"2014-02-19 13:38:53.000000000","message":"This test becomes huge, I\u0027d split it into few smaller ones, but in a separate patch :)","commit_id":"44781dbacdb3c12aefe04a0a5a7868a6188c5539"}]}
