)]}'
{"ceilometer/central/manager.py":[{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"e93a8bc25747080ad842a1bbfddd70ee9558c6a0","unresolved":false,"context_lines":[{"line_number":17,"context_line":"# under the License."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from stevedore import dispatch"},{"line_number":20,"context_line":"from stevedore import extension"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from ceilometer import extension_manager"},{"line_number":23,"context_line":"from ceilometer.openstack.common import cfg"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FXiQ%3D","line":20,"updated":"2013-01-25 07:34:04.000000000","message":"Is this used?","commit_id":"1bedccfb13b0ce7ac1f58810020afb38f629559e"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"61a024f1e561f48074ca9005eed15aafdbd194e4","unresolved":false,"context_lines":[{"line_number":17,"context_line":"# under the License."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from stevedore import dispatch"},{"line_number":20,"context_line":"from stevedore import extension"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from ceilometer import extension_manager"},{"line_number":23,"context_line":"from ceilometer.openstack.common import cfg"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FUEk%3D","line":20,"in_reply_to":"AAAAM3%2F%2FXiQ%3D","updated":"2013-01-29 12:44:43.000000000","message":"Done","commit_id":"1bedccfb13b0ce7ac1f58810020afb38f629559e"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"3bf5ab71df6548701fc605b13f6a01c1c21dfbc3","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            invoke_on_load\u003dTrue,"},{"line_number":48,"context_line":"        )"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        self.pipeline_manager \u003d pipeline.setup_pipeline(publisher_manager)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        self.pollster_manager \u003d extension_manager.ActivatedExtensionManager("},{"line_number":53,"context_line":"            namespace\u003dPLUGIN_NAMESPACE,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAM3%2F%2FSJ4%3D","line":50,"updated":"2013-01-30 10:43:47.000000000","message":"This dance (creating a NameDispatchExtensionManager on PUBLISHER_NAMESPACE) and setting up the pipeline with it seems to be repeated at least 3 times in this patchset.\n\nI think it\u0027ll be a good idea to have a function doing this in one call; it\u0027s good to be able to do it manually if someone wants to, but as you see here most of default Ceilometer code will always to the same thing around the same namespaces :)","commit_id":"413e7e067104d5007a11b49579ce6cd395151577"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"1482461e17c978d08a3e962d2053796c6f09dab3","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            invoke_on_load\u003dTrue,"},{"line_number":48,"context_line":"        )"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"        self.pipeline_manager \u003d pipeline.setup_pipeline(publisher_manager)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        self.pollster_manager \u003d extension_manager.ActivatedExtensionManager("},{"line_number":53,"context_line":"            namespace\u003dPLUGIN_NAMESPACE,"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAM3%2F%2FSHs%3D","line":50,"in_reply_to":"AAAAM3%2F%2FSJ4%3D","updated":"2013-01-30 11:13:24.000000000","message":"I assume with your factor agent code patch merged, we only need two.\n\nI considered to put the publisher_manager into pipeline_manager (i.e. the pipeline_manager will create the publisher manager internally thus agent_manager has no idea of it), but give up because I think logically the pipeline is a utility linking the pollster/publisher,  Pollster-\u003epipeline-\u003epublisher is 3 steps, thus publisher should be created externally.","commit_id":"413e7e067104d5007a11b49579ce6cd395151577"}],"ceilometer/collector/service.py":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"33c3af8295c6da785d5f844bf6e0fe619c75d151","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        self.pipeline_manager \u003d pipeline.setup_pipeline("},{"line_number":82,"context_line":"                                    self.transformer_manager,"},{"line_number":83,"context_line":"                                    self.publisher_manager)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        # Set ourselves up as a separate worker for the metering data,"},{"line_number":86,"context_line":"        # since the default for service is to use create_consumer()."}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2Fz8M%3D","line":83,"updated":"2012-12-14 15:56:55.000000000","message":"Why are the publishers/transformers/pipelines needed in the collector?\n\nI thought such publication logic would only be needed on the producer side (i.e. the compute and central agents).","commit_id":"16b26f835ac4c87482a49da0ccb13f12231f1b41"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"d05519afb15106d0a6cf3140e8b6198abf5f6425","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"        self.pipeline_manager \u003d pipeline.setup_pipeline("},{"line_number":82,"context_line":"                                    self.transformer_manager,"},{"line_number":83,"context_line":"                                    self.publisher_manager)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        # Set ourselves up as a separate worker for the metering data,"},{"line_number":86,"context_line":"        # since the default for service is to use create_consumer()."}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2FzMw%3D","line":83,"in_reply_to":"AAAAMX%2F%2Fz8M%3D","updated":"2012-12-16 10:21:33.000000000","message":"Because of the notification handler is here, which will create counters for notification event, like instance event.","commit_id":"16b26f835ac4c87482a49da0ccb13f12231f1b41"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"deabaa032678e92ffab51795de9e0fc1c79568c0","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        self.notification_manager.map(self._setup_subscription)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        self.publisher_manager \u003d extension.ExtensionManager("},{"line_number":72,"context_line":"            namespace\u003dpipeline.PUBLISHER_NAMESPACE,"},{"line_number":73,"context_line":"            invoke_on_load\u003dTrue,"},{"line_number":74,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F6GI%3D","line":71,"updated":"2012-12-21 16:43:28.000000000","message":"No need to self.","commit_id":"ce66a2d8ff3374b597818e8ebc3d47aa46229d9b"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"e80010a7d0c87d8ba2a049d24ed515211e355cf5","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        self.notification_manager.map(self._setup_subscription)"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        self.publisher_manager \u003d extension.ExtensionManager("},{"line_number":72,"context_line":"            namespace\u003dpipeline.PUBLISHER_NAMESPACE,"},{"line_number":73,"context_line":"            invoke_on_load\u003dTrue,"},{"line_number":74,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F37U%3D","line":71,"in_reply_to":"AAAAM3%2F%2F6GI%3D","updated":"2012-12-28 03:09:07.000000000","message":"Done","commit_id":"ce66a2d8ff3374b597818e8ebc3d47aa46229d9b"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"deabaa032678e92ffab51795de9e0fc1c79568c0","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            invoke_on_load\u003dTrue,"},{"line_number":74,"context_line":"            )"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        self.transformer_manager \u003d extension.ExtensionManager("},{"line_number":77,"context_line":"            namespace\u003dpipeline.TRANSFORMER_NAMESPACE,"},{"line_number":78,"context_line":"            invoke_on_load\u003dFalse,"},{"line_number":79,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F6GE%3D","line":76,"updated":"2012-12-21 16:43:28.000000000","message":"Same here.","commit_id":"ce66a2d8ff3374b597818e8ebc3d47aa46229d9b"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"e80010a7d0c87d8ba2a049d24ed515211e355cf5","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            invoke_on_load\u003dTrue,"},{"line_number":74,"context_line":"            )"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        self.transformer_manager \u003d extension.ExtensionManager("},{"line_number":77,"context_line":"            namespace\u003dpipeline.TRANSFORMER_NAMESPACE,"},{"line_number":78,"context_line":"            invoke_on_load\u003dFalse,"},{"line_number":79,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F37Q%3D","line":76,"in_reply_to":"AAAAM3%2F%2F6GE%3D","updated":"2012-12-28 03:09:07.000000000","message":"Done","commit_id":"ce66a2d8ff3374b597818e8ebc3d47aa46229d9b"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"e93a8bc25747080ad842a1bbfddd70ee9558c6a0","unresolved":false,"context_lines":[{"line_number":17,"context_line":"# under the License."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from stevedore import dispatch"},{"line_number":20,"context_line":"from stevedore import extension"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from ceilometer.collector import meter"},{"line_number":23,"context_line":"from ceilometer import extension_manager"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FXiM%3D","line":20,"updated":"2013-01-25 07:34:04.000000000","message":"Is this used?","commit_id":"1bedccfb13b0ce7ac1f58810020afb38f629559e"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"61a024f1e561f48074ca9005eed15aafdbd194e4","unresolved":false,"context_lines":[{"line_number":17,"context_line":"# under the License."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from stevedore import dispatch"},{"line_number":20,"context_line":"from stevedore import extension"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from ceilometer.collector import meter"},{"line_number":23,"context_line":"from ceilometer import extension_manager"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FUEg%3D","line":20,"in_reply_to":"AAAAM3%2F%2FXiM%3D","updated":"2013-01-29 12:44:43.000000000","message":"Done","commit_id":"1bedccfb13b0ce7ac1f58810020afb38f629559e"}],"ceilometer/compute/manager.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"deabaa032678e92ffab51795de9e0fc1c79568c0","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        self._inspector \u003d get_hypervisor_inspector()"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        self.publisher_manager \u003d extension.ExtensionManager("},{"line_number":72,"context_line":"            namespace\u003dpipeline.PUBLISHER_NAMESPACE,"},{"line_number":73,"context_line":"            invoke_on_load\u003dTrue,"},{"line_number":74,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F6GQ%3D","line":71,"updated":"2012-12-21 16:43:28.000000000","message":"Don\u0027t store this into self, it\u0027s useless.","commit_id":"ce66a2d8ff3374b597818e8ebc3d47aa46229d9b"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"e80010a7d0c87d8ba2a049d24ed515211e355cf5","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"        self._inspector \u003d get_hypervisor_inspector()"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"        self.publisher_manager \u003d extension.ExtensionManager("},{"line_number":72,"context_line":"            namespace\u003dpipeline.PUBLISHER_NAMESPACE,"},{"line_number":73,"context_line":"            invoke_on_load\u003dTrue,"},{"line_number":74,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F37M%3D","line":71,"in_reply_to":"AAAAM3%2F%2F6GQ%3D","updated":"2012-12-28 03:09:07.000000000","message":"Done","commit_id":"ce66a2d8ff3374b597818e8ebc3d47aa46229d9b"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"deabaa032678e92ffab51795de9e0fc1c79568c0","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            invoke_on_load\u003dTrue,"},{"line_number":74,"context_line":"            )"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        self.transformer_manager \u003d extension.ExtensionManager("},{"line_number":77,"context_line":"            namespace\u003dpipeline.TRANSFORMER_NAMESPACE,"},{"line_number":78,"context_line":"            invoke_on_load\u003dFalse,"},{"line_number":79,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F6GM%3D","line":76,"updated":"2012-12-21 16:43:28.000000000","message":"Same here.","commit_id":"ce66a2d8ff3374b597818e8ebc3d47aa46229d9b"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"e80010a7d0c87d8ba2a049d24ed515211e355cf5","unresolved":false,"context_lines":[{"line_number":73,"context_line":"            invoke_on_load\u003dTrue,"},{"line_number":74,"context_line":"            )"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        self.transformer_manager \u003d extension.ExtensionManager("},{"line_number":77,"context_line":"            namespace\u003dpipeline.TRANSFORMER_NAMESPACE,"},{"line_number":78,"context_line":"            invoke_on_load\u003dFalse,"},{"line_number":79,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F37I%3D","line":76,"in_reply_to":"AAAAM3%2F%2F6GM%3D","updated":"2012-12-28 03:09:07.000000000","message":"Done","commit_id":"ce66a2d8ff3374b597818e8ebc3d47aa46229d9b"}],"ceilometer/pipeline.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"3bf5ab71df6548701fc605b13f6a01c1c21dfbc3","unresolved":false,"context_lines":[{"line_number":350,"context_line":"            return"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"    if not cfg_file:"},{"line_number":353,"context_line":"        LOG.warn(\"No pipeline config file exist\","},{"line_number":354,"context_line":"                 cfg.CONF.pipeline_cfg_file)"},{"line_number":355,"context_line":"        return"},{"line_number":356,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAM3%2F%2FSJ0%3D","line":353,"updated":"2013-01-30 10:43:47.000000000","message":"warn or… error?","commit_id":"413e7e067104d5007a11b49579ce6cd395151577"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"1482461e17c978d08a3e962d2053796c6f09dab3","unresolved":false,"context_lines":[{"line_number":350,"context_line":"            return"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":"    if not cfg_file:"},{"line_number":353,"context_line":"        LOG.warn(\"No pipeline config file exist\","},{"line_number":354,"context_line":"                 cfg.CONF.pipeline_cfg_file)"},{"line_number":355,"context_line":"        return"},{"line_number":356,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAM3%2F%2FSHg%3D","line":353,"in_reply_to":"AAAAM3%2F%2FSJ0%3D","updated":"2013-01-30 11:13:24.000000000","message":"Thanks, will update it.","commit_id":"413e7e067104d5007a11b49579ce6cd395151577"}],"ceilometer/publisher/meter_publish.py":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"33c3af8295c6da785d5f844bf6e0fe619c75d151","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        rpc.cast(context, topic, msg)"},{"line_number":68,"context_line":"        rpc.cast(context, topic + \u0027.\u0027 + meter[\"counter_name\"], msg)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def publish_counters(self, context, meters, source):"},{"line_number":71,"context_line":"        \"\"\"Send a metering message for publishing"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        :param context: Execution context from the service or RPC call"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2Fz7c%3D","line":70,"updated":"2012-12-14 15:56:55.000000000","message":"Probably more a question for the previous patch in the series, but I\u0027m wondering if the source needs to parameterized in the Transformer and Publisher abstractions?\n\nI don\u0027t know if it would be for instance interesting to the CW publisher.\n\nWould it make more sense for the metering publisher to just access the CONF.counter_source itself directly?","commit_id":"16b26f835ac4c87482a49da0ccb13f12231f1b41"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"d05519afb15106d0a6cf3140e8b6198abf5f6425","unresolved":false,"context_lines":[{"line_number":67,"context_line":"        rpc.cast(context, topic, msg)"},{"line_number":68,"context_line":"        rpc.cast(context, topic + \u0027.\u0027 + meter[\"counter_name\"], msg)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def publish_counters(self, context, meters, source):"},{"line_number":71,"context_line":"        \"\"\"Send a metering message for publishing"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"        :param context: Execution context from the service or RPC call"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2FzMo%3D","line":70,"in_reply_to":"AAAAMX%2F%2Fz7c%3D","updated":"2012-12-16 10:21:33.000000000","message":"For the source, in fact, I\u0027m not quite sure the exact meaning of it. Currently the source is always \"opensource\" from the config, But no idea why it is \"openstack\" and how the metering system utilize it. For example, can we make it be pollster specific, like all data from computer pollster be \"openstack/nova\", while all data from swift is \"openstack/swift\" etc. Or, will there be any more source other than the \"openstack\" in the metering system.\n\nI\u0027d prefer to keep the source as a parameter to the counter.\n\nIf we can update the source as \"openstack/nova\", or \"openstack/swift\", it can then be mapped to aws namespace easily :)","commit_id":"16b26f835ac4c87482a49da0ccb13f12231f1b41"}],"etc/ceilometer/pipeline.yaml":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"deabaa032678e92ffab51795de9e0fc1c79568c0","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    counters:"},{"line_number":4,"context_line":"        - \"*\""},{"line_number":5,"context_line":"    transformers:"},{"line_number":6,"context_line":"        -"},{"line_number":7,"context_line":"            name: meter_transformer"},{"line_number":8,"context_line":"            parameters:"},{"line_number":9,"context_line":"    publishers:"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"AAAAM3%2F%2F6F8%3D","line":6,"updated":"2012-12-21 16:43:28.000000000","message":"You can put name on this line, right? Would look better :)","commit_id":"ce66a2d8ff3374b597818e8ebc3d47aa46229d9b"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"e80010a7d0c87d8ba2a049d24ed515211e355cf5","unresolved":false,"context_lines":[{"line_number":3,"context_line":"    counters:"},{"line_number":4,"context_line":"        - \"*\""},{"line_number":5,"context_line":"    transformers:"},{"line_number":6,"context_line":"        -"},{"line_number":7,"context_line":"            name: meter_transformer"},{"line_number":8,"context_line":"            parameters:"},{"line_number":9,"context_line":"    publishers:"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"AAAAM3%2F%2F36M%3D","line":6,"in_reply_to":"AAAAM3%2F%2F6F8%3D","updated":"2012-12-28 03:09:07.000000000","message":"Done","commit_id":"ce66a2d8ff3374b597818e8ebc3d47aa46229d9b"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"7eb6576e142d3f893d95892a1fc054615f2f4604","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    counters:"},{"line_number":6,"context_line":"        - \"*\""},{"line_number":7,"context_line":"    transformers:"},{"line_number":8,"context_line":"        - name: meter_transformer"},{"line_number":9,"context_line":"          parameters:"},{"line_number":10,"context_line":"    publishers:"},{"line_number":11,"context_line":"        - meter_publisher"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"AAAAM3%2F%2Fd8s%3D","line":8,"updated":"2013-01-21 12:42:41.000000000","message":"I don\u0027t think this should be a transformer.\n\nI\u0027d expect transformer to get counter and return counter, always. The final transformation step is the job of the publisher.","commit_id":"e6249d21e13b15a8f5014c4dd49d00431b5d7cf0"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"843ea4283b5a77d4ca43f3f2eda95c277a2467b7","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    counters:"},{"line_number":6,"context_line":"        - \"*\""},{"line_number":7,"context_line":"    transformers:"},{"line_number":8,"context_line":"        - name: meter_transformer"},{"line_number":9,"context_line":"          parameters:"},{"line_number":10,"context_line":"    publishers:"},{"line_number":11,"context_line":"        - meter_publisher"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"AAAAM3%2F%2FZE0%3D","line":8,"in_reply_to":"AAAAM3%2F%2Fcbc%3D","updated":"2013-01-24 10:20:11.000000000","message":"I would say let\u0027s try to say \"get counter, return counter\". If that\u0027s too limiting in the future, we\u0027ll think about it. Let\u0027s try the simple approach first! :)","commit_id":"e6249d21e13b15a8f5014c4dd49d00431b5d7cf0"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"a2e23a84a23faa7ebf4726a6d778f50239de0271","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    counters:"},{"line_number":6,"context_line":"        - \"*\""},{"line_number":7,"context_line":"    transformers:"},{"line_number":8,"context_line":"        - name: meter_transformer"},{"line_number":9,"context_line":"          parameters:"},{"line_number":10,"context_line":"    publishers:"},{"line_number":11,"context_line":"        - meter_publisher"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"AAAAM3%2F%2Fcbc%3D","line":8,"in_reply_to":"AAAAM3%2F%2FcoQ%3D","updated":"2013-01-24 05:13:35.000000000","message":"One ting come to my mind is, can we always assume \" transformer to get counter and return counter\". Will it have requirement for transformer to get CW (or other publisher specific format) and return CW? \n\nI will change this patch to not using any transformer, but I think we should still allow the transformer to return non-Counter type deta, at least from architect POV.\n\n--jyh","commit_id":"e6249d21e13b15a8f5014c4dd49d00431b5d7cf0"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"1cfaa282d0d744c571997ca8465eb05751fd2667","unresolved":false,"context_lines":[{"line_number":5,"context_line":"    counters:"},{"line_number":6,"context_line":"        - \"*\""},{"line_number":7,"context_line":"    transformers:"},{"line_number":8,"context_line":"        - name: meter_transformer"},{"line_number":9,"context_line":"          parameters:"},{"line_number":10,"context_line":"    publishers:"},{"line_number":11,"context_line":"        - meter_publisher"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"AAAAM3%2F%2FcoQ%3D","line":8,"in_reply_to":"AAAAM3%2F%2Fd8s%3D","updated":"2013-01-22 05:31:38.000000000","message":"My thought was, when multiple publishers have similar functionality but different conduit, like CW through UDP, API etc, we can have a common transformer to translate from counter to publisher specific format , and keep the publishers to do the PUBLISH task like socket sending, api invocation etc. (per my understanding, from counter to metric is a transforming, not publishing).\n\nBut your suggestion also make sense, if we define publisher as \"publish the counter\" :)\n\n--jyh","commit_id":"e6249d21e13b15a8f5014c4dd49d00431b5d7cf0"}],"tests/collector/test_manager.py":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"33c3af8295c6da785d5f844bf6e0fe619c75d151","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"class TestCollectorService(tests_base.TestCase):"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    class FauxPipeline:"},{"line_number":90,"context_line":"        results \u003d []"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        def publish_counters(self, context, msg, source):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2Fz8A%3D","line":89,"updated":"2012-12-14 15:56:55.000000000","message":"Would it make sense to standardize on \u0027Fake\u0027 as opposed to \u0027Faux\u0027 for such classes?\n\n(Not a big issue, just a thought ...)","commit_id":"16b26f835ac4c87482a49da0ccb13f12231f1b41"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"d05519afb15106d0a6cf3140e8b6198abf5f6425","unresolved":false,"context_lines":[{"line_number":86,"context_line":""},{"line_number":87,"context_line":"class TestCollectorService(tests_base.TestCase):"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    class FauxPipeline:"},{"line_number":90,"context_line":"        results \u003d []"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        def publish_counters(self, context, msg, source):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAMX%2F%2FzMc%3D","line":89,"in_reply_to":"AAAAMX%2F%2Fz8A%3D","updated":"2012-12-16 10:21:33.000000000","message":"So what\u0027s the difference between fake/faux? I\u0027m not quite sure and both of them are used in the tests/ directory already. Sorry that I\u0027m not native speaker :$","commit_id":"16b26f835ac4c87482a49da0ccb13f12231f1b41"}],"tests/compute/test_nova_notifier.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"3bf5ab71df6548701fc605b13f6a01c1c21dfbc3","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    def fake_db_instance_system_metadata_get(context, uuid):"},{"line_number":86,"context_line":"        return dict(meta_a\u003d123, meta_b\u003d\"foobar\")"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    #@mock.patch(\u0027ceilometer.pipeline.setup_pipeline\u0027)"},{"line_number":89,"context_line":"    @skip.skip_unless(notifier_api, \"Notifier API not found\")"},{"line_number":90,"context_line":"    def setUp(self):"},{"line_number":91,"context_line":"        super(TestNovaNotifier, self).setUp()"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAM3%2F%2FSJs%3D","line":88,"updated":"2013-01-30 10:43:47.000000000","message":"To remove?","commit_id":"413e7e067104d5007a11b49579ce6cd395151577"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"1482461e17c978d08a3e962d2053796c6f09dab3","unresolved":false,"context_lines":[{"line_number":85,"context_line":"    def fake_db_instance_system_metadata_get(context, uuid):"},{"line_number":86,"context_line":"        return dict(meta_a\u003d123, meta_b\u003d\"foobar\")"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    #@mock.patch(\u0027ceilometer.pipeline.setup_pipeline\u0027)"},{"line_number":89,"context_line":"    @skip.skip_unless(notifier_api, \"Notifier API not found\")"},{"line_number":90,"context_line":"    def setUp(self):"},{"line_number":91,"context_line":"        super(TestNovaNotifier, self).setUp()"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAM3%2F%2FSHQ%3D","line":88,"in_reply_to":"AAAAM3%2F%2FSJs%3D","updated":"2013-01-30 11:13:24.000000000","message":"Thanks. Will update it.","commit_id":"413e7e067104d5007a11b49579ce6cd395151577"}],"tests/objectstore/test_swift_middleware.py":[{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4ce59622c618de64d0852b3b3bdcc980c6dc02b9","unresolved":false,"context_lines":[{"line_number":18,"context_line":"# under the License."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import cStringIO as StringIO"},{"line_number":21,"context_line":"import mock"},{"line_number":22,"context_line":"from webob import Request"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from ceilometer.tests import base"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAM3%2F%2FMiI%3D","line":21,"updated":"2013-02-04 01:50:02.000000000","message":"Is this ever used?","commit_id":"89738ccd39640d5d3bd74eb86f1ab1190a6ff8f0"},{"author":{"_account_id":4573,"name":"yunhong-jiang","email":"yunhong.jiang@intel.com","username":"yunhong-jiang"},"change_message_id":"649c3a391bda5577b0a3cb9cf65f67e0e32c84aa","unresolved":false,"context_lines":[{"line_number":18,"context_line":"# under the License."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import cStringIO as StringIO"},{"line_number":21,"context_line":"import mock"},{"line_number":22,"context_line":"from webob import Request"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from ceilometer.tests import base"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAAM3%2F%2FMP4%3D","line":21,"in_reply_to":"AAAAM3%2F%2FMiI%3D","updated":"2013-02-04 09:33:30.000000000","message":"Done","commit_id":"89738ccd39640d5d3bd74eb86f1ab1190a6ff8f0"}]}
