)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"d73edc7dcbaa8bea3c282a8e36532a7de6ce6a82","unresolved":false,"context_lines":[{"line_number":9,"context_line":"In the process of unification of the clients code we should"},{"line_number":10,"context_line":"reuse common functionality from Oslo."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"bp common-client-library-2"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I0e027c33ee42b6de032d33269caeea33e7837f40"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"1ae5cdf2_1d45d4b2","line":12,"updated":"2014-06-02 15:14:21.000000000","message":"Implements: blueprint \u003cbp-name\u003e\n\nalso, the current link points to an oslo bp, can you add a ceilometerclient bp?","commit_id":"77d38243045f60d9547d23eaff002d9b9b949f35"}],"ceilometerclient/client.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6c5a36a0ed7ff812e76bc08db59ec24ff5678425","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def __init__(self, auth_system\u003dNone, **kwargs):"},{"line_number":152,"context_line":"        self.opt_names.extend(self.common_opt_names)"},{"line_number":153,"context_line":"        super(AuthPlugin, self).__init__(auth_system\u003dNone, **kwargs)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def _do_authenticate(self, http_client):"},{"line_number":156,"context_line":"        if self.opts.get(\u0027token\u0027) and self.opts.get(\u0027endpoint\u0027):"}],"source_content_type":"text/x-python","patch_set":15,"id":"baada198_c74b96b0","line":153,"updated":"2014-07-30 21:53:02.000000000","message":"super(AuthPlugin, self).__init__(auth_system, **kwargs)","commit_id":"35d12633c22744c7b2132f4d57013d6d5e83b258"},{"author":{"_account_id":9550,"name":"Eugeniya Kudryashova","email":"ekudryashova@mirantis.com","username":"ekudryashova"},"change_message_id":"1e3490911aedf0db653eef7d2a266d3861ad00e3","unresolved":false,"context_lines":[{"line_number":150,"context_line":""},{"line_number":151,"context_line":"    def __init__(self, auth_system\u003dNone, **kwargs):"},{"line_number":152,"context_line":"        self.opt_names.extend(self.common_opt_names)"},{"line_number":153,"context_line":"        super(AuthPlugin, self).__init__(auth_system\u003dNone, **kwargs)"},{"line_number":154,"context_line":""},{"line_number":155,"context_line":"    def _do_authenticate(self, http_client):"},{"line_number":156,"context_line":"        if self.opts.get(\u0027token\u0027) and self.opts.get(\u0027endpoint\u0027):"}],"source_content_type":"text/x-python","patch_set":15,"id":"baada198_575b9f85","line":153,"in_reply_to":"baada198_c74b96b0","updated":"2014-07-31 11:37:38.000000000","message":"Done","commit_id":"35d12633c22744c7b2132f4d57013d6d5e83b258"}],"ceilometerclient/common/base.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"66c0011750b67b022b176d72aad07b3e6da34b9a","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        self.api \u003d api"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def _create(self, url, body):"},{"line_number":52,"context_line":"        resp \u003d self.api.post(url, json\u003dbody).json()"},{"line_number":53,"context_line":"        if resp:"},{"line_number":54,"context_line":"            return self.resource_class(self, resp)"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7adec928_247eef6b","line":52,"updated":"2014-05-13 15:56:50.000000000","message":"I dislike the name of this variable. If we want to unify clients code, names of variables should be similar. I prefer to use names from oslo:BaseManager[1].\n\n[1] https://github.com/openstack/oslo-incubator/blob/master/openstack/common/apiclient/base.py#L114","commit_id":"163c29713648afa4decd8fa3859910616770e6a2"},{"author":{"_account_id":9550,"name":"Eugeniya Kudryashova","email":"ekudryashova@mirantis.com","username":"ekudryashova"},"change_message_id":"ad9168696da35851055859595a8ac8a28cfe5b59","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        self.api \u003d api"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def _create(self, url, body):"},{"line_number":52,"context_line":"        resp \u003d self.api.post(url, json\u003dbody).json()"},{"line_number":53,"context_line":"        if resp:"},{"line_number":54,"context_line":"            return self.resource_class(self, resp)"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"7adec928_9a771e3a","line":52,"in_reply_to":"7adec928_247eef6b","updated":"2014-05-13 16:06:42.000000000","message":"Ok, I agree and will change it","commit_id":"163c29713648afa4decd8fa3859910616770e6a2"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"66c0011750b67b022b176d72aad07b3e6da34b9a","unresolved":false,"context_lines":[{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def _list(self, url, response_key\u003dNone, obj_class\u003dNone, body\u003dNone,"},{"line_number":57,"context_line":"              expect_single\u003dFalse):"},{"line_number":58,"context_line":"        resp \u003d self.api.get(url).json()"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        if obj_class is None:"},{"line_number":61,"context_line":"            obj_class \u003d self.resource_class"}],"source_content_type":"text/x-python","patch_set":8,"id":"7adec928_44813b49","line":58,"updated":"2014-05-13 15:56:50.000000000","message":"same here","commit_id":"163c29713648afa4decd8fa3859910616770e6a2"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"66c0011750b67b022b176d72aad07b3e6da34b9a","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        return [obj_class(self, res, loaded\u003dTrue) for res in data if res]"},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"    def _update(self, url, body, response_key\u003dNone):"},{"line_number":75,"context_line":"        resp \u003d self.api.put(url, json\u003dbody).json()"},{"line_number":76,"context_line":"        # PUT requests may not return a body"},{"line_number":77,"context_line":"        if resp:"},{"line_number":78,"context_line":"            return self.resource_class(self, resp)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7adec928_64971791","line":75,"updated":"2014-05-13 15:56:50.000000000","message":"same here","commit_id":"163c29713648afa4decd8fa3859910616770e6a2"}],"ceilometerclient/openstack/common/apiclient/client.py":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"b056fcab9cd89598a6434ecad0ef12f7f762811b","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        for element in kwargs[\u0027headers\u0027]:"},{"line_number":111,"context_line":"            header \u003d \"-H \u0027%s: %s\u0027\" % (element, kwargs[\u0027headers\u0027][element])"},{"line_number":112,"context_line":"            string_parts.append(header)"},{"line_number":113,"context_line":"        _logger.debug(\"REQ: %s\" % \" \".join(string_parts))"},{"line_number":114,"context_line":"        if \u0027data\u0027 in kwargs:"},{"line_number":115,"context_line":"            _logger.debug(\"REQ BODY: %s\\n\" % (kwargs[\u0027data\u0027]))"},{"line_number":116,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BNmA%3D","line":113,"updated":"2014-01-29 01:15:02.000000000","message":"-1: is this a sync from oslo or you just modify it directly? if it is a sync, please mention there is a sync explicitly in commit message","commit_id":"9607ed0e88ff940958b78c3d4a536672e9c6b274"},{"author":{"_account_id":9550,"name":"Eugeniya Kudryashova","email":"ekudryashova@mirantis.com","username":"ekudryashova"},"change_message_id":"049e543e4321e8cacffd83baa7e0995a5924fed6","unresolved":false,"context_lines":[{"line_number":110,"context_line":"        for element in kwargs[\u0027headers\u0027]:"},{"line_number":111,"context_line":"            header \u003d \"-H \u0027%s: %s\u0027\" % (element, kwargs[\u0027headers\u0027][element])"},{"line_number":112,"context_line":"            string_parts.append(header)"},{"line_number":113,"context_line":"        _logger.debug(\"REQ: %s\" % \" \".join(string_parts))"},{"line_number":114,"context_line":"        if \u0027data\u0027 in kwargs:"},{"line_number":115,"context_line":"            _logger.debug(\"REQ BODY: %s\\n\" % (kwargs[\u0027data\u0027]))"},{"line_number":116,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAUH%2F%2BLsY%3D","line":113,"in_reply_to":"AAAAUH%2F%2BNmA%3D","updated":"2014-01-29 10:50:43.000000000","message":"Done","commit_id":"9607ed0e88ff940958b78c3d4a536672e9c6b274"}],"ceilometerclient/tests/test_client.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"66c0011750b67b022b176d72aad07b3e6da34b9a","unresolved":false,"context_lines":[{"line_number":38,"context_line":"class ClientTest(utils.BaseTestCase):"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def create_client(self, api_version\u003d2, endpoint\u003dNone, exclude\u003d[]):"},{"line_number":41,"context_line":"        env \u003d dict((k, v) for k, v in FAKE_ENV.items()"},{"line_number":42,"context_line":"                   if k not in exclude) if not endpoint else \\"},{"line_number":43,"context_line":"            dict((k, v) for k, v in FAKE_ENV_NO_AUTH_PLUGIN.items()"},{"line_number":44,"context_line":"                 if k not in exclude)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7adec928_a4a03fa0","line":41,"updated":"2014-05-13 15:56:50.000000000","message":"Can you refactor this block of code, because it is hard to read and debug in future?","commit_id":"163c29713648afa4decd8fa3859910616770e6a2"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"66c0011750b67b022b176d72aad07b3e6da34b9a","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        self.assertIsInstance(c2, v2client.Client)"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def test_client_auth_lambda(self):"},{"line_number":59,"context_line":"        FAKE_ENV[\u0027auth_token\u0027] \u003d lambda: FAKE_ENV[\u0027auth_token\u0027]"},{"line_number":60,"context_line":"        self.assertIsInstance(FAKE_ENV[\u0027auth_token\u0027],"},{"line_number":61,"context_line":"                              types.FunctionType)"},{"line_number":62,"context_line":"        c2 \u003d self.create_client()"}],"source_content_type":"text/x-python","patch_set":8,"id":"7adec928_b7023309","line":59,"updated":"2014-05-13 15:56:50.000000000","message":"If you want to change values in FAKE_ENV, you should use `copy.deepcopy` before do changes, because FAKE_ENV is a global variable. This can prevent influence of your changes on other tests.","commit_id":"163c29713648afa4decd8fa3859910616770e6a2"},{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"66c0011750b67b022b176d72aad07b3e6da34b9a","unresolved":false,"context_lines":[{"line_number":63,"context_line":"        self.assertIsInstance(c2, v2client.Client)"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def test_client_auth_non_lambda(self):"},{"line_number":66,"context_line":"        FAKE_ENV[\u0027auth_token\u0027] \u003d \"1234\""},{"line_number":67,"context_line":"        self.assertIsInstance(FAKE_ENV[\u0027auth_token\u0027], str)"},{"line_number":68,"context_line":"        c2 \u003d self.create_client()"},{"line_number":69,"context_line":"        self.assertIsInstance(c2, v2client.Client)"}],"source_content_type":"text/x-python","patch_set":8,"id":"7adec928_fa03c20a","line":66,"updated":"2014-05-13 15:56:50.000000000","message":"same here","commit_id":"163c29713648afa4decd8fa3859910616770e6a2"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6c5a36a0ed7ff812e76bc08db59ec24ff5678425","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        self.assertIsInstance(c2, v2client.Client)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def test_client_auth_lambda(self):"},{"line_number":52,"context_line":"        env \u003d copy.deepcopy(FAKE_ENV)"},{"line_number":53,"context_line":"        env[\u0027token\u0027] \u003d lambda: env[\u0027token\u0027]"},{"line_number":54,"context_line":"        self.assertIsInstance(env[\u0027token\u0027],"},{"line_number":55,"context_line":"                              types.FunctionType)"}],"source_content_type":"text/x-python","patch_set":15,"id":"baada198_07158e3c","line":52,"updated":"2014-07-30 21:53:02.000000000","message":"you probably don\u0027t need to deepcopy since it\u0027s all strings.\n\nFAKE_ENV.copy() should be fine?","commit_id":"35d12633c22744c7b2132f4d57013d6d5e83b258"},{"author":{"_account_id":9550,"name":"Eugeniya Kudryashova","email":"ekudryashova@mirantis.com","username":"ekudryashova"},"change_message_id":"1e3490911aedf0db653eef7d2a266d3861ad00e3","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        self.assertIsInstance(c2, v2client.Client)"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def test_client_auth_lambda(self):"},{"line_number":52,"context_line":"        env \u003d copy.deepcopy(FAKE_ENV)"},{"line_number":53,"context_line":"        env[\u0027token\u0027] \u003d lambda: env[\u0027token\u0027]"},{"line_number":54,"context_line":"        self.assertIsInstance(env[\u0027token\u0027],"},{"line_number":55,"context_line":"                              types.FunctionType)"}],"source_content_type":"text/x-python","patch_set":15,"id":"baada198_974c57cb","line":52,"in_reply_to":"baada198_07158e3c","updated":"2014-07-31 11:37:38.000000000","message":"Done","commit_id":"35d12633c22744c7b2132f4d57013d6d5e83b258"}],"ceilometerclient/tests/test_shell.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"b5c5da26eba82b1e7b44a339735a374fb2dad8ab","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        mock_ksclient.side_effect \u003d exc.HTTPUnauthorized"},{"line_number":100,"context_line":"        self.make_env()"},{"line_number":101,"context_line":"        args \u003d [\u0027--debug\u0027, \u0027event-list\u0027]"},{"line_number":102,"context_line":"        self.assertRaises(exc.CommandError, ceilometer_shell.main, args)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    @mock.patch.object(ksclient, \u0027Client\u0027)"},{"line_number":105,"context_line":"    def test_dash_d_switch_raises_error(self, mock_ksclient):"}],"source_content_type":"text/x-python","patch_set":9,"id":"7adec928_2427cf65","line":102,"updated":"2014-05-23 15:02:26.000000000","message":"curious why this is needed? does client wrap errors?","commit_id":"1dde0802ceb219e30ca2fc1d253858b9982ccf63"},{"author":{"_account_id":9550,"name":"Eugeniya Kudryashova","email":"ekudryashova@mirantis.com","username":"ekudryashova"},"change_message_id":"a5265b722e43a172d32c948428412249b90e8551","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        mock_ksclient.side_effect \u003d exc.HTTPUnauthorized"},{"line_number":100,"context_line":"        self.make_env()"},{"line_number":101,"context_line":"        args \u003d [\u0027--debug\u0027, \u0027event-list\u0027]"},{"line_number":102,"context_line":"        self.assertRaises(exc.CommandError, ceilometer_shell.main, args)"},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"    @mock.patch.object(ksclient, \u0027Client\u0027)"},{"line_number":105,"context_line":"    def test_dash_d_switch_raises_error(self, mock_ksclient):"}],"source_content_type":"text/x-python","patch_set":9,"id":"7adec928_3713830e","line":102,"in_reply_to":"7adec928_2427cf65","updated":"2014-05-23 15:25:53.000000000","message":"Yes. shell wraps Unauthorized exception:\nhttps://github.com/openstack/python-ceilometerclient/blob/master/ceilometerclient/shell.py#L291","commit_id":"1dde0802ceb219e30ca2fc1d253858b9982ccf63"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6c5a36a0ed7ff812e76bc08db59ec24ff5678425","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    @mock.patch(\u0027sys.stdout\u0027, new\u003dsix.StringIO())"},{"line_number":51,"context_line":"    @mock.patch.object(ks_session, \u0027Session\u0027)"},{"line_number":52,"context_line":"    @mock.patch.object(v1client.client.HTTPClient, \u0027client_request\u0027)"},{"line_number":53,"context_line":"    def shell(self, argstr, mock_ksclient, mock_request):"},{"line_number":54,"context_line":"        try:"},{"line_number":55,"context_line":"            _shell \u003d ceilometer_shell.CeilometerShell()"},{"line_number":56,"context_line":"            _shell.main(argstr.split())"}],"source_content_type":"text/x-python","patch_set":15,"id":"baada198_87a51e05","line":53,"updated":"2014-07-30 21:53:02.000000000","message":"this is strange. shouldn\u0027t the inner decorator be the first parameter?\n\nie.  def shell(self, mock_request, mock_ksclient, argstr):","commit_id":"35d12633c22744c7b2132f4d57013d6d5e83b258"},{"author":{"_account_id":9550,"name":"Eugeniya Kudryashova","email":"ekudryashova@mirantis.com","username":"ekudryashova"},"change_message_id":"1e3490911aedf0db653eef7d2a266d3861ad00e3","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    @mock.patch(\u0027sys.stdout\u0027, new\u003dsix.StringIO())"},{"line_number":51,"context_line":"    @mock.patch.object(ks_session, \u0027Session\u0027)"},{"line_number":52,"context_line":"    @mock.patch.object(v1client.client.HTTPClient, \u0027client_request\u0027)"},{"line_number":53,"context_line":"    def shell(self, argstr, mock_ksclient, mock_request):"},{"line_number":54,"context_line":"        try:"},{"line_number":55,"context_line":"            _shell \u003d ceilometer_shell.CeilometerShell()"},{"line_number":56,"context_line":"            _shell.main(argstr.split())"}],"source_content_type":"text/x-python","patch_set":15,"id":"baada198_57d2bfd1","line":53,"in_reply_to":"baada198_87a51e05","updated":"2014-07-31 11:37:38.000000000","message":"Done","commit_id":"35d12633c22744c7b2132f4d57013d6d5e83b258"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"ae114191c05ba9064ae5c81730bc5dc616c99d5d","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    @mock.patch(\u0027sys.stdout\u0027, new\u003dsix.StringIO())"},{"line_number":51,"context_line":"    @mock.patch.object(ks_session, \u0027Session\u0027)"},{"line_number":52,"context_line":"    @mock.patch.object(v1client.client.HTTPClient, \u0027client_request\u0027)"},{"line_number":53,"context_line":"    def shell(self, argstr, mock_request, mock_ksclient):"},{"line_number":54,"context_line":"        try:"},{"line_number":55,"context_line":"            _shell \u003d ceilometer_shell.CeilometerShell()"},{"line_number":56,"context_line":"            _shell.main(argstr.split())"}],"source_content_type":"text/x-python","patch_set":16,"id":"baada198_5792b858","line":53,"updated":"2014-07-31 14:25:45.000000000","message":"should argstr be the last parameter? i could be wrong and your original ordering may be right... i guess now that i look a bit more. maybe just mock both patch.object() and remove parameters since we don\u0027t use them.\n\nie.\n\n@mock.patch(\u0027sys.stdout\u0027, new\u003dsix.StringIO())\n@mock.patch.object(ks_session, \u0027Session\u0027, mock.MagicMock())\n@mock.patch.object(v1client.client.HTTPClient, \u0027client_request\u0027, mock.MagicMock())\ndef shell(self, argstr):\n   ...","commit_id":"34ed8600a9fdd6fc5e25b3566e83e1a85ad47a0f"},{"author":{"_account_id":9550,"name":"Eugeniya Kudryashova","email":"ekudryashova@mirantis.com","username":"ekudryashova"},"change_message_id":"f680838e183c1673e1dbca592f58f6bf35e36bd5","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    @mock.patch(\u0027sys.stdout\u0027, new\u003dsix.StringIO())"},{"line_number":51,"context_line":"    @mock.patch.object(ks_session, \u0027Session\u0027)"},{"line_number":52,"context_line":"    @mock.patch.object(v1client.client.HTTPClient, \u0027client_request\u0027)"},{"line_number":53,"context_line":"    def shell(self, argstr, mock_request, mock_ksclient):"},{"line_number":54,"context_line":"        try:"},{"line_number":55,"context_line":"            _shell \u003d ceilometer_shell.CeilometerShell()"},{"line_number":56,"context_line":"            _shell.main(argstr.split())"}],"source_content_type":"text/x-python","patch_set":16,"id":"baada198_e3ddce14","line":53,"in_reply_to":"baada198_5792b858","updated":"2014-07-31 15:50:14.000000000","message":"Looks like now it\u0027s right order (\u0027help foofoo\u0027, \u003cMagicMock name\u003d\u0027client_request\u0027\u003e, \u003cMagicMock name\u003d\u0027Session\u0027\u003e), but i totally agree to remove it at all and will do that :)","commit_id":"34ed8600a9fdd6fc5e25b3566e83e1a85ad47a0f"}],"ceilometerclient/tests/v2/test_alarms.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"b5c5da26eba82b1e7b44a339735a374fb2dad8ab","unresolved":false,"context_lines":[{"line_number":300,"context_line":"        expect_put \u003d ["},{"line_number":301,"context_line":"            \u0027PUT\u0027, \u0027/v2/alarms/alarm-id\u0027"},{"line_number":302,"context_line":"        ]"},{"line_number":303,"context_line":"        self.http_client.assert_called(*expect_put, body\u003dUPDATED_ALARM)"},{"line_number":304,"context_line":"        self.assertTrue(alarm)"},{"line_number":305,"context_line":"        self.assertEqual(alarm.alarm_id, \u0027alarm-id\u0027)"},{"line_number":306,"context_line":"        for (key, value) in six.iteritems(UPDATED_ALARM):"}],"source_content_type":"text/x-python","patch_set":9,"id":"7adec928_64dd5770","line":303,"updated":"2014-05-23 15:02:26.000000000","message":"this test has been changed.... can we not used self.http_client.assert_called_anytime?","commit_id":"1dde0802ceb219e30ca2fc1d253858b9982ccf63"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"b5c5da26eba82b1e7b44a339735a374fb2dad8ab","unresolved":false,"context_lines":[{"line_number":311,"context_line":"        expect_put \u003d ["},{"line_number":312,"context_line":"            \u0027PUT\u0027, \u0027/v2/alarms/alarm-id\u0027"},{"line_number":313,"context_line":"        ]"},{"line_number":314,"context_line":"        self.http_client.assert_called(*expect_put, body\u003dUPDATED_ALARM)"},{"line_number":315,"context_line":"        self.assertTrue(alarm)"},{"line_number":316,"context_line":"        self.assertEqual(alarm.alarm_id, \u0027alarm-id\u0027)"},{"line_number":317,"context_line":"        for (key, value) in six.iteritems(UPDATED_ALARM):"}],"source_content_type":"text/x-python","patch_set":9,"id":"7adec928_84d8a380","line":314,"updated":"2014-05-23 15:02:26.000000000","message":"same","commit_id":"1dde0802ceb219e30ca2fc1d253858b9982ccf63"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"b5c5da26eba82b1e7b44a339735a374fb2dad8ab","unresolved":false,"context_lines":[{"line_number":436,"context_line":"        body[u\u0027time_constraints\u0027] \u003d \\"},{"line_number":437,"context_line":"            AN_ALARM[u\u0027time_constraints\u0027] + [new_constraint]"},{"line_number":438,"context_line":"        expect \u003d ["},{"line_number":439,"context_line":"            \u0027PUT\u0027, \u0027/v2/alarms/alarm-id\u0027"},{"line_number":440,"context_line":"        ]"},{"line_number":441,"context_line":"        self.http_client.assert_called(*expect)"},{"line_number":442,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"7adec928_c4bf0ba9","line":439,"updated":"2014-05-23 15:02:26.000000000","message":"missing body","commit_id":"1dde0802ceb219e30ca2fc1d253858b9982ccf63"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"d73edc7dcbaa8bea3c282a8e36532a7de6ce6a82","unresolved":false,"context_lines":[{"line_number":300,"context_line":"        expect_put \u003d ["},{"line_number":301,"context_line":"            \u0027PUT\u0027, \u0027/v2/alarms/alarm-id\u0027"},{"line_number":302,"context_line":"        ]"},{"line_number":303,"context_line":"        self.http_client.assert_called(*expect_put, body\u003dUPDATED_ALARM)"},{"line_number":304,"context_line":"        self.assertTrue(alarm)"},{"line_number":305,"context_line":"        self.assertEqual(alarm.alarm_id, \u0027alarm-id\u0027)"},{"line_number":306,"context_line":"        for (key, value) in six.iteritems(UPDATED_ALARM):"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_3d05307a","line":303,"updated":"2014-06-02 15:14:21.000000000","message":"this test has been changed.... can we not used self.http_client.assert_called_anytime?","commit_id":"77d38243045f60d9547d23eaff002d9b9b949f35"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"d73edc7dcbaa8bea3c282a8e36532a7de6ce6a82","unresolved":false,"context_lines":[{"line_number":311,"context_line":"        expect_put \u003d ["},{"line_number":312,"context_line":"            \u0027PUT\u0027, \u0027/v2/alarms/alarm-id\u0027"},{"line_number":313,"context_line":"        ]"},{"line_number":314,"context_line":"        self.http_client.assert_called(*expect_put, body\u003dUPDATED_ALARM)"},{"line_number":315,"context_line":"        self.assertTrue(alarm)"},{"line_number":316,"context_line":"        self.assertEqual(alarm.alarm_id, \u0027alarm-id\u0027)"},{"line_number":317,"context_line":"        for (key, value) in six.iteritems(UPDATED_ALARM):"}],"source_content_type":"text/x-python","patch_set":10,"id":"1ae5cdf2_bdf8607d","line":314,"updated":"2014-06-02 15:14:21.000000000","message":"same","commit_id":"77d38243045f60d9547d23eaff002d9b9b949f35"}],"ceilometerclient/tests/v2/test_query_alarms.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6c5a36a0ed7ff812e76bc08db59ec24ff5678425","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from ceilometerclient.openstack.common.apiclient import client"},{"line_number":19,"context_line":"from ceilometerclient.openstack.common.apiclient import fake_client"},{"line_number":20,"context_line":"from ceilometerclient.tests import utils"}],"source_content_type":"text/x-python","patch_set":15,"id":"baada198_c71716ee","line":17,"updated":"2014-07-30 21:53:02.000000000","message":"(nit) remove whitespace","commit_id":"35d12633c22744c7b2132f4d57013d6d5e83b258"},{"author":{"_account_id":9550,"name":"Eugeniya Kudryashova","email":"ekudryashova@mirantis.com","username":"ekudryashova"},"change_message_id":"1e3490911aedf0db653eef7d2a266d3861ad00e3","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from ceilometerclient.openstack.common.apiclient import client"},{"line_number":19,"context_line":"from ceilometerclient.openstack.common.apiclient import fake_client"},{"line_number":20,"context_line":"from ceilometerclient.tests import utils"}],"source_content_type":"text/x-python","patch_set":15,"id":"baada198_d7ddefde","line":17,"in_reply_to":"baada198_c71716ee","updated":"2014-07-31 11:37:38.000000000","message":"Done","commit_id":"35d12633c22744c7b2132f4d57013d6d5e83b258"}],"ceilometerclient/tests/v2/test_query_samples.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6c5a36a0ed7ff812e76bc08db59ec24ff5678425","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from ceilometerclient.openstack.common.apiclient import client"},{"line_number":19,"context_line":"from ceilometerclient.openstack.common.apiclient import fake_client"},{"line_number":20,"context_line":"from ceilometerclient.tests import utils"}],"source_content_type":"text/x-python","patch_set":15,"id":"baada198_e7edfaf1","line":17,"updated":"2014-07-30 21:53:02.000000000","message":"(nit) remove whitespace","commit_id":"35d12633c22744c7b2132f4d57013d6d5e83b258"},{"author":{"_account_id":9550,"name":"Eugeniya Kudryashova","email":"ekudryashova@mirantis.com","username":"ekudryashova"},"change_message_id":"1e3490911aedf0db653eef7d2a266d3861ad00e3","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from ceilometerclient.openstack.common.apiclient import client"},{"line_number":19,"context_line":"from ceilometerclient.openstack.common.apiclient import fake_client"},{"line_number":20,"context_line":"from ceilometerclient.tests import utils"}],"source_content_type":"text/x-python","patch_set":15,"id":"baada198_37e62bb1","line":17,"in_reply_to":"baada198_e7edfaf1","updated":"2014-07-31 11:37:38.000000000","message":"Done","commit_id":"35d12633c22744c7b2132f4d57013d6d5e83b258"}],"ceilometerclient/tests/v2/test_statistics.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"b5c5da26eba82b1e7b44a339735a374fb2dad8ab","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                                   groupby\u003d\u0027resource_id\u0027))"},{"line_number":191,"context_line":"        expect \u003d ["},{"line_number":192,"context_line":"            \u0027GET\u0027,"},{"line_number":193,"context_line":"            \u0027%s?%s%s\u0027 % (base_url, qry, groupby), None"},{"line_number":194,"context_line":"        ]"},{"line_number":195,"context_line":"        self.http_client.assert_called(*expect)"},{"line_number":196,"context_line":"        self.assertEqual(2, len(stats))"}],"source_content_type":"text/x-python","patch_set":9,"id":"7adec928_843a6332","line":193,"updated":"2014-05-23 15:02:26.000000000","message":"don\u0027t need to pass in None for body","commit_id":"1dde0802ceb219e30ca2fc1d253858b9982ccf63"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"b5c5da26eba82b1e7b44a339735a374fb2dad8ab","unresolved":false,"context_lines":[{"line_number":215,"context_line":"            \u0027GET\u0027,"},{"line_number":216,"context_line":"            \u0027%s?%s\u0027 % (base_url, aggregate_query)"},{"line_number":217,"context_line":"        ]"},{"line_number":218,"context_line":"        self.http_client.assert_called(*expect, body\u003dNone)"},{"line_number":219,"context_line":"        self.assertEqual(1, len(stats))"},{"line_number":220,"context_line":"        self.assertEqual(2, stats[0].count)"},{"line_number":221,"context_line":"        self.assertEqual(2.0, stats[0].aggregate.get(\u0027count\u0027))"}],"source_content_type":"text/x-python","patch_set":9,"id":"7adec928_c4446bb9","line":218,"updated":"2014-05-23 15:02:26.000000000","message":"same as above","commit_id":"1dde0802ceb219e30ca2fc1d253858b9982ccf63"}],"ceilometerclient/v1/client.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"66c0011750b67b022b176d72aad07b3e6da34b9a","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        \"\"\"Initialize a new client for the Ceilometer v1 API.\"\"\""},{"line_number":35,"context_line":"        self.auth_plugin \u003d kwargs.get(\u0027auth_plugin\u0027) \\"},{"line_number":36,"context_line":"            or self.get_auth_plugin(*args, **kwargs)"},{"line_number":37,"context_line":"        self.client \u003d client.HTTPClient(auth_plugin\u003dself.auth_plugin,"},{"line_number":38,"context_line":"                                        region_name\u003dkwargs.get(\u0027region_name\u0027),"},{"line_number":39,"context_line":"                                        endpoint_type\u003d"},{"line_number":40,"context_line":"                                        kwargs.get(\u0027endpoint_type\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"7adec928_fa866264","line":37,"updated":"2014-05-13 15:56:50.000000000","message":"Number of LOC can be decreased here:\n\nself.client \u003d client.HTTPClient(auth_plugin\u003dself.auth_plugin, cert\u003dkwargs.get(\u0027cacert\u0027),  **kwargs)","commit_id":"163c29713648afa4decd8fa3859910616770e6a2"},{"author":{"_account_id":9550,"name":"Eugeniya Kudryashova","email":"ekudryashova@mirantis.com","username":"ekudryashova"},"change_message_id":"ad9168696da35851055859595a8ac8a28cfe5b59","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        \"\"\"Initialize a new client for the Ceilometer v1 API.\"\"\""},{"line_number":35,"context_line":"        self.auth_plugin \u003d kwargs.get(\u0027auth_plugin\u0027) \\"},{"line_number":36,"context_line":"            or self.get_auth_plugin(*args, **kwargs)"},{"line_number":37,"context_line":"        self.client \u003d client.HTTPClient(auth_plugin\u003dself.auth_plugin,"},{"line_number":38,"context_line":"                                        region_name\u003dkwargs.get(\u0027region_name\u0027),"},{"line_number":39,"context_line":"                                        endpoint_type\u003d"},{"line_number":40,"context_line":"                                        kwargs.get(\u0027endpoint_type\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"7adec928_5a7d961b","line":37,"in_reply_to":"7adec928_fa866264","updated":"2014-05-13 16:06:42.000000000","message":"I thought about it, but way you suggest lead to exception: more then one value for key is present. I think if HTTP client takes exact list of attributes it\u0027s incorrect to give it all kwargs, at least because of key auth_plugin, which is unexpected in HTTP client.","commit_id":"163c29713648afa4decd8fa3859910616770e6a2"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"b5c5da26eba82b1e7b44a339735a374fb2dad8ab","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        self.resources \u003d meters.ResourceManager(self.http_client)"},{"line_number":58,"context_line":"        self.projects \u003d meters.ProjectManager(self.http_client)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    def get_auth_plugin(self, endpoint\u003dNone, **kwargs):"},{"line_number":61,"context_line":"        auth_plugin \u003d ceiloclient.AuthPlugin("},{"line_number":62,"context_line":"            auth_url\u003dkwargs.get(\u0027auth_url\u0027),"},{"line_number":63,"context_line":"            service_type\u003dkwargs.get(\u0027service_type\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"7adec928_8107b51c","line":60,"updated":"2014-05-23 15:02:26.000000000","message":"out of curiosity, why does endpoint have default here but not in v2?","commit_id":"1dde0802ceb219e30ca2fc1d253858b9982ccf63"}],"ceilometerclient/v2/alarms.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"b5c5da26eba82b1e7b44a339735a374fb2dad8ab","unresolved":false,"context_lines":[{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    def set_state(self, alarm_id, state):"},{"line_number":155,"context_line":"        resp \u003d self.api.put(\"%s/state\" % self._path(alarm_id),"},{"line_number":156,"context_line":"                            json\u003dstate).json()"},{"line_number":157,"context_line":"        return resp"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"    def get_state(self, alarm_id):"}],"source_content_type":"text/x-python","patch_set":9,"id":"7adec928_646d5732","line":156,"updated":"2014-05-23 15:02:26.000000000","message":"(nit) but can we use a consistent name... in some cases, we ues body as variable name and here we use resp...","commit_id":"1dde0802ceb219e30ca2fc1d253858b9982ccf63"}],"ceilometerclient/v2/client.py":[{"author":{"_account_id":9545,"name":"Andriy Kurilin","email":"andr.kurilin@gmail.com","username":"akurilin"},"change_message_id":"66c0011750b67b022b176d72aad07b3e6da34b9a","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        \"\"\"Initialize a new client for the Ceilometer v2 API.\"\"\""},{"line_number":45,"context_line":"        self.auth_plugin \u003d kwargs.get(\u0027auth_plugin\u0027) \\"},{"line_number":46,"context_line":"            or self.get_auth_plugin(*args, **kwargs)"},{"line_number":47,"context_line":"        self.client \u003d client.HTTPClient(auth_plugin\u003dself.auth_plugin,"},{"line_number":48,"context_line":"                                        region_name\u003dkwargs.get(\u0027region_name\u0027),"},{"line_number":49,"context_line":"                                        endpoint_type\u003d"},{"line_number":50,"context_line":"                                        kwargs.get(\u0027endpoint_type\u0027),"}],"source_content_type":"text/x-python","patch_set":8,"id":"7adec928_5ac5968c","line":47,"updated":"2014-05-13 15:56:50.000000000","message":"the same note as in client v1","commit_id":"163c29713648afa4decd8fa3859910616770e6a2"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"6c5a36a0ed7ff812e76bc08db59ec24ff5678425","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        self.query_alarm_history \u003d query.QueryAlarmHistoryManager("},{"line_number":79,"context_line":"            self.http_client)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def get_auth_plugin(self, endpoint, **kwargs):"},{"line_number":82,"context_line":"        auth_plugin \u003d ceiloclient.AuthPlugin("},{"line_number":83,"context_line":"            auth_url\u003dkwargs.get(\u0027auth_url\u0027),"},{"line_number":84,"context_line":"            service_type\u003dkwargs.get(\u0027service_type\u0027),"}],"source_content_type":"text/x-python","patch_set":15,"id":"baada198_677f2a18","line":81,"updated":"2014-07-30 21:53:02.000000000","message":"can this be shared as common with v1?","commit_id":"35d12633c22744c7b2132f4d57013d6d5e83b258"},{"author":{"_account_id":9550,"name":"Eugeniya Kudryashova","email":"ekudryashova@mirantis.com","username":"ekudryashova"},"change_message_id":"1e3490911aedf0db653eef7d2a266d3861ad00e3","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        self.query_alarm_history \u003d query.QueryAlarmHistoryManager("},{"line_number":79,"context_line":"            self.http_client)"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def get_auth_plugin(self, endpoint, **kwargs):"},{"line_number":82,"context_line":"        auth_plugin \u003d ceiloclient.AuthPlugin("},{"line_number":83,"context_line":"            auth_url\u003dkwargs.get(\u0027auth_url\u0027),"},{"line_number":84,"context_line":"            service_type\u003dkwargs.get(\u0027service_type\u0027),"}],"source_content_type":"text/x-python","patch_set":15,"id":"baada198_d7f40f57","line":81,"in_reply_to":"baada198_677f2a18","updated":"2014-07-31 11:37:38.000000000","message":"Done","commit_id":"35d12633c22744c7b2132f4d57013d6d5e83b258"}],"ceilometerclient/v2/query.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"b5c5da26eba82b1e7b44a339735a374fb2dad8ab","unresolved":false,"context_lines":[{"line_number":35,"context_line":"        url \u003d \u0027/v2/query%s\u0027 % self.path_suffix"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"        resp \u003d self.api.post(url, json\u003dquery)"},{"line_number":38,"context_line":"        body \u003d resp.json()"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        if body:"},{"line_number":41,"context_line":"            return [self.resource_class(self, b) for b in body]"}],"source_content_type":"text/x-python","patch_set":9,"id":"7adec928_245b4f88","line":38,"updated":"2014-05-23 15:02:26.000000000","message":"(nit) consistent variable name...","commit_id":"1dde0802ceb219e30ca2fc1d253858b9982ccf63"}],"ceilometerclient/v2/samples.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"b5c5da26eba82b1e7b44a339735a374fb2dad8ab","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        new \u003d dict((key, value) for (key, value) in kwargs.items()"},{"line_number":48,"context_line":"                   if key in CREATION_ATTRIBUTES)"},{"line_number":49,"context_line":"        url \u003d self._path(counter_name\u003dkwargs[\u0027counter_name\u0027])"},{"line_number":50,"context_line":"        resp \u003d self.api.post(url, json\u003dnew).json()"},{"line_number":51,"context_line":"        if resp:"},{"line_number":52,"context_line":"            return [Sample(self, b) for b in resp]"}],"source_content_type":"text/x-python","patch_set":9,"id":"7adec928_c449cbb8","line":50,"updated":"2014-05-23 15:02:26.000000000","message":"(nit) consistent variable name...","commit_id":"1dde0802ceb219e30ca2fc1d253858b9982ccf63"}],"requirements.txt":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"b5c5da26eba82b1e7b44a339735a374fb2dad8ab","unresolved":false,"context_lines":[{"line_number":4,"context_line":"PrettyTable\u003e\u003d0.7,\u003c0.8"},{"line_number":5,"context_line":"python-keystoneclient\u003e\u003d0.7.0"},{"line_number":6,"context_line":"six\u003e\u003d1.6.0"},{"line_number":7,"context_line":"stevedore\u003e\u003d0.14"},{"line_number":8,"context_line":""}],"source_content_type":"text/plain","patch_set":9,"id":"7adec928_44a3fb4e","line":7,"updated":"2014-05-23 15:02:26.000000000","message":"why is this being added? it doesn\u0027t seem to be added/remove in any of the modified files","commit_id":"1dde0802ceb219e30ca2fc1d253858b9982ccf63"},{"author":{"_account_id":9550,"name":"Eugeniya Kudryashova","email":"ekudryashova@mirantis.com","username":"ekudryashova"},"change_message_id":"a5265b722e43a172d32c948428412249b90e8551","unresolved":false,"context_lines":[{"line_number":4,"context_line":"PrettyTable\u003e\u003d0.7,\u003c0.8"},{"line_number":5,"context_line":"python-keystoneclient\u003e\u003d0.7.0"},{"line_number":6,"context_line":"six\u003e\u003d1.6.0"},{"line_number":7,"context_line":"stevedore\u003e\u003d0.14"},{"line_number":8,"context_line":""}],"source_content_type":"text/plain","patch_set":9,"id":"7adec928_f73afb96","line":7,"in_reply_to":"7adec928_44a3fb4e","updated":"2014-05-23 15:25:53.000000000","message":"It\u0027s nedeed in oslo auth. This module was synced before, but unused, so it did\u0027t fail\n$ grep -r \u0027stevedore\u0027 *\nceilometerclient/openstack/common/apiclient/auth.py:from stevedore import extension","commit_id":"1dde0802ceb219e30ca2fc1d253858b9982ccf63"}]}
