)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9324bada7771c18165268bac44b9038884d78b65","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"File based publisher"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Cilometer logs metering data into database by default. In some cases"},{"line_number":10,"context_line":"it is ideal to have the metering data go into a file which can be"},{"line_number":11,"context_line":"examed easily. This patch adds the file based publisher, one can"},{"line_number":12,"context_line":"make changes to pipeline.yaml file to add the file publisher to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAPn%2F%2FVZs%3D","line":9,"updated":"2013-07-03 20:09:51.000000000","message":"Ceilometer is misspelled.\n\ns/into database/into the database/","commit_id":"5495c63e55a2e099d30af326ef4c08e35997134b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9324bada7771c18165268bac44b9038884d78b65","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Cilometer logs metering data into database by default. In some cases"},{"line_number":10,"context_line":"it is ideal to have the metering data go into a file which can be"},{"line_number":11,"context_line":"examed easily. This patch adds the file based publisher, one can"},{"line_number":12,"context_line":"make changes to pipeline.yaml file to add the file publisher to"},{"line_number":13,"context_line":"an existing pipeline or a new pipeline so that metering data not"},{"line_number":14,"context_line":"only be saved in database but also be saved in a rotating file."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAPn%2F%2FVZo%3D","line":11,"updated":"2013-07-03 20:09:51.000000000","message":"\"examined\" is misspelled.","commit_id":"5495c63e55a2e099d30af326ef4c08e35997134b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9324bada7771c18165268bac44b9038884d78b65","unresolved":false,"context_lines":[{"line_number":10,"context_line":"it is ideal to have the metering data go into a file which can be"},{"line_number":11,"context_line":"examed easily. This patch adds the file based publisher, one can"},{"line_number":12,"context_line":"make changes to pipeline.yaml file to add the file publisher to"},{"line_number":13,"context_line":"an existing pipeline or a new pipeline so that metering data not"},{"line_number":14,"context_line":"only be saved in database but also be saved in a rotating file."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The following example shows how it can be configured in pipeline."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAPn%2F%2FVZg%3D","line":13,"updated":"2013-07-03 20:09:51.000000000","message":"s/data not/data is not/","commit_id":"5495c63e55a2e099d30af326ef4c08e35997134b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9324bada7771c18165268bac44b9038884d78b65","unresolved":false,"context_lines":[{"line_number":11,"context_line":"examed easily. This patch adds the file based publisher, one can"},{"line_number":12,"context_line":"make changes to pipeline.yaml file to add the file publisher to"},{"line_number":13,"context_line":"an existing pipeline or a new pipeline so that metering data not"},{"line_number":14,"context_line":"only be saved in database but also be saved in a rotating file."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The following example shows how it can be configured in pipeline."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAPn%2F%2FVZc%3D","line":14,"updated":"2013-07-03 20:09:51.000000000","message":"s/be//g","commit_id":"5495c63e55a2e099d30af326ef4c08e35997134b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9324bada7771c18165268bac44b9038884d78b65","unresolved":false,"context_lines":[{"line_number":25,"context_line":"                - file:///tmp/meters?max_bytes\u003d10000000\u0026backup_count\u003d5"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"With the above configuration, a set of files named meters can be"},{"line_number":28,"context_line":"found in /tmp directory. The file names should be meters, meters.1,"},{"line_number":29,"context_line":"meters.2 etc. These files will contain all the metering data. Since the"},{"line_number":30,"context_line":"rotating log file class was used for the implementation, one can increase"},{"line_number":31,"context_line":"the backup_count and max_bytes to keep the file for a longer period or"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAPn%2F%2FVZY%3D","line":28,"updated":"2013-07-03 20:09:51.000000000","message":"s/in/in the/","commit_id":"5495c63e55a2e099d30af326ef4c08e35997134b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"9324bada7771c18165268bac44b9038884d78b65","unresolved":false,"context_lines":[{"line_number":29,"context_line":"meters.2 etc. These files will contain all the metering data. Since the"},{"line_number":30,"context_line":"rotating log file class was used for the implementation, one can increase"},{"line_number":31,"context_line":"the backup_count and max_bytes to keep the file for a longer period or"},{"line_number":32,"context_line":"use the path to point the file to a more permenate location other than"},{"line_number":33,"context_line":"the default directory."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"Change-Id: If85ad95f837b2d178527eb7de16707f8af2c4ce2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAPn%2F%2FVZM%3D","line":32,"updated":"2013-07-03 20:09:51.000000000","message":"\"permanent\" is misspelled.","commit_id":"5495c63e55a2e099d30af326ef4c08e35997134b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"118b46a01b79bf87fdd99a93adfb78047c937d0f","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"File based publisher"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Cielometer logs metering data into a database by default. In some cases"},{"line_number":10,"context_line":"it is ideal to have the metering data go into a file which can be"},{"line_number":11,"context_line":"examined easily. This patch adds the file based publisher, one can"},{"line_number":12,"context_line":"make changes to pipeline.yaml file to add the file publisher to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAPn%2F%2FUfc%3D","line":9,"updated":"2013-07-04 02:40:40.000000000","message":"Ceilometer is misspelled.","commit_id":"bc8462a42a4c72f5731e0815bcfbc4fb45f1029b"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"f645d85c76a914a177d6b9a1ee7d16f457fb1fd5","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"File based publisher"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Cielometer logs metering data into a database by default. In some cases"},{"line_number":10,"context_line":"it is ideal to have the metering data go into a file which can be"},{"line_number":11,"context_line":"examined easily. This patch adds the file based publisher, one can"},{"line_number":12,"context_line":"make changes to pipeline.yaml file to add the file publisher to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAPn%2F%2FT4g%3D","line":9,"in_reply_to":"AAAAPn%2F%2FUdY%3D","updated":"2013-07-04 10:05:04.000000000","message":"Done, but did you forgot to resubmit?","commit_id":"bc8462a42a4c72f5731e0815bcfbc4fb45f1029b"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"02ebdf4bcad153b0871bfb8103bcb39e0eedacbc","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"File based publisher"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Cielometer logs metering data into a database by default. In some cases"},{"line_number":10,"context_line":"it is ideal to have the metering data go into a file which can be"},{"line_number":11,"context_line":"examined easily. This patch adds the file based publisher, one can"},{"line_number":12,"context_line":"make changes to pipeline.yaml file to add the file publisher to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAPn%2F%2FUdY%3D","line":9,"in_reply_to":"AAAAPn%2F%2FUfc%3D","updated":"2013-07-04 03:12:08.000000000","message":"Done","commit_id":"bc8462a42a4c72f5731e0815bcfbc4fb45f1029b"}],"ceilometer/publisher/file.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"f645d85c76a914a177d6b9a1ee7d16f457fb1fd5","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    [file_publisher]"},{"line_number":34,"context_line":"    file_path \u003d /opt/stack/data/ceilometer/file_dispatcher"},{"line_number":35,"context_line":"    max_bytes \u003d 10000000"},{"line_number":36,"context_line":"    backup_count \u003d 5"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    To enable this publisher, add the following section to file"},{"line_number":39,"context_line":"    /etc/ceilometer/publisher.yaml or simply add it to an existing pipeline."}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPn%2F%2FT4c%3D","line":36,"updated":"2013-07-04 10:05:04.000000000","message":"Wrong comments.","commit_id":"bc8462a42a4c72f5731e0815bcfbc4fb45f1029b"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"118b46a01b79bf87fdd99a93adfb78047c937d0f","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def __init__(self, parsed_url):"},{"line_number":52,"context_line":"        super(FilePublisher, self).__init__(parsed_url)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        path \u003d \u0027/tmp/meter_file\u0027"},{"line_number":55,"context_line":"        max_bytes \u003d 10000000"},{"line_number":56,"context_line":"        backup_count \u003d 5"},{"line_number":57,"context_line":"        if parsed_url:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPn%2F%2FUfU%3D","line":54,"updated":"2013-07-04 02:40:40.000000000","message":"Certainly you don\u0027t mean to default to this file if parsed_url equates to False, do you?","commit_id":"bc8462a42a4c72f5731e0815bcfbc4fb45f1029b"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"f645d85c76a914a177d6b9a1ee7d16f457fb1fd5","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def __init__(self, parsed_url):"},{"line_number":52,"context_line":"        super(FilePublisher, self).__init__(parsed_url)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        path \u003d \u0027/tmp/meter_file\u0027"},{"line_number":55,"context_line":"        max_bytes \u003d 10000000"},{"line_number":56,"context_line":"        backup_count \u003d 5"},{"line_number":57,"context_line":"        if parsed_url:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPn%2F%2FT4Q%3D","line":54,"in_reply_to":"AAAAPn%2F%2FUdc%3D","updated":"2013-07-04 10:05:04.000000000","message":"Bad idea + there\u0027s always parsed_url\n\nIf the parsed_url has no path, just LOG.warn() and return","commit_id":"bc8462a42a4c72f5731e0815bcfbc4fb45f1029b"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"02ebdf4bcad153b0871bfb8103bcb39e0eedacbc","unresolved":false,"context_lines":[{"line_number":51,"context_line":"    def __init__(self, parsed_url):"},{"line_number":52,"context_line":"        super(FilePublisher, self).__init__(parsed_url)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        path \u003d \u0027/tmp/meter_file\u0027"},{"line_number":55,"context_line":"        max_bytes \u003d 10000000"},{"line_number":56,"context_line":"        backup_count \u003d 5"},{"line_number":57,"context_line":"        if parsed_url:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPn%2F%2FUdc%3D","line":54,"in_reply_to":"AAAAPn%2F%2FUfU%3D","updated":"2013-07-04 03:12:08.000000000","message":"Yes, I do mean to create the file there in that location.","commit_id":"bc8462a42a4c72f5731e0815bcfbc4fb45f1029b"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"f645d85c76a914a177d6b9a1ee7d16f457fb1fd5","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        path \u003d \u0027/tmp/meter_file\u0027"},{"line_number":55,"context_line":"        max_bytes \u003d 10000000"},{"line_number":56,"context_line":"        backup_count \u003d 5"},{"line_number":57,"context_line":"        if parsed_url:"},{"line_number":58,"context_line":"            path \u003d parsed_url.path"},{"line_number":59,"context_line":"            if parsed_url.query:"},{"line_number":60,"context_line":"                params \u003d urlparse.parse_qs(parsed_url.query)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAPn%2F%2FT4U%3D","line":57,"updated":"2013-07-04 10:05:04.000000000","message":"There\u0027s always parsed_url","commit_id":"bc8462a42a4c72f5731e0815bcfbc4fb45f1029b"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"abdaf6ab047e30b6f8f3167b8e5f99db53c70e43","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        super(FilePublisher, self).__init__(parsed_url)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        max_bytes \u003d 10000000"},{"line_number":58,"context_line":"        backup_count \u003d 5"},{"line_number":59,"context_line":"        if parsed_url:"},{"line_number":60,"context_line":"            path \u003d parsed_url.path"},{"line_number":61,"context_line":"            if parsed_url.query:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2F%2BTA%3D","line":58,"updated":"2013-07-08 09:32:29.000000000","message":"I don\u0027t think you should set any default here, it\u0027s confusing.","commit_id":"c327788561d93c1d8fa746126e3856b5b6c77d75"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"c42c8c585f9716eb2fec72f020f2d10b03c50c5c","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        super(FilePublisher, self).__init__(parsed_url)"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        max_bytes \u003d 10000000"},{"line_number":58,"context_line":"        backup_count \u003d 5"},{"line_number":59,"context_line":"        if parsed_url:"},{"line_number":60,"context_line":"            path \u003d parsed_url.path"},{"line_number":61,"context_line":"            if parsed_url.query:"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2F8K4%3D","line":58,"in_reply_to":"AAAAP3%2F%2F%2BTA%3D","updated":"2013-07-08 20:23:48.000000000","message":"set default makes this working.\n- file:///tmp/meter.\n\notherwise, this won\u0027t work.","commit_id":"c327788561d93c1d8fa746126e3856b5b6c77d75"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"abdaf6ab047e30b6f8f3167b8e5f99db53c70e43","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        max_bytes \u003d 10000000"},{"line_number":58,"context_line":"        backup_count \u003d 5"},{"line_number":59,"context_line":"        if parsed_url:"},{"line_number":60,"context_line":"            path \u003d parsed_url.path"},{"line_number":61,"context_line":"            if parsed_url.query:"},{"line_number":62,"context_line":"                params \u003d urlparse.parse_qs(parsed_url.query)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2F%2BTg%3D","line":59,"updated":"2013-07-08 09:32:29.000000000","message":"You can remove this.","commit_id":"c327788561d93c1d8fa746126e3856b5b6c77d75"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"c42c8c585f9716eb2fec72f020f2d10b03c50c5c","unresolved":false,"context_lines":[{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        max_bytes \u003d 10000000"},{"line_number":58,"context_line":"        backup_count \u003d 5"},{"line_number":59,"context_line":"        if parsed_url:"},{"line_number":60,"context_line":"            path \u003d parsed_url.path"},{"line_number":61,"context_line":"            if parsed_url.query:"},{"line_number":62,"context_line":"                params \u003d urlparse.parse_qs(parsed_url.query)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2F8K0%3D","line":59,"in_reply_to":"AAAAP3%2F%2F%2BTg%3D","updated":"2013-07-08 20:23:48.000000000","message":"Done","commit_id":"c327788561d93c1d8fa746126e3856b5b6c77d75"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"abdaf6ab047e30b6f8f3167b8e5f99db53c70e43","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                max_bytes \u003d int(params.get(\u0027max_bytes\u0027)[0])"},{"line_number":64,"context_line":"                backup_count \u003d int(params.get(\u0027backup_count\u0027)[0])"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        if not path:"},{"line_number":67,"context_line":"            LOG.warn(\u0027File publisher configuration misses file path\u0027"},{"line_number":68,"context_line":"                     \u0027 or file path is invalid\u0027)"},{"line_number":69,"context_line":"            self.publisher_logger \u003d None"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2F%2BTM%3D","line":66,"updated":"2013-07-08 09:32:29.000000000","message":"This would raise if parsed_url is None; that never happens, but that proves the code has a potential problem :)","commit_id":"c327788561d93c1d8fa746126e3856b5b6c77d75"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"c42c8c585f9716eb2fec72f020f2d10b03c50c5c","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                max_bytes \u003d int(params.get(\u0027max_bytes\u0027)[0])"},{"line_number":64,"context_line":"                backup_count \u003d int(params.get(\u0027backup_count\u0027)[0])"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        if not path:"},{"line_number":67,"context_line":"            LOG.warn(\u0027File publisher configuration misses file path\u0027"},{"line_number":68,"context_line":"                     \u0027 or file path is invalid\u0027)"},{"line_number":69,"context_line":"            self.publisher_logger \u003d None"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAP3%2F%2F8LE%3D","line":66,"in_reply_to":"AAAAP3%2F%2F%2BTM%3D","updated":"2013-07-08 20:23:48.000000000","message":"file:// or simply file will result of path being none.","commit_id":"c327788561d93c1d8fa746126e3856b5b6c77d75"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"98673f41c422d464cd14e477fa0a6f1ba0d0c993","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                if params.get(\u0027max_bytes\u0027):"},{"line_number":63,"context_line":"                    max_bytes \u003d int(params.get(\u0027max_bytes\u0027)[0])"},{"line_number":64,"context_line":"                else:"},{"line_number":65,"context_line":"                    max_bytes \u003d 10000000"},{"line_number":66,"context_line":"                if params.get(\u0027backup_count\u0027):"},{"line_number":67,"context_line":"                    backup_count \u003d int(params.get(\u0027backup_count\u0027)[0])"},{"line_number":68,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2FyME%3D","line":65,"updated":"2013-07-11 14:38:26.000000000","message":"Could you just set this to nothing?","commit_id":"432dbecfdfbe9020bb2ac86161187d60607c882b"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"663dbd8a4a7f0fd8e332335a9a5915acfedd3e97","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                if params.get(\u0027max_bytes\u0027):"},{"line_number":63,"context_line":"                    max_bytes \u003d int(params.get(\u0027max_bytes\u0027)[0])"},{"line_number":64,"context_line":"                else:"},{"line_number":65,"context_line":"                    max_bytes \u003d 10000000"},{"line_number":66,"context_line":"                if params.get(\u0027backup_count\u0027):"},{"line_number":67,"context_line":"                    backup_count \u003d int(params.get(\u0027backup_count\u0027)[0])"},{"line_number":68,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2FxIw%3D","line":65,"in_reply_to":"AAAAP3%2F%2FyME%3D","updated":"2013-07-11 18:51:46.000000000","message":"will not use a default value.","commit_id":"432dbecfdfbe9020bb2ac86161187d60607c882b"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"98673f41c422d464cd14e477fa0a6f1ba0d0c993","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                if params.get(\u0027backup_count\u0027):"},{"line_number":67,"context_line":"                    backup_count \u003d int(params.get(\u0027backup_count\u0027)[0])"},{"line_number":68,"context_line":"                else:"},{"line_number":69,"context_line":"                    backup_count \u003d 5"},{"line_number":70,"context_line":"        except ValueError:"},{"line_number":71,"context_line":"            # max bytes, backup count may not be configured in right format"},{"line_number":72,"context_line":"            # set the path to be empty string so that the error will be logged"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2FyLY%3D","line":69,"updated":"2013-07-11 14:38:26.000000000","message":"Same here, just don\u0027t use any backup by default and use a basic FileHandler rather than a rotating one.","commit_id":"432dbecfdfbe9020bb2ac86161187d60607c882b"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"663dbd8a4a7f0fd8e332335a9a5915acfedd3e97","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                if params.get(\u0027backup_count\u0027):"},{"line_number":67,"context_line":"                    backup_count \u003d int(params.get(\u0027backup_count\u0027)[0])"},{"line_number":68,"context_line":"                else:"},{"line_number":69,"context_line":"                    backup_count \u003d 5"},{"line_number":70,"context_line":"        except ValueError:"},{"line_number":71,"context_line":"            # max bytes, backup count may not be configured in right format"},{"line_number":72,"context_line":"            # set the path to be empty string so that the error will be logged"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2FxI4%3D","line":69,"in_reply_to":"AAAAP3%2F%2FyLY%3D","updated":"2013-07-11 18:51:46.000000000","message":"Done","commit_id":"432dbecfdfbe9020bb2ac86161187d60607c882b"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"98673f41c422d464cd14e477fa0a6f1ba0d0c993","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                    backup_count \u003d int(params.get(\u0027backup_count\u0027)[0])"},{"line_number":68,"context_line":"                else:"},{"line_number":69,"context_line":"                    backup_count \u003d 5"},{"line_number":70,"context_line":"        except ValueError:"},{"line_number":71,"context_line":"            # max bytes, backup count may not be configured in right format"},{"line_number":72,"context_line":"            # set the path to be empty string so that the error will be logged"},{"line_number":73,"context_line":"            path \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2FyMM%3D","line":70,"updated":"2013-07-11 14:38:26.000000000","message":"The try/except is too big, I\u0027ve no idea where the expcetion could come from.","commit_id":"432dbecfdfbe9020bb2ac86161187d60607c882b"},{"author":{"_account_id":7336,"name":"Phil Neal","email":"phil.neal@hp.com","username":"nealph"},"change_message_id":"c270400a5279e5553e2cd817d6bf2794f84fcf64","unresolved":false,"context_lines":[{"line_number":67,"context_line":"                    backup_count \u003d int(params.get(\u0027backup_count\u0027)[0])"},{"line_number":68,"context_line":"                else:"},{"line_number":69,"context_line":"                    backup_count \u003d 5"},{"line_number":70,"context_line":"        except ValueError:"},{"line_number":71,"context_line":"            # max bytes, backup count may not be configured in right format"},{"line_number":72,"context_line":"            # set the path to be empty string so that the error will be logged"},{"line_number":73,"context_line":"            path \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2FyGU%3D","line":70,"in_reply_to":"AAAAP3%2F%2FyMM%3D","updated":"2013-07-11 14:58:40.000000000","message":"Following on JD\u0027s comment, perhaps try pushing a couple more exception handlers in the params.get calls.","commit_id":"432dbecfdfbe9020bb2ac86161187d60607c882b"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"98673f41c422d464cd14e477fa0a6f1ba0d0c993","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            # set the path to be empty string so that the error will be logged"},{"line_number":73,"context_line":"            path \u003d \u0027\u0027"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        if not path or path.lower() \u003d\u003d \u0027file\u0027:"},{"line_number":76,"context_line":"            LOG.error(\u0027File publisher configuration misses file path, \u0027"},{"line_number":77,"context_line":"                      \u0027file path is invalid or configuration parameter \u0027"},{"line_number":78,"context_line":"                      \u0027max_bytes and/or backup_count are not in right \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2FyLk%3D","line":75,"updated":"2013-07-11 14:38:26.000000000","message":"I guess this check could/should be at the beginning of __init__","commit_id":"432dbecfdfbe9020bb2ac86161187d60607c882b"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"663dbd8a4a7f0fd8e332335a9a5915acfedd3e97","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            # set the path to be empty string so that the error will be logged"},{"line_number":73,"context_line":"            path \u003d \u0027\u0027"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        if not path or path.lower() \u003d\u003d \u0027file\u0027:"},{"line_number":76,"context_line":"            LOG.error(\u0027File publisher configuration misses file path, \u0027"},{"line_number":77,"context_line":"                      \u0027file path is invalid or configuration parameter \u0027"},{"line_number":78,"context_line":"                      \u0027max_bytes and/or backup_count are not in right \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2FxJE%3D","line":75,"in_reply_to":"AAAAP3%2F%2FyLk%3D","updated":"2013-07-11 18:51:46.000000000","message":"Done","commit_id":"432dbecfdfbe9020bb2ac86161187d60607c882b"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"98673f41c422d464cd14e477fa0a6f1ba0d0c993","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        self.publisher_logger.propagate \u003d False"},{"line_number":86,"context_line":"        self.publisher_logger.setLevel(logging.INFO)"},{"line_number":87,"context_line":"        # Since the pipeline can be loaded multiple times, there should be"},{"line_number":88,"context_line":"        # only one handler for the logger."},{"line_number":89,"context_line":"        if len(self.publisher_logger.handlers) \u003d\u003d 0:"},{"line_number":90,"context_line":"            # create rotating file handler which logs meters"},{"line_number":91,"context_line":"            rfh \u003d logging.handlers.RotatingFileHandler("}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2FyK0%3D","line":88,"updated":"2013-07-11 14:38:26.000000000","message":"This is wrong IIUC, that means that using file:///tmp/foobar and in another place file:///tmp/foobaz will only use /tmp/foobar.","commit_id":"432dbecfdfbe9020bb2ac86161187d60607c882b"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"663dbd8a4a7f0fd8e332335a9a5915acfedd3e97","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        self.publisher_logger.propagate \u003d False"},{"line_number":86,"context_line":"        self.publisher_logger.setLevel(logging.INFO)"},{"line_number":87,"context_line":"        # Since the pipeline can be loaded multiple times, there should be"},{"line_number":88,"context_line":"        # only one handler for the logger."},{"line_number":89,"context_line":"        if len(self.publisher_logger.handlers) \u003d\u003d 0:"},{"line_number":90,"context_line":"            # create rotating file handler which logs meters"},{"line_number":91,"context_line":"            rfh \u003d logging.handlers.RotatingFileHandler("}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAP3%2F%2FxJA%3D","line":88,"in_reply_to":"AAAAP3%2F%2FyK0%3D","updated":"2013-07-11 18:51:46.000000000","message":"Done","commit_id":"432dbecfdfbe9020bb2ac86161187d60607c882b"},{"author":{"_account_id":7409,"name":"Eric Pendergrass","email":"epende@gmail.com","username":"epende"},"change_message_id":"85556f012d682c39f3c28246a75d517af6760ac8","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                    max_bytes \u003d int(params.get(\u0027max_bytes\u0027)[0])"},{"line_number":72,"context_line":"                    backup_count \u003d int(params.get(\u0027backup_count\u0027)[0])"},{"line_number":73,"context_line":"                except ValueError:"},{"line_number":74,"context_line":"                    LOG.error(\u0027max_bytes and backup_count should be \u0027"},{"line_number":75,"context_line":"                              \u0027numbers.\u0027)"},{"line_number":76,"context_line":"                    return"},{"line_number":77,"context_line":"                # create rotating file handler"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAP3%2F%2FtqI%3D","line":74,"updated":"2013-07-12 15:29:12.000000000","message":"Recommend a configuration error like this should propagate the exception so the user will know without looking at the logs","commit_id":"0c2d5298f3dbd76331b3c7f178ddfb5a872147af"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"f28cd191101fcdd5c67aaf7a5608c531c8f4fb13","unresolved":false,"context_lines":[{"line_number":71,"context_line":"                    max_bytes \u003d int(params.get(\u0027max_bytes\u0027)[0])"},{"line_number":72,"context_line":"                    backup_count \u003d int(params.get(\u0027backup_count\u0027)[0])"},{"line_number":73,"context_line":"                except ValueError:"},{"line_number":74,"context_line":"                    LOG.error(\u0027max_bytes and backup_count should be \u0027"},{"line_number":75,"context_line":"                              \u0027numbers.\u0027)"},{"line_number":76,"context_line":"                    return"},{"line_number":77,"context_line":"                # create rotating file handler"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAP3%2F%2FpTc%3D","line":74,"in_reply_to":"AAAAP3%2F%2FtqI%3D","updated":"2013-07-15 13:00:10.000000000","message":"Done","commit_id":"0c2d5298f3dbd76331b3c7f178ddfb5a872147af"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"6adc97ce97ba5c92408c437df99859467f163c26","unresolved":false,"context_lines":[{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        self.publisher_logger \u003d None"},{"line_number":59,"context_line":"        path \u003d parsed_url.path"},{"line_number":60,"context_line":"        if not path or path.lower() \u003d\u003d \u0027file\u0027:"},{"line_number":61,"context_line":"            LOG.error(\u0027The path for the file publisher is required\u0027)"},{"line_number":62,"context_line":"            return"},{"line_number":63,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAP3%2F%2FlmU%3D","line":60,"updated":"2013-07-16 07:49:25.000000000","message":"I don\u0027t get the \u003d\u003d \u0027file\u0027 test here.","commit_id":"ba006c4f1cdd9a072347171a9d5d1cf6be8935be"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"3e04ab46cf68e069ae3f97eb965451005b9d1477","unresolved":false,"context_lines":[{"line_number":80,"context_line":"            path, encoding\u003d\u0027utf8\u0027, maxBytes\u003dmax_bytes,"},{"line_number":81,"context_line":"            backupCount\u003dbackup_count)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        self.publisher_logger \u003d logging.Logger(\u0027publisher.file\u0027)"},{"line_number":84,"context_line":"        self.publisher_logger.propagate \u003d False"},{"line_number":85,"context_line":"        self.publisher_logger.setLevel(logging.INFO)"},{"line_number":86,"context_line":"        rfh.setLevel(logging.INFO)"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAP3%2F%2FkdU%3D","line":83,"updated":"2013-07-16 13:28:47.000000000","message":"We may want to give that logger name some more thought. I don\u0027t think we want the \"ceilometer\" prefix, since that may drag in the other handlers, but at the same time this seems very generic.","commit_id":"ba006c4f1cdd9a072347171a9d5d1cf6be8935be"}],"tests/publisher/test_file.py":[{"author":{"_account_id":7409,"name":"Eric Pendergrass","email":"epende@gmail.com","username":"epende"},"change_message_id":"85556f012d682c39f3c28246a75d517af6760ac8","unresolved":false,"context_lines":[{"line_number":17,"context_line":"# under the License."},{"line_number":18,"context_line":"\"\"\"Tests for ceilometer/publisher/udp.py"},{"line_number":19,"context_line":"\"\"\""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import datetime"},{"line_number":22,"context_line":"import os"},{"line_number":23,"context_line":"import logging"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAP3%2F%2Ftpk%3D","line":20,"updated":"2013-07-12 15:29:12.000000000","message":"Reco adding tests to test invalid max bytes and backup count, also file write failure due to permissions (or otherwise).","commit_id":"0c2d5298f3dbd76331b3c7f178ddfb5a872147af"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"f28cd191101fcdd5c67aaf7a5608c531c8f4fb13","unresolved":false,"context_lines":[{"line_number":17,"context_line":"# under the License."},{"line_number":18,"context_line":"\"\"\"Tests for ceilometer/publisher/udp.py"},{"line_number":19,"context_line":"\"\"\""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import datetime"},{"line_number":22,"context_line":"import os"},{"line_number":23,"context_line":"import logging"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAP3%2F%2FpUM%3D","line":20,"in_reply_to":"AAAAP3%2F%2Ftpk%3D","updated":"2013-07-15 13:00:10.000000000","message":"Done","commit_id":"0c2d5298f3dbd76331b3c7f178ddfb5a872147af"},{"author":{"_account_id":7409,"name":"Eric Pendergrass","email":"epende@gmail.com","username":"epende"},"change_message_id":"85556f012d682c39f3c28246a75d517af6760ac8","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        counter.Counter("},{"line_number":35,"context_line":"            name\u003d\u0027test\u0027,"},{"line_number":36,"context_line":"            type\u003dcounter.TYPE_CUMULATIVE,"},{"line_number":37,"context_line":"            unit\u003d\u0027\u0027,"},{"line_number":38,"context_line":"            volume\u003d1,"},{"line_number":39,"context_line":"            user_id\u003d\u0027test\u0027,"},{"line_number":40,"context_line":"            project_id\u003d\u0027test\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAP3%2F%2Ftpg%3D","line":37,"updated":"2013-07-12 15:29:12.000000000","message":"What would happen if unit were not empty?","commit_id":"0c2d5298f3dbd76331b3c7f178ddfb5a872147af"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"f28cd191101fcdd5c67aaf7a5608c531c8f4fb13","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        counter.Counter("},{"line_number":35,"context_line":"            name\u003d\u0027test\u0027,"},{"line_number":36,"context_line":"            type\u003dcounter.TYPE_CUMULATIVE,"},{"line_number":37,"context_line":"            unit\u003d\u0027\u0027,"},{"line_number":38,"context_line":"            volume\u003d1,"},{"line_number":39,"context_line":"            user_id\u003d\u0027test\u0027,"},{"line_number":40,"context_line":"            project_id\u003d\u0027test\u0027,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAP3%2F%2FpUQ%3D","line":37,"in_reply_to":"AAAAP3%2F%2Ftpg%3D","updated":"2013-07-15 13:00:10.000000000","message":"The data is not important. The data is transparent to the patch.","commit_id":"0c2d5298f3dbd76331b3c7f178ddfb5a872147af"}]}
