)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"06ddb5c9966dc501741d5dcb998a0f68d3b6d84c","unresolved":false,"context_lines":[{"line_number":10,"context_line":"stevedore was assuming a single type of compute monitor: cpu monitors."},{"line_number":11,"context_line":"This patch allows multiple monitor types, namespaced by the directory in"},{"line_number":12,"context_line":"nova/compute/monitors. The NUMA memory bandwidth monitor is the next"},{"line_number":13,"context_line":"monitor namespace to be proposed, and this code sets up that patch"},{"line_number":14,"context_line":"series."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"DocImpact: This patch provides the infrastructure for non-CPU compute"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"da20952f_16122db5","line":13,"updated":"2015-08-26 20:12:35.000000000","message":"Is that patch series up and using this so we can see if it\u0027s working?","commit_id":"c250aca00ba89b6fad86bfaebb3083e9f5c55f3b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2bae07a203225d960bab66110352b44fae5501e6","unresolved":false,"context_lines":[{"line_number":10,"context_line":"stevedore was assuming a single type of compute monitor: cpu monitors."},{"line_number":11,"context_line":"This patch allows multiple monitor types, namespaced by the directory in"},{"line_number":12,"context_line":"nova/compute/monitors. The NUMA memory bandwidth monitor is the next"},{"line_number":13,"context_line":"monitor namespace to be proposed, and this code sets up that patch"},{"line_number":14,"context_line":"series."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"DocImpact: This patch provides the infrastructure for non-CPU compute"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"da20952f_27793994","line":13,"in_reply_to":"da20952f_16122db5","updated":"2015-08-26 20:56:11.000000000","message":"The addition of NUMA memory bandwidth monitor types is already merged:\n\nhttps://review.openstack.org/#/c/198972/9\n\nSudipta has been waiting on this patch in order to rework his patch series that adds the implementation of the NUMA monitors:\n\nhttps://review.openstack.org/#/q/status:open+project:openstack/nova+branch:master+topic:bp/memory-bw,n,z","commit_id":"c250aca00ba89b6fad86bfaebb3083e9f5c55f3b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3b720f092ed2a1c6fe64911157eb5b1fabd0fc23","unresolved":false,"context_lines":[{"line_number":10,"context_line":"stevedore was assuming a single type of compute monitor: cpu monitors."},{"line_number":11,"context_line":"This patch allows multiple monitor types, namespaced by the directory in"},{"line_number":12,"context_line":"nova/compute/monitors. The NUMA memory bandwidth monitor is the next"},{"line_number":13,"context_line":"monitor namespace to be proposed, and this code sets up that patch"},{"line_number":14,"context_line":"series."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"DocImpact: This patch provides the infrastructure for non-CPU compute"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"da20952f_e75ca1ef","line":13,"in_reply_to":"da20952f_27793994","updated":"2015-08-26 21:00:55.000000000","message":"OK, which is -2\u0027ed for feature freeze so I guess this isn\u0027t as much of a priority.","commit_id":"c250aca00ba89b6fad86bfaebb3083e9f5c55f3b"}],"nova/compute/monitors/__init__.py":[{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"2d9c460f15142c83845753bc775f660ed0e1c0b4","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def check_enabled_monitor(self, ext):"},{"line_number":68,"context_line":"        \"\"\"Ensures that only one monitor is specified of any type.\"\"\""},{"line_number":69,"context_line":"        if self.type_monitor_loaded[ext.namespace] is not False:"},{"line_number":70,"context_line":"            msg \u003d _LW(\"Excluding %(namespace)s monitor %(monitor_name)s. \""},{"line_number":71,"context_line":"                      \"Already loaded %(loaded_monitor)s.\")"},{"line_number":72,"context_line":"            msg \u003d msg % {"}],"source_content_type":"text/x-python","patch_set":1,"id":"1a4dcd0f_5915be46","line":69,"updated":"2015-08-05 17:34:19.000000000","message":"I am trying to run this.\n\n dir(ext)\n[\u0027__class__\u0027, \u0027__delattr__\u0027, \u0027__dict__\u0027, \u0027__doc__\u0027, \u0027__format__\u0027, \n\n\u0027__getattribute__\u0027, \u0027__hash__\u0027, \u0027__init__\u0027, \u0027__module__\u0027, \u0027__new__\u0027, \n\n\u0027__reduce__\u0027, \u0027__reduce_ex__\u0027, \u0027__repr__\u0027, \u0027__setattr__\u0027, \u0027__sizeof__\u0027, \u0027__str__\u0027,\n \n\u0027__subclasshook__\u0027, \u0027__weakref__\u0027, \u0027entry_point\u0027, \u0027entry_point_target\u0027, \u0027name\u0027, \u0027obj\u0027, \u0027plugin\u0027]\n\nThe ext instance object doesn\u0027t seem to have a namespace attribute. Am I missing something here?","commit_id":"7387140f228659a3c3ea3ea13fb6a704f879fb25"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"3690e849d476bbb07283a1d6e3e56fd7edf0e2f9","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                    check_func\u003dself.check_enabled_monitor,"},{"line_number":63,"context_line":"                    invoke_args\u003d(resource_tracker,)"},{"line_number":64,"context_line":"            )"},{"line_number":65,"context_line":"            self.monitors \u003d [obj.obj for obj in plugin_mgr]"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def check_enabled_monitor(self, ext):"},{"line_number":68,"context_line":"        \"\"\"Ensures that only one monitor is specified of any type.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_9ea23598","line":65,"updated":"2015-08-06 06:15:03.000000000","message":"This looks like wrong. self.monitors will be override when load each namesapce.","commit_id":"bfdf3b12330ad966887e230d8210d4a8355c5fba"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"41985caeef03ccabf934161b52ad8cce8da4eaf2","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                    check_func\u003dself.check_enabled_monitor,"},{"line_number":63,"context_line":"                    invoke_args\u003d(resource_tracker,)"},{"line_number":64,"context_line":"            )"},{"line_number":65,"context_line":"            self.monitors \u003d [obj.obj for obj in plugin_mgr]"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def check_enabled_monitor(self, ext):"},{"line_number":68,"context_line":"        \"\"\"Ensures that only one monitor is specified of any type.\"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_3b663cbb","line":65,"in_reply_to":"1a4dcd0f_9ea23598","updated":"2015-08-07 15:40:29.000000000","message":"Nice catch... copy/paste issue. will correct shortly.","commit_id":"bfdf3b12330ad966887e230d8210d4a8355c5fba"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"4804d0e7b127039fe4fb6a71b9c9132d90086919","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        cfg_monitors \u003d [\u0027nova.compute.monitors.\u0027 + cfg"},{"line_number":100,"context_line":"                        if \u0027nova.compute.monitors.\u0027 not in cfg else cfg"},{"line_number":101,"context_line":"                        for cfg in cfg_monitors]"},{"line_number":102,"context_line":"        if namespace + \u0027.\u0027 + ext.name in cfg_monitors:"},{"line_number":103,"context_line":"            self.type_monitor_loaded[namespace] \u003d ext.name"},{"line_number":104,"context_line":"            return True"},{"line_number":105,"context_line":"        msg \u003d _LW(\"Excluding %(namespace)s monitor %(monitor_name)s. \""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_00a9fa7a","line":102,"updated":"2015-08-05 18:05:50.000000000","message":"Is it really required to add the ext.name here?\nIn that case, the CONF file should contain:\n\ncompute_monitors\u003dnova.compute.monitors.cpu.virt_driver \n\nWill it make more sense to have it till the cpu without the virt_driver?","commit_id":"bfdf3b12330ad966887e230d8210d4a8355c5fba"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"f3ef37afc2f8891180459d89460000d9d8cea321","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        cfg_monitors \u003d [\u0027nova.compute.monitors.\u0027 + cfg"},{"line_number":100,"context_line":"                        if \u0027nova.compute.monitors.\u0027 not in cfg else cfg"},{"line_number":101,"context_line":"                        for cfg in cfg_monitors]"},{"line_number":102,"context_line":"        if namespace + \u0027.\u0027 + ext.name in cfg_monitors:"},{"line_number":103,"context_line":"            self.type_monitor_loaded[namespace] \u003d ext.name"},{"line_number":104,"context_line":"            return True"},{"line_number":105,"context_line":"        msg \u003d _LW(\"Excluding %(namespace)s monitor %(monitor_name)s. \""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_c0c312ec","line":102,"in_reply_to":"1a4dcd0f_00a9fa7a","updated":"2015-08-05 18:11:20.000000000","message":"As mentioned on IRC, we need to keep backwards-compatibility with the CONF.compute_monitors configuration option format... :(","commit_id":"bfdf3b12330ad966887e230d8210d4a8355c5fba"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"4804d0e7b127039fe4fb6a71b9c9132d90086919","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        msg \u003d _LW(\"Excluding %(namespace)s monitor %(monitor_name)s. \""},{"line_number":106,"context_line":"                  \"Not in the list of enabled monitors \""},{"line_number":107,"context_line":"                  \"(CONF.compute_monitors).\")"},{"line_number":108,"context_line":"        msg \u003d msg % {"},{"line_number":109,"context_line":"            \u0027namespace\u0027: namespace,"},{"line_number":110,"context_line":"            \u0027monitor_name\u0027: ext.name,"},{"line_number":111,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_7d3e65db","line":108,"updated":"2015-08-05 18:05:50.000000000","message":"should we better the log message here?\nIt seems like we would print:\n\nExcluding nova.compute.monitors.cpu monitor virt_driver. \nNot in the list of enabled monitors (CONF.compute_monitors).\n\n(something like that). Instead we could just say - include the cpu_monitor namespace in the log?","commit_id":"bfdf3b12330ad966887e230d8210d4a8355c5fba"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"a91908be8454a09badf4835c31c1e4323a323673","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                    check_func\u003dself.check_enabled_monitor,"},{"line_number":64,"context_line":"                    invoke_args\u003d(resource_tracker,)"},{"line_number":65,"context_line":"            )"},{"line_number":66,"context_line":"            self.monitors +\u003d [obj.obj for obj in plugin_mgr]"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def check_enabled_monitor(self, ext):"},{"line_number":69,"context_line":"        \"\"\"Ensures that only one monitor is specified of any type.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"1a4dcd0f_cdb0c7de","line":66,"updated":"2015-08-13 13:15:09.000000000","message":"nit, this will be better: [ext.obj for ext in plugin_mgr]","commit_id":"97c1a1a10c7f213f487893534987ff8fb16e6e72"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"29d98913ce3ee852e633603b9b29c51e6c5554d4","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                    check_func\u003dself.check_enabled_monitor,"},{"line_number":64,"context_line":"                    invoke_args\u003d(resource_tracker,)"},{"line_number":65,"context_line":"            )"},{"line_number":66,"context_line":"            self.monitors +\u003d [obj.obj for obj in plugin_mgr]"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def check_enabled_monitor(self, ext):"},{"line_number":69,"context_line":"        \"\"\"Ensures that only one monitor is specified of any type.\"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa1b9901_4f1b7873","line":66,"in_reply_to":"1a4dcd0f_cdb0c7de","updated":"2015-08-20 14:55:18.000000000","message":"Done","commit_id":"97c1a1a10c7f213f487893534987ff8fb16e6e72"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"d04853eafe65cfd265e7b8871017a58625b5b608","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                    check_func\u003dself.check_enabled_monitor,"},{"line_number":69,"context_line":"                    invoke_args\u003d(resource_tracker,)"},{"line_number":70,"context_line":"            )"},{"line_number":71,"context_line":"            self.monitors +\u003d [obj.ext for ext in plugin_mgr]"},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"    def check_enabled_monitor(self, ext):"},{"line_number":74,"context_line":"        \"\"\"Ensures that only one monitor is specified of any type.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa1b9901_ca23f656","line":71,"updated":"2015-08-20 15:03:13.000000000","message":"this should be ext.obj","commit_id":"cf34e6339deff8c7d2fde34446d4d30360f88a6e"},{"author":{"_account_id":9775,"name":"Sudipta Biswas","email":"sbiswas7@in.ibm.com","username":"sudswas"},"change_message_id":"86c90f413a566ba9ccdc185336b2c209a7640d06","unresolved":false,"context_lines":[{"line_number":41,"context_line":"                     \u0027An example value that would enable both the CPU and \u0027"},{"line_number":42,"context_line":"                     \u0027NUMA memory bandwidth monitors that used the virt \u0027"},{"line_number":43,"context_line":"                     \u0027driver variant: \u0027"},{"line_number":44,"context_line":"                     \u0027[\"cpu.virt_driver\", \"numa_mem_bw.virt_driver\"]\u0027,"},{"line_number":45,"context_line":"    ]"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"CONF \u003d cfg.CONF"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa1b9901_af1b2680","line":44,"updated":"2015-08-20 18:55:33.000000000","message":"The closing bracket is missing?","commit_id":"db05aa519cd3956cf85b8d55ac33e323b9f6a0a3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"06ddb5c9966dc501741d5dcb998a0f68d3b6d84c","unresolved":false,"context_lines":[{"line_number":35,"context_line":"                default\u003d[],"},{"line_number":36,"context_line":"                help\u003d\u0027A list of monitors that can be used for getting \u0027"},{"line_number":37,"context_line":"                     \u0027compute metrics. You can use the alias/name from \u0027"},{"line_number":38,"context_line":"                     \u0027the setuptools entry points for nova.compute.monitors.* \u0027"},{"line_number":39,"context_line":"                     \u0027namespaces. If no namespace is supplied, the \"cpu.\" \u0027"},{"line_number":40,"context_line":"                     \u0027namespace is assumed for backwards-compatibility. \u0027"},{"line_number":41,"context_line":"                     \u0027An example value that would enable both the CPU and \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_d6591590","line":38,"updated":"2015-08-26 20:12:35.000000000","message":"For reviewer reference:\n\nhttp://git.openstack.org/cgit/openstack/nova/tree/setup.cfg#n41","commit_id":"c250aca00ba89b6fad86bfaebb3083e9f5c55f3b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"06ddb5c9966dc501741d5dcb998a0f68d3b6d84c","unresolved":false,"context_lines":[{"line_number":51,"context_line":""},{"line_number":52,"context_line":"class MonitorHandler(object):"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    NAMESPACES \u003d ["},{"line_number":55,"context_line":"        \u0027nova.compute.monitors.cpu\u0027,"},{"line_number":56,"context_line":"    ]"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_36f3b175","line":54,"updated":"2015-08-26 20:12:35.000000000","message":"nit: you could make this a tuple so it\u0027s immutable.","commit_id":"c250aca00ba89b6fad86bfaebb3083e9f5c55f3b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"06ddb5c9966dc501741d5dcb998a0f68d3b6d84c","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        ept \u003d ext.entry_point_target"},{"line_number":80,"context_line":"        ept_parts \u003d ept.split(\u0027:\u0027)"},{"line_number":81,"context_line":"        namespace_parts \u003d ept_parts[0].split(\u0027.\u0027)"},{"line_number":82,"context_line":"        namespace \u003d \u0027.\u0027.join(namespace_parts[0:-1])"},{"line_number":83,"context_line":"        if self.type_monitor_loaded[namespace] is not False:"},{"line_number":84,"context_line":"            msg \u003d _LW(\"Excluding %(namespace)s monitor %(monitor_name)s. \""},{"line_number":85,"context_line":"                      \"Already loaded %(loaded_monitor)s.\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_d1083f2b","line":82,"updated":"2015-08-26 20:12:35.000000000","message":"This is all very fancy pants. :)","commit_id":"c250aca00ba89b6fad86bfaebb3083e9f5c55f3b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3b720f092ed2a1c6fe64911157eb5b1fabd0fc23","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        ept \u003d ext.entry_point_target"},{"line_number":80,"context_line":"        ept_parts \u003d ept.split(\u0027:\u0027)"},{"line_number":81,"context_line":"        namespace_parts \u003d ept_parts[0].split(\u0027.\u0027)"},{"line_number":82,"context_line":"        namespace \u003d \u0027.\u0027.join(namespace_parts[0:-1])"},{"line_number":83,"context_line":"        if self.type_monitor_loaded[namespace] is not False:"},{"line_number":84,"context_line":"            msg \u003d _LW(\"Excluding %(namespace)s monitor %(monitor_name)s. \""},{"line_number":85,"context_line":"                      \"Already loaded %(loaded_monitor)s.\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_27d85953","line":82,"in_reply_to":"da20952f_d1083f2b","updated":"2015-08-26 21:00:55.000000000","message":"BTW, my usage of \u0027fancy pants\u0027 doesn\u0027t mean this needs to be changed in anyway, it\u0027s just that I had to plug it into a python console to test it out line by line with test data to see that it was working correctly.","commit_id":"c250aca00ba89b6fad86bfaebb3083e9f5c55f3b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"06ddb5c9966dc501741d5dcb998a0f68d3b6d84c","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        # older way of specifying monitors, we first loop through any values in"},{"line_number":98,"context_line":"        # CONF.compute_monitors and put any non-namespace\u0027d values into the"},{"line_number":99,"context_line":"        # \u0027cpu\u0027 namespace."},{"line_number":100,"context_line":"        cfg_monitors \u003d [\u0027cpu.\u0027 + cfg if \u0027.\u0027 not in cfg else cfg"},{"line_number":101,"context_line":"                        for cfg in CONF.compute_monitors]"},{"line_number":102,"context_line":"        # NOTE(jaypipes): Append \u0027nova.compute.monitors.\u0027 to any monitor value"},{"line_number":103,"context_line":"        # that doesn\u0027t have it to allow CONF.compute_monitors to use shortened"}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_715293df","line":100,"updated":"2015-08-26 20:12:35.000000000","message":"Rather than cpu as the namespace, shouldn\u0027t this actually be \u0027nova.compute.monitors.cpu\u0027 since that\u0027s what\u0027s pre-loaded into self.type_monitor_loaded?\n\nOr, I guess that\u0027s handled in the next loop...","commit_id":"c250aca00ba89b6fad86bfaebb3083e9f5c55f3b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2bae07a203225d960bab66110352b44fae5501e6","unresolved":false,"context_lines":[{"line_number":97,"context_line":"        # older way of specifying monitors, we first loop through any values in"},{"line_number":98,"context_line":"        # CONF.compute_monitors and put any non-namespace\u0027d values into the"},{"line_number":99,"context_line":"        # \u0027cpu\u0027 namespace."},{"line_number":100,"context_line":"        cfg_monitors \u003d [\u0027cpu.\u0027 + cfg if \u0027.\u0027 not in cfg else cfg"},{"line_number":101,"context_line":"                        for cfg in CONF.compute_monitors]"},{"line_number":102,"context_line":"        # NOTE(jaypipes): Append \u0027nova.compute.monitors.\u0027 to any monitor value"},{"line_number":103,"context_line":"        # that doesn\u0027t have it to allow CONF.compute_monitors to use shortened"}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_47b9cd2d","line":100,"in_reply_to":"da20952f_715293df","updated":"2015-08-26 20:56:11.000000000","message":"Yeah, handled below....","commit_id":"c250aca00ba89b6fad86bfaebb3083e9f5c55f3b"}],"nova/tests/unit/compute/monitors/test_monitors.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"06ddb5c9966dc501741d5dcb998a0f68d3b6d84c","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        ext_cpu_mon2 \u003d FakeExt(\u0027nova.compute.monitors.cpu.virt_driver:Monitor\u0027,"},{"line_number":40,"context_line":"                               \u0027mon2\u0027)"},{"line_number":41,"context_line":"        self.assertTrue(handler.check_enabled_monitor(ext_cpu_mon1))"},{"line_number":42,"context_line":"        self.assertFalse(handler.check_enabled_monitor(ext_cpu_mon2))"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        # We check to ensure that the auto-prefixing of the CPU"},{"line_number":45,"context_line":"        # namespace is handled properly..."}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_11d3173a","line":42,"updated":"2015-08-26 20:12:35.000000000","message":"mon2 is skipped since we\u0027ve already loaded mon1 and those are in the same namespace (might be a nice comment to have in the tests).","commit_id":"c250aca00ba89b6fad86bfaebb3083e9f5c55f3b"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"2bae07a203225d960bab66110352b44fae5501e6","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        ext_cpu_mon2 \u003d FakeExt(\u0027nova.compute.monitors.cpu.virt_driver:Monitor\u0027,"},{"line_number":40,"context_line":"                               \u0027mon2\u0027)"},{"line_number":41,"context_line":"        self.assertTrue(handler.check_enabled_monitor(ext_cpu_mon1))"},{"line_number":42,"context_line":"        self.assertFalse(handler.check_enabled_monitor(ext_cpu_mon2))"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        # We check to ensure that the auto-prefixing of the CPU"},{"line_number":45,"context_line":"        # namespace is handled properly..."}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_a79309a3","line":42,"in_reply_to":"da20952f_11d3173a","updated":"2015-08-26 20:56:11.000000000","message":"Comment is on line 34:\n\n # We check to ensure only one CPU monitor is loaded...","commit_id":"c250aca00ba89b6fad86bfaebb3083e9f5c55f3b"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3b720f092ed2a1c6fe64911157eb5b1fabd0fc23","unresolved":false,"context_lines":[{"line_number":39,"context_line":"        ext_cpu_mon2 \u003d FakeExt(\u0027nova.compute.monitors.cpu.virt_driver:Monitor\u0027,"},{"line_number":40,"context_line":"                               \u0027mon2\u0027)"},{"line_number":41,"context_line":"        self.assertTrue(handler.check_enabled_monitor(ext_cpu_mon1))"},{"line_number":42,"context_line":"        self.assertFalse(handler.check_enabled_monitor(ext_cpu_mon2))"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"        # We check to ensure that the auto-prefixing of the CPU"},{"line_number":45,"context_line":"        # namespace is handled properly..."}],"source_content_type":"text/x-python","patch_set":6,"id":"da20952f_c70e3de5","line":42,"in_reply_to":"da20952f_a79309a3","updated":"2015-08-26 21:00:55.000000000","message":"touche","commit_id":"c250aca00ba89b6fad86bfaebb3083e9f5c55f3b"}]}
