)]}'
{"cinder/volume/states.py":[{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"a39b139095feb8757e1824f874bc6965e9719d04","unresolved":false,"context_lines":[{"line_number":115,"context_line":"                                    VOLUME_RESTORING,"},{"line_number":116,"context_line":"                                    VOLUME_RETYPING,"},{"line_number":117,"context_line":"                                    VOLUME_DOWNLOADING,"},{"line_number":118,"context_line":"                                    VOLUME_BACKING_UP])"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"# Moving back to the AVAILABLE state from a known *acceptable* ERROR state."},{"line_number":121,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":7,"id":"1abeadc6_854409b8","line":118,"updated":"2014-08-20 17:42:00.000000000","message":"BACKING_UP should never go into ERROR, just put it back to AVAILABLE","commit_id":"cd09f61a13eaf5d2db1054bdb341d30895a689b5"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"0441f32e75a24ab2102e1fd46053e6fbe28aa991","unresolved":false,"context_lines":[{"line_number":115,"context_line":"                                    VOLUME_RESTORING,"},{"line_number":116,"context_line":"                                    VOLUME_RETYPING,"},{"line_number":117,"context_line":"                                    VOLUME_DOWNLOADING,"},{"line_number":118,"context_line":"                                    VOLUME_BACKING_UP])"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"# Moving back to the AVAILABLE state from a known *acceptable* ERROR state."},{"line_number":121,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":7,"id":"1abeadc6_d8976846","line":118,"in_reply_to":"1abeadc6_854409b8","updated":"2014-08-22 21:58:09.000000000","message":"Done","commit_id":"cd09f61a13eaf5d2db1054bdb341d30895a689b5"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"57f492777277bed4ce28bb707035c8463c74f5df","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from cinder import exception as excp"},{"line_number":27,"context_line":"from cinder.openstack.common.gettextutils import _"},{"line_number":28,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_bb3d46df","line":27,"updated":"2014-08-22 23:02:07.000000000","message":"from cinder.i18n import _","commit_id":"00df2e6bde9c19d352127e15803d9da175b21c47"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"890a070f63b57211a4ec4eae47a42ee41857d278","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"from cinder import exception as excp"},{"line_number":27,"context_line":"from cinder.openstack.common.gettextutils import _"},{"line_number":28,"context_line":"from cinder.openstack.common import log as logging"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"LOG \u003d logging.getLogger(__name__)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_ee10de4f","line":27,"in_reply_to":"1abeadc6_bb3d46df","updated":"2014-08-22 23:38:42.000000000","message":"Done","commit_id":"00df2e6bde9c19d352127e15803d9da175b21c47"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"9ab6d34776c48eff38e2345fa383bb61012c26c0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Copyright (C) 2013 Yahoo! Inc. All Rights Reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_85be44d3","line":1,"updated":"2014-08-25 11:35:23.000000000","message":"2013?","commit_id":"2c6d4c3b0697f86cfe595d9528272d31cdf6047d"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"d9b426f94d4fcfc462eaa3f8e4688bfdc20c4869","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Copyright (C) 2013 Yahoo! Inc. All Rights Reserved."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_d764604b","line":1,"in_reply_to":"1abeadc6_85be44d3","updated":"2014-08-25 17:59:20.000000000","message":"Done","commit_id":"2c6d4c3b0697f86cfe595d9528272d31cdf6047d"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"9ab6d34776c48eff38e2345fa383bb61012c26c0","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"def _check_transition(old_state, new_state, transitions, known_states,"},{"line_number":35,"context_line":"                      identity_ignored\u003dFalse, ignored_transitions\u003d()):"},{"line_number":36,"context_line":"    \"\"\"Check that a something can transition from old to new."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    If transition can be performed, it returns True. If transition"},{"line_number":39,"context_line":"    should be ignored, it returns False. If transition is not"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_a5afc07c","line":36,"updated":"2014-08-25 11:35:23.000000000","message":"Check that transition can be attempted from old to new","commit_id":"2c6d4c3b0697f86cfe595d9528272d31cdf6047d"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"67f3fdb4b14d83cbbacd12dd622b1ee2484dbed5","unresolved":false,"context_lines":[{"line_number":33,"context_line":""},{"line_number":34,"context_line":"def _check_transition(old_state, new_state, transitions, known_states,"},{"line_number":35,"context_line":"                      identity_ignored\u003dFalse, ignored_transitions\u003d()):"},{"line_number":36,"context_line":"    \"\"\"Check that a something can transition from old to new."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    If transition can be performed, it returns True. If transition"},{"line_number":39,"context_line":"    should be ignored, it returns False. If transition is not"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_78dc5e19","line":36,"in_reply_to":"1abeadc6_a5afc07c","updated":"2014-08-25 17:56:56.000000000","message":"Done","commit_id":"2c6d4c3b0697f86cfe595d9528272d31cdf6047d"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"9ab6d34776c48eff38e2345fa383bb61012c26c0","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    valid, it raises a InvalidTransition exception."},{"line_number":41,"context_line":"    \"\"\""},{"line_number":42,"context_line":"    if old_state not in known_states:"},{"line_number":43,"context_line":"        raise ValueError(\"Unknown old state \u0027%s\u0027\" % (old_state))"},{"line_number":44,"context_line":"    if new_state not in known_states:"},{"line_number":45,"context_line":"        raise ValueError(\"Unknown new state \u0027%s\u0027\" % (new_state))"},{"line_number":46,"context_line":"    if identity_ignored and old_state \u003d\u003d new_state:"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_25ac908c","line":43,"updated":"2014-08-25 11:35:23.000000000","message":"_(\"Unknown..\")","commit_id":"2c6d4c3b0697f86cfe595d9528272d31cdf6047d"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"d9b426f94d4fcfc462eaa3f8e4688bfdc20c4869","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    valid, it raises a InvalidTransition exception."},{"line_number":41,"context_line":"    \"\"\""},{"line_number":42,"context_line":"    if old_state not in known_states:"},{"line_number":43,"context_line":"        raise ValueError(\"Unknown old state \u0027%s\u0027\" % (old_state))"},{"line_number":44,"context_line":"    if new_state not in known_states:"},{"line_number":45,"context_line":"        raise ValueError(\"Unknown new state \u0027%s\u0027\" % (new_state))"},{"line_number":46,"context_line":"    if identity_ignored and old_state \u003d\u003d new_state:"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_17d6d8c5","line":43,"in_reply_to":"1abeadc6_25ac908c","updated":"2014-08-25 17:59:20.000000000","message":"Done","commit_id":"2c6d4c3b0697f86cfe595d9528272d31cdf6047d"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"9ab6d34776c48eff38e2345fa383bb61012c26c0","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    if old_state not in known_states:"},{"line_number":43,"context_line":"        raise ValueError(\"Unknown old state \u0027%s\u0027\" % (old_state))"},{"line_number":44,"context_line":"    if new_state not in known_states:"},{"line_number":45,"context_line":"        raise ValueError(\"Unknown new state \u0027%s\u0027\" % (new_state))"},{"line_number":46,"context_line":"    if identity_ignored and old_state \u003d\u003d new_state:"},{"line_number":47,"context_line":"        return False"},{"line_number":48,"context_line":"    if (old_state, new_state) in ignored_transitions:"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_e5cff855","line":45,"updated":"2014-08-25 11:35:23.000000000","message":"_()","commit_id":"2c6d4c3b0697f86cfe595d9528272d31cdf6047d"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"d9b426f94d4fcfc462eaa3f8e4688bfdc20c4869","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    if old_state not in known_states:"},{"line_number":43,"context_line":"        raise ValueError(\"Unknown old state \u0027%s\u0027\" % (old_state))"},{"line_number":44,"context_line":"    if new_state not in known_states:"},{"line_number":45,"context_line":"        raise ValueError(\"Unknown new state \u0027%s\u0027\" % (new_state))"},{"line_number":46,"context_line":"    if identity_ignored and old_state \u003d\u003d new_state:"},{"line_number":47,"context_line":"        return False"},{"line_number":48,"context_line":"    if (old_state, new_state) in ignored_transitions:"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_b7ed2491","line":45,"in_reply_to":"1abeadc6_e5cff855","updated":"2014-08-25 17:59:20.000000000","message":"Done","commit_id":"2c6d4c3b0697f86cfe595d9528272d31cdf6047d"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"9ab6d34776c48eff38e2345fa383bb61012c26c0","unresolved":false,"context_lines":[{"line_number":71,"context_line":"VOLUME_BACKING_UP \u003d \u0027backing-up\u0027"},{"line_number":72,"context_line":"VOLUME_CREATING \u003d \u0027creating\u0027"},{"line_number":73,"context_line":"VOLUME_DELETING \u003d \u0027deleting\u0027"},{"line_number":74,"context_line":"VOLUME_DETATCHING \u003d \u0027detaching\u0027"},{"line_number":75,"context_line":"VOLUME_DOWNLOADING \u003d \u0027downloading\u0027"},{"line_number":76,"context_line":"VOLUME_ERROR \u003d \u0027error\u0027"},{"line_number":77,"context_line":"VOLUME_ERROR_ATTACHING \u003d \u0027error_attaching\u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_852f24f6","line":74,"updated":"2014-08-25 11:35:23.000000000","message":"VOLUME_DETACHING","commit_id":"2c6d4c3b0697f86cfe595d9528272d31cdf6047d"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"67f3fdb4b14d83cbbacd12dd622b1ee2484dbed5","unresolved":false,"context_lines":[{"line_number":71,"context_line":"VOLUME_BACKING_UP \u003d \u0027backing-up\u0027"},{"line_number":72,"context_line":"VOLUME_CREATING \u003d \u0027creating\u0027"},{"line_number":73,"context_line":"VOLUME_DELETING \u003d \u0027deleting\u0027"},{"line_number":74,"context_line":"VOLUME_DETATCHING \u003d \u0027detaching\u0027"},{"line_number":75,"context_line":"VOLUME_DOWNLOADING \u003d \u0027downloading\u0027"},{"line_number":76,"context_line":"VOLUME_ERROR \u003d \u0027error\u0027"},{"line_number":77,"context_line":"VOLUME_ERROR_ATTACHING \u003d \u0027error_attaching\u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_17e25803","line":74,"in_reply_to":"1abeadc6_852f24f6","updated":"2014-08-25 17:56:56.000000000","message":"Done","commit_id":"2c6d4c3b0697f86cfe595d9528272d31cdf6047d"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"9ab6d34776c48eff38e2345fa383bb61012c26c0","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    # which *parent* state machine to jump back into on exit of these"},{"line_number":117,"context_line":"    # transitions); since we want to restrict what happens when DETACHING fails"},{"line_number":118,"context_line":"    # and only allow transition back into the IN_USE state (and not to other"},{"line_number":119,"context_line":"    # states...)."},{"line_number":120,"context_line":"    (VOLUME_ATTACHING, VOLUME_IN_USE),"},{"line_number":121,"context_line":"    (VOLUME_ATTACHING, VOLUME_ERROR_ATTACHING),"},{"line_number":122,"context_line":"    (VOLUME_IN_USE, VOLUME_DETATCHING),"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_25573028","line":119,"updated":"2014-08-25 11:35:23.000000000","message":"Why can\u0027t we use an adjacency list representation rather than enumerating all valid edges?\n\n{\n\nVOLUME_ATTACHING: (VOLUME_IN_USE, VOLUME_ERROR_ATTACHING)\n\n}","commit_id":"2c6d4c3b0697f86cfe595d9528272d31cdf6047d"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"67f3fdb4b14d83cbbacd12dd622b1ee2484dbed5","unresolved":false,"context_lines":[{"line_number":116,"context_line":"    # which *parent* state machine to jump back into on exit of these"},{"line_number":117,"context_line":"    # transitions); since we want to restrict what happens when DETACHING fails"},{"line_number":118,"context_line":"    # and only allow transition back into the IN_USE state (and not to other"},{"line_number":119,"context_line":"    # states...)."},{"line_number":120,"context_line":"    (VOLUME_ATTACHING, VOLUME_IN_USE),"},{"line_number":121,"context_line":"    (VOLUME_ATTACHING, VOLUME_ERROR_ATTACHING),"},{"line_number":122,"context_line":"    (VOLUME_IN_USE, VOLUME_DETATCHING),"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_37d034f7","line":119,"in_reply_to":"1abeadc6_25573028","updated":"2014-08-25 17:56:56.000000000","message":"Could, although either seems fine with me, I\u0027d rather have a valid set vs care about how it\u0027s represented (at least initially).","commit_id":"2c6d4c3b0697f86cfe595d9528272d31cdf6047d"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"9ab6d34776c48eff38e2345fa383bb61012c26c0","unresolved":false,"context_lines":[{"line_number":120,"context_line":"    (VOLUME_ATTACHING, VOLUME_IN_USE),"},{"line_number":121,"context_line":"    (VOLUME_ATTACHING, VOLUME_ERROR_ATTACHING),"},{"line_number":122,"context_line":"    (VOLUME_IN_USE, VOLUME_DETATCHING),"},{"line_number":123,"context_line":"    (VOLUME_DETATCHING, VOLUME_ERROR_DETACHING),"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    (VOLUME_CREATING, VOLUME_AVAILABLE),"},{"line_number":126,"context_line":"    (VOLUME_CREATING, VOLUME_DOWNLOADING),"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_252e50a6","line":123,"updated":"2014-08-25 11:35:23.000000000","message":"Don\u0027t we have a transition from detaching to in-use?","commit_id":"2c6d4c3b0697f86cfe595d9528272d31cdf6047d"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"5d8a2a31643a2ac01523100d7299e4c697d31ff3","unresolved":false,"context_lines":[{"line_number":120,"context_line":"    (VOLUME_ATTACHING, VOLUME_IN_USE),"},{"line_number":121,"context_line":"    (VOLUME_ATTACHING, VOLUME_ERROR_ATTACHING),"},{"line_number":122,"context_line":"    (VOLUME_IN_USE, VOLUME_DETATCHING),"},{"line_number":123,"context_line":"    (VOLUME_DETATCHING, VOLUME_ERROR_DETACHING),"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    (VOLUME_CREATING, VOLUME_AVAILABLE),"},{"line_number":126,"context_line":"    (VOLUME_CREATING, VOLUME_DOWNLOADING),"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_281c656a","line":123,"in_reply_to":"1abeadc6_252e50a6","updated":"2014-08-25 11:37:32.000000000","message":"Sorry, I meant to say \u0027detaching to available\u0027.","commit_id":"2c6d4c3b0697f86cfe595d9528272d31cdf6047d"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"67f3fdb4b14d83cbbacd12dd622b1ee2484dbed5","unresolved":false,"context_lines":[{"line_number":120,"context_line":"    (VOLUME_ATTACHING, VOLUME_IN_USE),"},{"line_number":121,"context_line":"    (VOLUME_ATTACHING, VOLUME_ERROR_ATTACHING),"},{"line_number":122,"context_line":"    (VOLUME_IN_USE, VOLUME_DETATCHING),"},{"line_number":123,"context_line":"    (VOLUME_DETATCHING, VOLUME_ERROR_DETACHING),"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    (VOLUME_CREATING, VOLUME_AVAILABLE),"},{"line_number":126,"context_line":"    (VOLUME_CREATING, VOLUME_DOWNLOADING),"}],"source_content_type":"text/x-python","patch_set":14,"id":"1abeadc6_b72a84e5","line":123,"in_reply_to":"1abeadc6_281c656a","updated":"2014-08-25 17:56:56.000000000","message":"Would make sense.","commit_id":"2c6d4c3b0697f86cfe595d9528272d31cdf6047d"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e274383bc2c378c5edd899d39096364cdc059f09","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                             ignored_transitions\u003dignored_transitions)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"# All the known \u0027volume\u0027 states \u0026 transitions that are allowed."},{"line_number":72,"context_line":"VOLUME_ATTACHING \u003d \u0027attaching\u0027"},{"line_number":73,"context_line":"VOLUME_AVAILABLE \u003d \u0027available\u0027"},{"line_number":74,"context_line":"VOLUME_BACKING_UP \u003d \u0027backing-up\u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"da9df570_42fd856d","line":71,"updated":"2014-09-26 05:26:13.000000000","message":"There are states used for consistency groups as well.  Currently I\u0027m just re-using the volume states \u0027creating\u0027, \u0027deleting\u0027, \u0027available\u0027, \u0027error\u0027. So it is probably ok. I\u0027m just wondering if we should define CG_AVAILABLE, CG_ERROR etc.","commit_id":"b05c6acf9c422ea29e44ca6898a7dbd6f038584f"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"df4f1cb20532eff43d8ba77e851cd42bf73593bd","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                             ignored_transitions\u003dignored_transitions)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"# All the known \u0027volume\u0027 states \u0026 transitions that are allowed."},{"line_number":72,"context_line":"VOLUME_ATTACHING \u003d \u0027attaching\u0027"},{"line_number":73,"context_line":"VOLUME_AVAILABLE \u003d \u0027available\u0027"},{"line_number":74,"context_line":"VOLUME_BACKING_UP \u003d \u0027backing-up\u0027"}],"source_content_type":"text/x-python","patch_set":16,"id":"baa201ad_680c2e3c","line":71,"in_reply_to":"da9df570_42fd856d","updated":"2014-10-15 15:33:47.000000000","message":"Snapshots, backups, and probably other entities have states too. I think this piece of work currently only covers volumes. Doesn\u0027t mean it couldn\u0027t / shouldn\u0027t be extended in future","commit_id":"b05c6acf9c422ea29e44ca6898a7dbd6f038584f"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"e274383bc2c378c5edd899d39096364cdc059f09","unresolved":false,"context_lines":[{"line_number":320,"context_line":"    except (ValueError, excp.InvalidTransition) as e:"},{"line_number":321,"context_line":"        if quiet:"},{"line_number":322,"context_line":"            LOG.warn(_(\"Invalid/unknown \u0027attach\u0027 state transition attempted:\""},{"line_number":323,"context_line":"                       \" %(details)s\") % ({\u0027details\u0027: e}))"},{"line_number":324,"context_line":"            return True"},{"line_number":325,"context_line":"        else:"},{"line_number":326,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":16,"id":"da9df570_827e8d17","line":323,"updated":"2014-09-26 05:26:13.000000000","message":"six.text_type(e)","commit_id":"b05c6acf9c422ea29e44ca6898a7dbd6f038584f"},{"author":{"_account_id":1736,"name":"Ivan Kolodyazhny","email":"e0ne@e0ne.info","username":"e0ne"},"change_message_id":"ff004bb77fbb781ccd07ddadbca8f3d4c17b0ad2","unresolved":false,"context_lines":[{"line_number":15,"context_line":"import os"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"try:"},{"line_number":18,"context_line":"    import pydot"},{"line_number":19,"context_line":"    # To get this installed you may have to follow:"},{"line_number":20,"context_line":"    # https://code.google.com/p/pydot/issues/detail?id\u003d93 (until fixed)."},{"line_number":21,"context_line":"    PYDOT_AVAILABLE \u003d True"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a961159_eaa5b99f","line":18,"updated":"2015-01-13 13:06:21.000000000","message":"Need to add pydot to requirements","commit_id":"bf723989554e87a4924e86c3b76b1fa8042ae7c0"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"3d98106396e1cc3bbae125bff488bda105737d23","unresolved":false,"context_lines":[{"line_number":220,"context_line":"    except (ValueError, excp.InvalidTransition) as e:"},{"line_number":221,"context_line":"        if quiet:"},{"line_number":222,"context_line":"            LOG.warn(_(\"Invalid/unknown \u0027volume\u0027 state transition attempted:\""},{"line_number":223,"context_line":"                       \" %(details)s\") % ({\u0027details\u0027: e}))"},{"line_number":224,"context_line":"            return True"},{"line_number":225,"context_line":"        else:"},{"line_number":226,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a961159_c6252d5d","line":223,"updated":"2015-01-05 17:32:09.000000000","message":"As per below link [1] use _LW, _LE, LI for LOG messages.\n\n[1] http://docs.openstack.org/developer/oslo.i18n/guidelines.html\n\nAnd also replace \u0027%\u0027 with \u0027,\u0027","commit_id":"bf723989554e87a4924e86c3b76b1fa8042ae7c0"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"3d98106396e1cc3bbae125bff488bda105737d23","unresolved":false,"context_lines":[{"line_number":279,"context_line":"    except (ValueError, excp.InvalidTransition) as e:"},{"line_number":280,"context_line":"        if quiet:"},{"line_number":281,"context_line":"            LOG.warn(_(\"Invalid/unknown \u0027migration\u0027 state transition\""},{"line_number":282,"context_line":"                       \" attempted: %(details)s\") % ({\u0027details\u0027: e}))"},{"line_number":283,"context_line":"            return True"},{"line_number":284,"context_line":"        else:"},{"line_number":285,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a961159_c6dc4d49","line":282,"updated":"2015-01-05 17:32:09.000000000","message":"Same as above.","commit_id":"bf723989554e87a4924e86c3b76b1fa8042ae7c0"},{"author":{"_account_id":14428,"name":"Bharat Kumar Kobagana","email":"bharath.kobagana@gmail.com","username":"bharatkk"},"change_message_id":"3d98106396e1cc3bbae125bff488bda105737d23","unresolved":false,"context_lines":[{"line_number":320,"context_line":"    except (ValueError, excp.InvalidTransition) as e:"},{"line_number":321,"context_line":"        if quiet:"},{"line_number":322,"context_line":"            LOG.warn(_(\"Invalid/unknown \u0027attach\u0027 state transition attempted:\""},{"line_number":323,"context_line":"                       \" %(details)s\") % ({\u0027details\u0027: e}))"},{"line_number":324,"context_line":"            return True"},{"line_number":325,"context_line":"        else:"},{"line_number":326,"context_line":"            raise"}],"source_content_type":"text/x-python","patch_set":22,"id":"3a961159_e6df8938","line":323,"updated":"2015-01-05 17:32:09.000000000","message":"Same as above.","commit_id":"bf723989554e87a4924e86c3b76b1fa8042ae7c0"}]}
