)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"bb8b67a60df141bd4b4b1b07b53bb3d7b92d030a","unresolved":false,"context_lines":[{"line_number":12,"context_line":"like to persist these, flip the option to let it in the db."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-Bug: #1519532"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I10544d486447d7f49660f41c2d0d8c84fe9d2960"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"5a710552_d203060c","line":15,"updated":"2015-12-16 07:21:09.000000000","message":"DocImpact: new option blabla has been added, old option blabla has been changed","commit_id":"7beab0b53bdfc596e829f852ee32e61266bb1ee0"}],"ceilometer/collector.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"386a5a6ef7379e160200b85da4924d71886267a7","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                     \u0027This could flood the metering database and cause \u0027"},{"line_number":57,"context_line":"                     \u0027performance degradation.\u0027),"},{"line_number":58,"context_line":"    cfg.ListOpt(\u0027blacklist_meters\u0027,"},{"line_number":59,"context_line":"                default\u003d[],"},{"line_number":60,"context_line":"                help\u003d\u0027List of meters collector should skip processing.\u0027)"},{"line_number":61,"context_line":"]"},{"line_number":62,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_438eaf28","line":59,"range":{"start_line":59,"start_character":23,"end_line":59,"end_character":27},"updated":"2015-11-30 21:03:37.000000000","message":"default should be to blacklist all known \u0027volume\u003d1\u0027 meters.","commit_id":"cb992dd706889c7a99682e0c06933b84ed8bd1ae"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"c36ee6aa3e69d7bcf39fd907f9903a9aa14f40b2","unresolved":false,"context_lines":[{"line_number":180,"context_line":"        \"\"\""},{"line_number":181,"context_line":"        try:"},{"line_number":182,"context_line":"            if not cfg.CONF.collector.enable_non_metric_meters_store:"},{"line_number":183,"context_line":"                payload \u003d self._filter_meters(payload)"},{"line_number":184,"context_line":"            self.dispatcher_manager.map_method(self.method, payload)"},{"line_number":185,"context_line":"        except Exception:"},{"line_number":186,"context_line":"            if self.requeue_on_error:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_4348dd87","line":183,"updated":"2015-12-01 07:23:06.000000000","message":"should the meters in backlist won\u0027t be stored as events also ?","commit_id":"cb992dd706889c7a99682e0c06933b84ed8bd1ae"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"386a5a6ef7379e160200b85da4924d71886267a7","unresolved":false,"context_lines":[{"line_number":195,"context_line":"        for meter in data:"},{"line_number":196,"context_line":"            meter_name \u003d meter.get(\u0027name\u0027)"},{"line_number":197,"context_line":"            if meter_name in cfg.CONF.collector.blacklist_meters:"},{"line_number":198,"context_line":"                LOG.warn(\u0027Skipping non-metric meter %s\u0027 % meter_name)"},{"line_number":199,"context_line":"                continue"},{"line_number":200,"context_line":"            filtered_data.append(meter)"},{"line_number":201,"context_line":"        return filtered_data"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a8ffd7b_c3f85fc7","line":198,"updated":"2015-11-30 21:03:37.000000000","message":"i don\u0027t think we want to have this displayed every single sample. there is a very good chance this will flood logs. we should probably do this once at startup.","commit_id":"cb992dd706889c7a99682e0c06933b84ed8bd1ae"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"df2225ea820f1dcef3ae5c6293281c7f56f0f94d","unresolved":false,"context_lines":[{"line_number":183,"context_line":"        \"\"\""},{"line_number":184,"context_line":"        try:"},{"line_number":185,"context_line":"            if not cfg.CONF.collector.enable_non_metric_meters_store:"},{"line_number":186,"context_line":"                payload \u003d self._filter_meters(payload)"},{"line_number":187,"context_line":"            self.dispatcher_manager.map_method(self.method, payload)"},{"line_number":188,"context_line":"        except Exception:"},{"line_number":189,"context_line":"            if self.requeue_on_error:"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a8ffd7b_426dfb02","line":186,"updated":"2015-12-02 01:43:47.000000000","message":"sorry, still, do you want to filter out the events in backlist also? shouldn\u0027t only filter out the samples in meter_backlist ?\nif so, this filter should be SampleEndpoint, not CollectorEndpoint.","commit_id":"cfb193d702ab905cdd4eae4777305d95740e3aee"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"3f6d12c371e8a8e8bd2cf190332b34e692886f45","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            cfg.CONF.collector.requeue_sample_on_dispatcher_error)"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def sample(self, ctxt, publisher_id, event_type, payload, metadata):"},{"line_number":204,"context_line":"        \"\"\"RPC endpoint for notification messages"},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"        When another service sends a notification over the message"},{"line_number":207,"context_line":"        bus, this method receives it."}],"source_content_type":"text/x-python","patch_set":7,"id":"7a740942_946d7e06","line":204,"updated":"2015-12-04 21:11:52.000000000","message":"you probably don\u0027t need to copy whole code. just do filter and then call super","commit_id":"3d989d1f9dd31cbbeb4f4babed6e75779d6de49d"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"3f6d12c371e8a8e8bd2cf190332b34e692886f45","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        filtered_data \u003d []"},{"line_number":223,"context_line":"        skipped \u003d []"},{"line_number":224,"context_line":"        blacklist_meters \u003d declarative.load_definitions("},{"line_number":225,"context_line":"            {}, cfg.CONF.collector.blacklist_meters_cfg)[\u0027metrics\u0027]"},{"line_number":226,"context_line":"        for meter in data:"},{"line_number":227,"context_line":"            meter_name \u003d meter.get(\u0027name\u0027)"},{"line_number":228,"context_line":"            if meter_name in blacklist_meters:"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a740942_347daab1","line":225,"updated":"2015-12-04 21:11:52.000000000","message":"you probably want to load this at init and not every single sample.","commit_id":"3d989d1f9dd31cbbeb4f4babed6e75779d6de49d"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"3f6d12c371e8a8e8bd2cf190332b34e692886f45","unresolved":false,"context_lines":[{"line_number":223,"context_line":"        skipped \u003d []"},{"line_number":224,"context_line":"        blacklist_meters \u003d declarative.load_definitions("},{"line_number":225,"context_line":"            {}, cfg.CONF.collector.blacklist_meters_cfg)[\u0027metrics\u0027]"},{"line_number":226,"context_line":"        for meter in data:"},{"line_number":227,"context_line":"            meter_name \u003d meter.get(\u0027name\u0027)"},{"line_number":228,"context_line":"            if meter_name in blacklist_meters:"},{"line_number":229,"context_line":"                skipped.append(meter_name)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a740942_9720209d","line":226,"updated":"2015-12-04 21:11:52.000000000","message":"i think this can all be done using \u0027filter\u0027","commit_id":"3d989d1f9dd31cbbeb4f4babed6e75779d6de49d"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"ac50288a06823a7774091432352d20b6ed9e0644","unresolved":false,"context_lines":[{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    def _filter_meters(self, data):"},{"line_number":213,"context_line":"        filtered, skipped \u003d [], []"},{"line_number":214,"context_line":"        for meter in data:"},{"line_number":215,"context_line":"            meter_name \u003d meter.get(\u0027name\u0027)"},{"line_number":216,"context_line":"            if meter_name in self.blacklist_meters:"},{"line_number":217,"context_line":"                skipped.append(meter_name)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a740942_ba932a5a","line":214,"updated":"2015-12-09 01:50:46.000000000","message":"as gordon suggested, maybe you can simple this like:\n\nfiltered \u003d filter(lambda m: m.get(\u0027name\u0027) not in self.blacklist_meters, data)\n\nbut you need \"skipped\" :)","commit_id":"287c7f8c0613766b23869435fd24431afa76ac61"},{"author":{"_account_id":6924,"name":"Pradeep Kilambi","email":"pkilambi@redhat.com","username":"pkilambi"},"change_message_id":"1ae980a1af37bf346154da34788f6922e2b1a9f3","unresolved":false,"context_lines":[{"line_number":211,"context_line":""},{"line_number":212,"context_line":"    def _filter_meters(self, data):"},{"line_number":213,"context_line":"        filtered, skipped \u003d [], []"},{"line_number":214,"context_line":"        for meter in data:"},{"line_number":215,"context_line":"            meter_name \u003d meter.get(\u0027name\u0027)"},{"line_number":216,"context_line":"            if meter_name in self.blacklist_meters:"},{"line_number":217,"context_line":"                skipped.append(meter_name)"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a740942_e9b9ce7a","line":214,"in_reply_to":"7a740942_ba932a5a","updated":"2015-12-09 15:37:11.000000000","message":"exactly, i could use filter, but since we want to track skipped, what i already have seemed cleaner. I dint really see any benefit of converting to filter. So i\u0027m gonna keep it as is.","commit_id":"287c7f8c0613766b23869435fd24431afa76ac61"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"ac50288a06823a7774091432352d20b6ed9e0644","unresolved":false,"context_lines":[{"line_number":218,"context_line":"                continue"},{"line_number":219,"context_line":"            filtered.append(meter)"},{"line_number":220,"context_line":"        if skipped:"},{"line_number":221,"context_line":"            LOG.warn(\u0027Skipped non-metric meters %s\u0027 % skipped)"},{"line_number":222,"context_line":"        return filtered"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7a740942_fa6f72c1","line":221,"updated":"2015-12-09 01:50:46.000000000","message":"since the skipping is most common situation, I prefer LOG.info than LOG.warn.","commit_id":"287c7f8c0613766b23869435fd24431afa76ac61"},{"author":{"_account_id":6924,"name":"Pradeep Kilambi","email":"pkilambi@redhat.com","username":"pkilambi"},"change_message_id":"1ae980a1af37bf346154da34788f6922e2b1a9f3","unresolved":false,"context_lines":[{"line_number":218,"context_line":"                continue"},{"line_number":219,"context_line":"            filtered.append(meter)"},{"line_number":220,"context_line":"        if skipped:"},{"line_number":221,"context_line":"            LOG.warn(\u0027Skipped non-metric meters %s\u0027 % skipped)"},{"line_number":222,"context_line":"        return filtered"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"7a740942_49a90224","line":221,"in_reply_to":"7a740942_fa6f72c1","updated":"2015-12-09 15:37:11.000000000","message":"sure, I\u0027m ok with info","commit_id":"287c7f8c0613766b23869435fd24431afa76ac61"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"4fcb06ded3825a5c2756421c5e7d618d4705c5ff","unresolved":false,"context_lines":[{"line_number":212,"context_line":"    def _filter_meters(self, data):"},{"line_number":213,"context_line":"        filtered, skipped \u003d [], []"},{"line_number":214,"context_line":"        for meter in data:"},{"line_number":215,"context_line":"            meter_name \u003d meter.get(\u0027name\u0027)"},{"line_number":216,"context_line":"            if meter_name in self.blacklist_meters:"},{"line_number":217,"context_line":"                skipped.append(meter_name)"},{"line_number":218,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a740942_12e6a5e8","line":215,"updated":"2015-12-10 02:03:00.000000000","message":"when I check this change, I found that the meter name field in the message payload from notification-agent is \"counter_name\" not \"name\", please see:\nhttps://github.com/openstack/ceilometer/blob/master/ceilometer/publisher/messaging.py#L121-L123\n\nand \n\nhttps://github.com/openstack/ceilometer/blob/master/ceilometer/publisher/utils.py#L120-L124","commit_id":"df01787ac03994ffbccd5ec7a4156588d203ab00"},{"author":{"_account_id":6924,"name":"Pradeep Kilambi","email":"pkilambi@redhat.com","username":"pkilambi"},"change_message_id":"1b0ef9fa1885b93e08357f5545e0462e0b0631c3","unresolved":false,"context_lines":[{"line_number":212,"context_line":"    def _filter_meters(self, data):"},{"line_number":213,"context_line":"        filtered, skipped \u003d [], []"},{"line_number":214,"context_line":"        for meter in data:"},{"line_number":215,"context_line":"            meter_name \u003d meter.get(\u0027name\u0027)"},{"line_number":216,"context_line":"            if meter_name in self.blacklist_meters:"},{"line_number":217,"context_line":"                skipped.append(meter_name)"},{"line_number":218,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":11,"id":"7a740942_6df12ecd","line":215,"in_reply_to":"7a740942_12e6a5e8","updated":"2015-12-10 13:16:03.000000000","message":"hmm i saw both being used and various tests using name in multiple places. I\u0027ll double check this on my devstack and see what gets sent as the actual message on the bus.","commit_id":"df01787ac03994ffbccd5ec7a4156588d203ab00"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"1a0137da960ee17d3a90927494cd1a20f15a18a6","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                help\u003d\u0027Enable the RPC functionality of collector. This \u0027"},{"line_number":52,"context_line":"                \u0027functionality is now deprecated in favour of notifier \u0027"},{"line_number":53,"context_line":"                \u0027publisher and queues.\u0027),"},{"line_number":54,"context_line":"    cfg.BoolOpt(\u0027enable_non_metric_meters_store\u0027,"},{"line_number":55,"context_line":"                default\u003dFalse,"},{"line_number":56,"context_line":"                help\u003d\u0027Warning: Enabling this option stores non-metric meters.\u0027"},{"line_number":57,"context_line":"                     \u0027This could flood the metering database and cause \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"5a710552_c0dce348","line":54,"updated":"2015-12-14 21:58:46.000000000","message":"maybe keep this as \u0027disable_*\u0027 so it\u0027s similar to current option?","commit_id":"7beab0b53bdfc596e829f852ee32e61266bb1ee0"},{"author":{"_account_id":6924,"name":"Pradeep Kilambi","email":"pkilambi@redhat.com","username":"pkilambi"},"change_message_id":"1e1bff60b3b2c709bbc156b1ca5f53f1b3e8c82b","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                help\u003d\u0027Enable the RPC functionality of collector. This \u0027"},{"line_number":52,"context_line":"                \u0027functionality is now deprecated in favour of notifier \u0027"},{"line_number":53,"context_line":"                \u0027publisher and queues.\u0027),"},{"line_number":54,"context_line":"    cfg.BoolOpt(\u0027enable_non_metric_meters_store\u0027,"},{"line_number":55,"context_line":"                default\u003dFalse,"},{"line_number":56,"context_line":"                help\u003d\u0027Warning: Enabling this option stores non-metric meters.\u0027"},{"line_number":57,"context_line":"                     \u0027This could flood the metering database and cause \u0027"}],"source_content_type":"text/x-python","patch_set":12,"id":"5a710552_39c4c15d","line":54,"in_reply_to":"5a710552_c0dce348","updated":"2015-12-15 22:28:23.000000000","message":"imo since the default is to not store, enable_* makes more sense.","commit_id":"7beab0b53bdfc596e829f852ee32e61266bb1ee0"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"1a0137da960ee17d3a90927494cd1a20f15a18a6","unresolved":false,"context_lines":[{"line_number":218,"context_line":"                continue"},{"line_number":219,"context_line":"            filtered.append(meter)"},{"line_number":220,"context_line":"        if skipped:"},{"line_number":221,"context_line":"            LOG.info(\u0027Skipped non-metric meters %s\u0027 % skipped)"},{"line_number":222,"context_line":"        return filtered"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"5a710552_20d5a742","line":221,"updated":"2015-12-14 21:58:46.000000000","message":"i\u0027m not sure we need this to be honest. i think it\u0027ll just keep spewing \u0027skipped blah blah\u0027 constantly.\n\ni still think we should use filter to (possibly) improve performance? probably try both ways","commit_id":"7beab0b53bdfc596e829f852ee32e61266bb1ee0"},{"author":{"_account_id":6924,"name":"Pradeep Kilambi","email":"pkilambi@redhat.com","username":"pkilambi"},"change_message_id":"1e1bff60b3b2c709bbc156b1ca5f53f1b3e8c82b","unresolved":false,"context_lines":[{"line_number":218,"context_line":"                continue"},{"line_number":219,"context_line":"            filtered.append(meter)"},{"line_number":220,"context_line":"        if skipped:"},{"line_number":221,"context_line":"            LOG.info(\u0027Skipped non-metric meters %s\u0027 % skipped)"},{"line_number":222,"context_line":"        return filtered"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"5a710552_99ab7589","line":221,"in_reply_to":"5a710552_20d5a742","updated":"2015-12-15 22:28:23.000000000","message":"I think its useful to have the log. I\u0027m ok if we want to switch to debug instead of info and only log in debug mode.\n\nRegarding filter vs non, what the above logic does is quite simple, i\u0027m not sure if there is much performance impact either way. In fact i tried filter few patches back and the performance wasnt much different.","commit_id":"7beab0b53bdfc596e829f852ee32e61266bb1ee0"},{"author":{"_account_id":6924,"name":"Pradeep Kilambi","email":"pkilambi@redhat.com","username":"pkilambi"},"change_message_id":"0e43bb4223cb155fdad9f5a9b4a6ddcc5a488b0d","unresolved":false,"context_lines":[{"line_number":218,"context_line":"                continue"},{"line_number":219,"context_line":"            filtered.append(meter)"},{"line_number":220,"context_line":"        if skipped:"},{"line_number":221,"context_line":"            LOG.info(\u0027Skipped non-metric meters %s\u0027 % skipped)"},{"line_number":222,"context_line":"        return filtered"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"5a710552_d1a69252","line":221,"in_reply_to":"5a710552_6fd269d4","updated":"2015-12-16 13:17:56.000000000","message":"sure, i\u0027m cool with that","commit_id":"7beab0b53bdfc596e829f852ee32e61266bb1ee0"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"bb8b67a60df141bd4b4b1b07b53bb3d7b92d030a","unresolved":false,"context_lines":[{"line_number":218,"context_line":"                continue"},{"line_number":219,"context_line":"            filtered.append(meter)"},{"line_number":220,"context_line":"        if skipped:"},{"line_number":221,"context_line":"            LOG.info(\u0027Skipped non-metric meters %s\u0027 % skipped)"},{"line_number":222,"context_line":"        return filtered"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":""}],"source_content_type":"text/x-python","patch_set":12,"id":"5a710552_6fd269d4","line":221,"in_reply_to":"5a710552_99ab7589","updated":"2015-12-16 07:21:09.000000000","message":"I prefer debug level","commit_id":"7beab0b53bdfc596e829f852ee32e61266bb1ee0"}],"ceilometer/notification.py":[{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"ac50288a06823a7774091432352d20b6ed9e0644","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                default\u003dFalse,"},{"line_number":54,"context_line":"                help\u003d\u0027WARNING: Ceilometer historically offered the ability to \u0027"},{"line_number":55,"context_line":"                     \u0027store events as meters. This usage is NOT advised as it \u0027"},{"line_number":56,"context_line":"                     \u0027can flood the metering database and cause performance \u0027"},{"line_number":57,"context_line":"                     \u0027degradation.\u0027),"},{"line_number":58,"context_line":"    cfg.BoolOpt(\u0027workload_partitioning\u0027,"},{"line_number":59,"context_line":"                default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a740942_9afbce78","line":56,"updated":"2015-12-09 01:50:46.000000000","message":"you\u0027d better to modify this help message also","commit_id":"287c7f8c0613766b23869435fd24431afa76ac61"},{"author":{"_account_id":6924,"name":"Pradeep Kilambi","email":"pkilambi@redhat.com","username":"pkilambi"},"change_message_id":"1ae980a1af37bf346154da34788f6922e2b1a9f3","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                default\u003dFalse,"},{"line_number":54,"context_line":"                help\u003d\u0027WARNING: Ceilometer historically offered the ability to \u0027"},{"line_number":55,"context_line":"                     \u0027store events as meters. This usage is NOT advised as it \u0027"},{"line_number":56,"context_line":"                     \u0027can flood the metering database and cause performance \u0027"},{"line_number":57,"context_line":"                     \u0027degradation.\u0027),"},{"line_number":58,"context_line":"    cfg.BoolOpt(\u0027workload_partitioning\u0027,"},{"line_number":59,"context_line":"                default\u003dFalse,"}],"source_content_type":"text/x-python","patch_set":10,"id":"7a740942_bc36a3e5","line":56,"in_reply_to":"7a740942_9afbce78","updated":"2015-12-09 15:37:11.000000000","message":"sure","commit_id":"287c7f8c0613766b23869435fd24431afa76ac61"}],"etc/ceilometer/blacklist_meters.yaml":[{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"bb8b67a60df141bd4b4b1b07b53bb3d7b92d030a","unresolved":false,"context_lines":[{"line_number":55,"context_line":"  - \u0027volume.attach.start\u0027"},{"line_number":56,"context_line":"  - \u0027volume.detach.end\u0027"},{"line_number":57,"context_line":"  - \u0027volume.detach.start\u0027"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":12,"id":"5a710552_0f52c5dd","line":58,"updated":"2015-12-16 07:21:09.000000000","message":"remove trailing blank lines?","commit_id":"7beab0b53bdfc596e829f852ee32e61266bb1ee0"}]}
