)]}'
{"tests/etc/websocket_mongodb.conf":[{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"00b2f95defd2936cf4250ac6cb7278af939d7e29","unresolved":false,"context_lines":[{"line_number":45,"context_line":"# From zaqar.storage.mongodb"},{"line_number":46,"context_line":"#"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"# The private keyfile used to identify the local connection against"},{"line_number":49,"context_line":"# mongod. If included with the ``certifle`` then only the"},{"line_number":50,"context_line":"# ``ssl_certfile`` is needed. (string value)"},{"line_number":51,"context_line":"# Deprecated group/name - [drivers:storage:mongodb]/ssl_keyfile"}],"source_content_type":"text/plain","patch_set":11,"id":"da9b358b_a64af081","line":48,"updated":"2015-03-30 12:21:21.000000000","message":"(nit): Would you mind removing those commented line so that we can focus on the specific config?","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"9dd9c145c170fa7ea7d22f2f7ec0c118c84f6b75","unresolved":false,"context_lines":[{"line_number":45,"context_line":"# From zaqar.storage.mongodb"},{"line_number":46,"context_line":"#"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"# The private keyfile used to identify the local connection against"},{"line_number":49,"context_line":"# mongod. If included with the ``certifle`` then only the"},{"line_number":50,"context_line":"# ``ssl_certfile`` is needed. (string value)"},{"line_number":51,"context_line":"# Deprecated group/name - [drivers:storage:mongodb]/ssl_keyfile"}],"source_content_type":"text/plain","patch_set":11,"id":"da9b358b_51ae322f","line":48,"in_reply_to":"da9b358b_a64af081","updated":"2015-03-30 17:48:21.000000000","message":"Done","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"}],"zaqar/api/v1_1/endpoints.py":[{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"00b2f95defd2936cf4250ac6cb7278af939d7e29","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            LOG.debug(ex)"},{"line_number":69,"context_line":"            headers \u003d {\u0027status\u0027: 400}"},{"line_number":70,"context_line":"            return api_utils.error_response(req, ex, headers)"},{"line_number":71,"context_line":"        except storage_errors.ExceptionBase as ex:"},{"line_number":72,"context_line":"            LOG.exception(ex)"},{"line_number":73,"context_line":"            error \u003d \u0027Queues could not be listed.\u0027"},{"line_number":74,"context_line":"            headers \u003d {\u0027status\u0027: 503}"}],"source_content_type":"text/x-python","patch_set":11,"id":"da9b358b_913cc894","line":71,"updated":"2015-03-30 12:21:21.000000000","message":"??? What happened?","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"9dd9c145c170fa7ea7d22f2f7ec0c118c84f6b75","unresolved":false,"context_lines":[{"line_number":68,"context_line":"            LOG.debug(ex)"},{"line_number":69,"context_line":"            headers \u003d {\u0027status\u0027: 400}"},{"line_number":70,"context_line":"            return api_utils.error_response(req, ex, headers)"},{"line_number":71,"context_line":"        except storage_errors.ExceptionBase as ex:"},{"line_number":72,"context_line":"            LOG.exception(ex)"},{"line_number":73,"context_line":"            error \u003d \u0027Queues could not be listed.\u0027"},{"line_number":74,"context_line":"            headers \u003d {\u0027status\u0027: 503}"}],"source_content_type":"text/x-python","patch_set":11,"id":"da9b358b_31828e95","line":71,"in_reply_to":"da9b358b_913cc894","updated":"2015-03-30 17:48:21.000000000","message":"*shrugs* typo","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"00b2f95defd2936cf4250ac6cb7278af939d7e29","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        project_id \u003d req._headers.get(\u0027X-Project-ID\u0027)"},{"line_number":98,"context_line":"        queue_name \u003d req._body.get(\u0027queue_name\u0027)"},{"line_number":99,"context_line":"        metadata \u003d (req._body.get(\u0027metadata\u0027)"},{"line_number":100,"context_line":"                    if req._body.get(\u0027metadata\u0027) is not None else {})"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        LOG.debug(u\u0027Queue create - queue: %(queue)s, project: %(project)s\u0027,"},{"line_number":103,"context_line":"                  {\u0027queue\u0027: queue_name,"}],"source_content_type":"text/x-python","patch_set":11,"id":"da9b358b_9104c815","line":100,"updated":"2015-03-30 12:21:21.000000000","message":"(nit): How about \"if req._body.get(\u0027metadata\u0027) else {}\"?","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"9dd9c145c170fa7ea7d22f2f7ec0c118c84f6b75","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        project_id \u003d req._headers.get(\u0027X-Project-ID\u0027)"},{"line_number":98,"context_line":"        queue_name \u003d req._body.get(\u0027queue_name\u0027)"},{"line_number":99,"context_line":"        metadata \u003d (req._body.get(\u0027metadata\u0027)"},{"line_number":100,"context_line":"                    if req._body.get(\u0027metadata\u0027) is not None else {})"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        LOG.debug(u\u0027Queue create - queue: %(queue)s, project: %(project)s\u0027,"},{"line_number":103,"context_line":"                  {\u0027queue\u0027: queue_name,"}],"source_content_type":"text/x-python","patch_set":11,"id":"da9b358b_b13b3eeb","line":100,"in_reply_to":"da9b358b_7741340b","updated":"2015-03-30 17:48:21.000000000","message":"Done","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"ed03188f06b7ee8c20861b8bba59473f5fe58fa5","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        project_id \u003d req._headers.get(\u0027X-Project-ID\u0027)"},{"line_number":98,"context_line":"        queue_name \u003d req._body.get(\u0027queue_name\u0027)"},{"line_number":99,"context_line":"        metadata \u003d (req._body.get(\u0027metadata\u0027)"},{"line_number":100,"context_line":"                    if req._body.get(\u0027metadata\u0027) is not None else {})"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"        LOG.debug(u\u0027Queue create - queue: %(queue)s, project: %(project)s\u0027,"},{"line_number":103,"context_line":"                  {\u0027queue\u0027: queue_name,"}],"source_content_type":"text/x-python","patch_set":11,"id":"da9b358b_7741340b","line":100,"in_reply_to":"da9b358b_9104c815","updated":"2015-03-30 13:27:47.000000000","message":"What about just `metadata \u003d req_body.get(\u0027metadata\u0027, {})` ?","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"00b2f95defd2936cf4250ac6cb7278af939d7e29","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        project_id \u003d req._headers.get(\u0027X-Project-ID\u0027)"},{"line_number":199,"context_line":"        queue_name \u003d req._body.get(\u0027queue_name\u0027)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"        LOG.debug(u\u0027Queue get queue stats - queue: %(queue)s, \u0027"},{"line_number":202,"context_line":"                  u\u0027project: %(project)s\u0027,"},{"line_number":203,"context_line":"                  {\u0027queue\u0027: queue_name, \u0027project\u0027: project_id})"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"da9b358b_6612a864","line":201,"updated":"2015-03-30 12:21:21.000000000","message":"(nit): Should we start to use _LI()?","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"ed03188f06b7ee8c20861b8bba59473f5fe58fa5","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        project_id \u003d req._headers.get(\u0027X-Project-ID\u0027)"},{"line_number":199,"context_line":"        queue_name \u003d req._body.get(\u0027queue_name\u0027)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"        LOG.debug(u\u0027Queue get queue stats - queue: %(queue)s, \u0027"},{"line_number":202,"context_line":"                  u\u0027project: %(project)s\u0027,"},{"line_number":203,"context_line":"                  {\u0027queue\u0027: queue_name, \u0027project\u0027: project_id})"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"da9b358b_b75e9ce7","line":201,"in_reply_to":"da9b358b_6612a864","updated":"2015-03-30 13:27:47.000000000","message":"Isn\u0027t there a _LD ?","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"9dd9c145c170fa7ea7d22f2f7ec0c118c84f6b75","unresolved":false,"context_lines":[{"line_number":198,"context_line":"        project_id \u003d req._headers.get(\u0027X-Project-ID\u0027)"},{"line_number":199,"context_line":"        queue_name \u003d req._body.get(\u0027queue_name\u0027)"},{"line_number":200,"context_line":""},{"line_number":201,"context_line":"        LOG.debug(u\u0027Queue get queue stats - queue: %(queue)s, \u0027"},{"line_number":202,"context_line":"                  u\u0027project: %(project)s\u0027,"},{"line_number":203,"context_line":"                  {\u0027queue\u0027: queue_name, \u0027project\u0027: project_id})"},{"line_number":204,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"da9b358b_112d4aa7","line":201,"in_reply_to":"da9b358b_b75e9ce7","updated":"2015-03-30 17:48:21.000000000","message":"_LI/_LD?","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"}],"zaqar/api/v1_1/request.py":[{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"00b2f95defd2936cf4250ac6cb7278af939d7e29","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        \u0027queue_get\u0027: {"},{"line_number":128,"context_line":"            \u0027properties\u0027: {"},{"line_number":129,"context_line":"                \u0027action\u0027: {\u0027enum\u0027: [\u0027queue_get\u0027]},"},{"line_number":130,"context_line":"                \u0027headers\u0027: {"},{"line_number":131,"context_line":"                    \u0027type\u0027: \u0027object\u0027,"},{"line_number":132,"context_line":"                    \u0027properties\u0027: headers,"}],"source_content_type":"text/x-python","patch_set":11,"id":"da9b358b_1111d852","line":129,"updated":"2015-03-30 12:21:21.000000000","message":"Nice catch. Why it can pass the test?","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"ed03188f06b7ee8c20861b8bba59473f5fe58fa5","unresolved":false,"context_lines":[{"line_number":126,"context_line":""},{"line_number":127,"context_line":"        \u0027queue_get\u0027: {"},{"line_number":128,"context_line":"            \u0027properties\u0027: {"},{"line_number":129,"context_line":"                \u0027action\u0027: {\u0027enum\u0027: [\u0027queue_get\u0027]},"},{"line_number":130,"context_line":"                \u0027headers\u0027: {"},{"line_number":131,"context_line":"                    \u0027type\u0027: \u0027object\u0027,"},{"line_number":132,"context_line":"                    \u0027properties\u0027: headers,"}],"source_content_type":"text/x-python","patch_set":11,"id":"da9b358b_d769208d","line":129,"in_reply_to":"da9b358b_1111d852","updated":"2015-03-30 13:27:47.000000000","message":"what test? ;)","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"}],"zaqar/tests/unit/transport/websocket/v1_1/test_queue_lifecycle.py":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"ed03188f06b7ee8c20861b8bba59473f5fe58fa5","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import uuid"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import ddt"},{"line_number":19,"context_line":"import websocket"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from zaqar import tests as testing"},{"line_number":22,"context_line":"from zaqar.tests.unit.transport.websocket import base"}],"source_content_type":"text/x-python","patch_set":11,"id":"da9b358b_d7f9204f","line":19,"updated":"2015-03-30 13:27:47.000000000","message":"I believe this is not in our requirements, not even g-r","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"9dd9c145c170fa7ea7d22f2f7ec0c118c84f6b75","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import uuid"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import ddt"},{"line_number":19,"context_line":"import websocket"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from zaqar import tests as testing"},{"line_number":22,"context_line":"from zaqar.tests.unit.transport.websocket import base"}],"source_content_type":"text/x-python","patch_set":11,"id":"da9b358b_341efc63","line":19,"in_reply_to":"da9b358b_d7f9204f","updated":"2015-03-30 17:48:21.000000000","message":"Done. Ditto for everything below in this class.","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"ed03188f06b7ee8c20861b8bba59473f5fe58fa5","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        super(QueueLifecycleBaseTest, self).setUp()"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"        # NOTE(vkmc): Retrieve the host and port from the config"},{"line_number":34,"context_line":"        self.ws \u003d websocket.WebSocket()"},{"line_number":35,"context_line":"        self.ws.connect(\"ws://127.0.0.1:9000\")"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def tearDown(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"da9b358b_f79304f9","line":34,"updated":"2015-03-30 13:27:47.000000000","message":"This requires a running server. What if we just use a fake one? that is, an instance of our API object.","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"ed03188f06b7ee8c20861b8bba59473f5fe58fa5","unresolved":false,"context_lines":[{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def tearDown(self):"},{"line_number":38,"context_line":"        super(QueueLifecycleBaseTest, self).tearDown()"},{"line_number":39,"context_line":"        self.ws.close()"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @staticmethod"},{"line_number":42,"context_line":"    def _create_request(action, body, headers):"}],"source_content_type":"text/x-python","patch_set":11,"id":"da9b358b_77ddb441","line":39,"updated":"2015-03-30 13:27:47.000000000","message":"Could you use `addCleanup` in the setup method instead?","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"ed03188f06b7ee8c20861b8bba59473f5fe58fa5","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        super(QueueLifecycleBaseTest, self).tearDown()"},{"line_number":39,"context_line":"        self.ws.close()"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @staticmethod"},{"line_number":42,"context_line":"    def _create_request(action, body, headers):"},{"line_number":43,"context_line":"        return json.dumps({\"action\": action,"},{"line_number":44,"context_line":"                           \"body\": body, \"headers\": headers})"}],"source_content_type":"text/x-python","patch_set":11,"id":"da9b358b_b7ba1ce0","line":41,"updated":"2015-03-30 13:27:47.000000000","message":"Why does this need to be a `staticmethod` ?","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"ed03188f06b7ee8c20861b8bba59473f5fe58fa5","unresolved":false,"context_lines":[{"line_number":497,"context_line":""},{"line_number":498,"context_line":"    config_file \u003d \u0027websocket_mongodb.conf\u0027"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"    @testing.requires_mongodb"},{"line_number":501,"context_line":"    def setUp(self):"},{"line_number":502,"context_line":"        super(TestQueueLifecycleMongoDB, self).setUp()"},{"line_number":503,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"da9b358b_97303858","line":500,"updated":"2015-03-30 13:27:47.000000000","message":"I believe you can decorate the class too","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"9dd9c145c170fa7ea7d22f2f7ec0c118c84f6b75","unresolved":false,"context_lines":[{"line_number":497,"context_line":""},{"line_number":498,"context_line":"    config_file \u003d \u0027websocket_mongodb.conf\u0027"},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"    @testing.requires_mongodb"},{"line_number":501,"context_line":"    def setUp(self):"},{"line_number":502,"context_line":"        super(TestQueueLifecycleMongoDB, self).setUp()"},{"line_number":503,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"da9b358b_9425c8ac","line":500,"in_reply_to":"da9b358b_97303858","updated":"2015-03-30 17:48:21.000000000","message":"Done","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"568fd0c48f5be4ec98b3e461cfc41e3b902fef4b","unresolved":false,"context_lines":[{"line_number":568,"context_line":""},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"@testing.requires_mongodb"},{"line_number":571,"context_line":"class TestQueueLifecycleMongoDB(QueueLifecycleBaseTest):"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"    config_file \u003d \u0027websocket_mongodb.conf\u0027"},{"line_number":574,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"da9b358b_2a3facb5","line":571,"updated":"2015-03-30 20:21:54.000000000","message":"I think this should be moved into: `tests/unit/transport/websocket/test_v1_1.py`","commit_id":"514935b2c2a5e382340832ea00c9d7eaf1767339"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"e1c6d902ca9babd1ec91fdea3345cbd2ecc9bb55","unresolved":false,"context_lines":[{"line_number":568,"context_line":""},{"line_number":569,"context_line":""},{"line_number":570,"context_line":"@testing.requires_mongodb"},{"line_number":571,"context_line":"class TestQueueLifecycleMongoDB(QueueLifecycleBaseTest):"},{"line_number":572,"context_line":""},{"line_number":573,"context_line":"    config_file \u003d \u0027websocket_mongodb.conf\u0027"},{"line_number":574,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"da9b358b_63115fac","line":571,"in_reply_to":"da9b358b_2a3facb5","updated":"2015-03-30 22:33:12.000000000","message":"We do this in all other tests. I don\u0027t mind moving it, but I\u0027d rather be consistent.","commit_id":"514935b2c2a5e382340832ea00c9d7eaf1767339"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"568fd0c48f5be4ec98b3e461cfc41e3b902fef4b","unresolved":false,"context_lines":[{"line_number":572,"context_line":""},{"line_number":573,"context_line":"    config_file \u003d \u0027websocket_mongodb.conf\u0027"},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"    def setUp(self):"},{"line_number":576,"context_line":"        super(TestQueueLifecycleMongoDB, self).setUp()"},{"line_number":577,"context_line":""},{"line_number":578,"context_line":"    def tearDown(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"da9b358b_ca2600ba","line":575,"updated":"2015-03-30 20:21:54.000000000","message":"The point of moving the decorator was to remove this method :P","commit_id":"514935b2c2a5e382340832ea00c9d7eaf1767339"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"e1c6d902ca9babd1ec91fdea3345cbd2ecc9bb55","unresolved":false,"context_lines":[{"line_number":572,"context_line":""},{"line_number":573,"context_line":"    config_file \u003d \u0027websocket_mongodb.conf\u0027"},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"    def setUp(self):"},{"line_number":576,"context_line":"        super(TestQueueLifecycleMongoDB, self).setUp()"},{"line_number":577,"context_line":""},{"line_number":578,"context_line":"    def tearDown(self):"}],"source_content_type":"text/x-python","patch_set":13,"id":"da9b358b_43277b12","line":575,"in_reply_to":"da9b358b_ca2600ba","updated":"2015-03-30 22:33:12.000000000","message":"Fair enough!","commit_id":"514935b2c2a5e382340832ea00c9d7eaf1767339"}],"zaqar/transport/websocket/example.html":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"5285c920458115ee4d74fb9af85cf634807473ad","unresolved":false,"context_lines":[{"line_number":1,"context_line":"\u003c!DOCTYPE html\u003e"},{"line_number":2,"context_line":"\u003chtml\u003e"},{"line_number":3,"context_line":"\u003chead\u003e"},{"line_number":4,"context_line":"    \u003cscript type\u003d\"text/javascript\"\u003e"}],"source_content_type":"text/html","patch_set":2,"id":"ba7be1f8_0126ab16","line":1,"updated":"2015-02-20 13:28:15.000000000","message":"should this example go somewhere else? etc or an examples dir?","commit_id":"deaf996af90e50ad88428e8ff87a38b83f3bc4ea"}],"zaqar/transport/websocket/factory.py":[{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"00b2f95defd2936cf4250ac6cb7278af939d7e29","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2014 Red Hat, Inc."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":4,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":11,"id":"da9b358b_91a048f6","line":1,"updated":"2015-03-30 12:21:21.000000000","message":"2015?","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"}],"zaqar/transport/websocket/protocol.py":[{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"ed03188f06b7ee8c20861b8bba59473f5fe58fa5","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            # In any case, we should do the decoding and prepare the req"},{"line_number":46,"context_line":"            print(\"Binary message received: {0} bytes\".format(len(payload)))"},{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            pl \u003d json.loads(payload)"},{"line_number":49,"context_line":"            req \u003d self._create_request(pl)"},{"line_number":50,"context_line":"            resp \u003d (self._validate_request(pl, req) or"},{"line_number":51,"context_line":"                    self._handler.process_request(req))"}],"source_content_type":"text/x-python","patch_set":11,"id":"da9b358b_71a5c402","line":48,"updated":"2015-03-30 13:27:47.000000000","message":"Should we catch possible errors here?","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"9dd9c145c170fa7ea7d22f2f7ec0c118c84f6b75","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            # In any case, we should do the decoding and prepare the req"},{"line_number":46,"context_line":"            print(\"Binary message received: {0} bytes\".format(len(payload)))"},{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            pl \u003d json.loads(payload)"},{"line_number":49,"context_line":"            req \u003d self._create_request(pl)"},{"line_number":50,"context_line":"            resp \u003d (self._validate_request(pl, req) or"},{"line_number":51,"context_line":"                    self._handler.process_request(req))"}],"source_content_type":"text/x-python","patch_set":11,"id":"da9b358b_34e83c10","line":48,"in_reply_to":"da9b358b_71a5c402","updated":"2015-03-30 17:48:21.000000000","message":"Possible errors are catched in the validation methods.","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"ed03188f06b7ee8c20861b8bba59473f5fe58fa5","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                    self._handler.process_request(req))"},{"line_number":52,"context_line":"            print(\"Text message received: {0}\".format(payload.decode(\u0027utf8\u0027)))"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        resp_json \u003d json.dumps(resp.get_response())"},{"line_number":55,"context_line":"        self.sendMessage(resp_json, isBinary)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def onClose(self, wasClean, code, reason):"}],"source_content_type":"text/x-python","patch_set":11,"id":"da9b358b_4649e48a","line":54,"updated":"2015-03-30 13:27:47.000000000","message":"If a binary message is sent, this will fail because `resp` is not defiled. You may want to return something if `isBinary` is true, or at least build a dummy resp object.","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"9dd9c145c170fa7ea7d22f2f7ec0c118c84f6b75","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                    self._handler.process_request(req))"},{"line_number":52,"context_line":"            print(\"Text message received: {0}\".format(payload.decode(\u0027utf8\u0027)))"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        resp_json \u003d json.dumps(resp.get_response())"},{"line_number":55,"context_line":"        self.sendMessage(resp_json, isBinary)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def onClose(self, wasClean, code, reason):"}],"source_content_type":"text/x-python","patch_set":11,"id":"da9b358b_947388b1","line":54,"in_reply_to":"da9b358b_4649e48a","updated":"2015-03-30 17:48:21.000000000","message":"We certainly didn\u0027t discuss about supporting binary data. If we are doing so, we\u0027ll have to implement a parser for binary to our representation. I can do that in a follow up.","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"00b2f95defd2936cf4250ac6cb7278af939d7e29","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    @staticmethod"},{"line_number":61,"context_line":"    def _create_request(pl):"},{"line_number":62,"context_line":"        action \u003d pl.get(\u0027action\u0027)"},{"line_number":63,"context_line":"        body \u003d pl.get(\u0027body\u0027) or {}"},{"line_number":64,"context_line":"        headers \u003d pl.get(\u0027headers\u0027)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        return request.Request(action\u003daction, body\u003dbody,"}],"source_content_type":"text/x-python","patch_set":11,"id":"da9b358b_91ee0821","line":63,"updated":"2015-03-30 12:21:21.000000000","message":"(nit): \"body \u003d pl.get(\u0027body\u0027, {})\"?","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"9dd9c145c170fa7ea7d22f2f7ec0c118c84f6b75","unresolved":false,"context_lines":[{"line_number":60,"context_line":"    @staticmethod"},{"line_number":61,"context_line":"    def _create_request(pl):"},{"line_number":62,"context_line":"        action \u003d pl.get(\u0027action\u0027)"},{"line_number":63,"context_line":"        body \u003d pl.get(\u0027body\u0027) or {}"},{"line_number":64,"context_line":"        headers \u003d pl.get(\u0027headers\u0027)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        return request.Request(action\u003daction, body\u003dbody,"}],"source_content_type":"text/x-python","patch_set":11,"id":"da9b358b_14b7783a","line":63,"in_reply_to":"da9b358b_91ee0821","updated":"2015-03-30 17:48:21.000000000","message":"Done","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"ed03188f06b7ee8c20861b8bba59473f5fe58fa5","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        headers \u003d pl.get(\u0027headers\u0027)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        return request.Request(action\u003daction, body\u003dbody,"},{"line_number":67,"context_line":"                               headers\u003dheaders, api\u003d\"v1.1\")"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    @staticmethod"},{"line_number":70,"context_line":"    def _validate_request(pl, req):"}],"source_content_type":"text/x-python","patch_set":11,"id":"da9b358b_31973c92","line":67,"updated":"2015-03-30 13:27:47.000000000","message":"should we accept passing the version in the request? `version` field?","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"9dd9c145c170fa7ea7d22f2f7ec0c118c84f6b75","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        headers \u003d pl.get(\u0027headers\u0027)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        return request.Request(action\u003daction, body\u003dbody,"},{"line_number":67,"context_line":"                               headers\u003dheaders, api\u003d\"v1.1\")"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    @staticmethod"},{"line_number":70,"context_line":"    def _validate_request(pl, req):"}],"source_content_type":"text/x-python","patch_set":11,"id":"da9b358b_5494e089","line":67,"in_reply_to":"da9b358b_31973c92","updated":"2015-03-30 17:48:21.000000000","message":"We could add it to the Request object. What usecases do you have in mind?","commit_id":"e39b546966c0e53c6b2f22736721ef00aebe5305"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"568fd0c48f5be4ec98b3e461cfc41e3b902fef4b","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            # In any case, we should do the decoding and prepare the req"},{"line_number":46,"context_line":"            print(\"Binary message received: {0} bytes\".format(len(payload)))"},{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            pl \u003d json.loads(payload)"},{"line_number":49,"context_line":"            req \u003d self._create_request(pl)"},{"line_number":50,"context_line":"            resp \u003d (self._validate_request(pl, req) or"},{"line_number":51,"context_line":"                    self._handler.process_request(req))"}],"source_content_type":"text/x-python","patch_set":13,"id":"da9b358b_77a48156","line":48,"updated":"2015-03-30 20:21:54.000000000","message":"sorry, I meant deserialization errors. What if the json is not valid?","commit_id":"514935b2c2a5e382340832ea00c9d7eaf1767339"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"e1c6d902ca9babd1ec91fdea3345cbd2ecc9bb55","unresolved":false,"context_lines":[{"line_number":45,"context_line":"            # In any case, we should do the decoding and prepare the req"},{"line_number":46,"context_line":"            print(\"Binary message received: {0} bytes\".format(len(payload)))"},{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            pl \u003d json.loads(payload)"},{"line_number":49,"context_line":"            req \u003d self._create_request(pl)"},{"line_number":50,"context_line":"            resp \u003d (self._validate_request(pl, req) or"},{"line_number":51,"context_line":"                    self._handler.process_request(req))"}],"source_content_type":"text/x-python","patch_set":13,"id":"da9b358b_485f9841","line":48,"in_reply_to":"da9b358b_77a48156","updated":"2015-03-30 22:33:12.000000000","message":"Good catch","commit_id":"514935b2c2a5e382340832ea00c9d7eaf1767339"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"568fd0c48f5be4ec98b3e461cfc41e3b902fef4b","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                    self._handler.process_request(req))"},{"line_number":52,"context_line":"            print(\"Text message received: {0}\".format(payload.decode(\u0027utf8\u0027)))"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        resp_json \u003d json.dumps(resp.get_response())"},{"line_number":55,"context_line":"        self.sendMessage(resp_json, isBinary)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def onClose(self, wasClean, code, reason):"}],"source_content_type":"text/x-python","patch_set":13,"id":"da9b358b_1782d594","line":54,"updated":"2015-03-30 20:21:54.000000000","message":"I didn\u0027t mean we should support binary. What I meant is that the variable `resp` is defined just in the `else` clause. If binary data is passed, we\u0027re not failing early, which means the execution will get here and it\u0027ll end in an error. I think we should build a `resp` in the `if isBinary` clause and report 400.","commit_id":"514935b2c2a5e382340832ea00c9d7eaf1767339"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"e1c6d902ca9babd1ec91fdea3345cbd2ecc9bb55","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                    self._handler.process_request(req))"},{"line_number":52,"context_line":"            print(\"Text message received: {0}\".format(payload.decode(\u0027utf8\u0027)))"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        resp_json \u003d json.dumps(resp.get_response())"},{"line_number":55,"context_line":"        self.sendMessage(resp_json, isBinary)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def onClose(self, wasClean, code, reason):"}],"source_content_type":"text/x-python","patch_set":13,"id":"da9b358b_c831680d","line":54,"in_reply_to":"da9b358b_1782d594","updated":"2015-03-30 22:33:12.000000000","message":"Sounds good!","commit_id":"514935b2c2a5e382340832ea00c9d7eaf1767339"},{"author":{"_account_id":6159,"name":"Flavio Percoco Premoli","display_name":"flaper87","email":"flavio.percoco@flyrlabs.com","username":"flaper87"},"change_message_id":"568fd0c48f5be4ec98b3e461cfc41e3b902fef4b","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        headers \u003d pl.get(\u0027headers\u0027)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        return request.Request(action\u003daction, body\u003dbody,"},{"line_number":67,"context_line":"                               headers\u003dheaders, api\u003d\"v1.1\")"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    @staticmethod"},{"line_number":70,"context_line":"    def _validate_request(pl, req):"}],"source_content_type":"text/x-python","patch_set":13,"id":"da9b358b_7717e151","line":67,"updated":"2015-03-30 20:21:54.000000000","message":"The usecase for the version thing is to support more API\u0027s. Your binding the protocol implementation to the API. By accepting a version, you can load the right, supported, API version and process the request. I guess this can be done in a follow-up patch","commit_id":"514935b2c2a5e382340832ea00c9d7eaf1767339"},{"author":{"_account_id":6413,"name":"Victoria Martinez de la Cruz","email":"victoria@redhat.com","username":"vkmc"},"change_message_id":"e1c6d902ca9babd1ec91fdea3345cbd2ecc9bb55","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        headers \u003d pl.get(\u0027headers\u0027)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        return request.Request(action\u003daction, body\u003dbody,"},{"line_number":67,"context_line":"                               headers\u003dheaders, api\u003d\"v1.1\")"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    @staticmethod"},{"line_number":70,"context_line":"    def _validate_request(pl, req):"}],"source_content_type":"text/x-python","patch_set":13,"id":"da9b358b_e82c2cad","line":67,"in_reply_to":"da9b358b_7717e151","updated":"2015-03-30 22:33:12.000000000","message":"Cool","commit_id":"514935b2c2a5e382340832ea00c9d7eaf1767339"}]}
