)]}'
{"ceilometer/agent.py":[{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"f1cd982cfd73013b93885b1d351dff19c445f350","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from ceilometer.openstack.common import log"},{"line_number":20,"context_line":"from ceilometer.openstack.common import cfg"},{"line_number":21,"context_line":"from ceilometer import publish"},{"line_number":22,"context_line":"from ceilometer import extension_manager"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class AgentManager(object):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FdtM%3D","line":22,"updated":"2013-01-21 16:38:23.000000000","message":"Hacking: human alphabetical order","commit_id":"99b3bdaa236e30e7f970f48151ef6c2a5ae416d1"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"f1cd982cfd73013b93885b1d351dff19c445f350","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"class AgentManager(object):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def __init__(self, plugin_namespace, disabled_names, log_name):"},{"line_number":28,"context_line":"        self.log \u003d log.getLogger(log_name)"},{"line_number":29,"context_line":"        self.ext_manager \u003d extension_manager.ActivatedExtensionManager("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FdtA%3D","line":26,"updated":"2013-01-21 16:38:23.000000000","message":"Doc string to explain what/how this class will be used.","commit_id":"99b3bdaa236e30e7f970f48151ef6c2a5ae416d1"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"f1cd982cfd73013b93885b1d351dff19c445f350","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        try:"},{"line_number":39,"context_line":"            self.log.info(\u0027Polling %s\u0027, ext.name)"},{"line_number":40,"context_line":"            for c in ext.obj.get_counters(manager, *args, **kwargs):"},{"line_number":41,"context_line":"                self.log.debug(\u0027Publishing counter: %s\u0027, c)"},{"line_number":42,"context_line":"                publish.publish_counter(context, c,"},{"line_number":43,"context_line":"                                        cfg.CONF.metering_topic,"},{"line_number":44,"context_line":"                                        cfg.CONF.metering_secret,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2Fds4%3D","line":41,"updated":"2013-01-21 16:38:23.000000000","message":"Will this blow out our logs and be a performance problem when it gets busy?","commit_id":"99b3bdaa236e30e7f970f48151ef6c2a5ae416d1"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"2238c682fb335efcaa97335f86e4ccac47fecb96","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        try:"},{"line_number":39,"context_line":"            self.log.info(\u0027Polling %s\u0027, ext.name)"},{"line_number":40,"context_line":"            for c in ext.obj.get_counters(manager, *args, **kwargs):"},{"line_number":41,"context_line":"                self.log.debug(\u0027Publishing counter: %s\u0027, c)"},{"line_number":42,"context_line":"                publish.publish_counter(context, c,"},{"line_number":43,"context_line":"                                        cfg.CONF.metering_topic,"},{"line_number":44,"context_line":"                                        cfg.CONF.metering_secret,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FdqU%3D","line":41,"in_reply_to":"AAAAM3%2F%2FdrI%3D","updated":"2013-01-21 16:53:30.000000000","message":"I realize, but it\u0027s still going to be a lot of data, no?","commit_id":"99b3bdaa236e30e7f970f48151ef6c2a5ae416d1"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"95790a7c27fd2f88ddd1237c61613f8d9a138435","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        try:"},{"line_number":39,"context_line":"            self.log.info(\u0027Polling %s\u0027, ext.name)"},{"line_number":40,"context_line":"            for c in ext.obj.get_counters(manager, *args, **kwargs):"},{"line_number":41,"context_line":"                self.log.debug(\u0027Publishing counter: %s\u0027, c)"},{"line_number":42,"context_line":"                publish.publish_counter(context, c,"},{"line_number":43,"context_line":"                                        cfg.CONF.metering_topic,"},{"line_number":44,"context_line":"                                        cfg.CONF.metering_secret,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FdrI%3D","line":41,"in_reply_to":"AAAAM3%2F%2Fds4%3D","updated":"2013-01-21 16:51:45.000000000","message":"log.debug?","commit_id":"99b3bdaa236e30e7f970f48151ef6c2a5ae416d1"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"f1cd982cfd73013b93885b1d351dff19c445f350","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                                        cfg.CONF.metering_secret,"},{"line_number":45,"context_line":"                                        cfg.CONF.counter_source,"},{"line_number":46,"context_line":"                                        )"},{"line_number":47,"context_line":"        except Exception as err:"},{"line_number":48,"context_line":"            self.log.warning(\u0027Continuing after error from %s: %s\u0027,"},{"line_number":49,"context_line":"                             ext.name, err)"},{"line_number":50,"context_line":"            self.log.exception(err)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2Fds0%3D","line":47,"updated":"2013-01-21 16:38:23.000000000","message":"This catch block should be around the publish_counter call and not around the entire loop.","commit_id":"99b3bdaa236e30e7f970f48151ef6c2a5ae416d1"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"2238c682fb335efcaa97335f86e4ccac47fecb96","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                                        cfg.CONF.metering_secret,"},{"line_number":45,"context_line":"                                        cfg.CONF.counter_source,"},{"line_number":46,"context_line":"                                        )"},{"line_number":47,"context_line":"        except Exception as err:"},{"line_number":48,"context_line":"            self.log.warning(\u0027Continuing after error from %s: %s\u0027,"},{"line_number":49,"context_line":"                             ext.name, err)"},{"line_number":50,"context_line":"            self.log.exception(err)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FdqI%3D","line":47,"in_reply_to":"AAAAM3%2F%2Fdqw%3D","updated":"2013-01-21 16:53:30.000000000","message":"Then, should the get_counters get pulled out of the loop an into it\u0027s own block?","commit_id":"99b3bdaa236e30e7f970f48151ef6c2a5ae416d1"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"95790a7c27fd2f88ddd1237c61613f8d9a138435","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                                        cfg.CONF.metering_secret,"},{"line_number":45,"context_line":"                                        cfg.CONF.counter_source,"},{"line_number":46,"context_line":"                                        )"},{"line_number":47,"context_line":"        except Exception as err:"},{"line_number":48,"context_line":"            self.log.warning(\u0027Continuing after error from %s: %s\u0027,"},{"line_number":49,"context_line":"                             ext.name, err)"},{"line_number":50,"context_line":"            self.log.exception(err)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2Fdqw%3D","line":47,"in_reply_to":"AAAAM3%2F%2Fds0%3D","updated":"2013-01-21 16:51:45.000000000","message":"No, we want to catch errors in get_counters(), since it\u0027s actually the one raising the most often in real life.","commit_id":"99b3bdaa236e30e7f970f48151ef6c2a5ae416d1"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"fc727dc79e15e6598e8c0e52c24b6fc75ff168b2","unresolved":false,"context_lines":[{"line_number":17,"context_line":"# under the License."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from ceilometer.openstack.common import log"},{"line_number":20,"context_line":"from ceilometer.openstack.common import cfg"},{"line_number":21,"context_line":"from ceilometer import publish"},{"line_number":22,"context_line":"from ceilometer import extension_manager"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FcTw%3D","line":20,"updated":"2013-01-22 13:51:38.000000000","message":"import ordering as per HACKING guide.","commit_id":"9f12943d39ffd4dbe967d2f79235c4c7714baa3f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"97840ca7ac73085597dd6f9e4c87dd817fecf78c","unresolved":false,"context_lines":[{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    def __init__(self, plugin_namespace, disabled_names, log_name):"},{"line_number":28,"context_line":"        self.log \u003d log.getLogger(log_name)"},{"line_number":29,"context_line":"        self.ext_manager \u003d extension_manager.ActivatedExtensionManager("},{"line_number":30,"context_line":"            namespace\u003dplugin_namespace,"},{"line_number":31,"context_line":"            disabled_names\u003ddisabled_names,"},{"line_number":32,"context_line":"        )"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FYN0%3D","line":29,"updated":"2013-01-24 20:26:32.000000000","message":"What about passing the extension manager as an arg, instead of passing the arguments needed to create it?","commit_id":"9f12943d39ffd4dbe967d2f79235c4c7714baa3f"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"fc727dc79e15e6598e8c0e52c24b6fc75ff168b2","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        \"\"\""},{"line_number":38,"context_line":"        try:"},{"line_number":39,"context_line":"            self.log.info(\u0027Polling %s\u0027, ext.name)"},{"line_number":40,"context_line":"            for c in ext.obj.get_counters(manager, *args, **kwargs):"},{"line_number":41,"context_line":"                self.log.debug(\u0027Publishing counter: %s\u0027, c)"},{"line_number":42,"context_line":"                publish.publish_counter(context, c,"},{"line_number":43,"context_line":"                                        cfg.CONF.metering_topic,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FcTo%3D","line":40,"updated":"2013-01-22 13:51:38.000000000","message":"Same as comment in previous patch.","commit_id":"9f12943d39ffd4dbe967d2f79235c4c7714baa3f"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"316d5e4d722929488e9359228e08b6c8ac9320d6","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        \"\"\""},{"line_number":34,"context_line":"        try:"},{"line_number":35,"context_line":"            self.log.info(\u0027Polling %s\u0027, ext.name)"},{"line_number":36,"context_line":"            for c in ext.obj.get_counters(manager, *args, **kwargs):"},{"line_number":37,"context_line":"                self.log.debug(\u0027Publishing counter: %s\u0027, c)"},{"line_number":38,"context_line":"                publish.publish_counter(context, c,"},{"line_number":39,"context_line":"                                        cfg.CONF.metering_topic,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAM3%2F%2FXEA%3D","line":36,"updated":"2013-01-25 16:45:00.000000000","message":"try/except should be local to the failing method and not a general catch-all.","commit_id":"ac6d3816745791f009ed9f048816dc853e8dda50"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"c50785048fbbc2c73b7f1be5a30119e3936b9d88","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def __init__(self, extension_manager, log_name):"},{"line_number":27,"context_line":"        self.ext_manager \u003d extension_manager"},{"line_number":28,"context_line":"        self.log \u003d log.getLogger(log_name)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def publish_counters_from_one_pollster(self, ext, manager, context,"},{"line_number":31,"context_line":"                                           *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FTFw%3D","line":28,"updated":"2013-01-29 20:39:16.000000000","message":"Sorry, I didn\u0027t notice this use of logging before. I\u0027d rather have module-local variables for the logger, since that tells us where the message is really coming from. If we let the caller provide a logger name, it will look like the \"Polling\" messages on line 35 are coming from some other module entirely.","commit_id":"1338c84dee868a4ab9f0e8839ee0dd71efc32e44"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"9d2bb312fc1e770421ca7ad0521d320a1ae2c553","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def __init__(self, extension_manager, log_name):"},{"line_number":27,"context_line":"        self.ext_manager \u003d extension_manager"},{"line_number":28,"context_line":"        self.log \u003d log.getLogger(log_name)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def publish_counters_from_one_pollster(self, ext, manager, context,"},{"line_number":31,"context_line":"                                           *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FRnk%3D","line":28,"in_reply_to":"AAAAM3%2F%2FRp0%3D","updated":"2013-01-30 17:10:44.000000000","message":"Ah ok. That\u0027s what I understood, but the downside I see is that we\u0027ll always have \"Publishing counter\" from \u0027ceilometer.agent\u0027 and not from the right agent name.\nBut I\u0027m also ok with that!","commit_id":"1338c84dee868a4ab9f0e8839ee0dd71efc32e44"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"bbb690f0e637b7eb85a4b79d6f43f6e277194591","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def __init__(self, extension_manager, log_name):"},{"line_number":27,"context_line":"        self.ext_manager \u003d extension_manager"},{"line_number":28,"context_line":"        self.log \u003d log.getLogger(log_name)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def publish_counters_from_one_pollster(self, ext, manager, context,"},{"line_number":31,"context_line":"                                           *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FRp0%3D","line":28,"in_reply_to":"AAAAM3%2F%2FSMo%3D","updated":"2013-01-30 16:39:37.000000000","message":"Keep LOG a module-level global here, and in the other modules where logging occurs. Don\u0027t use an instance variable configured with log_name (so that argument can be removed from __init__).","commit_id":"1338c84dee868a4ab9f0e8839ee0dd71efc32e44"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"17df8319719c832272284193446096359bb121a5","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"    def __init__(self, extension_manager, log_name):"},{"line_number":27,"context_line":"        self.ext_manager \u003d extension_manager"},{"line_number":28,"context_line":"        self.log \u003d log.getLogger(log_name)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def publish_counters_from_one_pollster(self, ext, manager, context,"},{"line_number":31,"context_line":"                                           *args, **kwargs):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAM3%2F%2FSMo%3D","line":28,"in_reply_to":"AAAAM3%2F%2FTFw%3D","updated":"2013-01-30 10:18:58.000000000","message":"I think understand the potential confusion you point out, but I don\u0027t understand which solution you propose actually.","commit_id":"1338c84dee868a4ab9f0e8839ee0dd71efc32e44"}],"ceilometer/central/manager.py":[{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"f1cd982cfd73013b93885b1d351dff19c445f350","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        )"},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    def periodic_tasks(self, context, raise_on_error\u003dFalse):"},{"line_number":42,"context_line":"        \"\"\"Tasks to be run at a periodic interval.\"\"\""},{"line_number":43,"context_line":"        self.ext_manager.map(self.publish_counters_from_one_pollster,"},{"line_number":44,"context_line":"                             manager\u003dself,"},{"line_number":45,"context_line":"                             context\u003dcontext,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2Fdsg%3D","line":42,"updated":"2013-01-21 16:38:23.000000000","message":"I know this isn\u0027t your revision, but it would be nice to get a meaningful comment in here (what are we doing periodically?)","commit_id":"99b3bdaa236e30e7f970f48151ef6c2a5ae416d1"}],"ceilometer/compute/manager.py":[{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"f1cd982cfd73013b93885b1d351dff19c445f350","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from stevedore import driver"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from ceilometer import agent"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from ceilometer import nova_client"},{"line_number":24,"context_line":"from ceilometer.compute.virt import inspector as virt_inspector"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FdsU%3D","line":21,"updated":"2013-01-21 16:38:23.000000000","message":"white space unnecessary ... and ordering.","commit_id":"99b3bdaa236e30e7f970f48151ef6c2a5ae416d1"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"fc727dc79e15e6598e8c0e52c24b6fc75ff168b2","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from stevedore import driver"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from ceilometer import agent"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from ceilometer import nova_client"},{"line_number":24,"context_line":"from ceilometer.compute.virt import inspector as virt_inspector"},{"line_number":25,"context_line":"from ceilometer.openstack.common import cfg"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FcTk%3D","line":22,"updated":"2013-01-22 13:51:38.000000000","message":"whitespace","commit_id":"9f12943d39ffd4dbe967d2f79235c4c7714baa3f"}],"ceilometer/energy/kwapi.py":[{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"f1cd982cfd73013b93885b1d351dff19c445f350","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from keystoneclient.v2_0 import client as ksclient"},{"line_number":21,"context_line":"from ceilometer import counter"},{"line_number":22,"context_line":"from ceilometer.central import plugin"},{"line_number":23,"context_line":"from ceilometer.openstack.common import cfg"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2FdsE%3D","line":22,"updated":"2013-01-21 16:38:23.000000000","message":"ordering\n\n(mental note ... really need to fix up the doc strings in this file)","commit_id":"99b3bdaa236e30e7f970f48151ef6c2a5ae416d1"},{"author":{"_account_id":688,"name":"Sandy Walsh","email":"sandy.walsh@rackspace.com","username":"sandy-walsh"},"change_message_id":"fc727dc79e15e6598e8c0e52c24b6fc75ff168b2","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import datetime"},{"line_number":18,"context_line":"import requests"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from keystoneclient.v2_0 import client as ksclient"},{"line_number":21,"context_line":"from ceilometer import counter"},{"line_number":22,"context_line":"from ceilometer.central import plugin"},{"line_number":23,"context_line":"from ceilometer.openstack.common import cfg"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FcTg%3D","line":20,"updated":"2013-01-22 13:51:38.000000000","message":"import ordering","commit_id":"9f12943d39ffd4dbe967d2f79235c4c7714baa3f"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"e2e14bec4fe793620b049b233518b7d5f3fd8a13","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import datetime"},{"line_number":18,"context_line":"import requests"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from keystoneclient.v2_0 import client as ksclient"},{"line_number":21,"context_line":"from ceilometer import counter"},{"line_number":22,"context_line":"from ceilometer.central import plugin"},{"line_number":23,"context_line":"from ceilometer.openstack.common import cfg"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FXTs%3D","line":20,"updated":"2013-01-25 13:22:53.000000000","message":"This is an unrelated change, did you mean to include it here?","commit_id":"09fad567e25f9368cebd15f5d51e4babfc3ca00b"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"458d875b8a19351c143dbd3260c399d69562b65a","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import datetime"},{"line_number":18,"context_line":"import requests"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from keystoneclient.v2_0 import client as ksclient"},{"line_number":21,"context_line":"from ceilometer import counter"},{"line_number":22,"context_line":"from ceilometer.central import plugin"},{"line_number":23,"context_line":"from ceilometer.openstack.common import cfg"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAM3%2F%2FXHc%3D","line":20,"in_reply_to":"AAAAM3%2F%2FXTs%3D","updated":"2013-01-25 16:19:27.000000000","message":"No, probably a mistake from my side. I\u0027ll drop it.","commit_id":"09fad567e25f9368cebd15f5d51e4babfc3ca00b"}]}
