)]}'
{"openstack/message/v2/queue.py":[{"author":{"_account_id":8257,"name":"Brian Curtin","email":"brian@python.org","username":"briancurtin"},"change_message_id":"1eb2b9fcf5248b30773e9eb53e1a0276626acb4e","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        request \u003d self._prepare_request(requires_id\u003dTrue, prepend_key\u003dTrue)"},{"line_number":38,"context_line":"        headers \u003d {"},{"line_number":39,"context_line":"            \u0027Client-ID\u0027: uuid.uuid4(),"},{"line_number":40,"context_line":"            \u0027X-PROJECT-ID\u0027: session.get_project_id()"},{"line_number":41,"context_line":"        }"},{"line_number":42,"context_line":"        request.headers.update(headers)"},{"line_number":43,"context_line":"        response \u003d session.put(request.uri, endpoint_filter\u003dself.service,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_1c1bb31c","line":40,"range":{"start_line":40,"start_character":15,"end_line":40,"end_character":22},"updated":"2016-07-11 13:13:39.000000000","message":"Are these truly required? Several other OpenStack projects accept them but they\u0027re not always required. They\u0027re not even documented in Zaqar or in any of the examples. Do we truly need them?\n\nAdditionally, if Client-ID is in fact required, I can\u0027t imagine it being useful to the server that we just generate a new UUID for each different kind of operation. It seems like it\u0027s probably ignoring it, otherwise wouldn\u0027t it think each subsequent call is for a different client?","commit_id":"da616932362040bd80fafba11f88abdea9e60898"},{"author":{"_account_id":11034,"name":"Yanyan Hu","email":"huyanyan84@gmail.com","username":"yanyanhu"},"change_message_id":"59e2e7381009d084dd60cccae1d86e98f73a2595","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        request \u003d self._prepare_request(requires_id\u003dTrue, prepend_key\u003dTrue)"},{"line_number":38,"context_line":"        headers \u003d {"},{"line_number":39,"context_line":"            \u0027Client-ID\u0027: uuid.uuid4(),"},{"line_number":40,"context_line":"            \u0027X-PROJECT-ID\u0027: session.get_project_id()"},{"line_number":41,"context_line":"        }"},{"line_number":42,"context_line":"        request.headers.update(headers)"},{"line_number":43,"context_line":"        response \u003d session.put(request.uri, endpoint_filter\u003dself.service,"}],"source_content_type":"text/x-python","patch_set":4,"id":"1aa78d24_482c554a","line":40,"in_reply_to":"1aa78d24_1c1bb31c","updated":"2016-07-11 14:34:18.000000000","message":"hi, Brian, I have confirmed with Zaqar team that both these two headers are required by Zaqar API interfaces although it is not mentioned in Zaqai API reference. I made a test and found Zaqar API raised exception and complained required header is not provided if we don\u0027t add X-PROJECT-ID or Client-ID to request header. X-PROJECT-ID are used to support multi-tenants while Client-ID was designed for differentiating requests. Based on Zaqar team\u0027s explanation, Client-ID is more like a request ID. And if we don\u0027t have a place to keep this kind of ID in client side, they suggest to generate a random one for each API request. I think Zaqar does have some different API design from other openstack services, especially the header part. That enforces me to override almost all resource calls of resource2 to support the queue resource...","commit_id":"da616932362040bd80fafba11f88abdea9e60898"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"7273d888682778ef40313f5ee7afb88623d0c2e6","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            resp \u003d session.get(uri, endpoint_filter\u003dcls.service,"},{"line_number":82,"context_line":"                               headers\u003dheaders, params\u003dquery_params)"},{"line_number":83,"context_line":"            resp \u003d resp.json()"},{"line_number":84,"context_line":"            if cls.resources_key:"},{"line_number":85,"context_line":"                resp \u003d resp[cls.resources_key]"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"            if not resp:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_ffdc351a","line":84,"range":{"start_line":84,"start_character":12,"end_line":84,"end_character":33},"updated":"2016-08-08 14:14:04.000000000","message":"this is always True.","commit_id":"a00c55e9aac5c0907fc45bf007493714c61a28c9"},{"author":{"_account_id":11034,"name":"Yanyan Hu","email":"huyanyan84@gmail.com","username":"yanyanhu"},"change_message_id":"d5f6ab1dfd197ea3598094e470f4cc3d00d5d299","unresolved":false,"context_lines":[{"line_number":81,"context_line":"            resp \u003d session.get(uri, endpoint_filter\u003dcls.service,"},{"line_number":82,"context_line":"                               headers\u003dheaders, params\u003dquery_params)"},{"line_number":83,"context_line":"            resp \u003d resp.json()"},{"line_number":84,"context_line":"            if cls.resources_key:"},{"line_number":85,"context_line":"                resp \u003d resp[cls.resources_key]"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"            if not resp:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_d1730b4c","line":84,"range":{"start_line":84,"start_character":12,"end_line":84,"end_character":33},"in_reply_to":"9ad45d7e_ffdc351a","updated":"2016-08-09 01:50:32.000000000","message":"Yes, will remove this if. Thanks.","commit_id":"a00c55e9aac5c0907fc45bf007493714c61a28c9"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"7273d888682778ef40313f5ee7afb88623d0c2e6","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            new_marker \u003d None"},{"line_number":92,"context_line":"            for data in resp:"},{"line_number":93,"context_line":"                value \u003d cls.existing(**data)"},{"line_number":94,"context_line":"                new_marker \u003d value.id"},{"line_number":95,"context_line":"                yielded +\u003d 1"},{"line_number":96,"context_line":"                yield value"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_3f5a4d84","line":94,"range":{"start_line":94,"start_character":35,"end_line":94,"end_character":37},"updated":"2016-08-08 14:14:04.000000000","message":"will this work? queue doesn\u0027t have an \u0027id\u0027 attribute...","commit_id":"a00c55e9aac5c0907fc45bf007493714c61a28c9"},{"author":{"_account_id":11034,"name":"Yanyan Hu","email":"huyanyan84@gmail.com","username":"yanyanhu"},"change_message_id":"d5f6ab1dfd197ea3598094e470f4cc3d00d5d299","unresolved":false,"context_lines":[{"line_number":91,"context_line":"            new_marker \u003d None"},{"line_number":92,"context_line":"            for data in resp:"},{"line_number":93,"context_line":"                value \u003d cls.existing(**data)"},{"line_number":94,"context_line":"                new_marker \u003d value.id"},{"line_number":95,"context_line":"                yielded +\u003d 1"},{"line_number":96,"context_line":"                yield value"},{"line_number":97,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_d1ef8bae","line":94,"range":{"start_line":94,"start_character":35,"end_line":94,"end_character":37},"in_reply_to":"9ad45d7e_3f5a4d84","updated":"2016-08-09 01:50:32.000000000","message":"Yes, the name attribute which is \"alternate_id\" will be returned instead.","commit_id":"a00c55e9aac5c0907fc45bf007493714c61a28c9"}],"openstack/tests/unit/message/v2/test_queue.py":[{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"7273d888682778ef40313f5ee7afb88623d0c2e6","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        sot._translate_response.assert_called_once_with(resp, has_body\u003dFalse)"},{"line_number":80,"context_line":"        self.assertEqual(sot, res)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        # Using existing client_id and project_id."},{"line_number":83,"context_line":"        sot \u003d queue.Queue(**FAKE2)"},{"line_number":84,"context_line":"        sot._translate_response \u003d mock.Mock()"},{"line_number":85,"context_line":"        res \u003d sot.create(sess)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        headers \u003d {\u0027Client-ID\u0027: \u0027OLD_CLIENT_ID\u0027,"},{"line_number":88,"context_line":"                   \u0027X-PROJECT-ID\u0027: \u0027OLD_PROJECT_ID\u0027}"},{"line_number":89,"context_line":"        sess.put.assert_called_with(url, endpoint_filter\u003dsot.service,"},{"line_number":90,"context_line":"                                    headers\u003dheaders, json\u003dFAKE1)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    @mock.patch.object(uuid, \u0027uuid4\u0027)"},{"line_number":93,"context_line":"    def test_get(self, mock_uuid):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_df35f1f7","line":90,"range":{"start_line":82,"start_character":8,"end_line":90,"end_character":64},"updated":"2016-08-08 14:14:04.000000000","message":"maybe should split this into a separate test case","commit_id":"a00c55e9aac5c0907fc45bf007493714c61a28c9"},{"author":{"_account_id":11034,"name":"Yanyan Hu","email":"huyanyan84@gmail.com","username":"yanyanhu"},"change_message_id":"d5f6ab1dfd197ea3598094e470f4cc3d00d5d299","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        sot._translate_response.assert_called_once_with(resp, has_body\u003dFalse)"},{"line_number":80,"context_line":"        self.assertEqual(sot, res)"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        # Using existing client_id and project_id."},{"line_number":83,"context_line":"        sot \u003d queue.Queue(**FAKE2)"},{"line_number":84,"context_line":"        sot._translate_response \u003d mock.Mock()"},{"line_number":85,"context_line":"        res \u003d sot.create(sess)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        headers \u003d {\u0027Client-ID\u0027: \u0027OLD_CLIENT_ID\u0027,"},{"line_number":88,"context_line":"                   \u0027X-PROJECT-ID\u0027: \u0027OLD_PROJECT_ID\u0027}"},{"line_number":89,"context_line":"        sess.put.assert_called_with(url, endpoint_filter\u003dsot.service,"},{"line_number":90,"context_line":"                                    headers\u003dheaders, json\u003dFAKE1)"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    @mock.patch.object(uuid, \u0027uuid4\u0027)"},{"line_number":93,"context_line":"    def test_get(self, mock_uuid):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_91235305","line":90,"range":{"start_line":82,"start_character":8,"end_line":90,"end_character":64},"in_reply_to":"9ad45d7e_df35f1f7","updated":"2016-08-09 01:50:32.000000000","message":"Thanks, will change.","commit_id":"a00c55e9aac5c0907fc45bf007493714c61a28c9"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"7273d888682778ef40313f5ee7afb88623d0c2e6","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        sot._translate_response.assert_called_once_with(resp)"},{"line_number":111,"context_line":"        self.assertEqual(sot, res)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        # Using existing client_id and project_id."},{"line_number":114,"context_line":"        sot \u003d queue.Queue(**FAKE2)"},{"line_number":115,"context_line":"        sot._translate_response \u003d mock.Mock()"},{"line_number":116,"context_line":"        res \u003d sot.get(sess)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        headers \u003d {\u0027Client-ID\u0027: \u0027OLD_CLIENT_ID\u0027,"},{"line_number":119,"context_line":"                   \u0027X-PROJECT-ID\u0027: \u0027OLD_PROJECT_ID\u0027}"},{"line_number":120,"context_line":"        sess.get.assert_called_with(url, endpoint_filter\u003dsot.service,"},{"line_number":121,"context_line":"                                    headers\u003dheaders)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    @mock.patch.object(uuid, \u0027uuid4\u0027)"},{"line_number":124,"context_line":"    def test_delete(self, mock_uuid):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_7f25e5c0","line":121,"range":{"start_line":113,"start_character":8,"end_line":121,"end_character":52},"updated":"2016-08-08 14:14:04.000000000","message":"and this one","commit_id":"a00c55e9aac5c0907fc45bf007493714c61a28c9"},{"author":{"_account_id":11034,"name":"Yanyan Hu","email":"huyanyan84@gmail.com","username":"yanyanhu"},"change_message_id":"d5f6ab1dfd197ea3598094e470f4cc3d00d5d299","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        sot._translate_response.assert_called_once_with(resp)"},{"line_number":111,"context_line":"        self.assertEqual(sot, res)"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        # Using existing client_id and project_id."},{"line_number":114,"context_line":"        sot \u003d queue.Queue(**FAKE2)"},{"line_number":115,"context_line":"        sot._translate_response \u003d mock.Mock()"},{"line_number":116,"context_line":"        res \u003d sot.get(sess)"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"        headers \u003d {\u0027Client-ID\u0027: \u0027OLD_CLIENT_ID\u0027,"},{"line_number":119,"context_line":"                   \u0027X-PROJECT-ID\u0027: \u0027OLD_PROJECT_ID\u0027}"},{"line_number":120,"context_line":"        sess.get.assert_called_with(url, endpoint_filter\u003dsot.service,"},{"line_number":121,"context_line":"                                    headers\u003dheaders)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"    @mock.patch.object(uuid, \u0027uuid4\u0027)"},{"line_number":124,"context_line":"    def test_delete(self, mock_uuid):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_d11dcbbe","line":121,"range":{"start_line":113,"start_character":8,"end_line":121,"end_character":52},"in_reply_to":"9ad45d7e_7f25e5c0","updated":"2016-08-09 01:50:32.000000000","message":"Done","commit_id":"a00c55e9aac5c0907fc45bf007493714c61a28c9"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"7273d888682778ef40313f5ee7afb88623d0c2e6","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        sess.get_project_id.assert_called_once_with()"},{"line_number":141,"context_line":"        sot._translate_response.assert_called_once_with(resp, has_body\u003dFalse)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        # Using existing client_id and project_id."},{"line_number":144,"context_line":"        sot \u003d queue.Queue(**FAKE2)"},{"line_number":145,"context_line":"        sot._translate_response \u003d mock.Mock()"},{"line_number":146,"context_line":"        sot.delete(sess)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        headers \u003d {\u0027Client-ID\u0027: \u0027OLD_CLIENT_ID\u0027,"},{"line_number":149,"context_line":"                   \u0027X-PROJECT-ID\u0027: \u0027OLD_PROJECT_ID\u0027}"},{"line_number":150,"context_line":"        sess.delete.assert_called_with(url, endpoint_filter\u003dsot.service,"},{"line_number":151,"context_line":"                                       headers\u003dheaders)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_df1cd179","line":151,"range":{"start_line":143,"start_character":9,"end_line":151,"end_character":55},"updated":"2016-08-08 14:14:04.000000000","message":"and this one","commit_id":"a00c55e9aac5c0907fc45bf007493714c61a28c9"},{"author":{"_account_id":11034,"name":"Yanyan Hu","email":"huyanyan84@gmail.com","username":"yanyanhu"},"change_message_id":"d5f6ab1dfd197ea3598094e470f4cc3d00d5d299","unresolved":false,"context_lines":[{"line_number":140,"context_line":"        sess.get_project_id.assert_called_once_with()"},{"line_number":141,"context_line":"        sot._translate_response.assert_called_once_with(resp, has_body\u003dFalse)"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        # Using existing client_id and project_id."},{"line_number":144,"context_line":"        sot \u003d queue.Queue(**FAKE2)"},{"line_number":145,"context_line":"        sot._translate_response \u003d mock.Mock()"},{"line_number":146,"context_line":"        sot.delete(sess)"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"        headers \u003d {\u0027Client-ID\u0027: \u0027OLD_CLIENT_ID\u0027,"},{"line_number":149,"context_line":"                   \u0027X-PROJECT-ID\u0027: \u0027OLD_PROJECT_ID\u0027}"},{"line_number":150,"context_line":"        sess.delete.assert_called_with(url, endpoint_filter\u003dsot.service,"},{"line_number":151,"context_line":"                                       headers\u003dheaders)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9ad45d7e_3179c7fd","line":151,"range":{"start_line":143,"start_character":9,"end_line":151,"end_character":55},"in_reply_to":"9ad45d7e_df1cd179","updated":"2016-08-09 01:50:32.000000000","message":"Done","commit_id":"a00c55e9aac5c0907fc45bf007493714c61a28c9"}]}
