)]}'
{"ceilometerclient/common/utils.py":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"4460d9c70f980d8eee45a2245f9395c95e7bd92f","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import textwrap"},{"line_number":20,"context_line":"import uuid"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from oslo.serialization import jsonutils"},{"line_number":23,"context_line":"from oslo.utils import encodeutils"},{"line_number":24,"context_line":"from oslo.utils import importutils"},{"line_number":25,"context_line":"import prettytable"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8c0949_9c9f2ab4","line":22,"updated":"2014-11-04 14:47:50.000000000","message":"-1: need to add it to requirements.txt","commit_id":"aa070bd0ef4483243ee1e3a1b091878737da92b6"}],"ceilometerclient/v2/client.py":[{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"5ee222b80ce005f34b12b2c96d489914ccf7494c","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        self.http_client \u003d client.BaseClient(self.client)"},{"line_number":65,"context_line":"        self.meters \u003d meters.MeterManager(self.http_client)"},{"line_number":66,"context_line":"        self.old_samples \u003d samples.OldSampleManager(self.http_client)"},{"line_number":67,"context_line":"        self.samples \u003d samples.SampleManager(self.http_client)"},{"line_number":68,"context_line":"        self.statistics \u003d statistics.StatisticsManager(self.http_client)"},{"line_number":69,"context_line":"        self.resources \u003d resources.ResourceManager(self.http_client)"}],"source_content_type":"text/x-python","patch_set":9,"id":"da86d52c_789dbbbb","line":66,"updated":"2015-02-05 01:53:07.000000000","message":"a soft -1 here. This seems to be an API change to me, which requires the code change of the pythonceilometer user. Should we keep client.sample pointing to the old sample and add a new client.new_sample?","commit_id":"0ec96bba60fb47d2cb199a67a68b2268e2bf3d9a"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"038d34d3edadaccf920c7d63fe659f5290af0c0f","unresolved":false,"context_lines":[{"line_number":63,"context_line":""},{"line_number":64,"context_line":"        self.http_client \u003d client.BaseClient(self.client)"},{"line_number":65,"context_line":"        self.meters \u003d meters.MeterManager(self.http_client)"},{"line_number":66,"context_line":"        self.old_samples \u003d samples.OldSampleManager(self.http_client)"},{"line_number":67,"context_line":"        self.samples \u003d samples.SampleManager(self.http_client)"},{"line_number":68,"context_line":"        self.statistics \u003d statistics.StatisticsManager(self.http_client)"},{"line_number":69,"context_line":"        self.resources \u003d resources.ResourceManager(self.http_client)"}],"source_content_type":"text/x-python","patch_set":9,"id":"da86d52c_f8fa8bbb","line":66,"in_reply_to":"da86d52c_789dbbbb","updated":"2015-02-05 02:11:03.000000000","message":"reasonable, will be done","commit_id":"0ec96bba60fb47d2cb199a67a68b2268e2bf3d9a"}],"ceilometerclient/v2/samples.py":[{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"8a4b91060d959279710610730eb0c21282c3c6c6","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            path \u003d \u0027/v2/meters/\u0027 + meter_name"},{"line_number":40,"context_line":"        else:"},{"line_number":41,"context_line":"            path \u003d \u0027/v2/samples\u0027"},{"line_number":42,"context_line":"        params \u003d [\u0027limit\u003d%s\u0027 % limit] if limit else None"},{"line_number":43,"context_line":"        return self._list(options.build_url(path, q, params))"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def get(self, sample_id):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8c0949_5b2cef02","line":42,"updated":"2014-11-04 07:58:00.000000000","message":"I don\u0027t think we should mix these two endpoints, because the format of the samples returned in /v2/meters is different that the one returned in /v2/samples. And get/list should returns the same objects to be consistent.\nI think a new class is needed to ensure application that use ceilometerclient as a library understand that.\n\nAnd perhaps adding links of both formats into comment in each class to help library user to understand why we have two differents classes. \n\nRef of both format:\n\n/v2/meters: http://docs.openstack.org/developer/ceilometer/webapi/v2.html#OldSample\n\n/v2/samples: http://docs.openstack.org/developer/ceilometer/webapi/v2.html#Sample","commit_id":"aa070bd0ef4483243ee1e3a1b091878737da92b6"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"4460d9c70f980d8eee45a2245f9395c95e7bd92f","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            path \u003d \u0027/v2/meters/\u0027 + meter_name"},{"line_number":40,"context_line":"        else:"},{"line_number":41,"context_line":"            path \u003d \u0027/v2/samples\u0027"},{"line_number":42,"context_line":"        params \u003d [\u0027limit\u003d%s\u0027 % limit] if limit else None"},{"line_number":43,"context_line":"        return self._list(options.build_url(path, q, params))"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def get(self, sample_id):"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a8c0949_bca6a60e","line":42,"in_reply_to":"7a8c0949_5b2cef02","updated":"2014-11-04 14:47:50.000000000","message":"will be done","commit_id":"aa070bd0ef4483243ee1e3a1b091878737da92b6"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"f6c4533b7d9196a7797404172ca5a584c78e38a7","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        return self._list(options.build_url(\"/v2/samples\", q, params))"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def get(self, sample_id):"},{"line_number":74,"context_line":"        body \u003d self.api.get(\"/v2/samples/\" + sample_id).json()"},{"line_number":75,"context_line":"        if body:"},{"line_number":76,"context_line":"            return Sample(self, body)"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a961159_884fd3bd","line":74,"updated":"2014-12-18 03:01:16.000000000","message":"let\u0027s just reuse _list here, e.g. https://github.com/openstack/python-ceilometerclient/blob/master/ceilometerclient/v2/alarms.py#L84","commit_id":"6fbc8fb9465a9c02321d5c75948a3eb3fb353a42"}],"ceilometerclient/v2/shell.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"82e8117037f21a655039b968e2ba4113b1bf7a47","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                \u0027but if supplied must be string, integer, float, or boolean.\u0027)"},{"line_number":126,"context_line":"@utils.arg(\u0027-m\u0027, \u0027--meter\u0027, metavar\u003d\u0027\u003cNAME\u003e\u0027,"},{"line_number":127,"context_line":"           action\u003dNotEmptyAction, help\u003d\u0027Name of meter to show samples for.\u0027)"},{"line_number":128,"context_line":"@utils.arg(\u0027-l\u0027, \u0027--limit\u0027, metavar\u003d\u0027\u003cNUMBER\u003e\u0027,"},{"line_number":129,"context_line":"           help\u003d\u0027Maximum number of samples to return.\u0027)"},{"line_number":130,"context_line":"def do_sample_list(cc, args):"},{"line_number":131,"context_line":"    \u0027\u0027\u0027List all samples (return OldSample objects if -m/--meter is set).\u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_40ce6ab5","line":128,"updated":"2014-11-14 09:52:49.000000000","message":"maybe we should make limit required... this seems like an insane query to make and guaranteed to fail","commit_id":"40897b81529cad779daecfd4b3efac6a988bf52f"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"5599bf2bd98ae21bd6356cd9116e9d3fdd597943","unresolved":false,"context_lines":[{"line_number":125,"context_line":"                \u0027but if supplied must be string, integer, float, or boolean.\u0027)"},{"line_number":126,"context_line":"@utils.arg(\u0027-m\u0027, \u0027--meter\u0027, metavar\u003d\u0027\u003cNAME\u003e\u0027,"},{"line_number":127,"context_line":"           action\u003dNotEmptyAction, help\u003d\u0027Name of meter to show samples for.\u0027)"},{"line_number":128,"context_line":"@utils.arg(\u0027-l\u0027, \u0027--limit\u0027, metavar\u003d\u0027\u003cNUMBER\u003e\u0027,"},{"line_number":129,"context_line":"           help\u003d\u0027Maximum number of samples to return.\u0027)"},{"line_number":130,"context_line":"def do_sample_list(cc, args):"},{"line_number":131,"context_line":"    \u0027\u0027\u0027List all samples (return OldSample objects if -m/--meter is set).\u0027\u0027\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a890539_21723a11","line":128,"in_reply_to":"5a890539_40ce6ab5","updated":"2014-11-14 14:15:40.000000000","message":"@gordon chung\n\nIt should not be required, since user can limit result through query and/or meter.\n\nHow about requiring to set at least one of -q, -m and -l? If not, raise a CommandError (\u0027query range is too wide\u0027). And maybe another optional argument named -L --no-limit (False by default), then if -L we do whatever user want?","commit_id":"40897b81529cad779daecfd4b3efac6a988bf52f"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"a950bcd43bf003cfe35994138f3a780d66781d9a","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    samples \u003d cc.samples.list(**fields)"},{"line_number":160,"context_line":"    field_labels \u003d [\u0027Resource ID\u0027, \u0027Name\u0027, \u0027Type\u0027, \u0027Volume\u0027, \u0027Unit\u0027,"},{"line_number":161,"context_line":"                    \u0027Timestamp\u0027]"},{"line_number":162,"context_line":"    fields \u003d [\u0027resource_id\u0027, \u0027meter\u0027, \u0027type\u0027, \u0027volume\u0027, \u0027unit\u0027, \u0027timestamp\u0027]"},{"line_number":163,"context_line":"    utils.print_list(samples, fields, field_labels, sortby\u003dNone)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_c003fc0a","line":162,"updated":"2015-01-08 03:11:50.000000000","message":"We should also display sample_id here, otherwise the user has no clue what to input for sample show?","commit_id":"2ee21dcdc3ea0f6e9651bd98827cc0d7bc19008d"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"9900088c5514c7c551b1251cc2e1a049884c8121","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    samples \u003d cc.samples.list(**fields)"},{"line_number":160,"context_line":"    field_labels \u003d [\u0027Resource ID\u0027, \u0027Name\u0027, \u0027Type\u0027, \u0027Volume\u0027, \u0027Unit\u0027,"},{"line_number":161,"context_line":"                    \u0027Timestamp\u0027]"},{"line_number":162,"context_line":"    fields \u003d [\u0027resource_id\u0027, \u0027meter\u0027, \u0027type\u0027, \u0027volume\u0027, \u0027unit\u0027, \u0027timestamp\u0027]"},{"line_number":163,"context_line":"    utils.print_list(samples, fields, field_labels, sortby\u003dNone)"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_03c8aba6","line":162,"in_reply_to":"3a961159_c003fc0a","updated":"2015-01-08 09:54:40.000000000","message":"make sense, will be done","commit_id":"2ee21dcdc3ea0f6e9651bd98827cc0d7bc19008d"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"a950bcd43bf003cfe35994138f3a780d66781d9a","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"@utils.arg(\u0027sample_id\u0027, metavar\u003d\u0027\u003cSAMPLE_ID\u003e\u0027, action\u003dNotEmptyAction,"},{"line_number":167,"context_line":"           help\u003d\u0027ID (aka message ID) of the sample to show.\u0027)"},{"line_number":168,"context_line":"def do_sample_show(cc, args):"},{"line_number":169,"context_line":"    \u0027\u0027\u0027Show an sample.\u0027\u0027\u0027"},{"line_number":170,"context_line":"    sample \u003d cc.samples.get(args.sample_id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_f5443874","line":167,"updated":"2015-01-08 03:11:50.000000000","message":"should this be a required\u003dTrue command parameter?","commit_id":"2ee21dcdc3ea0f6e9651bd98827cc0d7bc19008d"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"9900088c5514c7c551b1251cc2e1a049884c8121","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"@utils.arg(\u0027sample_id\u0027, metavar\u003d\u0027\u003cSAMPLE_ID\u003e\u0027, action\u003dNotEmptyAction,"},{"line_number":167,"context_line":"           help\u003d\u0027ID (aka message ID) of the sample to show.\u0027)"},{"line_number":168,"context_line":"def do_sample_show(cc, args):"},{"line_number":169,"context_line":"    \u0027\u0027\u0027Show an sample.\u0027\u0027\u0027"},{"line_number":170,"context_line":"    sample \u003d cc.samples.get(args.sample_id)"}],"source_content_type":"text/x-python","patch_set":7,"id":"3a961159_23cbe7a4","line":167,"in_reply_to":"3a961159_f5443874","updated":"2015-01-08 09:54:40.000000000","message":"positional argument is required automatically","commit_id":"2ee21dcdc3ea0f6e9651bd98827cc0d7bc19008d"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"5dcc95d4c2d277484247152898c7f86ccdd23f44","unresolved":false,"context_lines":[{"line_number":169,"context_line":"           help\u003d\u0027ID (aka message ID) of the sample to show.\u0027)"},{"line_number":170,"context_line":"def do_sample_show(cc, args):"},{"line_number":171,"context_line":"    \u0027\u0027\u0027Show an sample.\u0027\u0027\u0027"},{"line_number":172,"context_line":"    sample \u003d cc.samples.get(args.sample_id)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    if sample is None:"},{"line_number":175,"context_line":"        raise exc.CommandError(\u0027Sample not found: %s\u0027 % args.sample_id)"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_cc5d087b","line":172,"updated":"2015-02-05 03:02:57.000000000","message":"should it be cc.new_samples?","commit_id":"ad27133fc0cd261b7e0050eecc8e2432313c8389"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"5dcc95d4c2d277484247152898c7f86ccdd23f44","unresolved":false,"context_lines":[{"line_number":216,"context_line":"                fields[k] \u003d json.loads(v)"},{"line_number":217,"context_line":"            else:"},{"line_number":218,"context_line":"                fields[arg_to_field_mapping.get(k, k)] \u003d v"},{"line_number":219,"context_line":"    sample \u003d cc.old_samples.create(**fields)"},{"line_number":220,"context_line":"    fields \u003d [\u0027counter_name\u0027, \u0027user_id\u0027, \u0027resource_id\u0027,"},{"line_number":221,"context_line":"              \u0027timestamp\u0027, \u0027message_id\u0027, \u0027source\u0027, \u0027counter_unit\u0027,"},{"line_number":222,"context_line":"              \u0027counter_volume\u0027, \u0027project_id\u0027, \u0027resource_metadata\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"da86d52c_0c53a06b","line":219,"updated":"2015-02-05 03:02:57.000000000","message":"I don\u0027t believe we have old_samples any more","commit_id":"ad27133fc0cd261b7e0050eecc8e2432313c8389"}]}
