)]}'
{"gnocchi/carbonara.py":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"d33069c05c0a2d21d9eed37b2daec006ca8621f0","unresolved":false,"context_lines":[{"line_number":266,"context_line":"                    for sampling, size in definitions])"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    def fetch(self, from_timestamp\u003dNone, to_timestamp\u003dNone,"},{"line_number":269,"context_line":"              full\u003dFalse):"},{"line_number":270,"context_line":"        \"\"\"Fetch aggregated time value."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        Returns a sorted list of tuples (timestamp, offset, value)."}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_711efe64","line":269,"updated":"2014-11-13 14:12:07.000000000","message":"Instead of a boolean full parameter here, would it be more useful to allow *any* granularity be requested, including granularity\u003d0s being full-res by convention?\n\n(... kind of similar to the idea of this ancient patch https://review.openstack.org/#/c/103435/20/gnocchi/carbonara.py , but the additional notion that full-res can be requested as well as the various aggregated granularities)\n\nThe advantage of never inter-mixing the full-res datapoints with the aggregated datapoints is that these may have slightly different meanings, in the sense that the aggregation function implicitly applied to a single datapoint is not always the same as the raw datapoint.\n\n(it is the same in the case of mean, sum, first, last, etc. but not stddev or count)\n\nSo if we were to expose this \"full\" option in the REST API, it would be confusing for example if:\n\n  GET /v1/entity/UUID/measure?aggregation\u003dstd\u0026full\u003dtrue\n\nfor an entity with 1min granularity and only one actual datapoint per period.\n\nWe\u0027d have a bunch of raw datapoints in the response, but IIUC no 1min datapoints, since stddev is undefined for a single datapoint.","commit_id":"0859ee7b08c33cf6f02ac832286397cd50299ff5"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"3a56a9bbd49e6f49a30519d7186929e54784758b","unresolved":false,"context_lines":[{"line_number":266,"context_line":"                    for sampling, size in definitions])"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    def fetch(self, from_timestamp\u003dNone, to_timestamp\u003dNone,"},{"line_number":269,"context_line":"              full\u003dFalse):"},{"line_number":270,"context_line":"        \"\"\"Fetch aggregated time value."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        Returns a sorted list of tuples (timestamp, offset, value)."}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_9ae363a3","line":269,"in_reply_to":"5a890539_0569ebbd","updated":"2014-11-14 09:03:36.000000000","message":"Why would you need to increase the back window? That\u0027s gonna be a decision from the user creating the archive policy, not your call anyway. :) 0 sec granularity is always going to be potentially there anyway – how much depends on the size of the back window.\n\n\nIm not sure what you really need/want Ana. If that\u0027s not needed I can also drop this patch entirely.","commit_id":"0859ee7b08c33cf6f02ac832286397cd50299ff5"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"c11ee342702a5b426549a2e4504ee259d5b09ad6","unresolved":false,"context_lines":[{"line_number":266,"context_line":"                    for sampling, size in definitions])"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    def fetch(self, from_timestamp\u003dNone, to_timestamp\u003dNone,"},{"line_number":269,"context_line":"              full\u003dFalse):"},{"line_number":270,"context_line":"        \"\"\"Fetch aggregated time value."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        Returns a sorted list of tuples (timestamp, offset, value)."}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_b12dc648","line":269,"in_reply_to":"5a890539_711efe64","updated":"2014-11-13 14:16:56.000000000","message":"I agree and I am aware of all of that (doh I really progressed in this area :-). I wrote this patch on Ana\u0027s request as she would like to have access to the full data points of an archive to compute the aggregation in the API.\n\nSo it\u0027s not really meant to be exposed to the Gnocchi API user yet.","commit_id":"0859ee7b08c33cf6f02ac832286397cd50299ff5"},{"author":{"_account_id":10683,"name":"Ana Malagon","email":"atmalagon@gmail.com","username":"atmalagon"},"change_message_id":"9300b940bef6be2fee03547f79362ad6ed6df407","unresolved":false,"context_lines":[{"line_number":266,"context_line":"                    for sampling, size in definitions])"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    def fetch(self, from_timestamp\u003dNone, to_timestamp\u003dNone,"},{"line_number":269,"context_line":"              full\u003dFalse):"},{"line_number":270,"context_line":"        \"\"\"Fetch aggregated time value."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        Returns a sorted list of tuples (timestamp, offset, value)."}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_d0c5be8e","line":269,"in_reply_to":"5a890539_9ae363a3","updated":"2014-11-14 15:55:06.000000000","message":"yeah, sorry I\u0027ve been changing my mind - Originally I didn\u0027t realize that there was any full-res data lying around, so I was doing the moving aggregates on the finest granularity data archived. Then after the summit and talking to you I saw that there was full-res data kept within the buffer window and so wanted to use that data for the computations instead. At first the full parameter seemed to do the trick. However, I hadn\u0027t realized that with the default back window being 0, the amount of full-res data returned could be tiny, depending on where the period boundary occurs.\n\nThis is the case that I mean (it\u0027s the same as the test_carbonara case but I\u0027m making the times more extreme):\nA day\u0027s worth of measures (Jan 1, 2014 00:00 to Jan 1, 2014 23:59) are added to an entity with granularity 1day and 1hr. Then an additional point is added at Jan 2, 2014 00:01. The only 0sec granularity data returned would be the Jan 2 point.\n\nSo with this behavior I\u0027m not sure I could reliably get enough full-res data  to be able to do a meaningful computation - my super-long-winded way of saying that this patch can be dropped...","commit_id":"0859ee7b08c33cf6f02ac832286397cd50299ff5"},{"author":{"_account_id":10683,"name":"Ana Malagon","email":"atmalagon@gmail.com","username":"atmalagon"},"change_message_id":"180b47bfbb3e97564a535ba1a8ebf1199e26a811","unresolved":false,"context_lines":[{"line_number":266,"context_line":"                    for sampling, size in definitions])"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    def fetch(self, from_timestamp\u003dNone, to_timestamp\u003dNone,"},{"line_number":269,"context_line":"              full\u003dFalse):"},{"line_number":270,"context_line":"        \"\"\"Fetch aggregated time value."},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"        Returns a sorted list of tuples (timestamp, offset, value)."}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_0569ebbd","line":269,"in_reply_to":"5a890539_b12dc648","updated":"2014-11-13 17:29:00.000000000","message":"both approaches work for me (selectable granularity keyword or boolean parameter) in order to get the full-res data that\u0027s still around (although it would be nice if I could increase the back_window in a call to the storage layer, but I don\u0027t think I can?). \n\nif the option to define 0sec granularity in the archive policy is something that\u0027s going to be implemented, then I wouldn\u0027t need the full parameter and could restrict moving computations to the case when 0sec granularity exists in the policy.\n\nthe ability to get aggregates over any granularity (if you have the full-res data around) using the selectable parameter seems nice.","commit_id":"0859ee7b08c33cf6f02ac832286397cd50299ff5"}],"gnocchi/tests/test_carbonara.py":[{"author":{"_account_id":10683,"name":"Ana Malagon","email":"atmalagon@gmail.com","username":"atmalagon"},"change_message_id":"2013b2035a89802de123eb31a69416c6918c16c3","unresolved":false,"context_lines":[{"line_number":278,"context_line":"            (pandas.Timestamp(\u00272014-01-01 12:06:00\u0027), 60.0, 3.0),"},{"line_number":279,"context_line":"            (pandas.Timestamp(\u00272014-01-01 12:06:00\u0027), 0, 3),"},{"line_number":280,"context_line":"        ], tsc.fetch(datetime.datetime(2014, 1, 1, 12, 0, 0), full\u003dTrue))"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    def test_fetch_agg_std(self):"},{"line_number":283,"context_line":"        tsc \u003d carbonara.TimeSerieArchive.from_definitions("},{"line_number":284,"context_line":"            [(pandas.tseries.offsets.Minute(1), 60),"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_3f21e59f","line":281,"updated":"2014-11-11 14:15:23.000000000","message":"Sorry - realized I didn\u0027t understand something. Why does 0sec data only exist for 1 minute? I thought the buffer held 0sec data for the length of the coarsest granularity, which in this case would be 5mins.","commit_id":"735650cfb57d5ae92c1d28b0015b6775e49ef3a6"},{"author":{"_account_id":10683,"name":"Ana Malagon","email":"atmalagon@gmail.com","username":"atmalagon"},"change_message_id":"a17e2710031695e6668a983ce5fad06e705fc0e0","unresolved":false,"context_lines":[{"line_number":278,"context_line":"            (pandas.Timestamp(\u00272014-01-01 12:06:00\u0027), 60.0, 3.0),"},{"line_number":279,"context_line":"            (pandas.Timestamp(\u00272014-01-01 12:06:00\u0027), 0, 3),"},{"line_number":280,"context_line":"        ], tsc.fetch(datetime.datetime(2014, 1, 1, 12, 0, 0), full\u003dTrue))"},{"line_number":281,"context_line":""},{"line_number":282,"context_line":"    def test_fetch_agg_std(self):"},{"line_number":283,"context_line":"        tsc \u003d carbonara.TimeSerieArchive.from_definitions("},{"line_number":284,"context_line":"            [(pandas.tseries.offsets.Minute(1), 60),"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a890539_12ded33f","line":281,"in_reply_to":"5a890539_3f21e59f","updated":"2014-11-11 23:13:43.000000000","message":"Ack. Just ignore the previous comment...","commit_id":"735650cfb57d5ae92c1d28b0015b6775e49ef3a6"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"d33069c05c0a2d21d9eed37b2daec006ca8621f0","unresolved":false,"context_lines":[{"line_number":219,"context_line":"    def test_fetch_full(self):"},{"line_number":220,"context_line":"        tsc \u003d carbonara.TimeSerieArchive.from_definitions("},{"line_number":221,"context_line":"            [(pandas.tseries.offsets.Minute(1), 10),"},{"line_number":222,"context_line":"             (pandas.tseries.offsets.Minute(5), 6)])"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        tsc.set_values(["},{"line_number":225,"context_line":"            (datetime.datetime(2014, 1, 1, 11, 46, 4), 4),"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_3142b63e","line":222,"updated":"2014-11-13 14:12:07.000000000","message":"Good to have a test case also that sets the back-window to a non-default value (e.g. 2) and asserts that the additional granularity\u003d0s datapoints are returned.","commit_id":"0859ee7b08c33cf6f02ac832286397cd50299ff5"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"84699d55782d3dd3c479a5b98cd347ad66004f64","unresolved":false,"context_lines":[{"line_number":219,"context_line":"    def test_fetch_full(self):"},{"line_number":220,"context_line":"        tsc \u003d carbonara.TimeSerieArchive.from_definitions("},{"line_number":221,"context_line":"            [(pandas.tseries.offsets.Minute(1), 10),"},{"line_number":222,"context_line":"             (pandas.tseries.offsets.Minute(5), 6)])"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        tsc.set_values(["},{"line_number":225,"context_line":"            (datetime.datetime(2014, 1, 1, 11, 46, 4), 4),"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a890539_56dc9312","line":222,"in_reply_to":"5a890539_3142b63e","updated":"2014-11-13 15:37:52.000000000","message":"Done","commit_id":"0859ee7b08c33cf6f02ac832286397cd50299ff5"}]}
