)]}'
{"zaqar/api/v1_1/endpoints.py":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"b4d45f79d096a3cd2e3de3d8bfd7539671e7cd33","unresolved":false,"context_lines":[{"line_number":253,"context_line":"            kwargs[\u0027marker\u0027] \u003d req._body.get(\u0027marker\u0027)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        if req._body.get(\u0027limit\u0027) is not None:"},{"line_number":256,"context_line":"            kwargs[\u0027limit\u0027] \u003d int(req._body.get(\u0027limit\u0027))"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        if req._body.get(\u0027echo\u0027) is not None:"},{"line_number":259,"context_line":"            kwargs[\u0027echo\u0027] \u003d \u0027true\u0027 \u003d\u003d req._body.get(\u0027echo\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da9b358b_ccf3809d","line":256,"updated":"2015-04-01 07:07:25.000000000","message":"I think we should capture ValueError here and return 400","commit_id":"6d2a220eb9ca38f95a20572e0a8d89fcff9c2588"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"9f346fea6bfb6b02e19a706158de21b4d3a3025e","unresolved":false,"context_lines":[{"line_number":253,"context_line":"            kwargs[\u0027marker\u0027] \u003d req._body.get(\u0027marker\u0027)"},{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        if req._body.get(\u0027limit\u0027) is not None:"},{"line_number":256,"context_line":"            kwargs[\u0027limit\u0027] \u003d int(req._body.get(\u0027limit\u0027))"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        if req._body.get(\u0027echo\u0027) is not None:"},{"line_number":259,"context_line":"            kwargs[\u0027echo\u0027] \u003d \u0027true\u0027 \u003d\u003d req._body.get(\u0027echo\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa041b7_1191c8f0","line":256,"in_reply_to":"da9b358b_ccf3809d","updated":"2015-04-02 15:45:47.000000000","message":"The cast is being done because the request has a JSON body and it may be a string. In which case you think we should capture a ValueError?","commit_id":"6d2a220eb9ca38f95a20572e0a8d89fcff9c2588"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"d53eb9831bef9e081761456036eeba1b36aa68bb","unresolved":false,"context_lines":[{"line_number":259,"context_line":"            kwargs[\u0027echo\u0027] \u003d \u0027true\u0027 \u003d\u003d req._body.get(\u0027echo\u0027)"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        if req._body.get(\u0027include_claimed\u0027) is not None:"},{"line_number":262,"context_line":"            kwargs[\u0027include_claimed\u0027] \u003d (\u0027true\u0027 \u003d\u003d"},{"line_number":263,"context_line":"                                         req._body.get(\u0027include_claimed\u0027))"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"da9b358b_68d58ab7","line":262,"updated":"2015-04-01 03:49:55.000000000","message":"Should we cover the case if it passes in \u0027True\u0027?","commit_id":"6d2a220eb9ca38f95a20572e0a8d89fcff9c2588"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"b4d45f79d096a3cd2e3de3d8bfd7539671e7cd33","unresolved":false,"context_lines":[{"line_number":259,"context_line":"            kwargs[\u0027echo\u0027] \u003d \u0027true\u0027 \u003d\u003d req._body.get(\u0027echo\u0027)"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        if req._body.get(\u0027include_claimed\u0027) is not None:"},{"line_number":262,"context_line":"            kwargs[\u0027include_claimed\u0027] \u003d (\u0027true\u0027 \u003d\u003d"},{"line_number":263,"context_line":"                                         req._body.get(\u0027include_claimed\u0027))"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"da9b358b_acd71cec","line":262,"in_reply_to":"da9b358b_68d58ab7","updated":"2015-04-01 07:07:25.000000000","message":"There\u0027s an utility for this in oslo_utils: https://github.com/openstack/oslo.utils/blob/master/oslo_utils/strutils.py#L109","commit_id":"6d2a220eb9ca38f95a20572e0a8d89fcff9c2588"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"9f346fea6bfb6b02e19a706158de21b4d3a3025e","unresolved":false,"context_lines":[{"line_number":259,"context_line":"            kwargs[\u0027echo\u0027] \u003d \u0027true\u0027 \u003d\u003d req._body.get(\u0027echo\u0027)"},{"line_number":260,"context_line":""},{"line_number":261,"context_line":"        if req._body.get(\u0027include_claimed\u0027) is not None:"},{"line_number":262,"context_line":"            kwargs[\u0027include_claimed\u0027] \u003d (\u0027true\u0027 \u003d\u003d"},{"line_number":263,"context_line":"                                         req._body.get(\u0027include_claimed\u0027))"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa041b7_71b1348f","line":262,"in_reply_to":"da9b358b_acd71cec","updated":"2015-04-02 15:45:47.000000000","message":"Done","commit_id":"6d2a220eb9ca38f95a20572e0a8d89fcff9c2588"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"f2d4c9a08d0fa76a8b12f1d8ba947dcbdfd296f9","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations under"},{"line_number":13,"context_line":"# the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import oslo_utils.strutils as str_utils"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from zaqar.common.api import errors as api_errors"},{"line_number":18,"context_line":"from zaqar.common.api import response"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_087e87ae","line":15,"updated":"2015-06-01 16:28:14.000000000","message":"Any reason not to do \"from oslo_utils import strutils\" ?","commit_id":"cd7ae5d74785a6151754bfe9631c4ec127d3bbc8"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"075d722d7aede43f4766c686eab3e2a7e66d6b7b","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations under"},{"line_number":13,"context_line":"# the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import oslo_utils.strutils as str_utils"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from zaqar.common.api import errors as api_errors"},{"line_number":18,"context_line":"from zaqar.common.api import response"}],"source_content_type":"text/x-python","patch_set":7,"id":"3afb71cf_8206b91e","line":15,"in_reply_to":"5afe65bd_087e87ae","updated":"2015-06-10 07:27:00.000000000","message":"Oops, yeah... no reason.","commit_id":"cd7ae5d74785a6151754bfe9631c4ec127d3bbc8"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"f2d4c9a08d0fa76a8b12f1d8ba947dcbdfd296f9","unresolved":false,"context_lines":[{"line_number":299,"context_line":"            return api_utils.error_response(req, ex, headers, error)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        if not messages:"},{"line_number":302,"context_line":"            messages \u003d []"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        else:"},{"line_number":305,"context_line":"            # Found some messages, so prepare the response"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_a83ad3e5","line":302,"updated":"2015-06-01 16:28:14.000000000","message":"I don\u0027t think that clause is useful, considering messages is already a list.","commit_id":"cd7ae5d74785a6151754bfe9631c4ec127d3bbc8"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"075d722d7aede43f4766c686eab3e2a7e66d6b7b","unresolved":false,"context_lines":[{"line_number":299,"context_line":"            return api_utils.error_response(req, ex, headers, error)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        if not messages:"},{"line_number":302,"context_line":"            messages \u003d []"},{"line_number":303,"context_line":""},{"line_number":304,"context_line":"        else:"},{"line_number":305,"context_line":"            # Found some messages, so prepare the response"}],"source_content_type":"text/x-python","patch_set":7,"id":"3afb71cf_ea436a11","line":302,"in_reply_to":"5afe65bd_a83ad3e5","updated":"2015-06-10 07:27:00.000000000","message":"Done","commit_id":"cd7ae5d74785a6151754bfe9631c4ec127d3bbc8"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"f2d4c9a08d0fa76a8b12f1d8ba947dcbdfd296f9","unresolved":false,"context_lines":[{"line_number":392,"context_line":"        # Prepare response"},{"line_number":393,"context_line":"        messages \u003d list(messages)"},{"line_number":394,"context_line":"        if not messages:"},{"line_number":395,"context_line":"            messages \u003d []"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"        messages \u003d [api_utils.format_message(message)"},{"line_number":398,"context_line":"                    for message in messages]"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_6b4bb52c","line":395,"updated":"2015-06-01 16:28:14.000000000","message":"Same as above.","commit_id":"cd7ae5d74785a6151754bfe9631c4ec127d3bbc8"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"f2d4c9a08d0fa76a8b12f1d8ba947dcbdfd296f9","unresolved":false,"context_lines":[{"line_number":563,"context_line":"                  {\u0027queue\u0027: queue_name, \u0027project\u0027: project_id})"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"        message_ids \u003d req._body.get(\u0027message_ids\u0027, None)"},{"line_number":566,"context_line":"        pop_limit \u003d req._body.get(\u0027pop_limit\u0027, None)"},{"line_number":567,"context_line":""},{"line_number":568,"context_line":"        try:"},{"line_number":569,"context_line":"            self._validate.message_deletion(message_ids, pop_limit)"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_6bf975c8","line":566,"updated":"2015-06-01 16:28:14.000000000","message":"You don\u0027t need the None argument when using get on dict.","commit_id":"cd7ae5d74785a6151754bfe9631c4ec127d3bbc8"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"075d722d7aede43f4766c686eab3e2a7e66d6b7b","unresolved":false,"context_lines":[{"line_number":563,"context_line":"                  {\u0027queue\u0027: queue_name, \u0027project\u0027: project_id})"},{"line_number":564,"context_line":""},{"line_number":565,"context_line":"        message_ids \u003d req._body.get(\u0027message_ids\u0027, None)"},{"line_number":566,"context_line":"        pop_limit \u003d req._body.get(\u0027pop_limit\u0027, None)"},{"line_number":567,"context_line":""},{"line_number":568,"context_line":"        try:"},{"line_number":569,"context_line":"            self._validate.message_deletion(message_ids, pop_limit)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3afb71cf_4a395ea3","line":566,"in_reply_to":"5afe65bd_6bf975c8","updated":"2015-06-10 07:27:00.000000000","message":"Done","commit_id":"cd7ae5d74785a6151754bfe9631c4ec127d3bbc8"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"710a29f9b8d1ed8a571bc87eeb16cf5ae0e82755","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            kwargs[\u0027limit\u0027] \u003d int(req._body.get(\u0027limit\u0027))"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        if req._body.get(\u0027detailed\u0027) is not None:"},{"line_number":67,"context_line":"            kwargs[\u0027detailed\u0027] \u003d strutils.bool_from_string("},{"line_number":68,"context_line":"                req._body.get(\u0027detailed\u0027))"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_ae434012","line":67,"updated":"2015-06-17 16:16:51.000000000","message":"should we catch the error here? IF someone passes something that cannot be converted to bool, the function will raise an error.","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"ff9d350a2654c91abef090751763f24bb40e8d90","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            kwargs[\u0027limit\u0027] \u003d int(req._body.get(\u0027limit\u0027))"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        if req._body.get(\u0027detailed\u0027) is not None:"},{"line_number":67,"context_line":"            kwargs[\u0027detailed\u0027] \u003d strutils.bool_from_string("},{"line_number":68,"context_line":"                req._body.get(\u0027detailed\u0027))"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_52f2ab9b","line":67,"in_reply_to":"fa32b979_ae434012","updated":"2015-06-22 18:21:59.000000000","message":"Done","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"6171eb4998710f5e70d5dd772814ba8735f0df3d","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        project_id \u003d req._headers.get(\u0027X-Project-ID\u0027)"},{"line_number":205,"context_line":"        queue_name \u003d req._body.get(\u0027queue_name\u0027)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        LOG.debug(u\u0027Queue get stats - queue: %(queue)s, \u0027"},{"line_number":208,"context_line":"                  u\u0027project: %(project)s\u0027,"},{"line_number":209,"context_line":"                  {\u0027queue\u0027: queue_name, \u0027project\u0027: project_id})"},{"line_number":210,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_137230ae","line":207,"updated":"2015-06-19 14:21:52.000000000","message":"Minor nit: Can this be \"Get queue stats\" instead?","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"ff9d350a2654c91abef090751763f24bb40e8d90","unresolved":false,"context_lines":[{"line_number":204,"context_line":"        project_id \u003d req._headers.get(\u0027X-Project-ID\u0027)"},{"line_number":205,"context_line":"        queue_name \u003d req._body.get(\u0027queue_name\u0027)"},{"line_number":206,"context_line":""},{"line_number":207,"context_line":"        LOG.debug(u\u0027Queue get stats - queue: %(queue)s, \u0027"},{"line_number":208,"context_line":"                  u\u0027project: %(project)s\u0027,"},{"line_number":209,"context_line":"                  {\u0027queue\u0027: queue_name, \u0027project\u0027: project_id})"},{"line_number":210,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_72ed6fb6","line":207,"in_reply_to":"fa32b979_137230ae","updated":"2015-06-22 18:21:59.000000000","message":"Done","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"6171eb4998710f5e70d5dd772814ba8735f0df3d","unresolved":false,"context_lines":[{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        kwargs \u003d {}"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        if req._body.get(\u0027marker\u0027) is not None:"},{"line_number":258,"context_line":"            kwargs[\u0027marker\u0027] \u003d req._body.get(\u0027marker\u0027)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        if req._body.get(\u0027limit\u0027) is not None:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_b367c4e9","line":257,"updated":"2015-06-19 14:21:52.000000000","message":"This code (pulling out headers) seems to be repeated often enough to be its own function.","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"ff9d350a2654c91abef090751763f24bb40e8d90","unresolved":false,"context_lines":[{"line_number":254,"context_line":""},{"line_number":255,"context_line":"        kwargs \u003d {}"},{"line_number":256,"context_line":""},{"line_number":257,"context_line":"        if req._body.get(\u0027marker\u0027) is not None:"},{"line_number":258,"context_line":"            kwargs[\u0027marker\u0027] \u003d req._body.get(\u0027marker\u0027)"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"        if req._body.get(\u0027limit\u0027) is not None:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_52494bcf","line":257,"in_reply_to":"fa32b979_b367c4e9","updated":"2015-06-22 18:21:59.000000000","message":"Done","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"710a29f9b8d1ed8a571bc87eeb16cf5ae0e82755","unresolved":false,"context_lines":[{"line_number":284,"context_line":"            LOG.debug(ex)"},{"line_number":285,"context_line":"            headers \u003d {\u0027status\u0027: 400}"},{"line_number":286,"context_line":"            return api_utils.error_response(req, ex, headers)"},{"line_number":287,"context_line":"        except validation.ValidationFailed as ex:"},{"line_number":288,"context_line":"            LOG.debug(ex)"},{"line_number":289,"context_line":"            headers \u003d {\u0027status\u0027: 400}"},{"line_number":290,"context_line":"            return api_utils.error_response(req, ex, headers)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_4e4dd43c","line":287,"updated":"2015-06-17 16:16:51.000000000","message":"Can we group these to 400 errors in a single except?","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"ff9d350a2654c91abef090751763f24bb40e8d90","unresolved":false,"context_lines":[{"line_number":284,"context_line":"            LOG.debug(ex)"},{"line_number":285,"context_line":"            headers \u003d {\u0027status\u0027: 400}"},{"line_number":286,"context_line":"            return api_utils.error_response(req, ex, headers)"},{"line_number":287,"context_line":"        except validation.ValidationFailed as ex:"},{"line_number":288,"context_line":"            LOG.debug(ex)"},{"line_number":289,"context_line":"            headers \u003d {\u0027status\u0027: 400}"},{"line_number":290,"context_line":"            return api_utils.error_response(req, ex, headers)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_1212e3b4","line":287,"in_reply_to":"fa32b979_4e4dd43c","updated":"2015-06-22 18:21:59.000000000","message":"Done","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"7ff41a30059b383dc9db053da2eacc9d778ee1b0","unresolved":false,"context_lines":[{"line_number":295,"context_line":"        except Exception as ex:"},{"line_number":296,"context_line":"            LOG.exception(ex)"},{"line_number":297,"context_line":"            error \u003d _(u\u0027Messages could not be listed.\u0027)"},{"line_number":298,"context_line":"            headers \u003d {\u0027status\u0027: 500}"},{"line_number":299,"context_line":"            return api_utils.error_response(req, ex, headers, error)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        if messages:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_52efe486","line":298,"updated":"2015-06-23 12:46:51.000000000","message":"Also, according to the API WG, you shouldn\u0027t explicitly return 500\u0027s, instead opting to catch errors where possible and letting the WSGI framework catch the most general case.","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"b7bd61083c1ea6ebdcc593c859c44aa7c2b93cd6","unresolved":false,"context_lines":[{"line_number":295,"context_line":"        except Exception as ex:"},{"line_number":296,"context_line":"            LOG.exception(ex)"},{"line_number":297,"context_line":"            error \u003d _(u\u0027Messages could not be listed.\u0027)"},{"line_number":298,"context_line":"            headers \u003d {\u0027status\u0027: 500}"},{"line_number":299,"context_line":"            return api_utils.error_response(req, ex, headers, error)"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":"        if messages:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_2943c343","line":298,"in_reply_to":"fa32b979_52efe486","updated":"2015-06-23 18:11:33.000000000","message":"Agree... we don\u0027t have a WSGI framework here though, we are returning a 500 just to make clear there was a server error. Maybe is there another error code more accurate? In the new patchset I removed this general exception catches and used a decorator.","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"6171eb4998710f5e70d5dd772814ba8735f0df3d","unresolved":false,"context_lines":[{"line_number":350,"context_line":"        headers \u003d {\u0027status\u0027: 200}"},{"line_number":351,"context_line":"        body \u003d {\u0027messages\u0027: message}"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"        resp \u003d response.Response(req, body, headers)"},{"line_number":354,"context_line":"        return resp"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    @api_utils.raises_conn_error"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_d364c8e6","line":353,"updated":"2015-06-19 14:21:52.000000000","message":"Why the assignment here? You can just return the response as it\u0027s instantiated.","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"ff9d350a2654c91abef090751763f24bb40e8d90","unresolved":false,"context_lines":[{"line_number":350,"context_line":"        headers \u003d {\u0027status\u0027: 200}"},{"line_number":351,"context_line":"        body \u003d {\u0027messages\u0027: message}"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"        resp \u003d response.Response(req, body, headers)"},{"line_number":354,"context_line":"        return resp"},{"line_number":355,"context_line":""},{"line_number":356,"context_line":"    @api_utils.raises_conn_error"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_d20b1b7c","line":353,"in_reply_to":"fa32b979_d364c8e6","updated":"2015-06-22 18:21:59.000000000","message":"Done","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"6171eb4998710f5e70d5dd772814ba8735f0df3d","unresolved":false,"context_lines":[{"line_number":380,"context_line":"            LOG.debug(ex)"},{"line_number":381,"context_line":"            headers \u003d {\u0027status\u0027: 400}"},{"line_number":382,"context_line":"            return api_utils.error_response(req, ex, headers)"},{"line_number":383,"context_line":"        except Exception as ex:"},{"line_number":384,"context_line":"            LOG.exception(ex)"},{"line_number":385,"context_line":"            error \u003d _(u\u0027Message could not be retrieved.\u0027)"},{"line_number":386,"context_line":"            headers \u003d {\u0027status\u0027: 500}"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_73613cd3","line":383,"updated":"2015-06-19 14:21:52.000000000","message":"This would make a nice decorator, rather than being repeated in each call.","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"ff9d350a2654c91abef090751763f24bb40e8d90","unresolved":false,"context_lines":[{"line_number":380,"context_line":"            LOG.debug(ex)"},{"line_number":381,"context_line":"            headers \u003d {\u0027status\u0027: 400}"},{"line_number":382,"context_line":"            return api_utils.error_response(req, ex, headers)"},{"line_number":383,"context_line":"        except Exception as ex:"},{"line_number":384,"context_line":"            LOG.exception(ex)"},{"line_number":385,"context_line":"            error \u003d _(u\u0027Message could not be retrieved.\u0027)"},{"line_number":386,"context_line":"            headers \u003d {\u0027status\u0027: 500}"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_b2abf71d","line":383,"in_reply_to":"fa32b979_73613cd3","updated":"2015-06-22 18:21:59.000000000","message":"Agree!","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"6171eb4998710f5e70d5dd772814ba8735f0df3d","unresolved":false,"context_lines":[{"line_number":394,"context_line":"        headers \u003d {\u0027status\u0027: 200}"},{"line_number":395,"context_line":"        body \u003d {\u0027messages\u0027: messages}"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"        resp \u003d response.Response(req, body, headers)"},{"line_number":398,"context_line":"        return resp"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"    @api_utils.raises_conn_error"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_935e4011","line":397,"updated":"2015-06-19 14:21:52.000000000","message":"Same assignment vs. direct return nit.","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"ff9d350a2654c91abef090751763f24bb40e8d90","unresolved":false,"context_lines":[{"line_number":394,"context_line":"        headers \u003d {\u0027status\u0027: 200}"},{"line_number":395,"context_line":"        body \u003d {\u0027messages\u0027: messages}"},{"line_number":396,"context_line":""},{"line_number":397,"context_line":"        resp \u003d response.Response(req, body, headers)"},{"line_number":398,"context_line":"        return resp"},{"line_number":399,"context_line":""},{"line_number":400,"context_line":"    @api_utils.raises_conn_error"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_3266072a","line":397,"in_reply_to":"fa32b979_935e4011","updated":"2015-06-22 18:21:59.000000000","message":"Done","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"710a29f9b8d1ed8a571bc87eeb16cf5ae0e82755","unresolved":false,"context_lines":[{"line_number":456,"context_line":"            LOG.debug(ex)"},{"line_number":457,"context_line":"            headers \u003d {\u0027status\u0027: 400}"},{"line_number":458,"context_line":"            return api_utils.error_response(req, ex, headers)"},{"line_number":459,"context_line":"        except validation.ValidationFailed as ex:"},{"line_number":460,"context_line":"            LOG.debug(ex)"},{"line_number":461,"context_line":"            headers \u003d {\u0027status\u0027: 400}"},{"line_number":462,"context_line":"            return api_utils.error_response(req, ex, headers)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_6e4a1828","line":459,"updated":"2015-06-17 16:16:51.000000000","message":"ditto","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"710a29f9b8d1ed8a571bc87eeb16cf5ae0e82755","unresolved":false,"context_lines":[{"line_number":467,"context_line":"        except storage_errors.MessageConflict as ex:"},{"line_number":468,"context_line":"            LOG.exception(ex)"},{"line_number":469,"context_line":"            error \u003d _(u\u0027No messages could be enqueued.\u0027)"},{"line_number":470,"context_line":"            headers \u003d {\u0027status\u0027: 500}"},{"line_number":471,"context_line":"            return api_utils.error_response(req, ex, headers, error)"},{"line_number":472,"context_line":"        except Exception as ex:"},{"line_number":473,"context_line":"            LOG.exception(ex)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_0e534ce3","line":470,"updated":"2015-06-17 16:16:51.000000000","message":"Do we raise 500 in the wsgi transport for this? I wonder if it\u0027d be better raising a different status code.","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"6171eb4998710f5e70d5dd772814ba8735f0df3d","unresolved":false,"context_lines":[{"line_number":467,"context_line":"        except storage_errors.MessageConflict as ex:"},{"line_number":468,"context_line":"            LOG.exception(ex)"},{"line_number":469,"context_line":"            error \u003d _(u\u0027No messages could be enqueued.\u0027)"},{"line_number":470,"context_line":"            headers \u003d {\u0027status\u0027: 500}"},{"line_number":471,"context_line":"            return api_utils.error_response(req, ex, headers, error)"},{"line_number":472,"context_line":"        except Exception as ex:"},{"line_number":473,"context_line":"            LOG.exception(ex)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_339ad4c6","line":470,"updated":"2015-06-19 14:21:52.000000000","message":"This certainly sounds like a 4XX status code, since it isn\u0027t an unexpected error, we expect that sometimes a message won\u0027t be able to be stored.","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"ff9d350a2654c91abef090751763f24bb40e8d90","unresolved":false,"context_lines":[{"line_number":467,"context_line":"        except storage_errors.MessageConflict as ex:"},{"line_number":468,"context_line":"            LOG.exception(ex)"},{"line_number":469,"context_line":"            error \u003d _(u\u0027No messages could be enqueued.\u0027)"},{"line_number":470,"context_line":"            headers \u003d {\u0027status\u0027: 500}"},{"line_number":471,"context_line":"            return api_utils.error_response(req, ex, headers, error)"},{"line_number":472,"context_line":"        except Exception as ex:"},{"line_number":473,"context_line":"            LOG.exception(ex)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_522f0ba1","line":470,"in_reply_to":"fa32b979_339ad4c6","updated":"2015-06-22 18:21:59.000000000","message":"That is how we do it for WSGI. I agree with your comments though. https://github.com/openstack/zaqar/blob/master/zaqar/transport/wsgi/v1_1/messages.py#L196","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"710a29f9b8d1ed8a571bc87eeb16cf5ae0e82755","unresolved":false,"context_lines":[{"line_number":471,"context_line":"            return api_utils.error_response(req, ex, headers, error)"},{"line_number":472,"context_line":"        except Exception as ex:"},{"line_number":473,"context_line":"            LOG.exception(ex)"},{"line_number":474,"context_line":"            error \u003d _(u\u0027Messages could not be enqueued.\u0027)"},{"line_number":475,"context_line":"            headers \u003d {\u0027status\u0027: 500}"},{"line_number":476,"context_line":"            return api_utils.error_response(req, ex, headers, error)"},{"line_number":477,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_2e5090d3","line":474,"updated":"2015-06-17 16:16:51.000000000","message":"ditto (in this case you could even just drop MessageConflict).","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"ff9d350a2654c91abef090751763f24bb40e8d90","unresolved":false,"context_lines":[{"line_number":471,"context_line":"            return api_utils.error_response(req, ex, headers, error)"},{"line_number":472,"context_line":"        except Exception as ex:"},{"line_number":473,"context_line":"            LOG.exception(ex)"},{"line_number":474,"context_line":"            error \u003d _(u\u0027Messages could not be enqueued.\u0027)"},{"line_number":475,"context_line":"            headers \u003d {\u0027status\u0027: 500}"},{"line_number":476,"context_line":"            return api_utils.error_response(req, ex, headers, error)"},{"line_number":477,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_722a4f92","line":474,"in_reply_to":"fa32b979_2e5090d3","updated":"2015-06-22 18:21:59.000000000","message":"In this case is more a Websocket thing. This should never be reached... if this happens then something very unexpected happened server side.","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"6171eb4998710f5e70d5dd772814ba8735f0df3d","unresolved":false,"context_lines":[{"line_number":519,"context_line":"            LOG.debug(ex)"},{"line_number":520,"context_line":"            error \u003d _(u\u0027The specified claim does not exist or \u0027"},{"line_number":521,"context_line":"                      u\u0027has expired.\u0027)"},{"line_number":522,"context_line":"            headers \u003d {\u0027status\u0027: 400}"},{"line_number":523,"context_line":"            return api_utils.error_response(req, ex, headers, error)"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"        except storage_errors.NotPermitted as ex:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_539f58b4","line":522,"updated":"2015-06-19 14:21:52.000000000","message":"This smells more like a 404, rather than a 400.","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"ff9d350a2654c91abef090751763f24bb40e8d90","unresolved":false,"context_lines":[{"line_number":519,"context_line":"            LOG.debug(ex)"},{"line_number":520,"context_line":"            error \u003d _(u\u0027The specified claim does not exist or \u0027"},{"line_number":521,"context_line":"                      u\u0027has expired.\u0027)"},{"line_number":522,"context_line":"            headers \u003d {\u0027status\u0027: 400}"},{"line_number":523,"context_line":"            return api_utils.error_response(req, ex, headers, error)"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"        except storage_errors.NotPermitted as ex:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_e5a77709","line":522,"in_reply_to":"fa32b979_539f58b4","updated":"2015-06-22 18:21:59.000000000","message":"Agree. Once again, this is what we do in WSGI. https://github.com/openstack/zaqar/blob/master/zaqar/transport/wsgi/v1_1/messages.py#L362","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"6171eb4998710f5e70d5dd772814ba8735f0df3d","unresolved":false,"context_lines":[{"line_number":525,"context_line":"        except storage_errors.NotPermitted as ex:"},{"line_number":526,"context_line":"            LOG.debug(ex)"},{"line_number":527,"context_line":"            error \u003d _(u\u0027This message is claimed; it cannot be \u0027"},{"line_number":528,"context_line":"                      u\u0027deleted without a valid claim ID.\u0027)"},{"line_number":529,"context_line":"            headers \u003d {\u0027status\u0027: 403}"},{"line_number":530,"context_line":"            return api_utils.error_response(req, ex, headers, error)"},{"line_number":531,"context_line":"        except Exception as ex:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_f3a30cff","line":528,"updated":"2015-06-19 14:21:52.000000000","message":"403 is for authentication fails, not for improper requests.","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"ff9d350a2654c91abef090751763f24bb40e8d90","unresolved":false,"context_lines":[{"line_number":525,"context_line":"        except storage_errors.NotPermitted as ex:"},{"line_number":526,"context_line":"            LOG.debug(ex)"},{"line_number":527,"context_line":"            error \u003d _(u\u0027This message is claimed; it cannot be \u0027"},{"line_number":528,"context_line":"                      u\u0027deleted without a valid claim ID.\u0027)"},{"line_number":529,"context_line":"            headers \u003d {\u0027status\u0027: 403}"},{"line_number":530,"context_line":"            return api_utils.error_response(req, ex, headers, error)"},{"line_number":531,"context_line":"        except Exception as ex:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_e57e9769","line":528,"in_reply_to":"fa32b979_f3a30cff","updated":"2015-06-22 18:21:59.000000000","message":"https://github.com/openstack/zaqar/blob/master/zaqar/transport/wsgi/v1_1/messages.py#L368","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"6171eb4998710f5e70d5dd772814ba8735f0df3d","unresolved":false,"context_lines":[{"line_number":537,"context_line":"        headers \u003d {\u0027status\u0027: 204}"},{"line_number":538,"context_line":"        body \u003d {}"},{"line_number":539,"context_line":""},{"line_number":540,"context_line":"        resp \u003d response.Response(req, body, headers)"},{"line_number":541,"context_line":"        return resp"},{"line_number":542,"context_line":""},{"line_number":543,"context_line":"    @api_utils.raises_conn_error"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_13a9d0df","line":540,"updated":"2015-06-19 14:21:52.000000000","message":"Again, unnecessary assignment.","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"ff9d350a2654c91abef090751763f24bb40e8d90","unresolved":false,"context_lines":[{"line_number":537,"context_line":"        headers \u003d {\u0027status\u0027: 204}"},{"line_number":538,"context_line":"        body \u003d {}"},{"line_number":539,"context_line":""},{"line_number":540,"context_line":"        resp \u003d response.Response(req, body, headers)"},{"line_number":541,"context_line":"        return resp"},{"line_number":542,"context_line":""},{"line_number":543,"context_line":"    @api_utils.raises_conn_error"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_a5916f9c","line":540,"in_reply_to":"fa32b979_13a9d0df","updated":"2015-06-22 18:21:59.000000000","message":"Done","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"6171eb4998710f5e70d5dd772814ba8735f0df3d","unresolved":false,"context_lines":[{"line_number":554,"context_line":""},{"line_number":555,"context_line":"        LOG.debug(u\u0027Messages collection DELETE - queue: %(queue)s, \u0027"},{"line_number":556,"context_line":"                  u\u0027project: %(project)s\u0027,"},{"line_number":557,"context_line":"                  {\u0027queue\u0027: queue_name, \u0027project\u0027: project_id})"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"        message_ids \u003d req._body.get(\u0027message_ids\u0027)"},{"line_number":560,"context_line":"        pop_limit \u003d req._body.get(\u0027pop_limit\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_b3aee4e5","line":557,"updated":"2015-06-19 14:21:52.000000000","message":"For debugging it\u0027d be nice to include the message ID as well.","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"ff9d350a2654c91abef090751763f24bb40e8d90","unresolved":false,"context_lines":[{"line_number":554,"context_line":""},{"line_number":555,"context_line":"        LOG.debug(u\u0027Messages collection DELETE - queue: %(queue)s, \u0027"},{"line_number":556,"context_line":"                  u\u0027project: %(project)s\u0027,"},{"line_number":557,"context_line":"                  {\u0027queue\u0027: queue_name, \u0027project\u0027: project_id})"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"        message_ids \u003d req._body.get(\u0027message_ids\u0027)"},{"line_number":560,"context_line":"        pop_limit \u003d req._body.get(\u0027pop_limit\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_4590a395","line":557,"in_reply_to":"fa32b979_b3aee4e5","updated":"2015-06-22 18:21:59.000000000","message":"Done","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"cb55957138c32ec942085c50947fc7efc9831aee","unresolved":false,"context_lines":[{"line_number":60,"context_line":"            self._validate.queue_listing(**kwargs)"},{"line_number":61,"context_line":"            results \u003d self._queue_controller.list("},{"line_number":62,"context_line":"                project\u003dproject_id, **kwargs)"},{"line_number":63,"context_line":"        except (ValueError, validation.ValidationFailed) as ex:"},{"line_number":64,"context_line":"            LOG.debug(ex)"},{"line_number":65,"context_line":"            headers \u003d {\u0027status\u0027: 400}"},{"line_number":66,"context_line":"            return api_utils.error_response(req, ex, headers)"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa32b979_12e69816","line":63,"updated":"2015-06-26 12:50:18.000000000","message":"Nice","commit_id":"97864f51f52772806be7577688e5a03c3b79e139"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"cb55957138c32ec942085c50947fc7efc9831aee","unresolved":false,"context_lines":[{"line_number":77,"context_line":"        body \u003d {\u0027queues\u0027: queues}"},{"line_number":78,"context_line":"        headers \u003d {\u0027status\u0027: 200}"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"        return response.Response(req, body, headers)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    @api_utils.raises_conn_error"},{"line_number":83,"context_line":"    def queue_create(self, req):"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa32b979_32e39c07","line":80,"updated":"2015-06-26 12:50:18.000000000","message":":)","commit_id":"97864f51f52772806be7577688e5a03c3b79e139"}],"zaqar/common/api/errors.py":[{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"f2d4c9a08d0fa76a8b12f1d8ba947dcbdfd296f9","unresolved":false,"context_lines":[{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class ServiceUnavailable(ExceptionBase):"},{"line_number":45,"context_line":"    \"\"\"Raised when the service cannot be reached.\"\"\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    msg_format \u003d u\u0027Service unavailable. {description}\u0027"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def __init__(self, description):"}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_eba0c5a7","line":46,"updated":"2015-06-01 16:28:14.000000000","message":"This exception is unused in the patch.","commit_id":"cd7ae5d74785a6151754bfe9631c4ec127d3bbc8"},{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"12890e28407412f7671d240aab7fb887c1c69c9c","unresolved":false,"context_lines":[{"line_number":41,"context_line":"    \"\"\"Raised when the content of a request has an unsupported format.\"\"\""},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"class ServiceUnavailable(ExceptionBase):"},{"line_number":45,"context_line":"    \"\"\"Raised when the service cannot be reached.\"\"\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    msg_format \u003d u\u0027Service unavailable. {description}\u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"fa32b979_fabb42c2","line":44,"updated":"2015-06-24 09:58:21.000000000","message":"This is still unused AFAICT.","commit_id":"97864f51f52772806be7577688e5a03c3b79e139"}],"zaqar/common/api/utils.py":[{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"d53eb9831bef9e081761456036eeba1b36aa68bb","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def sanitize(document, spec\u003dNone, doctype\u003dJSONObject):"},{"line_number":33,"context_line":"    \"\"\"Validates a docu ment and drops undesired fields."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    :param document: A dict to verify according to `spec`."},{"line_number":36,"context_line":"    :param spec: (Default None) Iterable describing expected fields,"}],"source_content_type":"text/x-python","patch_set":4,"id":"da9b358b_b772ce47","line":33,"updated":"2015-04-01 03:49:55.000000000","message":"document?","commit_id":"6d2a220eb9ca38f95a20572e0a8d89fcff9c2588"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"9f346fea6bfb6b02e19a706158de21b4d3a3025e","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"def sanitize(document, spec\u003dNone, doctype\u003dJSONObject):"},{"line_number":33,"context_line":"    \"\"\"Validates a docu ment and drops undesired fields."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    :param document: A dict to verify according to `spec`."},{"line_number":36,"context_line":"    :param spec: (Default None) Iterable describing expected fields,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa041b7_147536f8","line":33,"in_reply_to":"da9b358b_b772ce47","updated":"2015-04-02 15:45:47.000000000","message":"Done","commit_id":"6d2a220eb9ca38f95a20572e0a8d89fcff9c2588"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"d53eb9831bef9e081761456036eeba1b36aa68bb","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        return [filter(obj, spec) for obj in document]"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    raise TypeError(\u0027doctype must be either a JSONObject or JSONArray\u0027)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"def filter(document, spec):"}],"source_content_type":"text/x-python","patch_set":4,"id":"da9b358b_17285ae1","line":72,"updated":"2015-04-01 03:49:55.000000000","message":"i18n?","commit_id":"6d2a220eb9ca38f95a20572e0a8d89fcff9c2588"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"9f346fea6bfb6b02e19a706158de21b4d3a3025e","unresolved":false,"context_lines":[{"line_number":69,"context_line":""},{"line_number":70,"context_line":"        return [filter(obj, spec) for obj in document]"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    raise TypeError(\u0027doctype must be either a JSONObject or JSONArray\u0027)"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"def filter(document, spec):"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa041b7_746ec230","line":72,"in_reply_to":"da9b358b_17285ae1","updated":"2015-04-02 15:45:47.000000000","message":"Done","commit_id":"6d2a220eb9ca38f95a20572e0a8d89fcff9c2588"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"d53eb9831bef9e081761456036eeba1b36aa68bb","unresolved":false,"context_lines":[{"line_number":144,"context_line":"    \"\"\""},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    try:"},{"line_number":147,"context_line":"        return uuid.UUID(req._headers.get(\u0027Client-ID\u0027))"},{"line_number":148,"context_line":"    except ValueError:"},{"line_number":149,"context_line":"        description \u003d _(u\u0027Malformed hexadecimal UUID.\u0027)"},{"line_number":150,"context_line":"        raise api_errors.BadRequest(\u0027Wrong UUID value\u0027, description)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da9b358b_f7d736bd","line":147,"updated":"2015-04-01 03:49:55.000000000","message":"For wsgi transport driver, seems we didn\u0027t limit the client id to be a UUID, right?","commit_id":"6d2a220eb9ca38f95a20572e0a8d89fcff9c2588"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"9f346fea6bfb6b02e19a706158de21b4d3a3025e","unresolved":false,"context_lines":[{"line_number":144,"context_line":"    \"\"\""},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"    try:"},{"line_number":147,"context_line":"        return uuid.UUID(req._headers.get(\u0027Client-ID\u0027))"},{"line_number":148,"context_line":"    except ValueError:"},{"line_number":149,"context_line":"        description \u003d _(u\u0027Malformed hexadecimal UUID.\u0027)"},{"line_number":150,"context_line":"        raise api_errors.BadRequest(\u0027Wrong UUID value\u0027, description)"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa041b7_344f1abf","line":147,"in_reply_to":"da9b358b_f7d736bd","updated":"2015-04-02 15:45:47.000000000","message":"Oh we did... we are doing the same control here. The X-Project-ID, instead, doesn\u0027t need to be an UUID.","commit_id":"6d2a220eb9ca38f95a20572e0a8d89fcff9c2588"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"6171eb4998710f5e70d5dd772814ba8735f0df3d","unresolved":false,"context_lines":[{"line_number":24,"context_line":"JSONObject \u003d dict"},{"line_number":25,"context_line":"\"\"\"Represents a JSON object in Python.\"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"JSONArray \u003d list"},{"line_number":28,"context_line":"\"\"\"Represents a JSON array in Python.\"\"\""},{"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":"fa32b979_f36c6cd2","line":27,"updated":"2015-06-19 14:21:52.000000000","message":"Is it really necessary to reassign these? I feel like it makes the code harder to understand.","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"ff9d350a2654c91abef090751763f24bb40e8d90","unresolved":false,"context_lines":[{"line_number":24,"context_line":"JSONObject \u003d dict"},{"line_number":25,"context_line":"\"\"\"Represents a JSON object in Python.\"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"JSONArray \u003d list"},{"line_number":28,"context_line":"\"\"\"Represents a JSON array in Python.\"\"\""},{"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":"fa32b979_85dd4b72","line":27,"in_reply_to":"fa32b979_f36c6cd2","updated":"2015-06-22 18:21:59.000000000","message":"Not really TBH","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"4fdb1a093740f99a2c2ca26c57195d125c9b0326","unresolved":false,"context_lines":[{"line_number":145,"context_line":"    \"\"\""},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    try:"},{"line_number":148,"context_line":"        return uuid.UUID(req._headers.get(\u0027Client-ID\u0027))"},{"line_number":149,"context_line":"    except ValueError:"},{"line_number":150,"context_line":"        description \u003d _(u\u0027Malformed hexadecimal UUID.\u0027)"},{"line_number":151,"context_line":"        raise api_errors.BadRequest(_(u\u0027Wrong UUID value\u0027), description)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1af86dd1_1e9fca04","line":148,"updated":"2015-06-12 12:29:22.000000000","message":"Is it ok for this to be any UUID version? Or does it have to be v4?","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"}],"zaqar/tests/unit/transport/websocket/base.py":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"710a29f9b8d1ed8a571bc87eeb16cf5ae0e82755","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        self.conf.register_opts(driver._WS_OPTIONS,"},{"line_number":39,"context_line":"                                group\u003ddriver._WS_GROUP)"},{"line_number":40,"context_line":"        self.ws_cfg \u003d self.conf[driver._WS_GROUP]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        self.conf.unreliable \u003d True"},{"line_number":43,"context_line":"        self.conf.admin_mode \u003d True"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_8e3e7c89","line":40,"updated":"2015-06-17 16:16:51.000000000","message":"To make it consistent with the protocol, I\u0027d guess. websocket \u003d\u003d ws","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":12321,"name":"Ryan Brown","email":"rybrown@redhat.com","username":"ryansb"},"change_message_id":"4fdb1a093740f99a2c2ca26c57195d125c9b0326","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        self.conf.register_opts(driver._WS_OPTIONS,"},{"line_number":39,"context_line":"                                group\u003ddriver._WS_GROUP)"},{"line_number":40,"context_line":"        self.ws_cfg \u003d self.conf[driver._WS_GROUP]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        self.conf.unreliable \u003d True"},{"line_number":43,"context_line":"        self.conf.admin_mode \u003d True"}],"source_content_type":"text/x-python","patch_set":9,"id":"1af86dd1_7e90feec","line":40,"updated":"2015-06-12 12:29:22.000000000","message":"Why this change?","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"ff9d350a2654c91abef090751763f24bb40e8d90","unresolved":false,"context_lines":[{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        self.conf.register_opts(driver._WS_OPTIONS,"},{"line_number":39,"context_line":"                                group\u003ddriver._WS_GROUP)"},{"line_number":40,"context_line":"        self.ws_cfg \u003d self.conf[driver._WS_GROUP]"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"        self.conf.unreliable \u003d True"},{"line_number":43,"context_line":"        self.conf.admin_mode \u003d True"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_65b92715","line":40,"in_reply_to":"fa32b979_8e3e7c89","updated":"2015-06-22 18:21:59.000000000","message":"Yeah, it was a copypaste error (shame on me)","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"}],"zaqar/tests/unit/transport/websocket/v1_1/test_messages.py":[{"author":{"_account_id":7385,"name":"Thomas Herve","email":"therve@redhat.com","username":"therve"},"change_message_id":"f2d4c9a08d0fa76a8b12f1d8ba947dcbdfd296f9","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"@ddt.ddt"},{"line_number":32,"context_line":"class MessagesBaseTest(base.V1_1Base):"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"    config_file \u003d \"websocket_mongodb.conf\""},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5afe65bd_e8620b16","line":32,"updated":"2015-06-01 16:28:14.000000000","message":"AFAIU those tests aren\u0027t run until you create a subclass in the tests directory.","commit_id":"cd7ae5d74785a6151754bfe9631c4ec127d3bbc8"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"710a29f9b8d1ed8a571bc87eeb16cf5ae0e82755","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            resp \u003d json.loads(resp)"},{"line_number":54,"context_line":"            self.assertEqual(resp[\u0027headers\u0027][\u0027status\u0027], 201)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        with mock.patch.object(self.protocol, \u0027sendMessage\u0027) as msg_mock:"},{"line_number":57,"context_line":"            msg_mock.side_effect \u003d validator"},{"line_number":58,"context_line":"            self.protocol.onMessage(req, False)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_ce5fa4e3","line":56,"updated":"2015-06-17 16:16:51.000000000","message":"Why is this in the setUp method? Should it have its own test?","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"ff9d350a2654c91abef090751763f24bb40e8d90","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            resp \u003d json.loads(resp)"},{"line_number":54,"context_line":"            self.assertEqual(resp[\u0027headers\u0027][\u0027status\u0027], 201)"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"        with mock.patch.object(self.protocol, \u0027sendMessage\u0027) as msg_mock:"},{"line_number":57,"context_line":"            msg_mock.side_effect \u003d validator"},{"line_number":58,"context_line":"            self.protocol.onMessage(req, False)"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_0505bbc0","line":56,"in_reply_to":"fa32b979_ce5fa4e3","updated":"2015-06-22 18:21:59.000000000","message":"So this creates a queue. We could rely on the lazy queue creation I guess.","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"710a29f9b8d1ed8a571bc87eeb16cf5ae0e82755","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            self.assertEqual(resp[\u0027headers\u0027][\u0027status\u0027], 204)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        send_mock.side_effect \u003d validator"},{"line_number":76,"context_line":"        self.protocol.onMessage(req, False)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def _test_post(self, sample_messages):"},{"line_number":79,"context_line":"        action \u003d \"message_post\""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_ee64e8b9","line":76,"updated":"2015-06-17 16:16:51.000000000","message":"ditto","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"ff9d350a2654c91abef090751763f24bb40e8d90","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            self.assertEqual(resp[\u0027headers\u0027][\u0027status\u0027], 204)"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        send_mock.side_effect \u003d validator"},{"line_number":76,"context_line":"        self.protocol.onMessage(req, False)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def _test_post(self, sample_messages):"},{"line_number":79,"context_line":"        action \u003d \"message_post\""}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_e511b705","line":76,"in_reply_to":"fa32b979_ee64e8b9","updated":"2015-06-22 18:21:59.000000000","message":"This one deletes the queue.","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"710a29f9b8d1ed8a571bc87eeb16cf5ae0e82755","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        # Test GET on the message resource directly"},{"line_number":102,"context_line":"        # NOTE(cpp-cabrera): force the passing of time to age a message"},{"line_number":103,"context_line":"        timeutils_utcnow \u003d \u0027zaqar.openstack.common.timeutils.utcnow\u0027"},{"line_number":104,"context_line":"        now \u003d timeutils.utcnow() + datetime.timedelta(seconds\u003d10)"},{"line_number":105,"context_line":"        with mock.patch(timeutils_utcnow) as mock_utcnow:"},{"line_number":106,"context_line":"            mock_utcnow.return_value \u003d now"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_8e551cc3","line":103,"updated":"2015-06-17 16:16:51.000000000","message":"this should be `oslo_utils.timeutils.utcnow_ts`","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"ff9d350a2654c91abef090751763f24bb40e8d90","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        # Test GET on the message resource directly"},{"line_number":102,"context_line":"        # NOTE(cpp-cabrera): force the passing of time to age a message"},{"line_number":103,"context_line":"        timeutils_utcnow \u003d \u0027zaqar.openstack.common.timeutils.utcnow\u0027"},{"line_number":104,"context_line":"        now \u003d timeutils.utcnow() + datetime.timedelta(seconds\u003d10)"},{"line_number":105,"context_line":"        with mock.patch(timeutils_utcnow) as mock_utcnow:"},{"line_number":106,"context_line":"            mock_utcnow.return_value \u003d now"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_a5f40fcf","line":103,"in_reply_to":"fa32b979_8e551cc3","updated":"2015-06-22 18:21:59.000000000","message":"Done","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"710a29f9b8d1ed8a571bc87eeb16cf5ae0e82755","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        # Test GET on the message resource directly"},{"line_number":102,"context_line":"        # NOTE(cpp-cabrera): force the passing of time to age a message"},{"line_number":103,"context_line":"        timeutils_utcnow \u003d \u0027zaqar.openstack.common.timeutils.utcnow\u0027"},{"line_number":104,"context_line":"        now \u003d timeutils.utcnow() + datetime.timedelta(seconds\u003d10)"},{"line_number":105,"context_line":"        with mock.patch(timeutils_utcnow) as mock_utcnow:"},{"line_number":106,"context_line":"            mock_utcnow.return_value \u003d now"},{"line_number":107,"context_line":"            for msg_id in self.msg_ids:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_ae5a60f0","line":104,"updated":"2015-06-17 16:16:51.000000000","message":"there\u0027s a delta_seconds function in timeutils, IIRC","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"ff9d350a2654c91abef090751763f24bb40e8d90","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        # Test GET on the message resource directly"},{"line_number":102,"context_line":"        # NOTE(cpp-cabrera): force the passing of time to age a message"},{"line_number":103,"context_line":"        timeutils_utcnow \u003d \u0027zaqar.openstack.common.timeutils.utcnow\u0027"},{"line_number":104,"context_line":"        now \u003d timeutils.utcnow() + datetime.timedelta(seconds\u003d10)"},{"line_number":105,"context_line":"        with mock.patch(timeutils_utcnow) as mock_utcnow:"},{"line_number":106,"context_line":"            mock_utcnow.return_value \u003d now"},{"line_number":107,"context_line":"            for msg_id in self.msg_ids:"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_4503c3b8","line":104,"in_reply_to":"fa32b979_ae5a60f0","updated":"2015-06-22 18:21:59.000000000","message":"Done","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"710a29f9b8d1ed8a571bc87eeb16cf5ae0e82755","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            actual_ttls \u003d set(m[\u0027ttl\u0027] for m in resp[\u0027body\u0027][\u0027messages\u0027])"},{"line_number":156,"context_line":"            self.assertFalse(expected_ttls - actual_ttls)"},{"line_number":157,"context_line":"            actual_ids \u003d set(m[\u0027id\u0027] for m in resp[\u0027body\u0027][\u0027messages\u0027])"},{"line_number":158,"context_line":"            self.assertFalse(set(self.msg_ids) - actual_ids)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        send_mock.side_effect \u003d validator"},{"line_number":161,"context_line":"        self.protocol.onMessage(req, False)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_4e74f466","line":158,"updated":"2015-06-17 16:16:51.000000000","message":"Can\u0027t you check if the sets/lists are equal? Or check if the result of the substraction is empty. It\u0027d make it easier to understand the test","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"ff9d350a2654c91abef090751763f24bb40e8d90","unresolved":false,"context_lines":[{"line_number":155,"context_line":"            actual_ttls \u003d set(m[\u0027ttl\u0027] for m in resp[\u0027body\u0027][\u0027messages\u0027])"},{"line_number":156,"context_line":"            self.assertFalse(expected_ttls - actual_ttls)"},{"line_number":157,"context_line":"            actual_ids \u003d set(m[\u0027id\u0027] for m in resp[\u0027body\u0027][\u0027messages\u0027])"},{"line_number":158,"context_line":"            self.assertFalse(set(self.msg_ids) - actual_ids)"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":"        send_mock.side_effect \u003d validator"},{"line_number":161,"context_line":"        self.protocol.onMessage(req, False)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_6515a7e3","line":158,"in_reply_to":"fa32b979_4e74f466","updated":"2015-06-22 18:21:59.000000000","message":"Done","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"710a29f9b8d1ed8a571bc87eeb16cf5ae0e82755","unresolved":false,"context_lines":[{"line_number":253,"context_line":"    def test_post_to_non_ascii_queue(self):"},{"line_number":254,"context_line":"        queue_name \u003d u\u0027non-ascii-n\\u0153me\u0027"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        if six.PY2:"},{"line_number":257,"context_line":"            queue_name \u003d queue_name.encode(\u0027utf-8\u0027)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        resp \u003d self._post_messages(queue_name)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_6e71b875","line":256,"updated":"2015-06-17 16:16:51.000000000","message":":(","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"ff9d350a2654c91abef090751763f24bb40e8d90","unresolved":false,"context_lines":[{"line_number":253,"context_line":"    def test_post_to_non_ascii_queue(self):"},{"line_number":254,"context_line":"        queue_name \u003d u\u0027non-ascii-n\\u0153me\u0027"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        if six.PY2:"},{"line_number":257,"context_line":"            queue_name \u003d queue_name.encode(\u0027utf-8\u0027)"},{"line_number":258,"context_line":""},{"line_number":259,"context_line":"        resp \u003d self._post_messages(queue_name)"}],"source_content_type":"text/x-python","patch_set":9,"id":"fa32b979_05ba9be1","line":256,"in_reply_to":"fa32b979_6e71b875","updated":"2015-06-22 18:21:59.000000000","message":"should I remove this? I don\u0027t want to make you sad :(","commit_id":"3529456718d8bb8d44fa3043ebf2723b2f861525"}]}
