)]}'
{"ceilometer/agent.py":[{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"e9335735b3bbb3db9e41d86fab8f132fb3174740","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                res.update(pipeline.resources)"},{"line_number":53,"context_line":"            else:"},{"line_number":54,"context_line":"                msg \u003d _(\"Pollster %(name)s doesn\u0027t support resources %(res)s\")"},{"line_number":55,"context_line":"                LOG.exception(msg % {\u0027name\u0027: pollster.name,"},{"line_number":56,"context_line":"                                     \u0027res\u0027: pipeline.resources})"},{"line_number":57,"context_line":"        self.resources[pollster.name].update(res)"},{"line_number":58,"context_line":"        self.pollsters.update([pollster])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BRvk%3D","line":55,"updated":"2013-11-28 02:35:41.000000000","message":"Logger.exception() should only be called from an exception handler. You might want to replace to error method.\n\nIMO, this log level is warning.","commit_id":"6e65fb96108251d8d3698c0273116369108c00e0"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"88a6372dec17fbd00ea3e96a09f752f783f88129","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                res.update(pipeline.resources)"},{"line_number":53,"context_line":"            else:"},{"line_number":54,"context_line":"                msg \u003d _(\"Pollster %(name)s doesn\u0027t support resources %(res)s\")"},{"line_number":55,"context_line":"                LOG.exception(msg % {\u0027name\u0027: pollster.name,"},{"line_number":56,"context_line":"                                     \u0027res\u0027: pipeline.resources})"},{"line_number":57,"context_line":"        self.resources[pollster.name].update(res)"},{"line_number":58,"context_line":"        self.pollsters.update([pollster])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BQ0k%3D","line":55,"in_reply_to":"AAAATn%2F%2BRY8%3D","updated":"2013-11-28 08:08:42.000000000","message":"An exception raised from ceilmeter.pipline.Pipline that is not caught.\nI think there is no need to catch in here.","commit_id":"6e65fb96108251d8d3698c0273116369108c00e0"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"5cfaa982429990db57868a860a53cfa613e35e75","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                res.update(pipeline.resources)"},{"line_number":53,"context_line":"            else:"},{"line_number":54,"context_line":"                msg \u003d _(\"Pollster %(name)s doesn\u0027t support resources %(res)s\")"},{"line_number":55,"context_line":"                LOG.exception(msg % {\u0027name\u0027: pollster.name,"},{"line_number":56,"context_line":"                                     \u0027res\u0027: pipeline.resources})"},{"line_number":57,"context_line":"        self.resources[pollster.name].update(res)"},{"line_number":58,"context_line":"        self.pollsters.update([pollster])"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BRY8%3D","line":55,"in_reply_to":"AAAATn%2F%2BRvk%3D","updated":"2013-11-28 03:31:14.000000000","message":"How about let the Pollster.verify_resources() raise an exception, and use the LOG.exception here?\n\nI don\u0027t think putting the resources to a pollster who thinks it\u0027s illegal make any sense. This just means an error in pipeline definition file or the admin needs to split the pipeline.","commit_id":"6e65fb96108251d8d3698c0273116369108c00e0"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"e9335735b3bbb3db9e41d86fab8f132fb3174740","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                msg \u003d _(\"Pollster %(name)s doesn\u0027t support resources %(res)s\")"},{"line_number":55,"context_line":"                LOG.exception(msg % {\u0027name\u0027: pollster.name,"},{"line_number":56,"context_line":"                                     \u0027res\u0027: pipeline.resources})"},{"line_number":57,"context_line":"        self.resources[pollster.name].update(res)"},{"line_number":58,"context_line":"        self.pollsters.update([pollster])"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BRfQ%3D","line":57,"updated":"2013-11-28 02:35:41.000000000","message":"I think pipline name should be used for key of self.resources. e.g. self.resources[(pipline.name, pollster.name)]\n\nBecause, in some cases user want to set collect interval each the physical machines. And pipline.yaml looks like able to that.\ne.g. \n pipeline.yaml\n -\n     name: compute_nodes\n     interval: 600\n     meters:\n         - \"cpu.util\"\n     resources:\n         - ipmi://10.0.0.1\n         - ipmi://10.0.0.2\n         - ipmi://10.0.0.3\n         - ipmi://10.0.0.4\n    transformers:\n    publishers:\n        - rpc://\n -\n     name: controller_nodes\n     interval: 60\n     meters:\n         - \"cpu.util\"\n     resources:\n         - ipmi://10.0.0.100\n         - ipmi://10.0.0.101\n    transformers:\n    publishers:\n        - rpc://\n\nIf the key contains pollster.name only, In the above case,  pipeline of controller_nodes collect informations of 10.0.01, 10.0.0.2, 10.0.0.3 and 10.0.0.4.","commit_id":"6e65fb96108251d8d3698c0273116369108c00e0"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"6cd6615323f7cb6c3b561fabd79e36e36ba7f714","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                msg \u003d _(\"Pollster %(name)s doesn\u0027t support resources %(res)s\")"},{"line_number":55,"context_line":"                LOG.exception(msg % {\u0027name\u0027: pollster.name,"},{"line_number":56,"context_line":"                                     \u0027res\u0027: pipeline.resources})"},{"line_number":57,"context_line":"        self.resources[pollster.name].update(res)"},{"line_number":58,"context_line":"        self.pollsters.update([pollster])"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BQpc%3D","line":57,"in_reply_to":"AAAATn%2F%2BROw%3D","updated":"2013-11-28 08:38:39.000000000","message":"In this case, different meters will have different pollsters. So I think using pollster.name as the key is just enough.","commit_id":"6e65fb96108251d8d3698c0273116369108c00e0"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"88a6372dec17fbd00ea3e96a09f752f783f88129","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                msg \u003d _(\"Pollster %(name)s doesn\u0027t support resources %(res)s\")"},{"line_number":55,"context_line":"                LOG.exception(msg % {\u0027name\u0027: pollster.name,"},{"line_number":56,"context_line":"                                     \u0027res\u0027: pipeline.resources})"},{"line_number":57,"context_line":"        self.resources[pollster.name].update(res)"},{"line_number":58,"context_line":"        self.pollsters.update([pollster])"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BROw%3D","line":57,"in_reply_to":"AAAATn%2F%2BRXQ%3D","updated":"2013-11-28 08:08:42.000000000","message":"Oops, my example is bad.\nIf interval is not different in both pollsters, number of PollingTask is only one. e.g. cpu_util in etc/ceilometer/pipeline.yaml.\n\ne.g. ( This is an image )\n pipeline.yaml\n -\n     name: group1\n     interval: 600\n     meters:\n         - \"temperatrue.celsius\"\n     resources:\n         - ipmi://10.0.0.1\n         - ipmi://10.0.0.2\n    transformers:\n    publishers:\n        - rpc://\n -\n     name: group2\n     interval: 600\n     meters:\n         - \"temperatrue.fahrenheit\"\n     resources:\n         - ipmi://10.0.0.3\n         - ipmi://10.0.0.4\n    transformers:\n         - name: \"convert_temp_to_f\"\n           parameters:\n               target:\n                   name: \"temperature.celsius\"\n                   unit: \"degree\"\n                   type: \"gauge\"\n    publishers:\n        - rpc://","commit_id":"6e65fb96108251d8d3698c0273116369108c00e0"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"5cfaa982429990db57868a860a53cfa613e35e75","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                msg \u003d _(\"Pollster %(name)s doesn\u0027t support resources %(res)s\")"},{"line_number":55,"context_line":"                LOG.exception(msg % {\u0027name\u0027: pollster.name,"},{"line_number":56,"context_line":"                                     \u0027res\u0027: pipeline.resources})"},{"line_number":57,"context_line":"        self.resources[pollster.name].update(res)"},{"line_number":58,"context_line":"        self.pollsters.update([pollster])"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BRXQ%3D","line":57,"in_reply_to":"AAAATn%2F%2BRfQ%3D","updated":"2013-11-28 03:31:14.000000000","message":"I\u0027m afraid this is not the case. The 2 different pipelines in your example would ending up 2 different PollingTask. The PollingTask is created according to the different interval of the pipelines.","commit_id":"6e65fb96108251d8d3698c0273116369108c00e0"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"89ecadc4e36c2f136b1cdbdf60054437a834b7c2","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    def add(self, pollster, pipelines):"},{"line_number":46,"context_line":"        self.publish_context.add_pipelines(pipelines)"},{"line_number":47,"context_line":"        for pipeline in pipelines:"},{"line_number":48,"context_line":"            self.resources[pollster.name].update(pipeline.resources)"},{"line_number":49,"context_line":"        self.pollsters.update([pollster])"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BK3s%3D","line":48,"updated":"2013-11-29 23:26:50.000000000","message":"Why keep a separate copy of the list of resources for each pollster?","commit_id":"290ae77111c5f383da671deaa0dcf9b32e199d18"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"c0fe00f12c8b19ec899cb40df354228f53c38a8a","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    def add(self, pollster, pipelines):"},{"line_number":46,"context_line":"        self.publish_context.add_pipelines(pipelines)"},{"line_number":47,"context_line":"        for pipeline in pipelines:"},{"line_number":48,"context_line":"            self.resources[pollster.name].update(pipeline.resources)"},{"line_number":49,"context_line":"        self.pollsters.update([pollster])"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    @abc.abstractmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BJGw%3D","line":48,"in_reply_to":"AAAATn%2F%2BK3s%3D","updated":"2013-12-02 02:13:11.000000000","message":"Because the same pollster defined in different pipeline with different resources may end up in the same PollingTask. Here is to group all the resources from different pipelines. Also we need the copy of the original one for dynamic reloading purpose.","commit_id":"290ae77111c5f383da671deaa0dcf9b32e199d18"},{"author":{"_account_id":5313,"name":"David Peraza","email":"david_peraza@persistentsys.com","username":"dperaza"},"change_message_id":"f97cc91374d80a492c1e6db5e48fdd47bc1df7c9","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.manager \u003d agent_manager"},{"line_number":40,"context_line":"        self.pollsters \u003d set()"},{"line_number":41,"context_line":"        # resources indexed by pollster.name"},{"line_number":42,"context_line":"        self.resources \u003d collections.defaultdict(set)"},{"line_number":43,"context_line":"        self.publish_context \u003d pipeline.PublishContext("},{"line_number":44,"context_line":"            agent_manager.context)"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9BNc%3D","line":42,"updated":"2013-12-17 16:35:25.000000000","message":"Why a set and not a list. Are you expecting resource collisions for same pollster?","commit_id":"f125f069db638439ebda1263cdf3561fef692d0d"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"f176916fe0644ac1e8865d54f88084fb9fafa029","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.manager \u003d agent_manager"},{"line_number":40,"context_line":"        self.pollsters \u003d set()"},{"line_number":41,"context_line":"        # resources indexed by pollster.name"},{"line_number":42,"context_line":"        self.resources \u003d collections.defaultdict(set)"},{"line_number":43,"context_line":"        self.publish_context \u003d pipeline.PublishContext("},{"line_number":44,"context_line":"            agent_manager.context)"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F8%2BfQ%3D","line":42,"in_reply_to":"AAAATn%2F9BNc%3D","updated":"2013-12-18 07:45:19.000000000","message":"yes, we want to avoid the resource duplication definition.","commit_id":"f125f069db638439ebda1263cdf3561fef692d0d"}],"ceilometer/central/manager.py":[{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"e9335735b3bbb3db9e41d86fab8f132fb3174740","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                    samples \u003d list(pollster.obj.get_samples("},{"line_number":45,"context_line":"                        self.manager,"},{"line_number":46,"context_line":"                        cache,"},{"line_number":47,"context_line":"                        resources\u003dlist(self.resources[pollster.name])"},{"line_number":48,"context_line":"                    ))"},{"line_number":49,"context_line":"                    publisher(samples)"},{"line_number":50,"context_line":"                except Exception as err:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BRsc%3D","line":47,"updated":"2013-11-28 02:35:41.000000000","message":"If self.resources stored list instead of set, this line is not need to call list method.","commit_id":"6e65fb96108251d8d3698c0273116369108c00e0"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"6cd6615323f7cb6c3b561fabd79e36e36ba7f714","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                    samples \u003d list(pollster.obj.get_samples("},{"line_number":45,"context_line":"                        self.manager,"},{"line_number":46,"context_line":"                        cache,"},{"line_number":47,"context_line":"                        resources\u003dlist(self.resources[pollster.name])"},{"line_number":48,"context_line":"                    ))"},{"line_number":49,"context_line":"                    publisher(samples)"},{"line_number":50,"context_line":"                except Exception as err:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BQpw%3D","line":47,"in_reply_to":"AAAATn%2F%2BQxA%3D","updated":"2013-11-28 08:38:39.000000000","message":"I\u0027m think the following not right:\n\nself.resource[pollster.name] \u003d list(res)\n\nThe resources should be kept around multiple calls of add(), using the set here can easily resolve the duplication issue within each single add() call or between multiple add() call.","commit_id":"6e65fb96108251d8d3698c0273116369108c00e0"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"88a6372dec17fbd00ea3e96a09f752f783f88129","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                    samples \u003d list(pollster.obj.get_samples("},{"line_number":45,"context_line":"                        self.manager,"},{"line_number":46,"context_line":"                        cache,"},{"line_number":47,"context_line":"                        resources\u003dlist(self.resources[pollster.name])"},{"line_number":48,"context_line":"                    ))"},{"line_number":49,"context_line":"                    publisher(samples)"},{"line_number":50,"context_line":"                except Exception as err:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BQxA%3D","line":47,"in_reply_to":"AAAATn%2F%2BRWw%3D","updated":"2013-11-28 08:08:42.000000000","message":"I hope converting be moved to ceilometer.agent.PollingTask.\n\ne.g.\n\n  def __init__(.....):\n    ....\n    self.resource \u003d collections.defaultdict(list)\n    ....\n\n  def add(.....):\n    ....\n    res \u003d set()\n    ....\n    res.update(self.resource[pollster.name])\n    self.resource[pollster.name] \u003d list(res)\n    ....","commit_id":"6e65fb96108251d8d3698c0273116369108c00e0"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"5cfaa982429990db57868a860a53cfa613e35e75","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                    samples \u003d list(pollster.obj.get_samples("},{"line_number":45,"context_line":"                        self.manager,"},{"line_number":46,"context_line":"                        cache,"},{"line_number":47,"context_line":"                        resources\u003dlist(self.resources[pollster.name])"},{"line_number":48,"context_line":"                    ))"},{"line_number":49,"context_line":"                    publisher(samples)"},{"line_number":50,"context_line":"                except Exception as err:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BRWw%3D","line":47,"in_reply_to":"AAAATn%2F%2BRsc%3D","updated":"2013-11-28 03:31:14.000000000","message":"Using set() could allow us to avoid the duplication of the resources.","commit_id":"6e65fb96108251d8d3698c0273116369108c00e0"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"89ecadc4e36c2f136b1cdbdf60054437a834b7c2","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                    LOG.info(\"Polling pollster %s\", pollster.name)"},{"line_number":44,"context_line":"                    resources \u003d list(self.resources[pollster.name])"},{"line_number":45,"context_line":"                    # We verify the resources here to support resource"},{"line_number":46,"context_line":"                    # loader to dynamically load resources"},{"line_number":47,"context_line":"                    pollster.obj.verify_resources(self.manager, resources)"},{"line_number":48,"context_line":"                    samples \u003d list(pollster.obj.get_samples("},{"line_number":49,"context_line":"                        self.manager,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BK3o%3D","line":46,"updated":"2013-11-29 23:26:50.000000000","message":"This part should probably only be done once, right? Otherwise we are re-processing the list of resources for every pollster every time we poll it.","commit_id":"290ae77111c5f383da671deaa0dcf9b32e199d18"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"c0fe00f12c8b19ec899cb40df354228f53c38a8a","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                    LOG.info(\"Polling pollster %s\", pollster.name)"},{"line_number":44,"context_line":"                    resources \u003d list(self.resources[pollster.name])"},{"line_number":45,"context_line":"                    # We verify the resources here to support resource"},{"line_number":46,"context_line":"                    # loader to dynamically load resources"},{"line_number":47,"context_line":"                    pollster.obj.verify_resources(self.manager, resources)"},{"line_number":48,"context_line":"                    samples \u003d list(pollster.obj.get_samples("},{"line_number":49,"context_line":"                        self.manager,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BJFg%3D","line":46,"in_reply_to":"AAAATn%2F%2BK3o%3D","updated":"2013-12-02 02:13:11.000000000","message":"We re-verify the resources every time we poll it to support the dynamic resources loading using the resource loader mechanism which is brought in by another patch.","commit_id":"290ae77111c5f383da671deaa0dcf9b32e199d18"},{"author":{"_account_id":5313,"name":"David Peraza","email":"david_peraza@persistentsys.com","username":"dperaza"},"change_message_id":"f97cc91374d80a492c1e6db5e48fdd47bc1df7c9","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            for pollster in self.pollsters:"},{"line_number":42,"context_line":"                try:"},{"line_number":43,"context_line":"                    LOG.info(_(\"Polling pollster %s\"), pollster.name)"},{"line_number":44,"context_line":"                    resources \u003d list(self.resources[pollster.name])"},{"line_number":45,"context_line":"                    # We verify the resources here to support resource"},{"line_number":46,"context_line":"                    # loader to dynamically load resources"},{"line_number":47,"context_line":"                    pollster.obj.verify_resources(self.manager, resources)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9BM4%3D","line":44,"updated":"2013-12-17 16:35:25.000000000","message":"You have to convert here because it is a set in the defaultdict","commit_id":"f125f069db638439ebda1263cdf3561fef692d0d"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"f176916fe0644ac1e8865d54f88084fb9fafa029","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            for pollster in self.pollsters:"},{"line_number":42,"context_line":"                try:"},{"line_number":43,"context_line":"                    LOG.info(_(\"Polling pollster %s\"), pollster.name)"},{"line_number":44,"context_line":"                    resources \u003d list(self.resources[pollster.name])"},{"line_number":45,"context_line":"                    # We verify the resources here to support resource"},{"line_number":46,"context_line":"                    # loader to dynamically load resources"},{"line_number":47,"context_line":"                    pollster.obj.verify_resources(self.manager, resources)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F8%2BfE%3D","line":44,"in_reply_to":"AAAATn%2F9BM4%3D","updated":"2013-12-18 07:45:19.000000000","message":"That\u0027s what the \u0027list\u0027 here is used for.","commit_id":"f125f069db638439ebda1263cdf3561fef692d0d"}],"ceilometer/compute/plugin.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"4af75d2139ad4805bdd264ba2271a5ac8f56f9f4","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        :param instance: The instance to examine"},{"line_number":39,"context_line":"        \"\"\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def verify_resources(self, manager, resources):"},{"line_number":42,"context_line":"        \"\"\"Check if the resources is valid to this pollster, raise the"},{"line_number":43,"context_line":"        exception ResourceInvalid if not."},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F97lY%3D","line":41,"updated":"2013-12-04 10:36:25.000000000","message":"You at least can declare it @staticmethod\n\nI see you implemented it in every pollster then, so you may want it to be @abc.abstractmethod instead. Though since most plugins will do nothing, just let not reimplemented each time?","commit_id":"06e5d6f15b11eddefa7a9c8e317145d7e6a3d1c1"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"757a527997fe091bddbd278da6d18b1f1e067c12","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        :param instance: The instance to examine"},{"line_number":39,"context_line":"        \"\"\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def verify_resources(self, manager, resources):"},{"line_number":42,"context_line":"        \"\"\"Check if the resources is valid to this pollster, raise the"},{"line_number":43,"context_line":"        exception ResourceInvalid if not."},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F93Jg%3D","line":41,"in_reply_to":"AAAATn%2F97lY%3D","updated":"2013-12-05 05:58:18.000000000","message":"This is for the pollsters on compute node only. I don\u0027t think any compute node pollster can support this kind of features.\n\nI\u0027ll change it to staticmethod.","commit_id":"06e5d6f15b11eddefa7a9c8e317145d7e6a3d1c1"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"4af75d2139ad4805bdd264ba2271a5ac8f56f9f4","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                          from."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        \"\"\""},{"line_number":50,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F97lc%3D","line":50,"updated":"2013-12-04 10:36:25.000000000","message":"You don\u0027t need pass here","commit_id":"06e5d6f15b11eddefa7a9c8e317145d7e6a3d1c1"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"c74a25544e9bc9a389fc40357b1924b421359730","unresolved":false,"context_lines":[{"line_number":47,"context_line":"                          from."},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        \"\"\""},{"line_number":50,"context_line":"        pass"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9YMg%3D","line":50,"in_reply_to":"AAAATn%2F97lc%3D","updated":"2013-12-12 03:40:37.000000000","message":"Done","commit_id":"06e5d6f15b11eddefa7a9c8e317145d7e6a3d1c1"},{"author":{"_account_id":5678,"name":"John Herndon","email":"john.herndon@hp.com","username":"john-herndon"},"change_message_id":"172040c7c1812b73580574cec8ef9348be50b99e","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        \"\"\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @staticmethod"},{"line_number":42,"context_line":"    def verify_resources(manager, resources):"},{"line_number":43,"context_line":"        \"\"\"Check if the resources is valid to this pollster, raise the"},{"line_number":44,"context_line":"        exception ResourceInvalid if not."},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F87ek%3D","line":42,"updated":"2013-12-18 17:09:00.000000000","message":"shouldn\u0027t you at least put \u0027pass\u0027 in the method body (and all other subclasses)? I don\u0027t get how this works...","commit_id":"26dea6d06ad12fa80f9a5ef8d4b7a66326977296"},{"author":{"_account_id":5678,"name":"John Herndon","email":"john.herndon@hp.com","username":"john-herndon"},"change_message_id":"be50183068d6fcb08c594e78cc6911b2a0720b90","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        \"\"\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @staticmethod"},{"line_number":42,"context_line":"    def verify_resources(manager, resources):"},{"line_number":43,"context_line":"        \"\"\"Check if the resources is valid to this pollster, raise the"},{"line_number":44,"context_line":"        exception ResourceInvalid if not."},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F827g%3D","line":42,"in_reply_to":"AAAATn%2F85Ms%3D","updated":"2013-12-19 14:18:00.000000000","message":"wow, that really is some magic. Thanks for the explanation!","commit_id":"26dea6d06ad12fa80f9a5ef8d4b7a66326977296"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"d1b3594fbf8fe8304255ad18910bedf78c07d72c","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        \"\"\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    @staticmethod"},{"line_number":42,"context_line":"    def verify_resources(manager, resources):"},{"line_number":43,"context_line":"        \"\"\"Check if the resources is valid to this pollster, raise the"},{"line_number":44,"context_line":"        exception ResourceInvalid if not."},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F85Ms%3D","line":42,"in_reply_to":"AAAATn%2F87ek%3D","updated":"2013-12-19 03:26:32.000000000","message":"I used to think that too. But as jd__ pointed out, you don\u0027t need that if you have defined func doc. Magic python!","commit_id":"26dea6d06ad12fa80f9a5ef8d4b7a66326977296"}],"ceilometer/energy/kwapi.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"4af75d2139ad4805bdd264ba2271a5ac8f56f9f4","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            return []"},{"line_number":79,"context_line":"        return list(client.iter_probes())"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def verify_resources(self, manager, resources):"},{"line_number":82,"context_line":"        \"\"\"Check if the resources is valid to this pollster\"\"\""},{"line_number":83,"context_line":"        pass"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F97lQ%3D","line":81,"updated":"2013-12-04 10:36:25.000000000","message":"@staticmethod","commit_id":"06e5d6f15b11eddefa7a9c8e317145d7e6a3d1c1"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"c74a25544e9bc9a389fc40357b1924b421359730","unresolved":false,"context_lines":[{"line_number":78,"context_line":"            return []"},{"line_number":79,"context_line":"        return list(client.iter_probes())"},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def verify_resources(self, manager, resources):"},{"line_number":82,"context_line":"        \"\"\"Check if the resources is valid to this pollster\"\"\""},{"line_number":83,"context_line":"        pass"},{"line_number":84,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9YKs%3D","line":81,"in_reply_to":"AAAATn%2F97lQ%3D","updated":"2013-12-12 03:40:37.000000000","message":"Done","commit_id":"06e5d6f15b11eddefa7a9c8e317145d7e6a3d1c1"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"4af75d2139ad4805bdd264ba2271a5ac8f56f9f4","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def verify_resources(self, manager, resources):"},{"line_number":82,"context_line":"        \"\"\"Check if the resources is valid to this pollster\"\"\""},{"line_number":83,"context_line":"        pass"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"class EnergyPollster(_Base):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F97lU%3D","line":83,"updated":"2013-12-04 10:36:25.000000000","message":"No need for pass.\n\nOTOH I wonder why it does nothing. If you request the energy for certain resources only, these plugins won\u0027t be able to honor it since resources isn\u0027t used at all in their get_samples() method. That doesn\u0027t look like a sane behaviour.\n\nThat same comment apply to all pollsters.","commit_id":"06e5d6f15b11eddefa7a9c8e317145d7e6a3d1c1"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"757a527997fe091bddbd278da6d18b1f1e067c12","unresolved":false,"context_lines":[{"line_number":80,"context_line":""},{"line_number":81,"context_line":"    def verify_resources(self, manager, resources):"},{"line_number":82,"context_line":"        \"\"\"Check if the resources is valid to this pollster\"\"\""},{"line_number":83,"context_line":"        pass"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"class EnergyPollster(_Base):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F93Ic%3D","line":83,"in_reply_to":"AAAATn%2F97lU%3D","updated":"2013-12-05 05:58:18.000000000","message":"For other central pollsters, e.g floatingip, swift, I don\u0027t think how to use specify the resources as the endpoint. Because all of them only has one endpoint to poll data from, which is got from keystone.\n\nAs for this kwapi one, jd, can you give me some information(or links) about the restful kwapi? Do you have any suggestion on what to be put in the resources, and how to map the resources to kwapi, so I can use in KwapiClient.iter_probes().","commit_id":"06e5d6f15b11eddefa7a9c8e317145d7e6a3d1c1"}],"ceilometer/plugin.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"8fb679d965f1e2cbc04d7e0df14a50996ef5c716","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def verify_resources(self, manager, resources):"},{"line_number":117,"context_line":"        \"\"\"Check if the resources is valid to this pollster, raise the"},{"line_number":118,"context_line":"        exception ResourceNotSupportedException if not."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        :param manager: The service manager class invoking the plugin."},{"line_number":121,"context_line":"        :param resources: A list of the endpoints the pollster will get data"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BPHk%3D","line":118,"updated":"2013-11-28 14:37:50.000000000","message":"ResourceInvalid instead of ResourceNotSupportedException","commit_id":"31f12336cd6716186290b3361ddbc358e9c1f2e2"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"e672c49d80cbe14a523c11598c2842c24e4977f9","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def verify_resources(self, manager, resources):"},{"line_number":117,"context_line":"        \"\"\"Check if the resources is valid to this pollster, raise the"},{"line_number":118,"context_line":"        exception ResourceNotSupportedException if not."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        :param manager: The service manager class invoking the plugin."},{"line_number":121,"context_line":"        :param resources: A list of the endpoints the pollster will get data"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BNuE%3D","line":118,"in_reply_to":"AAAATn%2F%2BPHk%3D","updated":"2013-11-29 01:49:21.000000000","message":"Done","commit_id":"31f12336cd6716186290b3361ddbc358e9c1f2e2"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"89ecadc4e36c2f136b1cdbdf60054437a834b7c2","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        \"\"\""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def verify_resources(self, manager, resources):"},{"line_number":117,"context_line":"        \"\"\"Check if the resources is valid to this pollster, raise the"},{"line_number":118,"context_line":"        exception ResourceNotSupportedException if not."},{"line_number":119,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BK30%3D","line":116,"updated":"2013-11-29 23:26:50.000000000","message":"This should be an abstract method.","commit_id":"290ae77111c5f383da671deaa0dcf9b32e199d18"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"c0fe00f12c8b19ec899cb40df354228f53c38a8a","unresolved":false,"context_lines":[{"line_number":113,"context_line":""},{"line_number":114,"context_line":"        \"\"\""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def verify_resources(self, manager, resources):"},{"line_number":117,"context_line":"        \"\"\"Check if the resources is valid to this pollster, raise the"},{"line_number":118,"context_line":"        exception ResourceNotSupportedException if not."},{"line_number":119,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BJGs%3D","line":116,"in_reply_to":"AAAATn%2F%2BK30%3D","updated":"2013-12-02 02:13:11.000000000","message":"Done","commit_id":"290ae77111c5f383da671deaa0dcf9b32e199d18"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"89ecadc4e36c2f136b1cdbdf60054437a834b7c2","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def verify_resources(self, manager, resources):"},{"line_number":117,"context_line":"        \"\"\"Check if the resources is valid to this pollster, raise the"},{"line_number":118,"context_line":"        exception ResourceNotSupportedException if not."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        :param manager: The service manager class invoking the plugin."},{"line_number":121,"context_line":"        :param resources: A list of the endpoints the pollster will get data"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BK3k%3D","line":118,"updated":"2013-11-29 23:26:50.000000000","message":"How does the plugin know whether or not it supports the resource based just on the URL?","commit_id":"290ae77111c5f383da671deaa0dcf9b32e199d18"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"c0fe00f12c8b19ec899cb40df354228f53c38a8a","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"    def verify_resources(self, manager, resources):"},{"line_number":117,"context_line":"        \"\"\"Check if the resources is valid to this pollster, raise the"},{"line_number":118,"context_line":"        exception ResourceNotSupportedException if not."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        :param manager: The service manager class invoking the plugin."},{"line_number":121,"context_line":"        :param resources: A list of the endpoints the pollster will get data"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2BJGg%3D","line":118,"in_reply_to":"AAAATn%2F%2BK3k%3D","updated":"2013-12-02 02:13:11.000000000","message":"It\u0027s up to each pollster\u0027s implementation on how to interpret the URL and decide whether it\u0027s valid or invalid. e.g. A power consumption pollster might find the URL snmp://1.1.1.1  invalid because the implementation only support getting power consumption data using ipmi NodeManager communication.","commit_id":"290ae77111c5f383da671deaa0dcf9b32e199d18"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"4af75d2139ad4805bdd264ba2271a5ac8f56f9f4","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class ResourceInvalid(Exception):"},{"line_number":37,"context_line":"    def __init__(self, message, resource):"},{"line_number":38,"context_line":"        self.message \u003d message"},{"line_number":39,"context_line":"        self.resource \u003d resource"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def __str__(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F97k8%3D","line":38,"updated":"2013-12-04 10:36:25.000000000","message":"super(ResourceInvalid, self).__init__(message)","commit_id":"06e5d6f15b11eddefa7a9c8e317145d7e6a3d1c1"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"c74a25544e9bc9a389fc40357b1924b421359730","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class ResourceInvalid(Exception):"},{"line_number":37,"context_line":"    def __init__(self, message, resource):"},{"line_number":38,"context_line":"        self.message \u003d message"},{"line_number":39,"context_line":"        self.resource \u003d resource"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def __str__(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9YL8%3D","line":38,"in_reply_to":"AAAATn%2F97k8%3D","updated":"2013-12-12 03:40:37.000000000","message":"Done","commit_id":"06e5d6f15b11eddefa7a9c8e317145d7e6a3d1c1"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"4af75d2139ad4805bdd264ba2271a5ac8f56f9f4","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.resource \u003d resource"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def __str__(self):"},{"line_number":42,"context_line":"        return \u0027Invalid resource %s: %s\u0027 % (self.resource, self.message)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"class PluginBase(object):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F97ks%3D","line":42,"updated":"2013-12-04 10:36:25.000000000","message":"return \u0027Invalid resource %s: %s\u0027 % (self.resource, super(ResourceInvalid, self).__str__())\n\nor the like I\u0027d say. :)\n\nThough it\u0027s minor.","commit_id":"06e5d6f15b11eddefa7a9c8e317145d7e6a3d1c1"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"c74a25544e9bc9a389fc40357b1924b421359730","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.resource \u003d resource"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def __str__(self):"},{"line_number":42,"context_line":"        return \u0027Invalid resource %s: %s\u0027 % (self.resource, self.message)"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"class PluginBase(object):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAATn%2F9YL4%3D","line":42,"in_reply_to":"AAAATn%2F97ks%3D","updated":"2013-12-12 03:40:37.000000000","message":"Done","commit_id":"06e5d6f15b11eddefa7a9c8e317145d7e6a3d1c1"},{"author":{"_account_id":5313,"name":"David Peraza","email":"david_peraza@persistentsys.com","username":"dperaza"},"change_message_id":"f97cc91374d80a492c1e6db5e48fdd47bc1df7c9","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.resource \u003d resource"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def __str__(self):"},{"line_number":42,"context_line":"        return \u0027Invalid resource %s: %s\u0027 % ("},{"line_number":43,"context_line":"            self.resource,"},{"line_number":44,"context_line":"            super(ResourceInvalid, self).__str__())"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F9BME%3D","line":42,"updated":"2013-12-17 16:35:25.000000000","message":"Translation _()","commit_id":"f125f069db638439ebda1263cdf3561fef692d0d"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"f176916fe0644ac1e8865d54f88084fb9fafa029","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        self.resource \u003d resource"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def __str__(self):"},{"line_number":42,"context_line":"        return \u0027Invalid resource %s: %s\u0027 % ("},{"line_number":43,"context_line":"            self.resource,"},{"line_number":44,"context_line":"            super(ResourceInvalid, self).__str__())"},{"line_number":45,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F8%2BeU%3D","line":42,"in_reply_to":"AAAATn%2F9BME%3D","updated":"2013-12-18 07:45:19.000000000","message":"Done","commit_id":"f125f069db638439ebda1263cdf3561fef692d0d"}],"ceilometer/tests/agentbase.py":[{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"e9335735b3bbb3db9e41d86fab8f132fb3174740","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                \u0027name\u0027: \"test_pipeline_1\","},{"line_number":220,"context_line":"                \u0027interval\u0027: 10,"},{"line_number":221,"context_line":"                \u0027counters\u0027: [\u0027test_invalid\u0027],"},{"line_number":222,"context_line":"                \u0027resources\u0027: [\u0027invalid://\u0027],"},{"line_number":223,"context_line":"                \u0027transformers\u0027: [],"},{"line_number":224,"context_line":"                \u0027publishers\u0027: [\"test\"],"},{"line_number":225,"context_line":"            })"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BRcE%3D","line":222,"updated":"2013-11-28 02:35:41.000000000","message":"I have stupid question.\nDoes this test run agent.py L54?","commit_id":"6e65fb96108251d8d3698c0273116369108c00e0"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"5cfaa982429990db57868a860a53cfa613e35e75","unresolved":false,"context_lines":[{"line_number":219,"context_line":"                \u0027name\u0027: \"test_pipeline_1\","},{"line_number":220,"context_line":"                \u0027interval\u0027: 10,"},{"line_number":221,"context_line":"                \u0027counters\u0027: [\u0027test_invalid\u0027],"},{"line_number":222,"context_line":"                \u0027resources\u0027: [\u0027invalid://\u0027],"},{"line_number":223,"context_line":"                \u0027transformers\u0027: [],"},{"line_number":224,"context_line":"                \u0027publishers\u0027: [\"test\"],"},{"line_number":225,"context_line":"            })"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATn%2F%2BRWs%3D","line":222,"in_reply_to":"AAAATn%2F%2BRcE%3D","updated":"2013-11-28 03:31:14.000000000","message":"nope, i\u0027ll add another test case for that. Thanks for the catch.","commit_id":"6e65fb96108251d8d3698c0273116369108c00e0"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"83b24f4baf4c2569b9800bbe79d8f92321433ee0","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        self.Pollster.resources \u003d []"},{"line_number":203,"context_line":"        self.PollsterAnother.resources \u003d []"},{"line_number":204,"context_line":"        self.PollsterException.resources \u003d []"},{"line_number":205,"context_line":"        self.PollsterExceptionAnother.resources \u003d []"},{"line_number":206,"context_line":"        super(BaseAgentManagerTestCase, self).tearDown()"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    def test_setup_polling_tasks(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F8764%3D","line":205,"updated":"2013-12-18 16:00:45.000000000","message":"do we need to teardown PollsterExceptionResource?","commit_id":"26dea6d06ad12fa80f9a5ef8d4b7a66326977296"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"d1b3594fbf8fe8304255ad18910bedf78c07d72c","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        self.Pollster.resources \u003d []"},{"line_number":203,"context_line":"        self.PollsterAnother.resources \u003d []"},{"line_number":204,"context_line":"        self.PollsterException.resources \u003d []"},{"line_number":205,"context_line":"        self.PollsterExceptionAnother.resources \u003d []"},{"line_number":206,"context_line":"        super(BaseAgentManagerTestCase, self).tearDown()"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"    def test_setup_polling_tasks(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAATn%2F85MM%3D","line":205,"in_reply_to":"AAAATn%2F8764%3D","updated":"2013-12-19 03:26:32.000000000","message":"Done.\ngood catch.","commit_id":"26dea6d06ad12fa80f9a5ef8d4b7a66326977296"}],"ceilometer/tests/central/test_manager.py":[{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"75c7da37a158c5a8458632f7413c0ab65babe7c0","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        polling_tasks \u003d self.mgr.setup_polling_tasks()"},{"line_number":65,"context_line":"        self.assertEqual(len(polling_tasks.keys()), 1)"},{"line_number":66,"context_line":"        self.assertEqual(len(polling_tasks[10].resources), 1)"},{"line_number":67,"context_line":"        self.assertEqual(len(polling_tasks[10].resources[0]), 0)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BQtY%3D","line":67,"updated":"2013-11-28 08:24:58.000000000","message":"self.assertEquals(len(pooling_tasks[10].resources[\u0027testexceptionresource\u0027]), 0) ?","commit_id":"65592062fc68d587c847a829a198a84e8d811def"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"1c984b7415c27bba582bb539e4326dc9239ba454","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        polling_tasks \u003d self.mgr.setup_polling_tasks()"},{"line_number":65,"context_line":"        self.assertEqual(len(polling_tasks.keys()), 1)"},{"line_number":66,"context_line":"        self.assertEqual(len(polling_tasks[10].resources), 1)"},{"line_number":67,"context_line":"        self.assertEqual(len(polling_tasks[10].resources[0]), 0)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BQO4%3D","line":67,"in_reply_to":"AAAATn%2F%2BQZM%3D","updated":"2013-11-28 09:55:05.000000000","message":"Shame on me. Silly mistake","commit_id":"65592062fc68d587c847a829a198a84e8d811def"},{"author":{"_account_id":7203,"name":"yuuichi fujioka","email":"fujioka.yuuichi@gmail.com","username":"FujiokaYuuichi"},"change_message_id":"ec180c826fce6e64b21ce2b1ccf9e4e9feaa5f14","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        polling_tasks \u003d self.mgr.setup_polling_tasks()"},{"line_number":65,"context_line":"        self.assertEqual(len(polling_tasks.keys()), 1)"},{"line_number":66,"context_line":"        self.assertEqual(len(polling_tasks[10].resources), 1)"},{"line_number":67,"context_line":"        self.assertEqual(len(polling_tasks[10].resources[0]), 0)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BQZM%3D","line":67,"in_reply_to":"AAAATn%2F%2BQqw%3D","updated":"2013-11-28 09:25:54.000000000","message":"sorry, I missed.\n\n self.assertEqual(len(pooling_tasks[10].resources[\u0027testexceptionresource\u0027]), 0) ?\n                                                   ^^^^^^^^^^^^^^^^^^^^^","commit_id":"65592062fc68d587c847a829a198a84e8d811def"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"f1df7942d9fb5f86ad854150faa958915483c849","unresolved":false,"context_lines":[{"line_number":64,"context_line":"        polling_tasks \u003d self.mgr.setup_polling_tasks()"},{"line_number":65,"context_line":"        self.assertEqual(len(polling_tasks.keys()), 1)"},{"line_number":66,"context_line":"        self.assertEqual(len(polling_tasks[10].resources), 1)"},{"line_number":67,"context_line":"        self.assertEqual(len(polling_tasks[10].resources[0]), 0)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAATn%2F%2BQqw%3D","line":67,"in_reply_to":"AAAATn%2F%2BQtY%3D","updated":"2013-11-28 08:38:43.000000000","message":"I\u0027m afraid assertEquals is being depercated in python3. See http://docs.python.org/3/library/unittest.html?highlight\u003dassertequals","commit_id":"65592062fc68d587c847a829a198a84e8d811def"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"8fb679d965f1e2cbc04d7e0df14a50996ef5c716","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.mgr.interval_task(polling_tasks.values()[0])"},{"line_number":51,"context_line":"        self.assertTrue(self.Pollster.resources)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def test_resource_notvalid(self):"},{"line_number":54,"context_line":"        self.pipeline_cfg \u003d ["},{"line_number":55,"context_line":"            {"},{"line_number":56,"context_line":"                \u0027name\u0027: \"test_resource_invalid_pipeline\","}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BPFc%3D","line":53,"updated":"2013-11-28 14:37:50.000000000","message":"s/notvalid/invalid/\n\nout of curiosity? how is \u0027test://\u0027 an invalid resource? or is that just the name of the test? from reading the test case nothing seems invalid (except for the name of counter)","commit_id":"31f12336cd6716186290b3361ddbc358e9c1f2e2"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"e672c49d80cbe14a523c11598c2842c24e4977f9","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        self.mgr.interval_task(polling_tasks.values()[0])"},{"line_number":51,"context_line":"        self.assertTrue(self.Pollster.resources)"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def test_resource_notvalid(self):"},{"line_number":54,"context_line":"        self.pipeline_cfg \u003d ["},{"line_number":55,"context_line":"            {"},{"line_number":56,"context_line":"                \u0027name\u0027: \"test_resource_invalid_pipeline\","}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAATn%2F%2BNss%3D","line":53,"in_reply_to":"AAAATn%2F%2BPFc%3D","updated":"2013-11-29 01:49:21.000000000","message":"This test is meant to test the exception branch of agent.PollingTask.add(). The invalid is generated by the fake pollster PollsterExceptionResource in agentbase.py. Seems I need to move it to agentbase.py.","commit_id":"31f12336cd6716186290b3361ddbc358e9c1f2e2"}]}
