)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a84034132c08d21a0f8656a1d680c8a953383efc","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"set status as None when one perf event is missed by libvirt"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The change in libvift side will be better for bug/1670948, and the"},{"line_number":10,"context_line":"fix has been submitted into libvirt community. But it will take some"},{"line_number":11,"context_line":"time to merge it, so this patch is just workaround."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3a1ff146_4a03f7b8","line":9,"range":{"start_line":9,"start_character":14,"end_line":9,"end_character":21},"updated":"2017-03-14 14:34:58.000000000","message":"libvirt","commit_id":"bad653138aabb0f5919e52b86c5a8e487a1bc41c"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a84034132c08d21a0f8656a1d680c8a953383efc","unresolved":false,"context_lines":[{"line_number":10,"context_line":"fix has been submitted into libvirt community. But it will take some"},{"line_number":11,"context_line":"time to merge it, so this patch is just workaround."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"The root casue of this bug is that when one perf event is not enabled"},{"line_number":14,"context_line":"in Nova configuration libvirt won\u0027t report anything about the event."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Change-Id: I12388248649a0ecba643da46ffe99e17fafaaca2"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"3a1ff146_8a2b2f33","line":13,"range":{"start_line":13,"start_character":9,"end_line":13,"end_character":14},"updated":"2017-03-14 14:34:58.000000000","message":"cause","commit_id":"bad653138aabb0f5919e52b86c5a8e487a1bc41c"}],"ceilometer/compute/pollsters/perf.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"70956c5638a735c8d506766ee26feac1a81d77b1","unresolved":false,"context_lines":[{"line_number":59,"context_line":"        _volume \u003d getattr(c_data, _element)"},{"line_number":60,"context_line":"        if _volume is None:"},{"line_number":61,"context_line":"            msg \u003d _LE(\u0027Failed to inspect perf events of %(instance_uuid)s, \u0027"},{"line_number":62,"context_line":"                      \u0027can not get info from libvirt.\u0027) % {"},{"line_number":63,"context_line":"                \u0027instance_uuid\u0027: instance.id}"},{"line_number":64,"context_line":"            raise virt_inspector.NoDataException(msg)"},{"line_number":65,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"3a1ff146_54b60d8b","line":62,"range":{"start_line":62,"start_character":45,"end_line":62,"end_character":52},"updated":"2017-03-15 12:44:03.000000000","message":"s/libvirt/hypervisor/\n\nsince this could be used by other hypervisor (probably not but i don\u0027t know)","commit_id":"181c97a2795204c1c7827853c514e959eb69cb77"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"eabe241bcf230af06b4db8b9857fa5d6935a44d9","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        if _volume is None:"},{"line_number":61,"context_line":"            msg \u003d _LE(\u0027Failed to inspect perf events of %(instance_uuid)s, \u0027"},{"line_number":62,"context_line":"                      \u0027can not get info from libvirt.\u0027) % {"},{"line_number":63,"context_line":"                \u0027instance_uuid\u0027: instance.id}"},{"line_number":64,"context_line":"            raise virt_inspector.NoDataException(msg)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        \"\"\"Total / local Pollster and return one Sample\"\"\""},{"line_number":67,"context_line":"        return [util.make_sample_from_instance("}],"source_content_type":"text/x-python","patch_set":7,"id":"3a1ff146_0f939b5c","line":64,"range":{"start_line":63,"start_character":45,"end_line":64,"end_character":34},"updated":"2017-03-15 15:19:31.000000000","message":"Not really the fault of this patch but that look buggy, if one instance have perf disabled and another enabled, this will disable the whole pollster.","commit_id":"181c97a2795204c1c7827853c514e959eb69cb77"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"cd32515cbbb9b8ae233a918e558481cbe4a6f99b","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        if _volume is None:"},{"line_number":61,"context_line":"            msg \u003d _LE(\u0027Failed to inspect perf events of %(instance_uuid)s, \u0027"},{"line_number":62,"context_line":"                      \u0027can not get info from libvirt.\u0027) % {"},{"line_number":63,"context_line":"                \u0027instance_uuid\u0027: instance.id}"},{"line_number":64,"context_line":"            raise virt_inspector.NoDataException(msg)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        \"\"\"Total / local Pollster and return one Sample\"\"\""},{"line_number":67,"context_line":"        return [util.make_sample_from_instance("}],"source_content_type":"text/x-python","patch_set":7,"id":"3a1ff146_cf17c34f","line":64,"range":{"start_line":63,"start_character":45,"end_line":64,"end_character":34},"in_reply_to":"3a1ff146_0f939b5c","updated":"2017-03-15 15:20:30.000000000","message":"For memory pollster we raise virt_inspector.InstanceNoDataException and log a warning in such case.","commit_id":"181c97a2795204c1c7827853c514e959eb69cb77"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"ef66f01a21f6724c453f06e72f7782aafd2507b1","unresolved":false,"context_lines":[{"line_number":60,"context_line":"        if _volume is None:"},{"line_number":61,"context_line":"            msg \u003d _LE(\u0027Failed to inspect perf events of %(instance_uuid)s, \u0027"},{"line_number":62,"context_line":"                      \u0027can not get info from libvirt.\u0027) % {"},{"line_number":63,"context_line":"                \u0027instance_uuid\u0027: instance.id}"},{"line_number":64,"context_line":"            raise virt_inspector.NoDataException(msg)"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"        \"\"\"Total / local Pollster and return one Sample\"\"\""},{"line_number":67,"context_line":"        return [util.make_sample_from_instance("}],"source_content_type":"text/x-python","patch_set":7,"id":"3a1ff146_3a7fb0ab","line":64,"range":{"start_line":63,"start_character":45,"end_line":64,"end_character":34},"in_reply_to":"3a1ff146_cf17c34f","updated":"2017-03-15 16:40:18.000000000","message":"I have proposed this: https://review.openstack.org/#/c/445976/ to fix this.","commit_id":"181c97a2795204c1c7827853c514e959eb69cb77"}],"ceilometer/compute/virt/libvirt/inspector.py":[{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"70fcf92a3ac46a9694e80418072f81cf69e917ea","unresolved":false,"context_lines":[{"line_number":269,"context_line":"                                if \"perf.cache_references\" in perf else 0)"},{"line_number":270,"context_line":"            cache_misses \u003d (perf[\"perf.cache_misses\"]"},{"line_number":271,"context_line":"                            if \"perf.cache_misses\" in perf else 0)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"            return virt_inspector.PerfEventsStats("},{"line_number":274,"context_line":"                cpu_cycles\u003dcpu_cycles,"},{"line_number":275,"context_line":"                instructions\u003dinstructions,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_c60f692c","line":272,"updated":"2017-03-09 08:11:12.000000000","message":"If we do this, KeyError will not be raised anymore, and deployed will not see that libvirt is  outdated or nova not properly configured.","commit_id":"e1be997474ad61918d0186181a0853fc7ab39322"},{"author":{"_account_id":9581,"name":"Ren Qiaowei","email":"qiaowei.ren@intel.com","username":"qiaowei"},"change_message_id":"68ea912768046a8e7ee6d6fee9d8dcc4361b3390","unresolved":false,"context_lines":[{"line_number":269,"context_line":"                                if \"perf.cache_references\" in perf else 0)"},{"line_number":270,"context_line":"            cache_misses \u003d (perf[\"perf.cache_misses\"]"},{"line_number":271,"context_line":"                            if \"perf.cache_misses\" in perf else 0)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"            return virt_inspector.PerfEventsStats("},{"line_number":274,"context_line":"                cpu_cycles\u003dcpu_cycles,"},{"line_number":275,"context_line":"                instructions\u003dinstructions,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_d99b9f16","line":272,"in_reply_to":"9a30ddce_0be33d34","updated":"2017-03-10 01:21:43.000000000","message":"Sure. \u0027None\u0027 will be better. Thanks!","commit_id":"e1be997474ad61918d0186181a0853fc7ab39322"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"a82cd10184b65420be5728b8bb515fc1aac401a2","unresolved":false,"context_lines":[{"line_number":269,"context_line":"                                if \"perf.cache_references\" in perf else 0)"},{"line_number":270,"context_line":"            cache_misses \u003d (perf[\"perf.cache_misses\"]"},{"line_number":271,"context_line":"                            if \"perf.cache_misses\" in perf else 0)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"            return virt_inspector.PerfEventsStats("},{"line_number":274,"context_line":"                cpu_cycles\u003dcpu_cycles,"},{"line_number":275,"context_line":"                instructions\u003dinstructions,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_eb1b4971","line":272,"in_reply_to":"9a30ddce_6684fdd3","updated":"2017-03-09 13:34:14.000000000","message":"Putting 0 is not a solution... how do we differentiate a real and a false 0 ? We should just not generate samples if data does not exists.","commit_id":"e1be997474ad61918d0186181a0853fc7ab39322"},{"author":{"_account_id":9581,"name":"Ren Qiaowei","email":"qiaowei.ren@intel.com","username":"qiaowei"},"change_message_id":"6fbb82796c43af43b686991be134c3275adad9ff","unresolved":false,"context_lines":[{"line_number":269,"context_line":"                                if \"perf.cache_references\" in perf else 0)"},{"line_number":270,"context_line":"            cache_misses \u003d (perf[\"perf.cache_misses\"]"},{"line_number":271,"context_line":"                            if \"perf.cache_misses\" in perf else 0)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"            return virt_inspector.PerfEventsStats("},{"line_number":274,"context_line":"                cpu_cycles\u003dcpu_cycles,"},{"line_number":275,"context_line":"                instructions\u003dinstructions,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_6684fdd3","line":272,"in_reply_to":"9a30ddce_c60f692c","updated":"2017-03-09 08:27:33.000000000","message":"it is just workaround before libvirt fix is merged. And with this fix, KeyError will not be rased only for these four Keys.\nIf without this patch, we have to ask every user to enable all these four events in Nova config.","commit_id":"e1be997474ad61918d0186181a0853fc7ab39322"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"d0fc915f51bfaec78ad78a3ee3835d0f770ee0ef","unresolved":false,"context_lines":[{"line_number":269,"context_line":"                                if \"perf.cache_references\" in perf else 0)"},{"line_number":270,"context_line":"            cache_misses \u003d (perf[\"perf.cache_misses\"]"},{"line_number":271,"context_line":"                            if \"perf.cache_misses\" in perf else 0)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"            return virt_inspector.PerfEventsStats("},{"line_number":274,"context_line":"                cpu_cycles\u003dcpu_cycles,"},{"line_number":275,"context_line":"                instructions\u003dinstructions,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a30ddce_0be33d34","line":272,"in_reply_to":"9a30ddce_eb1b4971","updated":"2017-03-09 13:37:19.000000000","message":"I would suggest to put None and don\u0027t create samples in perf.py if volume is None.","commit_id":"e1be997474ad61918d0186181a0853fc7ab39322"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"f75b7707d901a75320451b8ec45bc9ad0cee6c78","unresolved":false,"context_lines":[{"line_number":261,"context_line":"            stats \u003d self.connection.domainListGetStats("},{"line_number":262,"context_line":"                [domain], libvirt.VIR_DOMAIN_STATS_PERF)"},{"line_number":263,"context_line":"            perf \u003d stats[0][1]"},{"line_number":264,"context_line":"            cpu_cycles \u003d (perf[\"perf.cpu_cycles\"]"},{"line_number":265,"context_line":"                          if \"perf.cpu_cycles\" in perf else None)"},{"line_number":266,"context_line":"            instructions \u003d (perf[\"perf.instructions\"]"},{"line_number":267,"context_line":"                            if \"perf.instructions\" in perf else None)"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a22e58a_bfcbc71d","line":264,"updated":"2017-03-14 09:00:28.000000000","message":"perf.get(\"perf.cpu_cycles\") is more readable and return None when the key doesn\u0027t exists.","commit_id":"bad653138aabb0f5919e52b86c5a8e487a1bc41c"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"f75b7707d901a75320451b8ec45bc9ad0cee6c78","unresolved":false,"context_lines":[{"line_number":278,"context_line":"            # NOTE(sileht): KeyError if for libvirt \u003e\u003d2.0.0,\u003c2.3.0, the perf"},{"line_number":279,"context_line":"            # subsystem ws existing but not  these attributes"},{"line_number":280,"context_line":"            # https://github.com/libvirt/libvirt/commit/bae660869de0612bee2a740083fb494c27e3f80c"},{"line_number":281,"context_line":"        except (AttributeError, KeyError) as e:"},{"line_number":282,"context_line":"            msg \u003d _LE(\u0027Perf is not supported by current version of libvirt, \u0027"},{"line_number":283,"context_line":"                      \u0027and failed to inspect perf events of \u0027"},{"line_number":284,"context_line":"                      \u0027%(instance_uuid)s, can not get info from libvirt: \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a22e58a_ff5e1f75","line":281,"updated":"2017-03-14 09:00:28.000000000","message":"Can you remove the comment and the KeyError","commit_id":"bad653138aabb0f5919e52b86c5a8e487a1bc41c"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"7719ee83b95eb0787d3a8087a46e4d971ae193af","unresolved":false,"context_lines":[{"line_number":269,"context_line":"            # NOTE(sileht): KeyError if for libvirt \u003e\u003d2.0.0,\u003c2.3.0, the perf"},{"line_number":270,"context_line":"            # subsystem ws existing but not  these attributes"},{"line_number":271,"context_line":"            # https://github.com/libvirt/libvirt/commit/bae660869de0612bee2a740083fb494c27e3f80c"},{"line_number":272,"context_line":"        except (AttributeError, KeyError) as e:"},{"line_number":273,"context_line":"            msg \u003d _LE(\u0027Perf is not supported by current version of libvirt, \u0027"},{"line_number":274,"context_line":"                      \u0027and failed to inspect perf events of \u0027"},{"line_number":275,"context_line":"                      \u0027%(instance_uuid)s, can not get info from libvirt: \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a1ff146_ceac3bf0","side":"PARENT","line":272,"updated":"2017-03-15 07:19:20.000000000","message":"We need to keep AttributeError domainListGetStats is supported only since 1.2.10. But nova minimum version is 1.2.9.","commit_id":"d3caa245655105af49885d99076fb945d0918591"},{"author":{"_account_id":9581,"name":"Ren Qiaowei","email":"qiaowei.ren@intel.com","username":"qiaowei"},"change_message_id":"fc698fbd3eda6040b6277064a02bb60b32cfa34f","unresolved":false,"context_lines":[{"line_number":269,"context_line":"            # NOTE(sileht): KeyError if for libvirt \u003e\u003d2.0.0,\u003c2.3.0, the perf"},{"line_number":270,"context_line":"            # subsystem ws existing but not  these attributes"},{"line_number":271,"context_line":"            # https://github.com/libvirt/libvirt/commit/bae660869de0612bee2a740083fb494c27e3f80c"},{"line_number":272,"context_line":"        except (AttributeError, KeyError) as e:"},{"line_number":273,"context_line":"            msg \u003d _LE(\u0027Perf is not supported by current version of libvirt, \u0027"},{"line_number":274,"context_line":"                      \u0027and failed to inspect perf events of \u0027"},{"line_number":275,"context_line":"                      \u0027%(instance_uuid)s, can not get info from libvirt: \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a1ff146_71fec66c","side":"PARENT","line":272,"in_reply_to":"3a1ff146_ceac3bf0","updated":"2017-03-15 08:01:02.000000000","message":"Done","commit_id":"d3caa245655105af49885d99076fb945d0918591"}],"ceilometer/tests/unit/compute/virt/libvirt/test_inspector.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a84034132c08d21a0f8656a1d680c8a953383efc","unresolved":false,"context_lines":[{"line_number":459,"context_line":"                                       return_value\u003dfake_stats):"},{"line_number":460,"context_line":"                    pe \u003d self.inspector.inspect_perf_events(self.instance)"},{"line_number":461,"context_line":"                    self.assertEqual(7259361, pe.cpu_cycles)"},{"line_number":462,"context_line":"                    self.assertEqual(None, pe.instructions)"},{"line_number":463,"context_line":"                    self.assertEqual(74184, pe.cache_references)"},{"line_number":464,"context_line":"                    self.assertEqual(16737, pe.cache_misses)"},{"line_number":465,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"3a1ff146_4ab9372e","line":462,"range":{"start_line":462,"start_character":25,"end_line":462,"end_character":36},"updated":"2017-03-14 14:34:58.000000000","message":"assertIsNone","commit_id":"bad653138aabb0f5919e52b86c5a8e487a1bc41c"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a84034132c08d21a0f8656a1d680c8a953383efc","unresolved":false,"context_lines":[{"line_number":474,"context_line":"                with mock.patch.object(connection, \u0027domainListGetStats\u0027,"},{"line_number":475,"context_line":"                                       return_value\u003dfake_stats):"},{"line_number":476,"context_line":"                    pe \u003d self.inspector.inspect_perf_events(self.instance)"},{"line_number":477,"context_line":"                    self.assertEqual(None, pe.cpu_cycles)"},{"line_number":478,"context_line":"                    self.assertEqual(None, pe.instructions)"},{"line_number":479,"context_line":"                    self.assertEqual(None, pe.cache_references)"},{"line_number":480,"context_line":"                    self.assertEqual(None, pe.cache_misses)"}],"source_content_type":"text/x-python","patch_set":5,"id":"3a1ff146_2a65dbe0","line":477,"range":{"start_line":477,"start_character":25,"end_line":477,"end_character":36},"updated":"2017-03-14 14:34:58.000000000","message":"assertIsNone","commit_id":"bad653138aabb0f5919e52b86c5a8e487a1bc41c"}]}
