)]}'
{"cinder/keymgr/key.py":[{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"22861c00da1eafdb778ff154702285cf4c00fece","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    @abc.abstractmethod"},{"line_number":35,"context_line":"    def get_algorithm(self):"},{"line_number":36,"context_line":"        \"\"\"Returns this key\u0027s algorithm. For example, \"DSA\" would indicate"},{"line_number":37,"context_line":"        that this key is a DSA key."},{"line_number":38,"context_line":"        \"\"\""},{"line_number":39,"context_line":"        pass"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FJsU%3D","line":37,"updated":"2013-08-06 11:01:37.000000000","message":"Fix multi-line docstring.  See here: https://github.com/openstack-dev/hacking/blob/master/HACKING.rst","commit_id":"2df737bfb39f43bfa37814087446aefc135bc3e5"},{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"b15b7e13b6ac528d38aadb17af8b21f417409a2f","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    @abc.abstractmethod"},{"line_number":35,"context_line":"    def get_algorithm(self):"},{"line_number":36,"context_line":"        \"\"\"Returns this key\u0027s algorithm. For example, \"DSA\" would indicate"},{"line_number":37,"context_line":"        that this key is a DSA key."},{"line_number":38,"context_line":"        \"\"\""},{"line_number":39,"context_line":"        pass"},{"line_number":40,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FJa0%3D","line":37,"in_reply_to":"AAAAQn%2F%2FJsU%3D","updated":"2013-08-06 13:10:00.000000000","message":"Done","commit_id":"2df737bfb39f43bfa37814087446aefc135bc3e5"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"22861c00da1eafdb778ff154702285cf4c00fece","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    @abc.abstractmethod"},{"line_number":42,"context_line":"    def get_format(self):"},{"line_number":43,"context_line":"        \"\"\"Returns the encoding format of this key or None if this key is not"},{"line_number":44,"context_line":"        encoded."},{"line_number":45,"context_line":"        \"\"\""},{"line_number":46,"context_line":"        pass"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FJsY%3D","line":44,"updated":"2013-08-06 11:01:37.000000000","message":"Ditto.","commit_id":"2df737bfb39f43bfa37814087446aefc135bc3e5"},{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"b15b7e13b6ac528d38aadb17af8b21f417409a2f","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    @abc.abstractmethod"},{"line_number":42,"context_line":"    def get_format(self):"},{"line_number":43,"context_line":"        \"\"\"Returns the encoding format of this key or None if this key is not"},{"line_number":44,"context_line":"        encoded."},{"line_number":45,"context_line":"        \"\"\""},{"line_number":46,"context_line":"        pass"},{"line_number":47,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FJaw%3D","line":44,"in_reply_to":"AAAAQn%2F%2FJsY%3D","updated":"2013-08-06 13:10:00.000000000","message":"Done","commit_id":"2df737bfb39f43bfa37814087446aefc135bc3e5"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"22861c00da1eafdb778ff154702285cf4c00fece","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def __init__(self, alg, key):"},{"line_number":60,"context_line":"        \"\"\"Create a new SymmetricKey object. This specifies the algorithm for"},{"line_number":61,"context_line":"        the symmetric encryption and the bytes for the key."},{"line_number":62,"context_line":"        \"\"\""},{"line_number":63,"context_line":"        self.alg \u003d alg"},{"line_number":64,"context_line":"        self.key \u003d key"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FJsM%3D","line":61,"updated":"2013-08-06 11:01:37.000000000","message":"Ditto.","commit_id":"2df737bfb39f43bfa37814087446aefc135bc3e5"},{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"b15b7e13b6ac528d38aadb17af8b21f417409a2f","unresolved":false,"context_lines":[{"line_number":58,"context_line":""},{"line_number":59,"context_line":"    def __init__(self, alg, key):"},{"line_number":60,"context_line":"        \"\"\"Create a new SymmetricKey object. This specifies the algorithm for"},{"line_number":61,"context_line":"        the symmetric encryption and the bytes for the key."},{"line_number":62,"context_line":"        \"\"\""},{"line_number":63,"context_line":"        self.alg \u003d alg"},{"line_number":64,"context_line":"        self.key \u003d key"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FJas%3D","line":61,"in_reply_to":"AAAAQn%2F%2FJsM%3D","updated":"2013-08-06 13:10:00.000000000","message":"Done","commit_id":"2df737bfb39f43bfa37814087446aefc135bc3e5"}],"cinder/tests/keymgr/mock_key_mgr.py":[{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"22861c00da1eafdb778ff154702285cf4c00fece","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        \"\"\"Stores (i.e., registers) a key with the key manager."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        This implementation does nothing -- i.e., the specified key is"},{"line_number":74,"context_line":"        discarded."},{"line_number":75,"context_line":"        \"\"\""},{"line_number":76,"context_line":"        if ctxt is None:"},{"line_number":77,"context_line":"            raise exception.NotAuthorized()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FJrE%3D","line":74,"updated":"2013-08-06 11:01:37.000000000","message":"The key isn\u0027t discarded, it\u0027s stored in self.keys","commit_id":"2df737bfb39f43bfa37814087446aefc135bc3e5"},{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"b15b7e13b6ac528d38aadb17af8b21f417409a2f","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        \"\"\"Stores (i.e., registers) a key with the key manager."},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        This implementation does nothing -- i.e., the specified key is"},{"line_number":74,"context_line":"        discarded."},{"line_number":75,"context_line":"        \"\"\""},{"line_number":76,"context_line":"        if ctxt is None:"},{"line_number":77,"context_line":"            raise exception.NotAuthorized()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FJZk%3D","line":74,"in_reply_to":"AAAAQn%2F%2FJrE%3D","updated":"2013-08-06 13:10:00.000000000","message":"Comment corrected.","commit_id":"2df737bfb39f43bfa37814087446aefc135bc3e5"}],"cinder/tests/keymgr/test_key.py":[{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"22861c00da1eafdb778ff154702285cf4c00fece","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        self.algorithm \u003d \u0027AES\u0027"},{"line_number":46,"context_line":"        self.encoded \u003d array.array(\u0027B\u0027, (\u00270\u0027 * 64).decode(\u0027hex\u0027)).tolist()"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        super(SymmetricKeyTestCase, self).setUp()"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def test_get_algorithm(self):"},{"line_number":51,"context_line":"        self.assertEquals(self.key.get_algorithm(), self.algorithm)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FJqw%3D","line":48,"updated":"2013-08-06 11:01:37.000000000","message":"I would call this at the beginning of the function, it is customary and there is no reason not to. Also no need for the extra line break.","commit_id":"2df737bfb39f43bfa37814087446aefc135bc3e5"},{"author":{"_account_id":4355,"name":"Avishay Traeger","email":"avishay@stratoscale.com","username":"avishay-il"},"change_message_id":"f1cbf88002390d297135a65e68916995e0567ccf","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        self.algorithm \u003d \u0027AES\u0027"},{"line_number":46,"context_line":"        self.encoded \u003d array.array(\u0027B\u0027, (\u00270\u0027 * 64).decode(\u0027hex\u0027)).tolist()"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        super(SymmetricKeyTestCase, self).setUp()"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def test_get_algorithm(self):"},{"line_number":51,"context_line":"        self.assertEquals(self.key.get_algorithm(), self.algorithm)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FJHw%3D","line":48,"in_reply_to":"AAAAQn%2F%2FJbg%3D","updated":"2013-08-06 14:40:57.000000000","message":"Ah OK, I missed that.  No problem then!","commit_id":"2df737bfb39f43bfa37814087446aefc135bc3e5"},{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"b15b7e13b6ac528d38aadb17af8b21f417409a2f","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        self.algorithm \u003d \u0027AES\u0027"},{"line_number":46,"context_line":"        self.encoded \u003d array.array(\u0027B\u0027, (\u00270\u0027 * 64).decode(\u0027hex\u0027)).tolist()"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"        super(SymmetricKeyTestCase, self).setUp()"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    def test_get_algorithm(self):"},{"line_number":51,"context_line":"        self.assertEquals(self.key.get_algorithm(), self.algorithm)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2FJbg%3D","line":48,"in_reply_to":"AAAAQn%2F%2FJqw%3D","updated":"2013-08-06 13:10:00.000000000","message":"The _create_key method currently requires the algorithm and encoding to be set, which is why it\u0027s invoked at the end of the method. I\u0027m happy to refactor if there\u0027s a different pattern that should be followed.","commit_id":"2df737bfb39f43bfa37814087446aefc135bc3e5"}]}
