)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"2773ea6e385fdde6be9ce120055a1142ac2cb23a","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allows to filter out the gnocchi generated samples"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is a lossy way to protect gnocchi to automatically ddos"},{"line_number":10,"context_line":"himself when it wirte data to swift and ceilometer monitor swift"},{"line_number":11,"context_line":"resources."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"9aa7fdbe_9ec35c56","line":9,"updated":"2014-10-23 14:49:06.000000000","message":"DDoS","commit_id":"8e5abfb15ecc1f4ab8d41aaaf5ead64e0ed42a33"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"59ab430443a4860118b39365edb8c52e8af2dae3","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Allows to filter out the gnocchi generated samples"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is a lossy way to protect gnocchi to automatically ddos"},{"line_number":10,"context_line":"himself when it wirte data to swift and ceilometer monitor swift"},{"line_number":11,"context_line":"resources."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"9aa7fdbe_c1dfc90b","line":9,"in_reply_to":"9aa7fdbe_9ec35c56","updated":"2014-10-23 15:13:01.000000000","message":"Done","commit_id":"8e5abfb15ecc1f4ab8d41aaaf5ead64e0ed42a33"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"2773ea6e385fdde6be9ce120055a1142ac2cb23a","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Allows to filter out the gnocchi generated samples"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is a lossy way to protect gnocchi to automatically ddos"},{"line_number":10,"context_line":"himself when it wirte data to swift and ceilometer monitor swift"},{"line_number":11,"context_line":"resources."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ic91e1715ed56d7cb5962c216aa3c7ba8ab0dbbff"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"9aa7fdbe_bea3c0b0","line":10,"updated":"2014-10-23 14:49:06.000000000","message":"itself\n\nwrite","commit_id":"8e5abfb15ecc1f4ab8d41aaaf5ead64e0ed42a33"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"59ab430443a4860118b39365edb8c52e8af2dae3","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Allows to filter out the gnocchi generated samples"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is a lossy way to protect gnocchi to automatically ddos"},{"line_number":10,"context_line":"himself when it wirte data to swift and ceilometer monitor swift"},{"line_number":11,"context_line":"resources."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: Ic91e1715ed56d7cb5962c216aa3c7ba8ab0dbbff"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"9aa7fdbe_a1bf25a9","line":10,"in_reply_to":"9aa7fdbe_bea3c0b0","updated":"2014-10-23 15:13:01.000000000","message":"Done","commit_id":"8e5abfb15ecc1f4ab8d41aaaf5ead64e0ed42a33"}],"gnocchi/ceilometer/dispatcher.py":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"ad2dc4fa683a5c64ce19397c8b726755217ecacb","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    cfg.StrOpt(\u0027project_id\u0027,"},{"line_number":36,"context_line":"               default\u003d\"\u003cuuid\u003e\","},{"line_number":37,"context_line":"               help\u003d\u0027Gnocchi project id, used to filter out samples \u0027"},{"line_number":38,"context_line":"               \u0027generated by Gnocchi\u0027),"},{"line_number":39,"context_line":"    cfg.StrOpt(\u0027url\u0027,"},{"line_number":40,"context_line":"               default\u003d\"http://localhost:8041\","},{"line_number":41,"context_line":"               help\u003d\u0027URL to Gnocchi.\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa201ad_ee4baa28","line":38,"updated":"2014-10-16 14:19:42.000000000","message":"Is it a safe assumption that the gnocchi service user will be associated with a different tenant to the other service users?\n\nIsn\u0027t it a more common deployment pattern for all openstack service users to share a single tenant (e.g. \"services\")?\n\nIf so, could we end up inadvertently discarding samples generated for say glance usage of its swift backend?\n\nWould it be better to distinguish on the basis of the gnocchi user_id as opposed to the tenant?","commit_id":"c61c945bf23de80c8f4bd09ae057f82272b5db40"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"a70721222e714beb02120820b722c3c7282e153f","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    cfg.StrOpt(\u0027project_id\u0027,"},{"line_number":36,"context_line":"               default\u003d\"\u003cuuid\u003e\","},{"line_number":37,"context_line":"               help\u003d\u0027Gnocchi project id, used to filter out samples \u0027"},{"line_number":38,"context_line":"               \u0027generated by Gnocchi\u0027),"},{"line_number":39,"context_line":"    cfg.StrOpt(\u0027url\u0027,"},{"line_number":40,"context_line":"               default\u003d\"http://localhost:8041\","},{"line_number":41,"context_line":"               help\u003d\u0027URL to Gnocchi.\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa201ad_f058ce8b","line":38,"in_reply_to":"baa201ad_ee4baa28","updated":"2014-10-17 10:16:00.000000000","message":"Yep, it make more sense to use the user.","commit_id":"c61c945bf23de80c8f4bd09ae057f82272b5db40"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"5a9bc9a4795d79eeb26cf11f7c48c22749f199eb","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    cfg.StrOpt(\u0027project_id\u0027,"},{"line_number":36,"context_line":"               default\u003d\"\u003cuuid\u003e\","},{"line_number":37,"context_line":"               help\u003d\u0027Gnocchi project id, used to filter out samples \u0027"},{"line_number":38,"context_line":"               \u0027generated by Gnocchi\u0027),"},{"line_number":39,"context_line":"    cfg.StrOpt(\u0027url\u0027,"},{"line_number":40,"context_line":"               default\u003d\"http://localhost:8041\","},{"line_number":41,"context_line":"               help\u003d\u0027URL to Gnocchi.\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"9aa7fdbe_6df9224d","line":38,"in_reply_to":"baa201ad_f058ce8b","updated":"2014-10-20 13:03:08.000000000","message":"The default seems wrong to me.","commit_id":"c61c945bf23de80c8f4bd09ae057f82272b5db40"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"526f0906cc2b9b1ef9c602a9c09f8de255a9a53a","unresolved":false,"context_lines":[{"line_number":83,"context_line":"class GnocchiDispatcher(dispatcher.Base):"},{"line_number":84,"context_line":"    def __init__(self, conf):"},{"line_number":85,"context_line":"        super(GnocchiDispatcher, self).__init__(conf)"},{"line_number":86,"context_line":"        self.gnocchi_user_id \u003d conf.dispatcher_gnocchi.user_id"},{"line_number":87,"context_line":"        self.gnocchi_url \u003d conf.dispatcher_gnocchi.url"},{"line_number":88,"context_line":"        self.gnocchi_archive_policy \u003d {"},{"line_number":89,"context_line":"            \u0027archive_policy\u0027:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa7fdbe_d9bbac70","line":86,"updated":"2014-10-20 14:53:02.000000000","message":"Instead of requiring that this user_id is explicitly configured to avoid the circularity, would it be more convenient to just use the configured service_credentials.os_username/password to query keystone and discover the UUID dynamically?\n\nSo the new config option could simply be boolean:\n\n cfg.BoolOpt(\u0027filter_service_activity\u0027,\n             default\u003dTrue, \n             help\u003d\u0027Filter out samples generated by Gnocchi service activity\u0027),\n\nI\u0027m thinking that this would avoid a bit of deployment complexity, i.e. requiring that the gnocchi user_id is injected into the config file could be awkward for some automated installations.","commit_id":"337868ec356dd81d67e7e2735fb3ccbaaa644fac"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"292c1a0700ef18a9db4780d7c1821ceaefb29954","unresolved":false,"context_lines":[{"line_number":83,"context_line":"class GnocchiDispatcher(dispatcher.Base):"},{"line_number":84,"context_line":"    def __init__(self, conf):"},{"line_number":85,"context_line":"        super(GnocchiDispatcher, self).__init__(conf)"},{"line_number":86,"context_line":"        self.gnocchi_user_id \u003d conf.dispatcher_gnocchi.user_id"},{"line_number":87,"context_line":"        self.gnocchi_url \u003d conf.dispatcher_gnocchi.url"},{"line_number":88,"context_line":"        self.gnocchi_archive_policy \u003d {"},{"line_number":89,"context_line":"            \u0027archive_policy\u0027:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9aa7fdbe_3cd72ac3","line":86,"in_reply_to":"9aa7fdbe_d9bbac70","updated":"2014-10-21 10:06:31.000000000","message":"I like the idea of quering keystone but we need to keep gnocchi_user and/or gnocchi_project because the user used for gnocchi have many chance to be different that the one for gnocchi.","commit_id":"337868ec356dd81d67e7e2735fb3ccbaaa644fac"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"2773ea6e385fdde6be9ce120055a1142ac2cb23a","unresolved":false,"context_lines":[{"line_number":132,"context_line":"    def _is_gnocchi_activity(self, sample):"},{"line_number":133,"context_line":"        if (self.filter_service_activity"},{"line_number":134,"context_line":"                and sample[\u0027project_id\u0027] \u003d\u003d self.gnocchi_project_id"},{"line_number":135,"context_line":"                and sample[\u0027user_id\u0027] \u003d\u003d self.gnocchi_user_id):"},{"line_number":136,"context_line":"            return True"},{"line_number":137,"context_line":"        else:"},{"line_number":138,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa7fdbe_be8ae018","line":135,"updated":"2014-10-23 14:49:06.000000000","message":"just return that condition then :)","commit_id":"8e5abfb15ecc1f4ab8d41aaaf5ead64e0ed42a33"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"59ab430443a4860118b39365edb8c52e8af2dae3","unresolved":false,"context_lines":[{"line_number":132,"context_line":"    def _is_gnocchi_activity(self, sample):"},{"line_number":133,"context_line":"        if (self.filter_service_activity"},{"line_number":134,"context_line":"                and sample[\u0027project_id\u0027] \u003d\u003d self.gnocchi_project_id"},{"line_number":135,"context_line":"                and sample[\u0027user_id\u0027] \u003d\u003d self.gnocchi_user_id):"},{"line_number":136,"context_line":"            return True"},{"line_number":137,"context_line":"        else:"},{"line_number":138,"context_line":"            return False"}],"source_content_type":"text/x-python","patch_set":10,"id":"9aa7fdbe_61a29d9a","line":135,"in_reply_to":"9aa7fdbe_be8ae018","updated":"2014-10-23 15:13:01.000000000","message":"Done","commit_id":"8e5abfb15ecc1f4ab8d41aaaf5ead64e0ed42a33"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"2b30426da096f74d328124b84006f5a0b2cff4ea","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                default\u003dTrue,"},{"line_number":38,"context_line":"                help\u003d\u0027Filter out samples generated by Gnocchi \u0027"},{"line_number":39,"context_line":"                \u0027service activity\u0027),"},{"line_number":40,"context_line":"    cfg.StrOpt(\u0027user\u0027,"},{"line_number":41,"context_line":"               default\u003d\u0027gnocchi\u0027,"},{"line_number":42,"context_line":"               help\u003d\u0027Gnocchi user used to filter out samples \u0027"},{"line_number":43,"context_line":"               \u0027generated by Gnocchi service activity\u0027),"}],"source_content_type":"text/x-python","patch_set":11,"id":"9aa7fdbe_7554fcfe","line":40,"updated":"2014-10-24 13:34:48.000000000","message":"Non-blocking nitpick: would \"filter_user\" be clearer than \"user\" here?","commit_id":"a0d3191e5e94cb0dad0c4d4f99bb8a2f1938815f"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"715b90172d4159e3a311f52edb86d8f3a093c0ad","unresolved":false,"context_lines":[{"line_number":37,"context_line":"                default\u003dTrue,"},{"line_number":38,"context_line":"                help\u003d\u0027Filter out samples generated by Gnocchi \u0027"},{"line_number":39,"context_line":"                \u0027service activity\u0027),"},{"line_number":40,"context_line":"    cfg.StrOpt(\u0027user\u0027,"},{"line_number":41,"context_line":"               default\u003d\u0027gnocchi\u0027,"},{"line_number":42,"context_line":"               help\u003d\u0027Gnocchi user used to filter out samples \u0027"},{"line_number":43,"context_line":"               \u0027generated by Gnocchi service activity\u0027),"}],"source_content_type":"text/x-python","patch_set":11,"id":"9aa7fdbe_d2fbb9be","line":40,"in_reply_to":"9aa7fdbe_7554fcfe","updated":"2014-10-28 11:03:00.000000000","message":"Done","commit_id":"a0d3191e5e94cb0dad0c4d4f99bb8a2f1938815f"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"2b30426da096f74d328124b84006f5a0b2cff4ea","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    cfg.StrOpt(\u0027project\u0027,"},{"line_number":45,"context_line":"               default\u003d\u0027services\u0027,"},{"line_number":46,"context_line":"               help\u003d\u0027Gnocchi project used to filter out samples \u0027"},{"line_number":47,"context_line":"               \u0027generated by Gnocchi service activity\u0027),"},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027url\u0027,"},{"line_number":49,"context_line":"               default\u003d\"http://localhost:8041\","},{"line_number":50,"context_line":"               help\u003d\u0027URL to Gnocchi.\u0027),"}],"source_content_type":"text/x-python","patch_set":11,"id":"9aa7fdbe_951ec05d","line":47,"updated":"2014-10-24 13:34:48.000000000","message":"I\u0027m a bit confused as to why we\u0027d need both project and user to be configurable here?\n\nDo you envisage that the gnocchi user might be associated with a tenant other than \u0027services\u0027 for some other task, and we\u0027d want to be metering that activity?","commit_id":"a0d3191e5e94cb0dad0c4d4f99bb8a2f1938815f"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"715b90172d4159e3a311f52edb86d8f3a093c0ad","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    cfg.StrOpt(\u0027project\u0027,"},{"line_number":45,"context_line":"               default\u003d\u0027services\u0027,"},{"line_number":46,"context_line":"               help\u003d\u0027Gnocchi project used to filter out samples \u0027"},{"line_number":47,"context_line":"               \u0027generated by Gnocchi service activity\u0027),"},{"line_number":48,"context_line":"    cfg.StrOpt(\u0027url\u0027,"},{"line_number":49,"context_line":"               default\u003d\"http://localhost:8041\","},{"line_number":50,"context_line":"               help\u003d\u0027URL to Gnocchi.\u0027),"}],"source_content_type":"text/x-python","patch_set":11,"id":"9aa7fdbe_b211d505","line":47,"in_reply_to":"9aa7fdbe_951ec05d","updated":"2014-10-28 11:03:00.000000000","message":"Good point, I haven\u0027t found a valid use case, I have removed it.","commit_id":"a0d3191e5e94cb0dad0c4d4f99bb8a2f1938815f"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"248b96932212b82dafc4ca1e9e04d97425d781e8","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        # NOTE(sileht): project_id/user_id are mandatory for gnocchi"},{"line_number":132,"context_line":"        # but for example storage.api.request don\u0027t have that one"},{"line_number":133,"context_line":"        # we also skip sample generated by gnocchi itself"},{"line_number":134,"context_line":"        data \u003d [s for s in data if (s[\u0027project_id\u0027] and s[\u0027user_id\u0027]"},{"line_number":135,"context_line":"                                    and not self._is_gnocchi_activity(s))]"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        # FIXME(sileht): This method bulk the processing of samples"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a8c0949_6f8c8936","line":134,"updated":"2014-11-03 16:39:40.000000000","message":"IIRC the samples produced from glance notifications/polling have user_id unset, so would this condition that s[\u0027user_id\u0027] is not None result in all glance samples being discarded?","commit_id":"2bdfc6a7bbb704c54745b2cc0ca54b955bba6dad"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"d866e02389625b3bd3edc7c9373e600717601e61","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        # NOTE(sileht): project_id/user_id are mandatory for gnocchi"},{"line_number":132,"context_line":"        # but for example storage.api.request don\u0027t have that one"},{"line_number":133,"context_line":"        # we also skip sample generated by gnocchi itself"},{"line_number":134,"context_line":"        data \u003d [s for s in data if (s[\u0027project_id\u0027] and s[\u0027user_id\u0027]"},{"line_number":135,"context_line":"                                    and not self._is_gnocchi_activity(s))]"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        # FIXME(sileht): This method bulk the processing of samples"}],"source_content_type":"text/x-python","patch_set":15,"id":"5a890539_356859f4","line":134,"in_reply_to":"7a8c0949_039f5951","updated":"2014-11-26 15:36:37.000000000","message":"I have removed the user_id check, further patches will allows the gnocchi to accept that too.","commit_id":"2bdfc6a7bbb704c54745b2cc0ca54b955bba6dad"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e4a8fcd5b8222535fdcd3d8bfa56eace4d351232","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        # NOTE(sileht): project_id/user_id are mandatory for gnocchi"},{"line_number":132,"context_line":"        # but for example storage.api.request don\u0027t have that one"},{"line_number":133,"context_line":"        # we also skip sample generated by gnocchi itself"},{"line_number":134,"context_line":"        data \u003d [s for s in data if (s[\u0027project_id\u0027] and s[\u0027user_id\u0027]"},{"line_number":135,"context_line":"                                    and not self._is_gnocchi_activity(s))]"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        # FIXME(sileht): This method bulk the processing of samples"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a8c0949_039f5951","line":134,"in_reply_to":"7a8c0949_3ba9e37b","updated":"2014-11-04 11:19:56.000000000","message":"I hope you meant fixing Glance? :)","commit_id":"2bdfc6a7bbb704c54745b2cc0ca54b955bba6dad"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"347030948f541a5097065388fe5869e50e1b754e","unresolved":false,"context_lines":[{"line_number":131,"context_line":"        # NOTE(sileht): project_id/user_id are mandatory for gnocchi"},{"line_number":132,"context_line":"        # but for example storage.api.request don\u0027t have that one"},{"line_number":133,"context_line":"        # we also skip sample generated by gnocchi itself"},{"line_number":134,"context_line":"        data \u003d [s for s in data if (s[\u0027project_id\u0027] and s[\u0027user_id\u0027]"},{"line_number":135,"context_line":"                                    and not self._is_gnocchi_activity(s))]"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        # FIXME(sileht): This method bulk the processing of samples"}],"source_content_type":"text/x-python","patch_set":15,"id":"7a8c0949_3ba9e37b","line":134,"in_reply_to":"7a8c0949_6f8c8936","updated":"2014-11-04 07:43:17.000000000","message":"I guess we need to fix gnocchi first then because, gnocchi enforces to have the project_id/user_id set.","commit_id":"2bdfc6a7bbb704c54745b2cc0ca54b955bba6dad"}]}
