)]}'
{"shade/__init__.py":[{"author":{"_account_id":1,"name":"James E. Blair","email":"jim@acmegating.com","username":"corvus"},"change_message_id":"bd7f25eac96b404bea666238de0177466a7f7cb7","unresolved":false,"context_lines":[{"line_number":842,"context_line":"            return [p for p, a in OBJECT_CONTAINER_ACLS.items()"},{"line_number":843,"context_line":"                    if acl \u003d\u003d a].pop()"},{"line_number":844,"context_line":"        except IndexError:"},{"line_number":845,"context_line":"            return \u0027unknown\u0027"},{"line_number":846,"context_line":""},{"line_number":847,"context_line":"    def _get_file_hashes(self, filename):"},{"line_number":848,"context_line":"        if filename not in self._file_hash_cache:"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_8f3955f4","line":845,"updated":"2015-02-04 17:45:02.000000000","message":"Maybe this should be an exception, None, or some other constant?","commit_id":"6e1b1b1b23a2aa1fe73040163010fc677cd40926"},{"author":{"_account_id":2,"name":"Monty Taylor","email":"mordred@inaugust.com","username":"mordred"},"change_message_id":"40cc1752877113fd8a0a3cad79c4dfa295954aa5","unresolved":false,"context_lines":[{"line_number":842,"context_line":"            return [p for p, a in OBJECT_CONTAINER_ACLS.items()"},{"line_number":843,"context_line":"                    if acl \u003d\u003d a].pop()"},{"line_number":844,"context_line":"        except IndexError:"},{"line_number":845,"context_line":"            return \u0027unknown\u0027"},{"line_number":846,"context_line":""},{"line_number":847,"context_line":"    def _get_file_hashes(self, filename):"},{"line_number":848,"context_line":"        if filename not in self._file_hash_cache:"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_3406fd1d","line":845,"in_reply_to":"da86d52c_8f3955f4","updated":"2015-02-04 18:55:20.000000000","message":"Agree. I could see an argument for either None or an exception.","commit_id":"6e1b1b1b23a2aa1fe73040163010fc677cd40926"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"727c2b97a306e7af0e6e2136243716056dbad034","unresolved":false,"context_lines":[{"line_number":840,"context_line":"        acl \u003d container.get(\u0027x-container-read\u0027, \u0027\u0027)"},{"line_number":841,"context_line":"        try:"},{"line_number":842,"context_line":"            return [p for p, a in OBJECT_CONTAINER_ACLS.items()"},{"line_number":843,"context_line":"                    if acl \u003d\u003d a].pop()"},{"line_number":844,"context_line":"        except IndexError:"},{"line_number":845,"context_line":"            raise OpenStackCloudException("},{"line_number":846,"context_line":"                \"Could not determine container access for ACL: %s.\" % acl)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_7cdc7847","line":843,"updated":"2015-02-07 00:06:59.000000000","message":"Couldn\u0027t this be just OBJECT_CONTAINER_ACLS.get(acl, None) ?","commit_id":"d28b2edc32e0f28c5187f0e4a439504f7580cfc2"},{"author":{"_account_id":1420,"name":"Adam Gandelman","email":"adamg@ubuntu.com","username":"gandelman-a"},"change_message_id":"59e5a793ae33f1631a252bbcc0ffc549cc407bb3","unresolved":false,"context_lines":[{"line_number":840,"context_line":"        acl \u003d container.get(\u0027x-container-read\u0027, \u0027\u0027)"},{"line_number":841,"context_line":"        try:"},{"line_number":842,"context_line":"            return [p for p, a in OBJECT_CONTAINER_ACLS.items()"},{"line_number":843,"context_line":"                    if acl \u003d\u003d a].pop()"},{"line_number":844,"context_line":"        except IndexError:"},{"line_number":845,"context_line":"            raise OpenStackCloudException("},{"line_number":846,"context_line":"                \"Could not determine container access for ACL: %s.\" % acl)"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_a06ddece","line":843,"in_reply_to":"da86d52c_7cdc7847","updated":"2015-02-07 08:39:48.000000000","message":"This is getting key by value, not the value by key.  There may well be a better way to express that, though.  Open to suggestions.","commit_id":"d28b2edc32e0f28c5187f0e4a439504f7580cfc2"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"727c2b97a306e7af0e6e2136243716056dbad034","unresolved":false,"context_lines":[{"line_number":910,"context_line":""},{"line_number":911,"context_line":"    def delete_object(self, container, name):"},{"line_number":912,"context_line":"        if not self.get_object_metadata(container, name):"},{"line_number":913,"context_line":"            return"},{"line_number":914,"context_line":"        try:"},{"line_number":915,"context_line":"            self.swift_client.delete_object(container, name)"},{"line_number":916,"context_line":"        except swift_exceptions.ClientException as e:"}],"source_content_type":"text/x-python","patch_set":7,"id":"da86d52c_9ce12c01","line":913,"updated":"2015-02-07 00:06:59.000000000","message":"Wouldn\u0027t it reduce a round trip to try to delete the object and if it doesn\u0027t exist return a different error than if deletion failed?","commit_id":"d28b2edc32e0f28c5187f0e4a439504f7580cfc2"}]}
