)]}'
{"gnocchi/rest/__init__.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"126ac06cae1ba165ee5a05001968371109ded9ce","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        except storage.EntityDoesNotExist as e:"},{"line_number":151,"context_line":"            pecan.abort(404, str(e))"},{"line_number":152,"context_line":"        except carbonara.NoDeloreanAvailable as e:"},{"line_number":153,"context_line":"            pecan.abort(400, \"A measure is too old for archive policies of \""},{"line_number":154,"context_line":"                        \"this entity\")"},{"line_number":155,"context_line":"        # NOTE(jd) Until https://bugs.launchpad.net/pecan/+bug/1311629 is fixed"},{"line_number":156,"context_line":"        pecan.response.status \u003d 204"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa201ad_9ec32537","line":153,"updated":"2014-10-07 13:37:39.000000000","message":"\"One of the measure is too old considering the archive policy used by this entity\"","commit_id":"1b022492c71dd559f15619ae1b28cc314e95b8bd"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"3dfa60eb0ca42da1ccb21d6115effbec3dee1f90","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        except storage.EntityDoesNotExist as e:"},{"line_number":151,"context_line":"            pecan.abort(404, str(e))"},{"line_number":152,"context_line":"        except carbonara.NoDeloreanAvailable as e:"},{"line_number":153,"context_line":"            pecan.abort(400, \"A measure is too old for archive policies of \""},{"line_number":154,"context_line":"                        \"this entity\")"},{"line_number":155,"context_line":"        # NOTE(jd) Until https://bugs.launchpad.net/pecan/+bug/1311629 is fixed"},{"line_number":156,"context_line":"        pecan.response.status \u003d 204"}],"source_content_type":"text/x-python","patch_set":4,"id":"baa201ad_e734a4fd","line":153,"in_reply_to":"baa201ad_9ec32537","updated":"2014-10-07 15:21:12.000000000","message":"Done","commit_id":"1b022492c71dd559f15619ae1b28cc314e95b8bd"}],"gnocchi/tests/test_rest.py":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"23c471fd9bed071a91f80aef93fdf25fb1cc099d","unresolved":false,"context_lines":[{"line_number":263,"context_line":"        entity \u003d json.loads(result.text)"},{"line_number":264,"context_line":"        result \u003d self.app.post_json("},{"line_number":265,"context_line":"            \"/v1/entity/%s/measures\" % entity[\u0027id\u0027],"},{"line_number":266,"context_line":"            params\u003d[{\"timestamp\": \u00272013-01-01 23:23:23\u0027,"},{"line_number":267,"context_line":"                     \"value\": 1234.2}])"},{"line_number":268,"context_line":"        self.assertEqual(result.status_code, 204)"},{"line_number":269,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"baa201ad_c856fa29","line":266,"updated":"2014-10-06 09:09:19.000000000","message":"Should this timestamp be an offset from current time, as opposed to being hardcoded as a constant?\n\nOtherwise would the test start failing as time marches forward and this date eventually falls outside the retention period for the \"low\" archive policy?","commit_id":"1b022492c71dd559f15619ae1b28cc314e95b8bd"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"126ac06cae1ba165ee5a05001968371109ded9ce","unresolved":false,"context_lines":[{"line_number":263,"context_line":"        entity \u003d json.loads(result.text)"},{"line_number":264,"context_line":"        result \u003d self.app.post_json("},{"line_number":265,"context_line":"            \"/v1/entity/%s/measures\" % entity[\u0027id\u0027],"},{"line_number":266,"context_line":"            params\u003d[{\"timestamp\": \u00272013-01-01 23:23:23\u0027,"},{"line_number":267,"context_line":"                     \"value\": 1234.2}])"},{"line_number":268,"context_line":"        self.assertEqual(result.status_code, 204)"},{"line_number":269,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"baa201ad_de15ad9c","line":266,"in_reply_to":"baa201ad_436cab08","updated":"2014-10-07 13:37:39.000000000","message":"This discussion is completely orthogonal to this patch, but anyway.\n\nThis is actually a correct approach, a timeserie database does not have to rely on the time it is to store and manipulate any data. Which is what is currently implemented.\n\nHaving data expired and deleted if they are older than N is another feature and process that, I agree, we might want to implement and use. But it\u0027s also likely that if you metered something for a year in 2012 and we\u0027re now in 2014 and want to retrieve these data, you\u0027ll likely be happy to still have these data around.","commit_id":"1b022492c71dd559f15619ae1b28cc314e95b8bd"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"d49463de2952fd05f3889c1f54640e0afece2c8a","unresolved":false,"context_lines":[{"line_number":263,"context_line":"        entity \u003d json.loads(result.text)"},{"line_number":264,"context_line":"        result \u003d self.app.post_json("},{"line_number":265,"context_line":"            \"/v1/entity/%s/measures\" % entity[\u0027id\u0027],"},{"line_number":266,"context_line":"            params\u003d[{\"timestamp\": \u00272013-01-01 23:23:23\u0027,"},{"line_number":267,"context_line":"                     \"value\": 1234.2}])"},{"line_number":268,"context_line":"        self.assertEqual(result.status_code, 204)"},{"line_number":269,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"baa201ad_e3b91f16","line":266,"in_reply_to":"baa201ad_c856fa29","updated":"2014-10-06 09:26:01.000000000","message":"No, because in pandas timeseries this is relative to more recent datapoint into the timeseries, it doesn\u0027t consider where we are in the time.","commit_id":"1b022492c71dd559f15619ae1b28cc314e95b8bd"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"7d4e2cc53c71c9510969f333407f366c0325fab0","unresolved":false,"context_lines":[{"line_number":263,"context_line":"        entity \u003d json.loads(result.text)"},{"line_number":264,"context_line":"        result \u003d self.app.post_json("},{"line_number":265,"context_line":"            \"/v1/entity/%s/measures\" % entity[\u0027id\u0027],"},{"line_number":266,"context_line":"            params\u003d[{\"timestamp\": \u00272013-01-01 23:23:23\u0027,"},{"line_number":267,"context_line":"                     \"value\": 1234.2}])"},{"line_number":268,"context_line":"        self.assertEqual(result.status_code, 204)"},{"line_number":269,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"baa201ad_ba6c5509","line":266,"in_reply_to":"baa201ad_de15ad9c","updated":"2014-10-08 13:08:32.000000000","message":"Yes, I agree that the discussion is orthogonal to the current patch.\n\nHowever, I think given the transient nature of many openstack resources, it\u0027s more likely that the expiry policy users will actually want in practice will be anchored on the current time, as opposed to being offset from the time of the most recent datapoint.","commit_id":"1b022492c71dd559f15619ae1b28cc314e95b8bd"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"9a17aa32bb212d2538971d03c7e0a2877a8ebb7c","unresolved":false,"context_lines":[{"line_number":263,"context_line":"        entity \u003d json.loads(result.text)"},{"line_number":264,"context_line":"        result \u003d self.app.post_json("},{"line_number":265,"context_line":"            \"/v1/entity/%s/measures\" % entity[\u0027id\u0027],"},{"line_number":266,"context_line":"            params\u003d[{\"timestamp\": \u00272013-01-01 23:23:23\u0027,"},{"line_number":267,"context_line":"                     \"value\": 1234.2}])"},{"line_number":268,"context_line":"        self.assertEqual(result.status_code, 204)"},{"line_number":269,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"baa201ad_436cab08","line":266,"in_reply_to":"baa201ad_e3b91f16","updated":"2014-10-06 09:55:47.000000000","message":"A-ha, yes, this is sounding familiar.\n\nWhen we discussed this aspect of pandas perviously, it appeared problematic to me, as it seems to depend on a steady supply of fresh datapoints in order for any expiry to occur.\n\nConsider the case of an instance that exists for a certain period of time before being terminated. If that span of existence was shorter than the retention period of the archive policy, IIUC the entities associated with the instance would never have any measures expired, as there would never be any newer measures submitted to drag the time window forward. This would seem to defeat the purpose of the retention policy, or at least to be counter-intuitive for users.\n\nI\u0027d also be concerned that that it would be difficult to implement for other drivers, where expiry is naturally anchored on current time.","commit_id":"1b022492c71dd559f15619ae1b28cc314e95b8bd"}]}
