)]}'
{"ceilometer/meter/notifications.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"71fb979a5e763ce43284bdb5df89af60a41115db","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from ceilometer import sample as sample_util"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"OPTS \u003d ["},{"line_number":30,"context_line":"    cfg.MultiStrOpt(\u0027meter_definitions_cfg_file\u0027,"},{"line_number":31,"context_line":"                    default\u003d[\"meters.yaml\"],"},{"line_number":32,"context_line":"                    help\u003d\"Configuration file for defining meter notifications.\""},{"line_number":33,"context_line":"                    ),"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_6d915a99","line":30,"range":{"start_line":30,"start_character":21,"end_line":30,"end_character":47},"updated":"2017-02-06 13:00:14.000000000","message":"should be files I guess","commit_id":"653322a746f84663e3e5a4fcbd9158f978ad4ba4"},{"author":{"_account_id":22752,"name":"Hanxi Liu","email":"apolloliuhx@gmail.com","username":"Hanxi_Liu"},"change_message_id":"2263509d96ef86ab8a177efd6cc493043a0b7953","unresolved":false,"context_lines":[{"line_number":27,"context_line":"from ceilometer import sample as sample_util"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"OPTS \u003d ["},{"line_number":30,"context_line":"    cfg.MultiStrOpt(\u0027meter_definitions_cfg_file\u0027,"},{"line_number":31,"context_line":"                    default\u003d[\"meters.yaml\"],"},{"line_number":32,"context_line":"                    help\u003d\"Configuration file for defining meter notifications.\""},{"line_number":33,"context_line":"                    ),"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a430d35_26bbe70f","line":30,"range":{"start_line":30,"start_character":21,"end_line":30,"end_character":47},"in_reply_to":"1a430d35_6d915a99","updated":"2017-02-06 16:57:09.000000000","message":"Done","commit_id":"653322a746f84663e3e5a4fcbd9158f978ad4ba4"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"4fc1496df84202e0fe0de39cf3e7af33cfb4d2f6","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                    \"and use meter_definitions_cfg_files to \""},{"line_number":35,"context_line":"                    \"configure meter notification file.\""},{"line_number":36,"context_line":"               ),"},{"line_number":37,"context_line":"    cfg.MultiStrOpt(\u0027meter_definitions_cfg_files\u0027,"},{"line_number":38,"context_line":"                    default\u003d[\"meters.yaml\"],"},{"line_number":39,"context_line":"                    deprecated_name\u003d\"meter_definitions_cfg_file\","},{"line_number":40,"context_line":"                    help\u003d\"Configuration single or multiple files \""}],"source_content_type":"text/x-python","patch_set":10,"id":"da36d5c6_149beb66","line":37,"updated":"2017-02-27 09:04:07.000000000","message":"I don\u0027t get the need of listing all yamls here. Why not just \nread all yaml files in /etc/ceilometer/meters.d ?","commit_id":"75e53a3cd55fcfbf8e6864129579f6ed73c507f0"},{"author":{"_account_id":22752,"name":"Hanxi Liu","email":"apolloliuhx@gmail.com","username":"Hanxi_Liu"},"change_message_id":"8a5374aad0f19122cba9198fc276a9fbf9a1c926","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                    \"and use meter_definitions_cfg_files to \""},{"line_number":35,"context_line":"                    \"configure meter notification file.\""},{"line_number":36,"context_line":"               ),"},{"line_number":37,"context_line":"    cfg.MultiStrOpt(\u0027meter_definitions_cfg_files\u0027,"},{"line_number":38,"context_line":"                    default\u003d[\"meters.yaml\"],"},{"line_number":39,"context_line":"                    deprecated_name\u003d\"meter_definitions_cfg_file\","},{"line_number":40,"context_line":"                    help\u003d\"Configuration single or multiple files \""}],"source_content_type":"text/x-python","patch_set":10,"id":"da36d5c6_376b91b8","line":37,"in_reply_to":"da36d5c6_149beb66","updated":"2017-02-27 09:24:01.000000000","message":"backward compatible? i guess we have to keep meters.yaml by default at least","commit_id":"75e53a3cd55fcfbf8e6864129579f6ed73c507f0"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"e93fff38c3e821e565fa123619dd12f85c6a2c95","unresolved":false,"context_lines":[{"line_number":34,"context_line":"                    \"and use meter_definitions_cfg_files to \""},{"line_number":35,"context_line":"                    \"configure meter notification file.\""},{"line_number":36,"context_line":"               ),"},{"line_number":37,"context_line":"    cfg.MultiStrOpt(\u0027meter_definitions_cfg_files\u0027,"},{"line_number":38,"context_line":"                    default\u003d[\"meters.yaml\"],"},{"line_number":39,"context_line":"                    deprecated_name\u003d\"meter_definitions_cfg_file\","},{"line_number":40,"context_line":"                    help\u003d\"Configuration single or multiple files \""}],"source_content_type":"text/x-python","patch_set":10,"id":"da36d5c6_4d0a3227","line":37,"in_reply_to":"da36d5c6_376b91b8","updated":"2017-02-27 11:00:48.000000000","message":"you can keep meter_definitions_cfg_file for backward compat, set to None by default\n\nand then add a new meter_definitions_dirs set to /etc/ceilometer/meters.d + /usr/share/whatever/which/contains/meters.yaml by default and read all files from it.","commit_id":"75e53a3cd55fcfbf8e6864129579f6ed73c507f0"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"3e238cb8eb9605a6698af2058df1eb7fee325bff","unresolved":false,"context_lines":[{"line_number":35,"context_line":"               ),"},{"line_number":36,"context_line":"    cfg.MultiStrOpt(\u0027meter_definitions_dirs\u0027,"},{"line_number":37,"context_line":"                    default\u003d[\"/etc/ceilometer/meters.d\","},{"line_number":38,"context_line":"                             \"/usr/share\"],"},{"line_number":39,"context_line":"                    help\u003d\"List directory to find files of \""},{"line_number":40,"context_line":"                         \"defining meter notifications.\""},{"line_number":41,"context_line":"                    ),"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba2be162_45d9f220","line":38,"range":{"start_line":38,"start_character":30,"end_line":38,"end_character":40},"updated":"2017-03-01 13:55:34.000000000","message":"whwwaaaaatt??","commit_id":"ae4e6d4ac671ba4b9da6d5d0b508eb80bd1c6af1"},{"author":{"_account_id":22752,"name":"Hanxi Liu","email":"apolloliuhx@gmail.com","username":"Hanxi_Liu"},"change_message_id":"a47adf67e834e31aa6a337ed1715cc3be39fb169","unresolved":false,"context_lines":[{"line_number":35,"context_line":"               ),"},{"line_number":36,"context_line":"    cfg.MultiStrOpt(\u0027meter_definitions_dirs\u0027,"},{"line_number":37,"context_line":"                    default\u003d[\"/etc/ceilometer/meters.d\","},{"line_number":38,"context_line":"                             \"/usr/share\"],"},{"line_number":39,"context_line":"                    help\u003d\"List directory to find files of \""},{"line_number":40,"context_line":"                         \"defining meter notifications.\""},{"line_number":41,"context_line":"                    ),"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba2be162_f65d1e7a","line":38,"range":{"start_line":38,"start_character":30,"end_line":38,"end_character":40},"in_reply_to":"ba2be162_45d9f220","updated":"2017-03-02 02:44:43.000000000","message":"soory, i should set \u0027ceilometer\u0027, but i were not sure if it\u0027s aggressive that add a new dir like \u0027ceilometer/data/meters.d\u0027. TBH now i\u0027m sure about it. :)","commit_id":"ae4e6d4ac671ba4b9da6d5d0b508eb80bd1c6af1"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"3e238cb8eb9605a6698af2058df1eb7fee325bff","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        for dir in self.manager.conf.meter.meter_definitions_dirs:"},{"line_number":188,"context_line":"            for root, dirlist, filelist in os.walk(dir):"},{"line_number":189,"context_line":"                for filename in filelist:"},{"line_number":190,"context_line":"                    if dir \u003d\u003d \"/usr/share\":"},{"line_number":191,"context_line":"                        if fnmatch.fnmatch(filename, \"meters.yaml\"):"},{"line_number":192,"context_line":"                            self.mfs.append(os.path.abspath("},{"line_number":193,"context_line":"                                os.path.join(root, filename)))"},{"line_number":194,"context_line":"                    else:"},{"line_number":195,"context_line":"                        if fnmatch.fnmatch(filename, \"*.yaml\"):"},{"line_number":196,"context_line":"                            self.mfs.append(os.path.abspath("}],"source_content_type":"text/x-python","patch_set":12,"id":"ba2be162_85176aa2","line":193,"range":{"start_line":190,"start_character":19,"end_line":193,"end_character":62},"updated":"2017-03-01 13:55:34.000000000","message":"no don\u0027t special case for that.\n\njust move the meters.yaml in e.g. ceilometer/data/meters.d and add this by default in meter_definitions_dirs","commit_id":"ae4e6d4ac671ba4b9da6d5d0b508eb80bd1c6af1"},{"author":{"_account_id":22752,"name":"Hanxi Liu","email":"apolloliuhx@gmail.com","username":"Hanxi_Liu"},"change_message_id":"a47adf67e834e31aa6a337ed1715cc3be39fb169","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        for dir in self.manager.conf.meter.meter_definitions_dirs:"},{"line_number":188,"context_line":"            for root, dirlist, filelist in os.walk(dir):"},{"line_number":189,"context_line":"                for filename in filelist:"},{"line_number":190,"context_line":"                    if dir \u003d\u003d \"/usr/share\":"},{"line_number":191,"context_line":"                        if fnmatch.fnmatch(filename, \"meters.yaml\"):"},{"line_number":192,"context_line":"                            self.mfs.append(os.path.abspath("},{"line_number":193,"context_line":"                                os.path.join(root, filename)))"},{"line_number":194,"context_line":"                    else:"},{"line_number":195,"context_line":"                        if fnmatch.fnmatch(filename, \"*.yaml\"):"},{"line_number":196,"context_line":"                            self.mfs.append(os.path.abspath("}],"source_content_type":"text/x-python","patch_set":12,"id":"ba2be162_b161f0aa","line":193,"range":{"start_line":190,"start_character":19,"end_line":193,"end_character":62},"in_reply_to":"ba2be162_85176aa2","updated":"2017-03-02 02:44:43.000000000","message":"thanks for confirmation","commit_id":"ae4e6d4ac671ba4b9da6d5d0b508eb80bd1c6af1"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"3e238cb8eb9605a6698af2058df1eb7fee325bff","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                            self.mfs.append(os.path.abspath("},{"line_number":193,"context_line":"                                os.path.join(root, filename)))"},{"line_number":194,"context_line":"                    else:"},{"line_number":195,"context_line":"                        if fnmatch.fnmatch(filename, \"*.yaml\"):"},{"line_number":196,"context_line":"                            self.mfs.append(os.path.abspath("},{"line_number":197,"context_line":"                                os.path.join(root + filename)))"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba2be162_451e52bb","line":195,"updated":"2017-03-01 13:55:34.000000000","message":"if you go this way you might want to replace os.walk with glob.glob\n\nbut i don\u0027t think it\u0027s worth checking the extension, just load every file in those directory.","commit_id":"ae4e6d4ac671ba4b9da6d5d0b508eb80bd1c6af1"},{"author":{"_account_id":22752,"name":"Hanxi Liu","email":"apolloliuhx@gmail.com","username":"Hanxi_Liu"},"change_message_id":"a47adf67e834e31aa6a337ed1715cc3be39fb169","unresolved":false,"context_lines":[{"line_number":192,"context_line":"                            self.mfs.append(os.path.abspath("},{"line_number":193,"context_line":"                                os.path.join(root, filename)))"},{"line_number":194,"context_line":"                    else:"},{"line_number":195,"context_line":"                        if fnmatch.fnmatch(filename, \"*.yaml\"):"},{"line_number":196,"context_line":"                            self.mfs.append(os.path.abspath("},{"line_number":197,"context_line":"                                os.path.join(root + filename)))"},{"line_number":198,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"ba2be162_d1dd8443","line":195,"in_reply_to":"ba2be162_451e52bb","updated":"2017-03-02 02:44:43.000000000","message":"i think we should do in case users set incorrect file form. but if you still don\u0027t agree, i\u0027d like to update.","commit_id":"ae4e6d4ac671ba4b9da6d5d0b508eb80bd1c6af1"},{"author":{"_account_id":16034,"name":"soumiyajit","email":"somya.rock@gmail.com","username":"soumiyajit"},"change_message_id":"7b6b63292e71ae3a5a1dfe35dc0384c993d7195b","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        for dir in self.manager.conf.meter.meter_definitions_dirs:"},{"line_number":192,"context_line":"            for filepath in glob.glob(os.path.join(dir, \"*.yaml\")):"},{"line_number":193,"context_line":"                if filepath is not None:"},{"line_number":194,"context_line":"                    self.mfs.append(filepath)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def _load_definitions(self):"},{"line_number":197,"context_line":"        plugin_manager \u003d extension.ExtensionManager("}],"source_content_type":"text/x-python","patch_set":15,"id":"ba2be162_e2877c5e","line":194,"range":{"start_line":194,"start_character":20,"end_line":194,"end_character":24},"updated":"2017-03-06 12:03:05.000000000","message":"++","commit_id":"17bc5342d89f5e984b95f929c43716a576ccbecb"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"f1180b10ae288ea1bad520d0252c78e6aad87ea4","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        for dir in self.manager.conf.meter.meter_definitions_dirs:"},{"line_number":192,"context_line":"            for filepath in glob.glob(os.path.join(dir, \"*.yaml\")):"},{"line_number":193,"context_line":"                if filepath is not None:"},{"line_number":194,"context_line":"                    self.mfs.append(filepath)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def _load_definitions(self):"},{"line_number":197,"context_line":"        plugin_manager \u003d extension.ExtensionManager("}],"source_content_type":"text/x-python","patch_set":15,"id":"ba2be162_36c76b65","line":194,"updated":"2017-03-03 06:58:01.000000000","message":"You need to read \"meter_definitions_cfg_file\" if it\u0027s not None.","commit_id":"17bc5342d89f5e984b95f929c43716a576ccbecb"},{"author":{"_account_id":22752,"name":"Hanxi Liu","email":"apolloliuhx@gmail.com","username":"Hanxi_Liu"},"change_message_id":"cb3184832d9aecae7ab59fd8a67c61fd1aa2cc82","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        for dir in self.manager.conf.meter.meter_definitions_dirs:"},{"line_number":192,"context_line":"            for filepath in glob.glob(os.path.join(dir, \"*.yaml\")):"},{"line_number":193,"context_line":"                if filepath is not None:"},{"line_number":194,"context_line":"                    self.mfs.append(filepath)"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    def _load_definitions(self):"},{"line_number":197,"context_line":"        plugin_manager \u003d extension.ExtensionManager("}],"source_content_type":"text/x-python","patch_set":15,"id":"ba2be162_82d78eec","line":194,"in_reply_to":"ba2be162_36c76b65","updated":"2017-03-06 18:03:06.000000000","message":"setting it to find file from original path, right?","commit_id":"17bc5342d89f5e984b95f929c43716a576ccbecb"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"4477d578d7211644bfe08793ce27acc315b47122","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                    \"and use meter_definitions_cfg_files to \""},{"line_number":36,"context_line":"                    \"configure meter notification file.\""},{"line_number":37,"context_line":"               ),"},{"line_number":38,"context_line":"    cfg.MultiStrOpt(\u0027meter_definitions_dirs\u0027,"},{"line_number":39,"context_line":"                    default\u003d[\"/etc/ceilometer/meters.d\","},{"line_number":40,"context_line":"                             os.path.abspath("},{"line_number":41,"context_line":"                                 os.path.join("}],"source_content_type":"text/x-python","patch_set":16,"id":"9a30ddce_078f7b2a","line":38,"updated":"2017-03-10 14:13:59.000000000","message":"I have preference to hardcode dirs, but why not.","commit_id":"401ae4e8935c1e2531bec8ecefe04b253e86f02c"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"4477d578d7211644bfe08793ce27acc315b47122","unresolved":false,"context_lines":[{"line_number":191,"context_line":"    def _search_files(self):"},{"line_number":192,"context_line":"        self.mfs \u003d []"},{"line_number":193,"context_line":"        for dir in self.manager.conf.meter.meter_definitions_dirs:"},{"line_number":194,"context_line":"            for filepath in glob.glob(os.path.join(dir, \"*.yaml\")):"},{"line_number":195,"context_line":"                if filepath is not None:"},{"line_number":196,"context_line":"                    self.mfs.append(filepath)"},{"line_number":197,"context_line":"        if self.manager.conf.meter.meter_definitions_cfg_file is not None:"}],"source_content_type":"text/x-python","patch_set":16,"id":"9a30ddce_27db9f50","line":194,"updated":"2017-03-10 14:13:59.000000000","message":"We must sort the glob.glob result to always have the yaml loaded in the same order.","commit_id":"401ae4e8935c1e2531bec8ecefe04b253e86f02c"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"7f4ba3949e25ced2f4c77c29c06d28c222b6f6bf","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def __init__(self, manager):"},{"line_number":178,"context_line":"        super(ProcessMeterNotifications, self).__init__(manager)"},{"line_number":179,"context_line":"        self.dirs \u003d [\"/etc/ceilometer/meters.d\","},{"line_number":180,"context_line":"                     os.path.abspath(os.path.join("},{"line_number":181,"context_line":"                         os.path.split(os.path.dirname(__file__))[0],"},{"line_number":182,"context_line":"                         \"data\", \"meters.d\"))]"}],"source_content_type":"text/x-python","patch_set":22,"id":"5ff73747_518fcd22","line":179,"updated":"2017-04-25 08:44:45.000000000","message":"this should be based on config_dir + \"/meter.d\", not /etc/ceilometer IMHO\n\nand ultimately the meter.d should be configurable","commit_id":"22ad71b16c79703b103e9cc673c2a95ddffd188f"},{"author":{"_account_id":22752,"name":"Hanxi Liu","email":"apolloliuhx@gmail.com","username":"Hanxi_Liu"},"change_message_id":"5cbec7dceb5260b32b56a91ea483c9bd7efd6899","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def __init__(self, manager):"},{"line_number":178,"context_line":"        super(ProcessMeterNotifications, self).__init__(manager)"},{"line_number":179,"context_line":"        self.dirs \u003d [\"/etc/ceilometer/meters.d\","},{"line_number":180,"context_line":"                     os.path.abspath(os.path.join("},{"line_number":181,"context_line":"                         os.path.split(os.path.dirname(__file__))[0],"},{"line_number":182,"context_line":"                         \"data\", \"meters.d\"))]"}],"source_content_type":"text/x-python","patch_set":22,"id":"5ff73747_326431e4","line":179,"in_reply_to":"5ff73747_518fcd22","updated":"2017-04-25 16:28:41.000000000","message":"do you mean I shouldn\u0027t hardcode the dir and use a configurable dirs in OPT?","commit_id":"22ad71b16c79703b103e9cc673c2a95ddffd188f"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"7f4ba3949e25ced2f4c77c29c06d28c222b6f6bf","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                         \"data\", \"meters.d\"))]"},{"line_number":183,"context_line":"        self.definitions \u003d self._load_definitions()"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def _search_files(self):"},{"line_number":186,"context_line":"        self.mfs \u003d []"},{"line_number":187,"context_line":"        for dir in self.dirs:"},{"line_number":188,"context_line":"            for filepath in sorted(glob.glob(os.path.join(dir, \"*.yaml\"))):"}],"source_content_type":"text/x-python","patch_set":22,"id":"5ff73747_51dd8d12","line":185,"updated":"2017-04-25 08:44:45.000000000","message":"this is not a method, it should be static or not even exist","commit_id":"22ad71b16c79703b103e9cc673c2a95ddffd188f"},{"author":{"_account_id":22752,"name":"Hanxi Liu","email":"apolloliuhx@gmail.com","username":"Hanxi_Liu"},"change_message_id":"5cbec7dceb5260b32b56a91ea483c9bd7efd6899","unresolved":false,"context_lines":[{"line_number":182,"context_line":"                         \"data\", \"meters.d\"))]"},{"line_number":183,"context_line":"        self.definitions \u003d self._load_definitions()"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def _search_files(self):"},{"line_number":186,"context_line":"        self.mfs \u003d []"},{"line_number":187,"context_line":"        for dir in self.dirs:"},{"line_number":188,"context_line":"            for filepath in sorted(glob.glob(os.path.join(dir, \"*.yaml\"))):"}],"source_content_type":"text/x-python","patch_set":22,"id":"5ff73747_edff08ff","line":185,"in_reply_to":"5ff73747_51dd8d12","updated":"2017-04-25 16:28:41.000000000","message":"Done","commit_id":"22ad71b16c79703b103e9cc673c2a95ddffd188f"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"7f4ba3949e25ced2f4c77c29c06d28c222b6f6bf","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        self.definitions \u003d self._load_definitions()"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def _search_files(self):"},{"line_number":186,"context_line":"        self.mfs \u003d []"},{"line_number":187,"context_line":"        for dir in self.dirs:"},{"line_number":188,"context_line":"            for filepath in sorted(glob.glob(os.path.join(dir, \"*.yaml\"))):"},{"line_number":189,"context_line":"                if filepath is not None:"}],"source_content_type":"text/x-python","patch_set":22,"id":"5ff73747_f1eb79ad","line":186,"updated":"2017-04-25 08:44:45.000000000","message":"just return mfs, no need to have an attribute","commit_id":"22ad71b16c79703b103e9cc673c2a95ddffd188f"},{"author":{"_account_id":22752,"name":"Hanxi Liu","email":"apolloliuhx@gmail.com","username":"Hanxi_Liu"},"change_message_id":"5cbec7dceb5260b32b56a91ea483c9bd7efd6899","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        self.definitions \u003d self._load_definitions()"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    def _search_files(self):"},{"line_number":186,"context_line":"        self.mfs \u003d []"},{"line_number":187,"context_line":"        for dir in self.dirs:"},{"line_number":188,"context_line":"            for filepath in sorted(glob.glob(os.path.join(dir, \"*.yaml\"))):"},{"line_number":189,"context_line":"                if filepath is not None:"}],"source_content_type":"text/x-python","patch_set":22,"id":"5ff73747_cd020c0a","line":186,"in_reply_to":"5ff73747_f1eb79ad","updated":"2017-04-25 16:28:41.000000000","message":"Done","commit_id":"22ad71b16c79703b103e9cc673c2a95ddffd188f"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"7f4ba3949e25ced2f4c77c29c06d28c222b6f6bf","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        plugin_manager \u003d extension.ExtensionManager("},{"line_number":198,"context_line":"            namespace\u003d\u0027ceilometer.event.trait_plugin\u0027)"},{"line_number":199,"context_line":"        definitions \u003d {}"},{"line_number":200,"context_line":"        self._search_files()"},{"line_number":201,"context_line":"        for mf in self.mfs:"},{"line_number":202,"context_line":"            if not os.path.exists(mf):"},{"line_number":203,"context_line":"                LOG.warning(\"Skipping load meter definition %s\" % mf)"}],"source_content_type":"text/x-python","patch_set":22,"id":"5ff73747_91daf514","line":200,"updated":"2017-04-25 08:44:45.000000000","message":"mfs \u003d self._search_files()","commit_id":"22ad71b16c79703b103e9cc673c2a95ddffd188f"},{"author":{"_account_id":22752,"name":"Hanxi Liu","email":"apolloliuhx@gmail.com","username":"Hanxi_Liu"},"change_message_id":"5cbec7dceb5260b32b56a91ea483c9bd7efd6899","unresolved":false,"context_lines":[{"line_number":197,"context_line":"        plugin_manager \u003d extension.ExtensionManager("},{"line_number":198,"context_line":"            namespace\u003d\u0027ceilometer.event.trait_plugin\u0027)"},{"line_number":199,"context_line":"        definitions \u003d {}"},{"line_number":200,"context_line":"        self._search_files()"},{"line_number":201,"context_line":"        for mf in self.mfs:"},{"line_number":202,"context_line":"            if not os.path.exists(mf):"},{"line_number":203,"context_line":"                LOG.warning(\"Skipping load meter definition %s\" % mf)"}],"source_content_type":"text/x-python","patch_set":22,"id":"5ff73747_ad09002d","line":200,"in_reply_to":"5ff73747_91daf514","updated":"2017-04-25 16:28:41.000000000","message":"Done","commit_id":"22ad71b16c79703b103e9cc673c2a95ddffd188f"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"7f4ba3949e25ced2f4c77c29c06d28c222b6f6bf","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        definitions \u003d {}"},{"line_number":200,"context_line":"        self._search_files()"},{"line_number":201,"context_line":"        for mf in self.mfs:"},{"line_number":202,"context_line":"            if not os.path.exists(mf):"},{"line_number":203,"context_line":"                LOG.warning(\"Skipping load meter definition %s\" % mf)"},{"line_number":204,"context_line":"                continue"},{"line_number":205,"context_line":"            meters_cfg \u003d declarative.load_definitions("}],"source_content_type":"text/x-python","patch_set":22,"id":"5ff73747_d1f99d80","line":202,"updated":"2017-04-25 08:44:45.000000000","message":"so you just searched for it and no it can \"no exists\"\n\n?","commit_id":"22ad71b16c79703b103e9cc673c2a95ddffd188f"},{"author":{"_account_id":22752,"name":"Hanxi Liu","email":"apolloliuhx@gmail.com","username":"Hanxi_Liu"},"change_message_id":"5cbec7dceb5260b32b56a91ea483c9bd7efd6899","unresolved":false,"context_lines":[{"line_number":199,"context_line":"        definitions \u003d {}"},{"line_number":200,"context_line":"        self._search_files()"},{"line_number":201,"context_line":"        for mf in self.mfs:"},{"line_number":202,"context_line":"            if not os.path.exists(mf):"},{"line_number":203,"context_line":"                LOG.warning(\"Skipping load meter definition %s\" % mf)"},{"line_number":204,"context_line":"                continue"},{"line_number":205,"context_line":"            meters_cfg \u003d declarative.load_definitions("}],"source_content_type":"text/x-python","patch_set":22,"id":"5ff73747_4dccbc60","line":202,"in_reply_to":"5ff73747_d1f99d80","updated":"2017-04-25 16:28:41.000000000","message":"just because I can\u0027t make sure glob does every right thing. but I  \u0027m ok if removing this.","commit_id":"22ad71b16c79703b103e9cc673c2a95ddffd188f"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"25bc38a89e877002e4d9e5373646e11be3ebdc3e","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"    def __init__(self, manager):"},{"line_number":178,"context_line":"        super(ProcessMeterNotifications, self).__init__(manager)"},{"line_number":179,"context_line":"        self.dirs \u003d [\"/etc/ceilometer/meters.d\","},{"line_number":180,"context_line":"                     os.path.abspath(os.path.join("},{"line_number":181,"context_line":"                         os.path.split(os.path.dirname(__file__))[0],"},{"line_number":182,"context_line":"                         \"data\", \"meters.d\"))]"}],"source_content_type":"text/x-python","patch_set":23,"id":"5ff73747_029ae761","line":179,"updated":"2017-04-26 10:01:13.000000000","message":"see previous comment","commit_id":"6b90c02d949e4e899f75b4ec77682bf8e0d312fb"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"3ac9d23728df943dbabb34a60418883fd7b13dfa","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            for filepath in sorted(glob.glob(os.path.join(dir, \"*.yaml\"))):"},{"line_number":198,"context_line":"                if filepath is not None:"},{"line_number":199,"context_line":"                    mfs.append(filepath)"},{"line_number":200,"context_line":"        if self.manager.conf.meter.meter_definitions_cfg_file is not None:"},{"line_number":201,"context_line":"            mfs.append("},{"line_number":202,"context_line":"                pkg_resources.resource_filename(__name__, \"data/meters.yaml\")"},{"line_number":203,"context_line":"            )"},{"line_number":204,"context_line":"        for mf in mfs:"},{"line_number":205,"context_line":"            meters_cfg \u003d declarative.load_definitions("},{"line_number":206,"context_line":"                self.manager.conf, {}, mf)"}],"source_content_type":"text/x-python","patch_set":27,"id":"3f044301_ac5a0f4c","line":203,"range":{"start_line":200,"start_character":8,"end_line":203,"end_character":13},"updated":"2017-05-08 14:31:58.000000000","message":"This does not make sense to me. You want to use this configuration option and add it to mfs, no?","commit_id":"5be4ef157899a94f4e24ece378e2d8df4799bfd0"},{"author":{"_account_id":22752,"name":"Hanxi Liu","email":"apolloliuhx@gmail.com","username":"Hanxi_Liu"},"change_message_id":"d967516de4d092cd090f5201bc87ebe160c1aca1","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            for filepath in sorted(glob.glob(os.path.join(dir, \"*.yaml\"))):"},{"line_number":198,"context_line":"                if filepath is not None:"},{"line_number":199,"context_line":"                    mfs.append(filepath)"},{"line_number":200,"context_line":"        if self.manager.conf.meter.meter_definitions_cfg_file is not None:"},{"line_number":201,"context_line":"            mfs.append("},{"line_number":202,"context_line":"                pkg_resources.resource_filename(__name__, \"data/meters.yaml\")"},{"line_number":203,"context_line":"            )"},{"line_number":204,"context_line":"        for mf in mfs:"},{"line_number":205,"context_line":"            meters_cfg \u003d declarative.load_definitions("},{"line_number":206,"context_line":"                self.manager.conf, {}, mf)"}],"source_content_type":"text/x-python","patch_set":27,"id":"3f044301_12eb58b0","line":203,"range":{"start_line":200,"start_character":8,"end_line":203,"end_character":13},"in_reply_to":"3f044301_ac5a0f4c","updated":"2017-05-08 15:46:10.000000000","message":"definitely right, I misunderstood the original code.","commit_id":"5be4ef157899a94f4e24ece378e2d8df4799bfd0"}],"ceilometer/tests/unit/meter/test_notifications.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"3e238cb8eb9605a6698af2058df1eb7fee325bff","unresolved":false,"context_lines":[{"line_number":294,"context_line":"            cfgs \u003d [cfgs]"},{"line_number":295,"context_line":"        meter_cfg_files \u003d list()"},{"line_number":296,"context_line":"        random_dir \u003d uuid.uuid4().hex"},{"line_number":297,"context_line":"        path \u003d \u0027/tmp/%s/\u0027 % random_dir"},{"line_number":298,"context_line":"        for cfg in cfgs:"},{"line_number":299,"context_line":"            if six.PY3:"},{"line_number":300,"context_line":"                cfg \u003d cfg.encode(\u0027utf-8\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba2be162_a5d1cecf","line":297,"updated":"2017-03-01 13:55:34.000000000","message":"no, there\u0027s a fixture for tempdirs, use it","commit_id":"ae4e6d4ac671ba4b9da6d5d0b508eb80bd1c6af1"},{"author":{"_account_id":22752,"name":"Hanxi Liu","email":"apolloliuhx@gmail.com","username":"Hanxi_Liu"},"change_message_id":"a47adf67e834e31aa6a337ed1715cc3be39fb169","unresolved":false,"context_lines":[{"line_number":294,"context_line":"            cfgs \u003d [cfgs]"},{"line_number":295,"context_line":"        meter_cfg_files \u003d list()"},{"line_number":296,"context_line":"        random_dir \u003d uuid.uuid4().hex"},{"line_number":297,"context_line":"        path \u003d \u0027/tmp/%s/\u0027 % random_dir"},{"line_number":298,"context_line":"        for cfg in cfgs:"},{"line_number":299,"context_line":"            if six.PY3:"},{"line_number":300,"context_line":"                cfg \u003d cfg.encode(\u0027utf-8\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"ba2be162_91ba2ce0","line":297,"in_reply_to":"ba2be162_a5d1cecf","updated":"2017-03-02 02:44:43.000000000","message":"Done","commit_id":"ae4e6d4ac671ba4b9da6d5d0b508eb80bd1c6af1"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"25bc38a89e877002e4d9e5373646e11be3ebdc3e","unresolved":false,"context_lines":[{"line_number":290,"context_line":"        cfgs \u003d cfgs or []"},{"line_number":291,"context_line":"        if not isinstance(cfgs, list):"},{"line_number":292,"context_line":"            cfgs \u003d [cfgs]"},{"line_number":293,"context_line":"        path \u003d tempfile.mkdtemp()"},{"line_number":294,"context_line":"        meter_cfg_files \u003d list()"},{"line_number":295,"context_line":"        for cfg in cfgs:"},{"line_number":296,"context_line":"            if six.PY3:"}],"source_content_type":"text/x-python","patch_set":23,"id":"5ff73747_c2ccff6b","line":293,"updated":"2017-04-26 10:01:13.000000000","message":"this is never deleted\n\nyou should use the temporary file/dir fixtures from the fixtures module","commit_id":"6b90c02d949e4e899f75b4ec77682bf8e0d312fb"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"e50dd81c371f88d2739b41a9393a173f8e1495df","unresolved":false,"context_lines":[{"line_number":818,"context_line":"                             resource_id\u003d\"$.payload.resource_id\","},{"line_number":819,"context_line":"                             project_id\u003d\"$.payload.project_id\")]})"},{"line_number":820,"context_line":""},{"line_number":821,"context_line":"        event \u003d copy.deepcopy(MIDDLEWARE_EVENT)"},{"line_number":822,"context_line":"        del event[\u0027payload\u0027][\u0027measurements\u0027]"},{"line_number":823,"context_line":"        cfg2 \u003d yaml.dump("},{"line_number":824,"context_line":"            {\u0027metric\u0027: [dict(name\u003d\"$.payload.measurements.[*].metric.[*].name\","}],"source_content_type":"text/x-python","patch_set":29,"id":"3f044301_4050d55d","line":821,"updated":"2017-05-09 19:15:09.000000000","message":"you\u0027re not using this anywhere.","commit_id":"9f42c4373dd736c092b789fa27c8659d5053ac18"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"e50dd81c371f88d2739b41a9393a173f8e1495df","unresolved":false,"context_lines":[{"line_number":831,"context_line":"                             lookup\u003d\"name\")]})"},{"line_number":832,"context_line":""},{"line_number":833,"context_line":"        self._load_meter_def_file([cfg1, cfg2])"},{"line_number":834,"context_line":"        data \u003d list(self.handler.process_notification(NOTIFICATION))"},{"line_number":835,"context_line":"        self.assertEqual(1, len(data))"},{"line_number":836,"context_line":"        self.assertEqual(data[0].as_dict()[\u0027name\u0027], \u0027test\u0027)"},{"line_number":837,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"3f044301_204b89b0","line":834,"range":{"start_line":834,"start_character":54,"end_line":834,"end_character":66},"updated":"2017-05-09 19:15:09.000000000","message":"you should pass event in here. although i\u0027m not sure what you are trying to test here.","commit_id":"9f42c4373dd736c092b789fa27c8659d5053ac18"},{"author":{"_account_id":22752,"name":"Hanxi Liu","email":"apolloliuhx@gmail.com","username":"Hanxi_Liu"},"change_message_id":"679a06e9c0f3692790e28feac598a96a6bab1ead","unresolved":false,"context_lines":[{"line_number":831,"context_line":"                             lookup\u003d\"name\")]})"},{"line_number":832,"context_line":""},{"line_number":833,"context_line":"        self._load_meter_def_file([cfg1, cfg2])"},{"line_number":834,"context_line":"        data \u003d list(self.handler.process_notification(NOTIFICATION))"},{"line_number":835,"context_line":"        self.assertEqual(1, len(data))"},{"line_number":836,"context_line":"        self.assertEqual(data[0].as_dict()[\u0027name\u0027], \u0027test\u0027)"},{"line_number":837,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"3f044301_890f1e36","line":834,"range":{"start_line":834,"start_character":54,"end_line":834,"end_character":66},"in_reply_to":"3f044301_204b89b0","updated":"2017-05-10 12:52:27.000000000","message":"it should be event, thanks gordc","commit_id":"9f42c4373dd736c092b789fa27c8659d5053ac18"}],"releasenotes/notes/support-multiple-meter-definition-files-e3ce1fa73ef2e1de.yaml":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"71fb979a5e763ce43284bdb5df89af60a41115db","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Support loading multiple meter definition files and"},{"line_number":5,"context_line":"    allow users to add their own meter definitions into"},{"line_number":6,"context_line":"    sevaral files according to different types of metrics."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"1a430d35_2d975291","line":6,"range":{"start_line":6,"start_character":4,"end_line":6,"end_character":11},"updated":"2017-02-06 13:00:14.000000000","message":"several","commit_id":"653322a746f84663e3e5a4fcbd9158f978ad4ba4"},{"author":{"_account_id":22752,"name":"Hanxi Liu","email":"apolloliuhx@gmail.com","username":"Hanxi_Liu"},"change_message_id":"2263509d96ef86ab8a177efd6cc493043a0b7953","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Support loading multiple meter definition files and"},{"line_number":5,"context_line":"    allow users to add their own meter definitions into"},{"line_number":6,"context_line":"    sevaral files according to different types of metrics."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"1a430d35_66d40f47","line":6,"range":{"start_line":6,"start_character":4,"end_line":6,"end_character":11},"in_reply_to":"1a430d35_2d975291","updated":"2017-02-06 16:57:09.000000000","message":"Done","commit_id":"653322a746f84663e3e5a4fcbd9158f978ad4ba4"}]}
