)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"20c8488b3c335206119ade3905ec287b1d492a30","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Shuangtai Tian \u003cshuangtai.tian@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-08-20 16:30:30 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Ceilometer Host Monitoring depened on UBS"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Handle the messages sent by nova notifier,depened on the"},{"line_number":10,"context_line":"patch https://review.openstack.org/#/c/35767/"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAARn%2F%2F6w4%3D","line":7,"updated":"2013-08-20 08:54:31.000000000","message":"typo?","commit_id":"1a3e8a989dc5b5481d38ae483efe5c9b11feb9a8"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"9c4d61ba392e2f7a1e4cb8ea0de856f074ec5074","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Shuangtai Tian \u003cshuangtai.tian@intel.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-08-20 16:30:30 +0800"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Ceilometer Host Monitoring depened on UBS"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Handle the messages sent by nova notifier,depened on the"},{"line_number":10,"context_line":"patch https://review.openstack.org/#/c/35767/"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAARn%2F%2F2qE%3D","line":7,"in_reply_to":"AAAARn%2F%2F6w4%3D","updated":"2013-08-21 05:51:36.000000000","message":"Done","commit_id":"1a3e8a989dc5b5481d38ae483efe5c9b11feb9a8"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"20c8488b3c335206119ade3905ec287b1d492a30","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Ceilometer Host Monitoring depened on UBS"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Handle the messages sent by nova notifier,depened on the"},{"line_number":10,"context_line":"patch https://review.openstack.org/#/c/35767/"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I6f54ef18035c437370360bbaff6d71666d0323fe"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAARn%2F%2F6wg%3D","line":9,"updated":"2013-08-20 08:54:31.000000000","message":"typo?","commit_id":"1a3e8a989dc5b5481d38ae483efe5c9b11feb9a8"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"9c4d61ba392e2f7a1e4cb8ea0de856f074ec5074","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Ceilometer Host Monitoring depened on UBS"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Handle the messages sent by nova notifier,depened on the"},{"line_number":10,"context_line":"patch https://review.openstack.org/#/c/35767/"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I6f54ef18035c437370360bbaff6d71666d0323fe"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAARn%2F%2F2p0%3D","line":9,"in_reply_to":"AAAARn%2F%2F6wg%3D","updated":"2013-08-21 05:51:36.000000000","message":"Done","commit_id":"1a3e8a989dc5b5481d38ae483efe5c9b11feb9a8"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"a506af1cfb5699fd72ca57c3808bba308ea6944a","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Nova compute gets metrics from plugins and notifies the messages."},{"line_number":10,"context_line":"Ceilometer can use some metrics."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Depened on the patch https://review.openstack.org/#/c/35767/"},{"line_number":13,"context_line":"Nova blueprint utilization-aware-scheduling and"},{"line_number":14,"context_line":"the blueprint generic-host-state-for-scheduler."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAASX%2F%2F9FI%3D","line":12,"updated":"2013-08-23 08:42:53.000000000","message":"\"Depends\"","commit_id":"f75022b9ea1728b4cc4367599fe92a076109e594"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"fcdfbd6b11d96d602911f949b44ceff2a7dd4837","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Nova compute gets metrics from plugins and notifies the messages."},{"line_number":10,"context_line":"Ceilometer can use some metrics."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Depened on the patch https://review.openstack.org/#/c/35767/"},{"line_number":13,"context_line":"Nova blueprint utilization-aware-scheduling and"},{"line_number":14,"context_line":"the blueprint generic-host-state-for-scheduler."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"AAAASX%2F%2F3Ho%3D","line":12,"in_reply_to":"AAAASX%2F%2F9FI%3D","updated":"2013-08-26 04:52:18.000000000","message":"Done","commit_id":"f75022b9ea1728b4cc4367599fe92a076109e594"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"d6b50e88dc195e5bff5e916c29338001af692f27","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Handle the metrics sent by nova notifier"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The UBS code was merged into Nova code, Now compute can get metrics"},{"line_number":10,"context_line":"from monitors and notify the messages to message bus. So, add listeners"},{"line_number":11,"context_line":"to handle the metrics in ceilometer."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"AAAATn%2F9Xqg%3D","line":9,"updated":"2013-12-12 06:13:42.000000000","message":"Delete the part before \u0027,\u0027\n\ns/Now compute/Now nova compute node/","commit_id":"deb69a2f5fd442e6fbc6fef7c011fce96db1d86a"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"d6b50e88dc195e5bff5e916c29338001af692f27","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Handle the metrics sent by nova notifier"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The UBS code was merged into Nova code, Now compute can get metrics"},{"line_number":10,"context_line":"from monitors and notify the messages to message bus. So, add listeners"},{"line_number":11,"context_line":"to handle the metrics in ceilometer."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Nova blueprint utilization-aware-scheduling"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"AAAATn%2F9XtM%3D","line":10,"updated":"2013-12-12 06:13:42.000000000","message":"s/notify the messages/send notifications/","commit_id":"deb69a2f5fd442e6fbc6fef7c011fce96db1d86a"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"d6b50e88dc195e5bff5e916c29338001af692f27","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The UBS code was merged into Nova code, Now compute can get metrics"},{"line_number":10,"context_line":"from monitors and notify the messages to message bus. So, add listeners"},{"line_number":11,"context_line":"to handle the metrics in ceilometer."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Nova blueprint utilization-aware-scheduling"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"AAAATn%2F9Xs0%3D","line":11,"updated":"2013-12-12 06:13:42.000000000","message":"I think it\u0027d better to mention that you changed the directory layout for compute notifications.","commit_id":"deb69a2f5fd442e6fbc6fef7c011fce96db1d86a"},{"author":{"_account_id":5313,"name":"David Peraza","email":"david_peraza@persistentsys.com","username":"dperaza"},"change_message_id":"e7ce01d95ce00c342142fe43c1766b923aab9f6e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Handle the metrics sent by nova notifier"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Now nova compute node can get metrics from monitors and send"},{"line_number":10,"context_line":"notifications to message bus. So, add listeners to handle the"},{"line_number":11,"context_line":"metrics in ceilometer.This patch changes the directory layout"},{"line_number":12,"context_line":"for compute notifications, because there will be other metrics"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"AAAATn%2F9UcY%3D","line":9,"updated":"2013-12-12 17:40:52.000000000","message":"Nova compute node can now get metrics....","commit_id":"364bcb85bf66b4b75ad2778ce84171b8c3fccf8b"},{"author":{"_account_id":5313,"name":"David Peraza","email":"david_peraza@persistentsys.com","username":"dperaza"},"change_message_id":"e7ce01d95ce00c342142fe43c1766b923aab9f6e","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Now nova compute node can get metrics from monitors and send"},{"line_number":10,"context_line":"notifications to message bus. So, add listeners to handle the"},{"line_number":11,"context_line":"metrics in ceilometer.This patch changes the directory layout"},{"line_number":12,"context_line":"for compute notifications, because there will be other metrics"},{"line_number":13,"context_line":"(e.g. network and cache Qos)to be added. The deployer can also"},{"line_number":14,"context_line":"add the metrics they want. it\u0027s better to make a classification"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"AAAATn%2F9UcU%3D","line":11,"updated":"2013-12-12 17:40:52.000000000","message":"space before This","commit_id":"364bcb85bf66b4b75ad2778ce84171b8c3fccf8b"},{"author":{"_account_id":5313,"name":"David Peraza","email":"david_peraza@persistentsys.com","username":"dperaza"},"change_message_id":"e7ce01d95ce00c342142fe43c1766b923aab9f6e","unresolved":false,"context_lines":[{"line_number":10,"context_line":"notifications to message bus. So, add listeners to handle the"},{"line_number":11,"context_line":"metrics in ceilometer.This patch changes the directory layout"},{"line_number":12,"context_line":"for compute notifications, because there will be other metrics"},{"line_number":13,"context_line":"(e.g. network and cache Qos)to be added. The deployer can also"},{"line_number":14,"context_line":"add the metrics they want. it\u0027s better to make a classification"},{"line_number":15,"context_line":"of these metrics."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"AAAATn%2F9UcQ%3D","line":13,"updated":"2013-12-12 17:40:52.000000000","message":"space after )","commit_id":"364bcb85bf66b4b75ad2778ce84171b8c3fccf8b"},{"author":{"_account_id":5313,"name":"David Peraza","email":"david_peraza@persistentsys.com","username":"dperaza"},"change_message_id":"e7ce01d95ce00c342142fe43c1766b923aab9f6e","unresolved":false,"context_lines":[{"line_number":11,"context_line":"metrics in ceilometer.This patch changes the directory layout"},{"line_number":12,"context_line":"for compute notifications, because there will be other metrics"},{"line_number":13,"context_line":"(e.g. network and cache Qos)to be added. The deployer can also"},{"line_number":14,"context_line":"add the metrics they want. it\u0027s better to make a classification"},{"line_number":15,"context_line":"of these metrics."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Nova blueprint utilization-aware-scheduling"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"AAAATn%2F9UcI%3D","line":14,"updated":"2013-12-12 17:40:52.000000000","message":"make it\u0027s upper case","commit_id":"364bcb85bf66b4b75ad2778ce84171b8c3fccf8b"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"dd7084a49fcbf8bcf5d50528cbf3747a54628418","unresolved":false,"context_lines":[{"line_number":11,"context_line":"metrics in ceilometer.This patch changes the directory layout"},{"line_number":12,"context_line":"for compute notifications, because there will be other metrics"},{"line_number":13,"context_line":"(e.g. network and cache Qos)to be added. The deployer can also"},{"line_number":14,"context_line":"add the metrics they want. it\u0027s better to make a classification"},{"line_number":15,"context_line":"of these metrics."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Nova blueprint utilization-aware-scheduling"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"AAAATn%2F9R40%3D","line":14,"in_reply_to":"AAAATn%2F9UcI%3D","updated":"2013-12-13 05:23:56.000000000","message":"Done","commit_id":"364bcb85bf66b4b75ad2778ce84171b8c3fccf8b"}],"ceilometer/compute/notifications.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"20c8488b3c335206119ade3905ec287b1d492a30","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            if len(m) \u003d\u003d 3:"},{"line_number":205,"context_line":"                self.metrics_conf.append(m)"},{"line_number":206,"context_line":"            else:"},{"line_number":207,"context_line":"                LOG.warning(\u0027 %s does not conform the format\u0027, s)"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    def _is_metric_conf(self, name):"},{"line_number":210,"context_line":"        for m in self.metrics_conf:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAARn%2F%2F6wQ%3D","line":207,"updated":"2013-08-20 08:54:31.000000000","message":"whitespace","commit_id":"1a3e8a989dc5b5481d38ae483efe5c9b11feb9a8"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"9c4d61ba392e2f7a1e4cb8ea0de856f074ec5074","unresolved":false,"context_lines":[{"line_number":204,"context_line":"            if len(m) \u003d\u003d 3:"},{"line_number":205,"context_line":"                self.metrics_conf.append(m)"},{"line_number":206,"context_line":"            else:"},{"line_number":207,"context_line":"                LOG.warning(\u0027 %s does not conform the format\u0027, s)"},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"    def _is_metric_conf(self, name):"},{"line_number":210,"context_line":"        for m in self.metrics_conf:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAARn%2F%2F2ps%3D","line":207,"in_reply_to":"AAAARn%2F%2F6wQ%3D","updated":"2013-08-21 05:51:36.000000000","message":"Done","commit_id":"1a3e8a989dc5b5481d38ae483efe5c9b11feb9a8"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"20c8488b3c335206119ade3905ec287b1d492a30","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        for m in self.metrics_conf:"},{"line_number":211,"context_line":"            if name \u003d\u003d m[0]:"},{"line_number":212,"context_line":"                return m"},{"line_number":213,"context_line":"        return None"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    def process_notification(self, message):"},{"line_number":216,"context_line":"        if self.metrics_conf:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAARn%2F%2F6wE%3D","line":213,"updated":"2013-08-20 08:54:31.000000000","message":"This is implicit","commit_id":"1a3e8a989dc5b5481d38ae483efe5c9b11feb9a8"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"9c4d61ba392e2f7a1e4cb8ea0de856f074ec5074","unresolved":false,"context_lines":[{"line_number":210,"context_line":"        for m in self.metrics_conf:"},{"line_number":211,"context_line":"            if name \u003d\u003d m[0]:"},{"line_number":212,"context_line":"                return m"},{"line_number":213,"context_line":"        return None"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"    def process_notification(self, message):"},{"line_number":216,"context_line":"        if self.metrics_conf:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAARn%2F%2F2po%3D","line":213,"in_reply_to":"AAAARn%2F%2F6wE%3D","updated":"2013-08-21 05:51:36.000000000","message":"Done","commit_id":"1a3e8a989dc5b5481d38ae483efe5c9b11feb9a8"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"c20e962bbea4b02b5dcf4be90870bf4c0e8f0efa","unresolved":false,"context_lines":[{"line_number":37,"context_line":"]"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"metric_opts \u003d ["},{"line_number":40,"context_line":"    cfg.ListOpt(\u0027metrics_update_conf\u0027,"},{"line_number":41,"context_line":"                default\u003d["},{"line_number":42,"context_line":"                    \u0027cpu.frequency+HZ+gauge\u0027,"},{"line_number":43,"context_line":"                    \u0027cpu.user.time+S+cumulative\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAARn%2F%2F12U%3D","line":40,"updated":"2013-08-21 09:49:23.000000000","message":"btw MultiStrOpt may be a better fit?\n\nAlso you can declare it in OPTS\n\nmetrics_update_conf is a lame name. What about something like nova_compute_nodes_samples?","commit_id":"1117f3198f7d9c1204751594d0aa174a2f173ef3"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"114b35fdeb8f6854a22179237d74da6313751c7a","unresolved":false,"context_lines":[{"line_number":37,"context_line":"]"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"metric_opts \u003d ["},{"line_number":40,"context_line":"    cfg.ListOpt(\u0027metrics_update_conf\u0027,"},{"line_number":41,"context_line":"                default\u003d["},{"line_number":42,"context_line":"                    \u0027cpu.frequency+HZ+gauge\u0027,"},{"line_number":43,"context_line":"                    \u0027cpu.user.time+S+cumulative\u0027,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAARn%2F%2F1EQ%3D","line":40,"in_reply_to":"AAAARn%2F%2F12U%3D","updated":"2013-08-21 13:19:06.000000000","message":"Done","commit_id":"1117f3198f7d9c1204751594d0aa174a2f173ef3"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"c20e962bbea4b02b5dcf4be90870bf4c0e8f0efa","unresolved":false,"context_lines":[{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    def __init__(self):"},{"line_number":207,"context_line":"        self.metrics_conf \u003d []"},{"line_number":208,"context_line":"        self.metrics_default_conf \u003d cfg.CONF.metrics_update_conf"},{"line_number":209,"context_line":"        for s in self.metrics_default_conf:"},{"line_number":210,"context_line":"            m \u003d s.split(\u0027+\u0027)"},{"line_number":211,"context_line":"            #must have three elements:[\u0027name\u0027,\u0027unit\u0027,\u0027type\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAARn%2F%2F12E%3D","line":208,"updated":"2013-08-21 09:49:23.000000000","message":"No need to assign to self since it\u0027s not used later.","commit_id":"1117f3198f7d9c1204751594d0aa174a2f173ef3"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"114b35fdeb8f6854a22179237d74da6313751c7a","unresolved":false,"context_lines":[{"line_number":205,"context_line":""},{"line_number":206,"context_line":"    def __init__(self):"},{"line_number":207,"context_line":"        self.metrics_conf \u003d []"},{"line_number":208,"context_line":"        self.metrics_default_conf \u003d cfg.CONF.metrics_update_conf"},{"line_number":209,"context_line":"        for s in self.metrics_default_conf:"},{"line_number":210,"context_line":"            m \u003d s.split(\u0027+\u0027)"},{"line_number":211,"context_line":"            #must have three elements:[\u0027name\u0027,\u0027unit\u0027,\u0027type\u0027]"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAARn%2F%2F1EI%3D","line":208,"in_reply_to":"AAAARn%2F%2F12E%3D","updated":"2013-08-21 13:19:06.000000000","message":"Done","commit_id":"1117f3198f7d9c1204751594d0aa174a2f173ef3"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"c20e962bbea4b02b5dcf4be90870bf4c0e8f0efa","unresolved":false,"context_lines":[{"line_number":212,"context_line":"            if len(m) \u003d\u003d 3:"},{"line_number":213,"context_line":"                self.metrics_conf.append(m)"},{"line_number":214,"context_line":"            else:"},{"line_number":215,"context_line":"                LOG.warning(\u0027%s does not conform the format\u0027, s)"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"    def _is_metric_conf(self, name):"},{"line_number":218,"context_line":"        for m in self.metrics_conf:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAARn%2F%2F12M%3D","line":215,"updated":"2013-08-21 09:49:23.000000000","message":"Use _ to translate","commit_id":"1117f3198f7d9c1204751594d0aa174a2f173ef3"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"c20e962bbea4b02b5dcf4be90870bf4c0e8f0efa","unresolved":false,"context_lines":[{"line_number":220,"context_line":"                return m"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def process_notification(self, message):"},{"line_number":223,"context_line":"        if self.metrics_conf:"},{"line_number":224,"context_line":"            payload \u003d copy.copy(message[\u0027payload\u0027])"},{"line_number":225,"context_line":"            fmt \u003d \"%Y-%m-%dT%H:%M:%S.%f\""},{"line_number":226,"context_line":"            for metric in payload.get(\u0027metrics\u0027, []):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAARn%2F%2F11Q%3D","line":223,"updated":"2013-08-21 09:49:23.000000000","message":"This check is useless since anyway if it\u0027s empty _is_metric_conf will return none later.","commit_id":"1117f3198f7d9c1204751594d0aa174a2f173ef3"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"114b35fdeb8f6854a22179237d74da6313751c7a","unresolved":false,"context_lines":[{"line_number":220,"context_line":"                return m"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def process_notification(self, message):"},{"line_number":223,"context_line":"        if self.metrics_conf:"},{"line_number":224,"context_line":"            payload \u003d copy.copy(message[\u0027payload\u0027])"},{"line_number":225,"context_line":"            fmt \u003d \"%Y-%m-%dT%H:%M:%S.%f\""},{"line_number":226,"context_line":"            for metric in payload.get(\u0027metrics\u0027, []):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAARn%2F%2F1D4%3D","line":223,"in_reply_to":"AAAARn%2F%2F11Q%3D","updated":"2013-08-21 13:19:06.000000000","message":"Done","commit_id":"1117f3198f7d9c1204751594d0aa174a2f173ef3"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"c20e962bbea4b02b5dcf4be90870bf4c0e8f0efa","unresolved":false,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def process_notification(self, message):"},{"line_number":223,"context_line":"        if self.metrics_conf:"},{"line_number":224,"context_line":"            payload \u003d copy.copy(message[\u0027payload\u0027])"},{"line_number":225,"context_line":"            fmt \u003d \"%Y-%m-%dT%H:%M:%S.%f\""},{"line_number":226,"context_line":"            for metric in payload.get(\u0027metrics\u0027, []):"},{"line_number":227,"context_line":"                conf \u003d self._is_metric_conf(metric[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAARn%2F%2F11U%3D","line":224,"updated":"2013-08-21 09:49:23.000000000","message":"No need to use copy here.","commit_id":"1117f3198f7d9c1204751594d0aa174a2f173ef3"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"114b35fdeb8f6854a22179237d74da6313751c7a","unresolved":false,"context_lines":[{"line_number":221,"context_line":""},{"line_number":222,"context_line":"    def process_notification(self, message):"},{"line_number":223,"context_line":"        if self.metrics_conf:"},{"line_number":224,"context_line":"            payload \u003d copy.copy(message[\u0027payload\u0027])"},{"line_number":225,"context_line":"            fmt \u003d \"%Y-%m-%dT%H:%M:%S.%f\""},{"line_number":226,"context_line":"            for metric in payload.get(\u0027metrics\u0027, []):"},{"line_number":227,"context_line":"                conf \u003d self._is_metric_conf(metric[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAARn%2F%2F1B8%3D","line":224,"in_reply_to":"AAAARn%2F%2F11U%3D","updated":"2013-08-21 13:19:06.000000000","message":"just do it as from_notification","commit_id":"1117f3198f7d9c1204751594d0aa174a2f173ef3"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"c20e962bbea4b02b5dcf4be90870bf4c0e8f0efa","unresolved":false,"context_lines":[{"line_number":232,"context_line":"                                                           fmt))"},{"line_number":233,"context_line":"                    resource_id \u003d \u0027%s_%s\u0027 % (payload[\u0027compute_id\u0027],"},{"line_number":234,"context_line":"                                             payload[\u0027nodename\u0027])"},{"line_number":235,"context_line":"                    yield sample.Sample(name\u003d"},{"line_number":236,"context_line":"                                        \u0027compute.node.%s\u0027 % metric[\u0027name\u0027],"},{"line_number":237,"context_line":"                                        type\u003dconf[2],"},{"line_number":238,"context_line":"                                        unit\u003dconf[1],"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAARn%2F%2F11o%3D","line":235,"updated":"2013-08-21 09:49:23.000000000","message":"You should use Sample.from_notification() to build this.","commit_id":"1117f3198f7d9c1204751594d0aa174a2f173ef3"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"114b35fdeb8f6854a22179237d74da6313751c7a","unresolved":false,"context_lines":[{"line_number":232,"context_line":"                                                           fmt))"},{"line_number":233,"context_line":"                    resource_id \u003d \u0027%s_%s\u0027 % (payload[\u0027compute_id\u0027],"},{"line_number":234,"context_line":"                                             payload[\u0027nodename\u0027])"},{"line_number":235,"context_line":"                    yield sample.Sample(name\u003d"},{"line_number":236,"context_line":"                                        \u0027compute.node.%s\u0027 % metric[\u0027name\u0027],"},{"line_number":237,"context_line":"                                        type\u003dconf[2],"},{"line_number":238,"context_line":"                                        unit\u003dconf[1],"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAARn%2F%2F1CI%3D","line":235,"in_reply_to":"AAAARn%2F%2F11o%3D","updated":"2013-08-21 13:19:06.000000000","message":"@Julien Danjou\nMessage format is different from others,so I think it is better to realize the  function as from_notification","commit_id":"1117f3198f7d9c1204751594d0aa174a2f173ef3"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"4c8cad5084ae832f317124114ecde2dcaa7e50b2","unresolved":false,"context_lines":[{"line_number":232,"context_line":"                                                           fmt))"},{"line_number":233,"context_line":"                    resource_id \u003d \u0027%s_%s\u0027 % (payload[\u0027compute_id\u0027],"},{"line_number":234,"context_line":"                                             payload[\u0027nodename\u0027])"},{"line_number":235,"context_line":"                    yield sample.Sample(name\u003d"},{"line_number":236,"context_line":"                                        \u0027compute.node.%s\u0027 % metric[\u0027name\u0027],"},{"line_number":237,"context_line":"                                        type\u003dconf[2],"},{"line_number":238,"context_line":"                                        unit\u003dconf[1],"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAARn%2F%2F03Q%3D","line":235,"in_reply_to":"AAAARn%2F%2F1CI%3D","updated":"2013-08-21 13:39:56.000000000","message":"Hmm I can\u0027t see any difference with from_notification, what do I miss?","commit_id":"1117f3198f7d9c1204751594d0aa174a2f173ef3"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"a3afa50989e0ecf6800dbe7dbb27f7e34e3ca628","unresolved":false,"context_lines":[{"line_number":35,"context_line":"               default\u003d\u0027nova\u0027,"},{"line_number":36,"context_line":"               help\u003d\"Exchange name for Nova notifications\"),"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    cfg.MultiStrOpt("},{"line_number":39,"context_line":"        \u0027nova_compute_nodes_samples\u0027,"},{"line_number":40,"context_line":"        default\u003d[\u0027cpu.frequency+HZ+gauge\u0027,"},{"line_number":41,"context_line":"                 \u0027cpu.user.time+S+cumulative\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAARn%2F%2F0%2BA%3D","line":38,"updated":"2013-08-21 13:19:10.000000000","message":"Deployers configure the meters they care about using the pipeline configuration file, not the config options. That allows them to process different meters in different ways, including ignoring them. See etc/ceilometer/pipeline.yaml for the default configuration.\n\nWe also make it a point to not require the deployer to know things like the units or types when enabling the meter. Those values can be built into the module as constants or read from the incoming notification, if present. Units, in particular, would be useful in the notifications coming out of nova.","commit_id":"f175eee60991827173f1f7fdb4beeb42e65eb344"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"a5e733efee9f575bc8c4e76137ed1cf91fc8d167","unresolved":false,"context_lines":[{"line_number":35,"context_line":"               default\u003d\u0027nova\u0027,"},{"line_number":36,"context_line":"               help\u003d\"Exchange name for Nova notifications\"),"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    cfg.MultiStrOpt("},{"line_number":39,"context_line":"        \u0027nova_compute_nodes_samples\u0027,"},{"line_number":40,"context_line":"        default\u003d[\u0027cpu.frequency+HZ+gauge\u0027,"},{"line_number":41,"context_line":"                 \u0027cpu.user.time+S+cumulative\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAARn%2F%2Fx3g%3D","line":38,"in_reply_to":"AAAARn%2F%2F0%2BA%3D","updated":"2013-08-22 00:56:09.000000000","message":"@Doug, is it possible to configure the notification listener in pipeline? I think that\u0027s only for pollsters, not for notification listener.","commit_id":"f175eee60991827173f1f7fdb4beeb42e65eb344"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"477ed58f7bbf6872626c83fe255224940a165d29","unresolved":false,"context_lines":[{"line_number":35,"context_line":"               default\u003d\u0027nova\u0027,"},{"line_number":36,"context_line":"               help\u003d\"Exchange name for Nova notifications\"),"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    cfg.MultiStrOpt("},{"line_number":39,"context_line":"        \u0027nova_compute_nodes_samples\u0027,"},{"line_number":40,"context_line":"        default\u003d[\u0027cpu.frequency+HZ+gauge\u0027,"},{"line_number":41,"context_line":"                 \u0027cpu.user.time+S+cumulative\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAARn%2F%2Fv2w%3D","line":38,"in_reply_to":"AAAARn%2F%2F0%2BA%3D","updated":"2013-08-22 11:09:54.000000000","message":"Done","commit_id":"f175eee60991827173f1f7fdb4beeb42e65eb344"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"1bc4ceb8726a0b9eb2f8b9e13d23113fb96aa030","unresolved":false,"context_lines":[{"line_number":35,"context_line":"               default\u003d\u0027nova\u0027,"},{"line_number":36,"context_line":"               help\u003d\"Exchange name for Nova notifications\"),"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    cfg.MultiStrOpt("},{"line_number":39,"context_line":"        \u0027nova_compute_nodes_samples\u0027,"},{"line_number":40,"context_line":"        default\u003d[\u0027cpu.frequency+HZ+gauge\u0027,"},{"line_number":41,"context_line":"                 \u0027cpu.user.time+S+cumulative\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAARn%2F%2FxIg%3D","line":38,"in_reply_to":"AAAARn%2F%2Fx3g%3D","updated":"2013-08-22 03:59:30.000000000","message":"@Doug, I read the code again and realized that we can use the pipeline.yaml for the meters produced by notification listeners now.","commit_id":"f175eee60991827173f1f7fdb4beeb42e65eb344"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"a3afa50989e0ecf6800dbe7dbb27f7e34e3ca628","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    cfg.MultiStrOpt("},{"line_number":39,"context_line":"        \u0027nova_compute_nodes_samples\u0027,"},{"line_number":40,"context_line":"        default\u003d[\u0027cpu.frequency+HZ+gauge\u0027,"},{"line_number":41,"context_line":"                 \u0027cpu.user.time+S+cumulative\u0027,"},{"line_number":42,"context_line":"                 \u0027cpu.kernel.time+S+cumulative\u0027,"},{"line_number":43,"context_line":"                 \u0027cpu.idle.time+S+cumulative\u0027,"},{"line_number":44,"context_line":"                 \u0027cpu.iowait.time+S+cumulative\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAARn%2F%2F07Y%3D","line":41,"updated":"2013-08-21 13:19:10.000000000","message":"Isn\u0027t having \"time\" in the name redundant if we know that the units are seconds?","commit_id":"f175eee60991827173f1f7fdb4beeb42e65eb344"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"477ed58f7bbf6872626c83fe255224940a165d29","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    cfg.MultiStrOpt("},{"line_number":39,"context_line":"        \u0027nova_compute_nodes_samples\u0027,"},{"line_number":40,"context_line":"        default\u003d[\u0027cpu.frequency+HZ+gauge\u0027,"},{"line_number":41,"context_line":"                 \u0027cpu.user.time+S+cumulative\u0027,"},{"line_number":42,"context_line":"                 \u0027cpu.kernel.time+S+cumulative\u0027,"},{"line_number":43,"context_line":"                 \u0027cpu.idle.time+S+cumulative\u0027,"},{"line_number":44,"context_line":"                 \u0027cpu.iowait.time+S+cumulative\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAARn%2F%2Fv2s%3D","line":41,"in_reply_to":"AAAARn%2F%2F07Y%3D","updated":"2013-08-22 11:09:54.000000000","message":"Done","commit_id":"f175eee60991827173f1f7fdb4beeb42e65eb344"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"a3afa50989e0ecf6800dbe7dbb27f7e34e3ca628","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                 \u0027cpu.kernel.time+S+cumulative\u0027,"},{"line_number":43,"context_line":"                 \u0027cpu.idle.time+S+cumulative\u0027,"},{"line_number":44,"context_line":"                 \u0027cpu.iowait.time+S+cumulative\u0027,"},{"line_number":45,"context_line":"                 \u0027cpu.kernel.percent+%+gauge\u0027,"},{"line_number":46,"context_line":"                 \u0027cpu.idle.percent+%+gauge\u0027,"},{"line_number":47,"context_line":"                 \u0027cpu.user.percent+%+gauge\u0027,"},{"line_number":48,"context_line":"                 \u0027cpu.iowait.percent+%+gauge\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAARn%2F%2F07Q%3D","line":45,"updated":"2013-08-21 13:19:10.000000000","message":"Having \"percent\" in the name is also redundant if the units are %.","commit_id":"f175eee60991827173f1f7fdb4beeb42e65eb344"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"477ed58f7bbf6872626c83fe255224940a165d29","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                 \u0027cpu.kernel.time+S+cumulative\u0027,"},{"line_number":43,"context_line":"                 \u0027cpu.idle.time+S+cumulative\u0027,"},{"line_number":44,"context_line":"                 \u0027cpu.iowait.time+S+cumulative\u0027,"},{"line_number":45,"context_line":"                 \u0027cpu.kernel.percent+%+gauge\u0027,"},{"line_number":46,"context_line":"                 \u0027cpu.idle.percent+%+gauge\u0027,"},{"line_number":47,"context_line":"                 \u0027cpu.user.percent+%+gauge\u0027,"},{"line_number":48,"context_line":"                 \u0027cpu.iowait.percent+%+gauge\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAARn%2F%2Fv2o%3D","line":45,"in_reply_to":"AAAARn%2F%2F07Q%3D","updated":"2013-08-22 11:09:54.000000000","message":"Done","commit_id":"f175eee60991827173f1f7fdb4beeb42e65eb344"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"a3afa50989e0ecf6800dbe7dbb27f7e34e3ca628","unresolved":false,"context_lines":[{"line_number":197,"context_line":"                message\u003dmessage)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"class MetricsUpdate(ComputeNotificationBase):"},{"line_number":201,"context_line":"    event_types \u003d [\u0027compute.metrics.update\u0027]"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAARn%2F%2F060%3D","line":200,"updated":"2013-08-21 13:19:10.000000000","message":"This class should be split up into separate subclasses for each meter so they can be enabled and disabled individually via the pipeline configuration file. Each class needs to be registered using the meter name in the entry points section of setup.cfg so it is discovered. See https://blueprints.launchpad.net/ceilometer/+spec/one-meter-per-plugin","commit_id":"f175eee60991827173f1f7fdb4beeb42e65eb344"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"477ed58f7bbf6872626c83fe255224940a165d29","unresolved":false,"context_lines":[{"line_number":197,"context_line":"                message\u003dmessage)"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"class MetricsUpdate(ComputeNotificationBase):"},{"line_number":201,"context_line":"    event_types \u003d [\u0027compute.metrics.update\u0027]"},{"line_number":202,"context_line":""},{"line_number":203,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAARn%2F%2Fv2g%3D","line":200,"in_reply_to":"AAAARn%2F%2F060%3D","updated":"2013-08-22 11:09:54.000000000","message":"Done","commit_id":"f175eee60991827173f1f7fdb4beeb42e65eb344"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"a3afa50989e0ecf6800dbe7dbb27f7e34e3ca628","unresolved":false,"context_lines":[{"line_number":217,"context_line":"                return m"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def process_notification(self, message):"},{"line_number":220,"context_line":"        payload \u003d copy.copy(message[\u0027payload\u0027])"},{"line_number":221,"context_line":"        fmt \u003d \"%Y-%m-%dT%H:%M:%S.%f\""},{"line_number":222,"context_line":"        for metric in payload.get(\u0027metrics\u0027, []):"},{"line_number":223,"context_line":"            conf \u003d self._is_sample_conf(metric[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAARn%2F%2F09Q%3D","line":220,"updated":"2013-08-21 13:19:10.000000000","message":"It looks like the only reason for making a copy of payload is that the members of the metrics are being changed. Is it necessary to clone the entire parent data structure, or could the loop create new resource_metadata dictionaries to pass to Sample()?","commit_id":"f175eee60991827173f1f7fdb4beeb42e65eb344"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"477ed58f7bbf6872626c83fe255224940a165d29","unresolved":false,"context_lines":[{"line_number":217,"context_line":"                return m"},{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    def process_notification(self, message):"},{"line_number":220,"context_line":"        payload \u003d copy.copy(message[\u0027payload\u0027])"},{"line_number":221,"context_line":"        fmt \u003d \"%Y-%m-%dT%H:%M:%S.%f\""},{"line_number":222,"context_line":"        for metric in payload.get(\u0027metrics\u0027, []):"},{"line_number":223,"context_line":"            conf \u003d self._is_sample_conf(metric[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAARn%2F%2Fv2c%3D","line":220,"in_reply_to":"AAAARn%2F%2F09Q%3D","updated":"2013-08-22 11:09:54.000000000","message":"Done","commit_id":"f175eee60991827173f1f7fdb4beeb42e65eb344"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"a3afa50989e0ecf6800dbe7dbb27f7e34e3ca628","unresolved":false,"context_lines":[{"line_number":224,"context_line":"            if conf:"},{"line_number":225,"context_line":"                metric[\u0027event_type\u0027] \u003d message[\u0027event_type\u0027]"},{"line_number":226,"context_line":"                metric[\u0027host\u0027] \u003d message[\u0027publisher_id\u0027]"},{"line_number":227,"context_line":"                timep \u003d str(datetime.datetime.strptime(metric[\u0027timestamp\u0027],"},{"line_number":228,"context_line":"                                                       fmt))"},{"line_number":229,"context_line":"                resource_id \u003d \u0027%s_%s\u0027 % (payload[\u0027compute_id\u0027],"},{"line_number":230,"context_line":"                                         payload[\u0027nodename\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAARn%2F%2F084%3D","line":227,"updated":"2013-08-21 13:19:10.000000000","message":"Please use ceilometer.openstack.common.timeutils.parse_isotime().","commit_id":"f175eee60991827173f1f7fdb4beeb42e65eb344"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"477ed58f7bbf6872626c83fe255224940a165d29","unresolved":false,"context_lines":[{"line_number":224,"context_line":"            if conf:"},{"line_number":225,"context_line":"                metric[\u0027event_type\u0027] \u003d message[\u0027event_type\u0027]"},{"line_number":226,"context_line":"                metric[\u0027host\u0027] \u003d message[\u0027publisher_id\u0027]"},{"line_number":227,"context_line":"                timep \u003d str(datetime.datetime.strptime(metric[\u0027timestamp\u0027],"},{"line_number":228,"context_line":"                                                       fmt))"},{"line_number":229,"context_line":"                resource_id \u003d \u0027%s_%s\u0027 % (payload[\u0027compute_id\u0027],"},{"line_number":230,"context_line":"                                         payload[\u0027nodename\u0027])"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAARn%2F%2Fv2Y%3D","line":227,"in_reply_to":"AAAARn%2F%2F084%3D","updated":"2013-08-22 11:09:54.000000000","message":"Done","commit_id":"f175eee60991827173f1f7fdb4beeb42e65eb344"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"03320be03f5914274bf4eb8f4eb076966aecf49c","unresolved":false,"context_lines":[{"line_number":180,"context_line":"    \"\"\""},{"line_number":181,"context_line":"    event_types \u003d [\u0027compute.metrics.update\u0027]"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def _is_sample(self, payload, name):"},{"line_number":184,"context_line":"        for metric in payload.get(\u0027metrics\u0027, []):"},{"line_number":185,"context_line":"            if name \u003d\u003d metric[\u0027name\u0027]:"},{"line_number":186,"context_line":"                return metric"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAARn%2F%2FvzQ%3D","line":183,"updated":"2013-08-22 11:29:46.000000000","message":"@staticmethod","commit_id":"f75022b9ea1728b4cc4367599fe92a076109e594"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"fcdfbd6b11d96d602911f949b44ceff2a7dd4837","unresolved":false,"context_lines":[{"line_number":180,"context_line":"    \"\"\""},{"line_number":181,"context_line":"    event_types \u003d [\u0027compute.metrics.update\u0027]"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    def _is_sample(self, payload, name):"},{"line_number":184,"context_line":"        for metric in payload.get(\u0027metrics\u0027, []):"},{"line_number":185,"context_line":"            if name \u003d\u003d metric[\u0027name\u0027]:"},{"line_number":186,"context_line":"                return metric"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASX%2F%2F3H0%3D","line":183,"in_reply_to":"AAAARn%2F%2FvzQ%3D","updated":"2013-08-26 04:52:18.000000000","message":"Done","commit_id":"f75022b9ea1728b4cc4367599fe92a076109e594"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"03320be03f5914274bf4eb8f4eb076966aecf49c","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"class ComputeNodeCpuFrequency(ComputeMetricsNotificationBase):"},{"line_number":190,"context_line":"    def process_notification(self, message):"},{"line_number":191,"context_line":"        info \u003d {}"},{"line_number":192,"context_line":"        metric \u003d self._is_sample(message[\u0027payload\u0027], \u0027cpu.frequency\u0027)"},{"line_number":193,"context_line":"        if metric:"},{"line_number":194,"context_line":"            info[\u0027payload\u0027] \u003d metric"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAARn%2F%2FvzI%3D","line":191,"updated":"2013-08-22 11:29:46.000000000","message":"info is used later, so you can move it down","commit_id":"f75022b9ea1728b4cc4367599fe92a076109e594"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"fcdfbd6b11d96d602911f949b44ceff2a7dd4837","unresolved":false,"context_lines":[{"line_number":188,"context_line":""},{"line_number":189,"context_line":"class ComputeNodeCpuFrequency(ComputeMetricsNotificationBase):"},{"line_number":190,"context_line":"    def process_notification(self, message):"},{"line_number":191,"context_line":"        info \u003d {}"},{"line_number":192,"context_line":"        metric \u003d self._is_sample(message[\u0027payload\u0027], \u0027cpu.frequency\u0027)"},{"line_number":193,"context_line":"        if metric:"},{"line_number":194,"context_line":"            info[\u0027payload\u0027] \u003d metric"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASX%2F%2F3IY%3D","line":191,"in_reply_to":"AAAARn%2F%2FvzI%3D","updated":"2013-08-26 04:52:18.000000000","message":"Done","commit_id":"f75022b9ea1728b4cc4367599fe92a076109e594"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"03320be03f5914274bf4eb8f4eb076966aecf49c","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        if metric:"},{"line_number":194,"context_line":"            info[\u0027payload\u0027] \u003d metric"},{"line_number":195,"context_line":"            info[\u0027event_type\u0027] \u003d message[\u0027event_type\u0027]"},{"line_number":196,"context_line":"            info[\u0027publisher_id\u0027] \u003d message[\u0027publisher_id\u0027]"},{"line_number":197,"context_line":"            info[\u0027timestamp\u0027] \u003d \\"},{"line_number":198,"context_line":"                str(timeutils.parse_strtime(metric[\u0027timestamp\u0027]))"},{"line_number":199,"context_line":"            resource_id \u003d \u0027%s_%s\u0027 % (message[\u0027payload\u0027][\u0027compute_id\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAARn%2F%2Fvy4%3D","line":196,"updated":"2013-08-22 11:29:46.000000000","message":"All this code is common you should factor it in the base class.","commit_id":"f75022b9ea1728b4cc4367599fe92a076109e594"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"fcdfbd6b11d96d602911f949b44ceff2a7dd4837","unresolved":false,"context_lines":[{"line_number":193,"context_line":"        if metric:"},{"line_number":194,"context_line":"            info[\u0027payload\u0027] \u003d metric"},{"line_number":195,"context_line":"            info[\u0027event_type\u0027] \u003d message[\u0027event_type\u0027]"},{"line_number":196,"context_line":"            info[\u0027publisher_id\u0027] \u003d message[\u0027publisher_id\u0027]"},{"line_number":197,"context_line":"            info[\u0027timestamp\u0027] \u003d \\"},{"line_number":198,"context_line":"                str(timeutils.parse_strtime(metric[\u0027timestamp\u0027]))"},{"line_number":199,"context_line":"            resource_id \u003d \u0027%s_%s\u0027 % (message[\u0027payload\u0027][\u0027compute_id\u0027],"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASX%2F%2F3IQ%3D","line":196,"in_reply_to":"AAAARn%2F%2Fvy4%3D","updated":"2013-08-26 04:52:18.000000000","message":"Done","commit_id":"f75022b9ea1728b4cc4367599fe92a076109e594"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"03320be03f5914274bf4eb8f4eb076966aecf49c","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            info[\u0027payload\u0027] \u003d metric"},{"line_number":195,"context_line":"            info[\u0027event_type\u0027] \u003d message[\u0027event_type\u0027]"},{"line_number":196,"context_line":"            info[\u0027publisher_id\u0027] \u003d message[\u0027publisher_id\u0027]"},{"line_number":197,"context_line":"            info[\u0027timestamp\u0027] \u003d \\"},{"line_number":198,"context_line":"                str(timeutils.parse_strtime(metric[\u0027timestamp\u0027]))"},{"line_number":199,"context_line":"            resource_id \u003d \u0027%s_%s\u0027 % (message[\u0027payload\u0027][\u0027compute_id\u0027],"},{"line_number":200,"context_line":"                                     metric[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAARn%2F%2FvzM%3D","line":197,"updated":"2013-08-22 11:29:46.000000000","message":"Why do you need this since it\u0027s already in the Sample?","commit_id":"f75022b9ea1728b4cc4367599fe92a076109e594"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"a19cccda36d7dcb816d1788238a4e2651425c56f","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            info[\u0027payload\u0027] \u003d metric"},{"line_number":195,"context_line":"            info[\u0027event_type\u0027] \u003d message[\u0027event_type\u0027]"},{"line_number":196,"context_line":"            info[\u0027publisher_id\u0027] \u003d message[\u0027publisher_id\u0027]"},{"line_number":197,"context_line":"            info[\u0027timestamp\u0027] \u003d \\"},{"line_number":198,"context_line":"                str(timeutils.parse_strtime(metric[\u0027timestamp\u0027]))"},{"line_number":199,"context_line":"            resource_id \u003d \u0027%s_%s\u0027 % (message[\u0027payload\u0027][\u0027compute_id\u0027],"},{"line_number":200,"context_line":"                                     metric[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASX%2F%2F9%2B4%3D","line":197,"in_reply_to":"AAAARn%2F%2FvzM%3D","updated":"2013-08-23 04:01:19.000000000","message":"@julien Danjou\n\nI do not see the place in the Sample, can you point it  for me ?the  time now is \"2013-07-29T06:51:34.472416 \",you can see from the metrics in test_notifications.py, Should I convert it to \"2013-07-29 06:51:34.472416 \"  ?  \n        {\u0027timestamp\u0027: u\u00272013-07-29T06:51:34.472416\u0027, \u0027name\u0027: \u0027cpu.frequency\u0027, \u0027value\u0027: 1600, \u0027source\u0027: \u0027libvirt.LibvirtDriver\u0027},\n\n\n\nthanks !","commit_id":"f75022b9ea1728b4cc4367599fe92a076109e594"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"a506af1cfb5699fd72ca57c3808bba308ea6944a","unresolved":false,"context_lines":[{"line_number":194,"context_line":"            info[\u0027payload\u0027] \u003d metric"},{"line_number":195,"context_line":"            info[\u0027event_type\u0027] \u003d message[\u0027event_type\u0027]"},{"line_number":196,"context_line":"            info[\u0027publisher_id\u0027] \u003d message[\u0027publisher_id\u0027]"},{"line_number":197,"context_line":"            info[\u0027timestamp\u0027] \u003d \\"},{"line_number":198,"context_line":"                str(timeutils.parse_strtime(metric[\u0027timestamp\u0027]))"},{"line_number":199,"context_line":"            resource_id \u003d \u0027%s_%s\u0027 % (message[\u0027payload\u0027][\u0027compute_id\u0027],"},{"line_number":200,"context_line":"                                     metric[\u0027name\u0027])"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASX%2F%2F9Fg%3D","line":197,"in_reply_to":"AAAASX%2F%2F9%2B4%3D","updated":"2013-08-23 08:42:53.000000000","message":"The Sample object have a timestamp field that is taken from the notification timestamp if you use Sample.from_notifiation.\n\nNow I just realized that you also have a timestamp in each metric, so I don\u0027t think this comment applies. It\u0027s likely that you shouldn\u0027t use from_notification() directly since you won\u0027t use the timestamp of the notification, and hack too much into the payload anyway.","commit_id":"f75022b9ea1728b4cc4367599fe92a076109e594"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"03320be03f5914274bf4eb8f4eb076966aecf49c","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            yield sample.Sample.from_notification("},{"line_number":202,"context_line":"                name\u003d\u0027compute.node.%s\u0027 % metric[\u0027name\u0027],"},{"line_number":203,"context_line":"                type\u003dsample.TYPE_GAUGE,"},{"line_number":204,"context_line":"                unit\u003d\u0027Mhz\u0027,"},{"line_number":205,"context_line":"                volume\u003dmetric[\u0027value\u0027],"},{"line_number":206,"context_line":"                user_id\u003dNone,"},{"line_number":207,"context_line":"                project_id\u003dNone,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAARn%2F%2Fvyk%3D","line":204,"updated":"2013-08-22 11:29:46.000000000","message":"It\u0027s MHz","commit_id":"f75022b9ea1728b4cc4367599fe92a076109e594"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"fcdfbd6b11d96d602911f949b44ceff2a7dd4837","unresolved":false,"context_lines":[{"line_number":201,"context_line":"            yield sample.Sample.from_notification("},{"line_number":202,"context_line":"                name\u003d\u0027compute.node.%s\u0027 % metric[\u0027name\u0027],"},{"line_number":203,"context_line":"                type\u003dsample.TYPE_GAUGE,"},{"line_number":204,"context_line":"                unit\u003d\u0027Mhz\u0027,"},{"line_number":205,"context_line":"                volume\u003dmetric[\u0027value\u0027],"},{"line_number":206,"context_line":"                user_id\u003dNone,"},{"line_number":207,"context_line":"                project_id\u003dNone,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASX%2F%2F3IM%3D","line":204,"in_reply_to":"AAAARn%2F%2Fvyk%3D","updated":"2013-08-26 04:52:18.000000000","message":"Done","commit_id":"f75022b9ea1728b4cc4367599fe92a076109e594"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"0f3652b619608ffc654e39aec13617869f943db9","unresolved":false,"context_lines":[{"line_number":194,"context_line":"                return info"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"class ComputeNodeCpuFrequency(ComputeMetricsNotificationBase):"},{"line_number":198,"context_line":"    def process_notification(self, message):"},{"line_number":199,"context_line":"        info \u003d self._is_sample(message, \u0027cpu.frequency\u0027)"},{"line_number":200,"context_line":"        if info:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASX%2F%2F1qE%3D","line":197,"updated":"2013-08-26 14:36:13.000000000","message":"you don\u0027t necessarily need to prefix everything with \u0027ComputeNode\u0027. i think its safe to drop it since this is already under compute namespace.","commit_id":"bc84a6e70742aa8b9b859204b8d2fbbefb1526ad"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"79217ce44c589ee0ed20e30afcbbebf08489090e","unresolved":false,"context_lines":[{"line_number":194,"context_line":"                return info"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":""},{"line_number":197,"context_line":"class ComputeNodeCpuFrequency(ComputeMetricsNotificationBase):"},{"line_number":198,"context_line":"    def process_notification(self, message):"},{"line_number":199,"context_line":"        info \u003d self._is_sample(message, \u0027cpu.frequency\u0027)"},{"line_number":200,"context_line":"        if info:"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2F%2FuA%3D","line":197,"in_reply_to":"AAAASX%2F%2F1qE%3D","updated":"2013-08-27 02:32:49.000000000","message":"Done","commit_id":"bc84a6e70742aa8b9b859204b8d2fbbefb1526ad"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1485f33b6b780f33d89f58f78920769b20cf2312","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    def process_notification(self, message):"},{"line_number":199,"context_line":"        info \u003d self._is_sample(message, \u0027cpu.frequency\u0027)"},{"line_number":200,"context_line":"        if info:"},{"line_number":201,"context_line":"            yield sample.Sample.from_notification("},{"line_number":202,"context_line":"                name\u003d\u0027compute.node.%s\u0027 % info[\u0027payload\u0027][\u0027name\u0027],"},{"line_number":203,"context_line":"                type\u003dsample.TYPE_GAUGE,"},{"line_number":204,"context_line":"                unit\u003d\u0027MHZ\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASX%2F%2F2QA%3D","line":201,"updated":"2013-08-26 11:49:44.000000000","message":"Same remark as in the previous patchset: I don\u0027t think you should use this method since you are faking a notification to use it. just use the normal constructor.","commit_id":"bc84a6e70742aa8b9b859204b8d2fbbefb1526ad"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"79217ce44c589ee0ed20e30afcbbebf08489090e","unresolved":false,"context_lines":[{"line_number":198,"context_line":"    def process_notification(self, message):"},{"line_number":199,"context_line":"        info \u003d self._is_sample(message, \u0027cpu.frequency\u0027)"},{"line_number":200,"context_line":"        if info:"},{"line_number":201,"context_line":"            yield sample.Sample.from_notification("},{"line_number":202,"context_line":"                name\u003d\u0027compute.node.%s\u0027 % info[\u0027payload\u0027][\u0027name\u0027],"},{"line_number":203,"context_line":"                type\u003dsample.TYPE_GAUGE,"},{"line_number":204,"context_line":"                unit\u003d\u0027MHZ\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2F%2FtQ%3D","line":201,"in_reply_to":"AAAASX%2F%2F2QA%3D","updated":"2013-08-27 02:32:49.000000000","message":"@Julien Danjou\t\n\nNo matter using from_notification or Sample(), I think i should  create or copy the dictionary  for resource_metadata. So i put the job in base class in next patch set.  thanks !","commit_id":"bc84a6e70742aa8b9b859204b8d2fbbefb1526ad"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"81f753ae1913c3701e7517d7fc499067e8c24744","unresolved":false,"context_lines":[{"line_number":178,"context_line":"class ComputeMetricsNotificationBase(ComputeNotificationBase):"},{"line_number":179,"context_line":"    \"\"\"Convert compute.metrics.update notifications into Samples"},{"line_number":180,"context_line":"    \"\"\""},{"line_number":181,"context_line":"    event_types \u003d [\u0027compute.metrics.update\u0027]"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    @staticmethod"},{"line_number":184,"context_line":"    def _is_sample(message, name):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2F6f0%3D","line":181,"updated":"2013-08-28 02:16:32.000000000","message":"are there any other compute.metric events? if so maybe use the wildcard \u0027compute.metrics.*\u0027","commit_id":"3869563da5efd5c6c190521f838a90347ca74150"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"0f03ce2b00ec0b44cc740bbabbb5a472a8bccaad","unresolved":false,"context_lines":[{"line_number":178,"context_line":"class ComputeMetricsNotificationBase(ComputeNotificationBase):"},{"line_number":179,"context_line":"    \"\"\"Convert compute.metrics.update notifications into Samples"},{"line_number":180,"context_line":"    \"\"\""},{"line_number":181,"context_line":"    event_types \u003d [\u0027compute.metrics.update\u0027]"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    @staticmethod"},{"line_number":184,"context_line":"    def _is_sample(message, name):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2F6Uo%3D","line":181,"in_reply_to":"AAAASn%2F%2F6f0%3D","updated":"2013-08-28 06:05:23.000000000","message":"now , there were no other compute.metric events","commit_id":"3869563da5efd5c6c190521f838a90347ca74150"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"81f753ae1913c3701e7517d7fc499067e8c24744","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                metadata[\u0027host\u0027] \u003d message[\u0027publisher_id\u0027]"},{"line_number":191,"context_line":"                info[\u0027payload\u0027] \u003d metadata"},{"line_number":192,"context_line":"                info[\u0027resource_id\u0027] \u003d \u0027%s_%s\u0027 % ("},{"line_number":193,"context_line":"                    message[\u0027payload\u0027][\u0027compute_id\u0027], metadata[\u0027name\u0027])"},{"line_number":194,"context_line":"                info[\u0027timestamp\u0027] \u003d str(timeutils.parse_strtime("},{"line_number":195,"context_line":"                    metadata[\u0027timestamp\u0027]))"},{"line_number":196,"context_line":"                return info"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2F6fQ%3D","line":193,"updated":"2013-08-28 02:16:32.000000000","message":"i\u0027m not sure metadata[\u0027name\u0027] is needed here, i would think all the meters would from a single notification would have the same resource_id and not be separated by metadata[\u0027name\u0027]","commit_id":"3869563da5efd5c6c190521f838a90347ca74150"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"0f03ce2b00ec0b44cc740bbabbb5a472a8bccaad","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                metadata[\u0027host\u0027] \u003d message[\u0027publisher_id\u0027]"},{"line_number":191,"context_line":"                info[\u0027payload\u0027] \u003d metadata"},{"line_number":192,"context_line":"                info[\u0027resource_id\u0027] \u003d \u0027%s_%s\u0027 % ("},{"line_number":193,"context_line":"                    message[\u0027payload\u0027][\u0027compute_id\u0027], metadata[\u0027name\u0027])"},{"line_number":194,"context_line":"                info[\u0027timestamp\u0027] \u003d str(timeutils.parse_strtime("},{"line_number":195,"context_line":"                    metadata[\u0027timestamp\u0027]))"},{"line_number":196,"context_line":"                return info"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2F6Uk%3D","line":193,"in_reply_to":"AAAASn%2F%2F6fQ%3D","updated":"2013-08-28 06:05:23.000000000","message":"Done","commit_id":"3869563da5efd5c6c190521f838a90347ca74150"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"81f753ae1913c3701e7517d7fc499067e8c24744","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        info \u003d self._is_sample(message, \u0027cpu.frequency\u0027)"},{"line_number":202,"context_line":"        if info:"},{"line_number":203,"context_line":"            yield sample.Sample("},{"line_number":204,"context_line":"                name\u003d\u0027compute.node.%s\u0027 % info[\u0027payload\u0027][\u0027name\u0027],"},{"line_number":205,"context_line":"                type\u003dsample.TYPE_GAUGE,"},{"line_number":206,"context_line":"                unit\u003d\u0027MHZ\u0027,"},{"line_number":207,"context_line":"                volume\u003dinfo[\u0027payload\u0027][\u0027value\u0027],"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2F6fA%3D","line":204,"updated":"2013-08-28 02:16:32.000000000","message":"this comment isn\u0027t really important but is \u0027compute.node.\u0027 prefix useful here? will there be a cpu.frequency for something else? maybe hardware? just brainstorming, if you think it\u0027s useful than i\u0027m fine with keeping it.","commit_id":"3869563da5efd5c6c190521f838a90347ca74150"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"0f03ce2b00ec0b44cc740bbabbb5a472a8bccaad","unresolved":false,"context_lines":[{"line_number":201,"context_line":"        info \u003d self._is_sample(message, \u0027cpu.frequency\u0027)"},{"line_number":202,"context_line":"        if info:"},{"line_number":203,"context_line":"            yield sample.Sample("},{"line_number":204,"context_line":"                name\u003d\u0027compute.node.%s\u0027 % info[\u0027payload\u0027][\u0027name\u0027],"},{"line_number":205,"context_line":"                type\u003dsample.TYPE_GAUGE,"},{"line_number":206,"context_line":"                unit\u003d\u0027MHZ\u0027,"},{"line_number":207,"context_line":"                volume\u003dinfo[\u0027payload\u0027][\u0027value\u0027],"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2F6Yk%3D","line":204,"in_reply_to":"AAAASn%2F%2F6fA%3D","updated":"2013-08-28 06:05:23.000000000","message":"I am not sure ,just incase.","commit_id":"3869563da5efd5c6c190521f838a90347ca74150"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"81f753ae1913c3701e7517d7fc499067e8c24744","unresolved":false,"context_lines":[{"line_number":203,"context_line":"            yield sample.Sample("},{"line_number":204,"context_line":"                name\u003d\u0027compute.node.%s\u0027 % info[\u0027payload\u0027][\u0027name\u0027],"},{"line_number":205,"context_line":"                type\u003dsample.TYPE_GAUGE,"},{"line_number":206,"context_line":"                unit\u003d\u0027MHZ\u0027,"},{"line_number":207,"context_line":"                volume\u003dinfo[\u0027payload\u0027][\u0027value\u0027],"},{"line_number":208,"context_line":"                user_id\u003dNone,"},{"line_number":209,"context_line":"                project_id\u003dNone,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2F6gM%3D","line":206,"updated":"2013-08-28 02:16:32.000000000","message":"MHz","commit_id":"3869563da5efd5c6c190521f838a90347ca74150"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"0f03ce2b00ec0b44cc740bbabbb5a472a8bccaad","unresolved":false,"context_lines":[{"line_number":203,"context_line":"            yield sample.Sample("},{"line_number":204,"context_line":"                name\u003d\u0027compute.node.%s\u0027 % info[\u0027payload\u0027][\u0027name\u0027],"},{"line_number":205,"context_line":"                type\u003dsample.TYPE_GAUGE,"},{"line_number":206,"context_line":"                unit\u003d\u0027MHZ\u0027,"},{"line_number":207,"context_line":"                volume\u003dinfo[\u0027payload\u0027][\u0027value\u0027],"},{"line_number":208,"context_line":"                user_id\u003dNone,"},{"line_number":209,"context_line":"                project_id\u003dNone,"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2F6WQ%3D","line":206,"in_reply_to":"AAAASn%2F%2F6gM%3D","updated":"2013-08-28 06:05:23.000000000","message":"Done","commit_id":"3869563da5efd5c6c190521f838a90347ca74150"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"81f753ae1913c3701e7517d7fc499067e8c24744","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                resource_id\u003dinfo[\u0027resource_id\u0027],"},{"line_number":211,"context_line":"                timestamp\u003dinfo[\u0027timestamp\u0027],"},{"line_number":212,"context_line":"                resource_metadata\u003dinfo[\u0027payload\u0027],"},{"line_number":213,"context_line":"                source\u003d\u0027compute_node\u0027)"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"class CpuUserTime(ComputeMetricsNotificationBase):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2F6e8%3D","line":213,"updated":"2013-08-28 02:16:32.000000000","message":"is the notifications from the testcase real data? maybe use info[\u0027payload\u0027][\u0027nodename\u0027] as the source instead of generic hardcode \u0027compute_node\u0027","commit_id":"3869563da5efd5c6c190521f838a90347ca74150"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"0f03ce2b00ec0b44cc740bbabbb5a472a8bccaad","unresolved":false,"context_lines":[{"line_number":210,"context_line":"                resource_id\u003dinfo[\u0027resource_id\u0027],"},{"line_number":211,"context_line":"                timestamp\u003dinfo[\u0027timestamp\u0027],"},{"line_number":212,"context_line":"                resource_metadata\u003dinfo[\u0027payload\u0027],"},{"line_number":213,"context_line":"                source\u003d\u0027compute_node\u0027)"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"class CpuUserTime(ComputeMetricsNotificationBase):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAASn%2F%2F6WI%3D","line":213,"in_reply_to":"AAAASn%2F%2F6e8%3D","updated":"2013-08-28 06:05:23.000000000","message":"Done","commit_id":"3869563da5efd5c6c190521f838a90347ca74150"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"e381c4e8278984357f657a1a0bb398b496e94829","unresolved":false,"context_lines":[{"line_number":181,"context_line":"    event_types \u003d [\u0027compute.metrics.update\u0027]"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    @staticmethod"},{"line_number":184,"context_line":"    def _is_sample(message, name):"},{"line_number":185,"context_line":"        for metric in message[\u0027payload\u0027].get(\u0027metrics\u0027, []):"},{"line_number":186,"context_line":"            if name \u003d\u003d metric[\u0027name\u0027]:"},{"line_number":187,"context_line":"                info \u003d {}"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAASn%2F%2F5X0%3D","line":184,"updated":"2013-08-28 09:43:44.000000000","message":"Not important, but I think the method name can be improved, because when I read is_sample, I think the method return only True or False or it return None or a dict","commit_id":"7418af83ef39317e2fa8936c1778c568e722090f"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"e381c4e8278984357f657a1a0bb398b496e94829","unresolved":false,"context_lines":[{"line_number":211,"context_line":"                resource_id\u003dinfo[\u0027resource_id\u0027],"},{"line_number":212,"context_line":"                timestamp\u003dinfo[\u0027timestamp\u0027],"},{"line_number":213,"context_line":"                resource_metadata\u003dinfo[\u0027payload\u0027],"},{"line_number":214,"context_line":"                source\u003d\u0027compute_%s\u0027 % message[\u0027payload\u0027][\u0027nodename\u0027])"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"class CpuUserTime(ComputeMetricsNotificationBase):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAASn%2F%2F5VE%3D","line":214,"updated":"2013-08-28 09:43:44.000000000","message":"The source must not be set for meter that come from a openstack componment","commit_id":"7418af83ef39317e2fa8936c1778c568e722090f"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"06b3c3de1f11affcbdf5a7a5430ac704743729a7","unresolved":false,"context_lines":[{"line_number":211,"context_line":"                resource_id\u003dinfo[\u0027resource_id\u0027],"},{"line_number":212,"context_line":"                timestamp\u003dinfo[\u0027timestamp\u0027],"},{"line_number":213,"context_line":"                resource_metadata\u003dinfo[\u0027payload\u0027],"},{"line_number":214,"context_line":"                source\u003d\u0027compute_%s\u0027 % message[\u0027payload\u0027][\u0027nodename\u0027])"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"class CpuUserTime(ComputeMetricsNotificationBase):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAASn%2F%2F0XI%3D","line":214,"in_reply_to":"AAAASn%2F%2F5VE%3D","updated":"2013-08-29 06:51:39.000000000","message":"@Mehdi Abaakouk\t\n\n The notification is about nova ompute physical host, not VM instance.Can you give some suggestions?\nthanks!","commit_id":"7418af83ef39317e2fa8936c1778c568e722090f"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"e381c4e8278984357f657a1a0bb398b496e94829","unresolved":false,"context_lines":[{"line_number":245,"context_line":"                resource_id\u003dinfo[\u0027resource_id\u0027],"},{"line_number":246,"context_line":"                timestamp\u003dinfo[\u0027timestamp\u0027],"},{"line_number":247,"context_line":"                resource_metadata\u003dinfo[\u0027payload\u0027],"},{"line_number":248,"context_line":"                source\u003d\u0027compute_%s\u0027 % message[\u0027payload\u0027][\u0027nodename\u0027])"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"class CpuIdleTime(ComputeMetricsNotificationBase):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAASn%2F%2F5U4%3D","line":248,"updated":"2013-08-28 09:43:44.000000000","message":"The source must not be set for meter that come from a openstack componment","commit_id":"7418af83ef39317e2fa8936c1778c568e722090f"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"e381c4e8278984357f657a1a0bb398b496e94829","unresolved":false,"context_lines":[{"line_number":279,"context_line":"                resource_id\u003dinfo[\u0027resource_id\u0027],"},{"line_number":280,"context_line":"                timestamp\u003dinfo[\u0027timestamp\u0027],"},{"line_number":281,"context_line":"                resource_metadata\u003dinfo[\u0027payload\u0027],"},{"line_number":282,"context_line":"                source\u003d\u0027compute_%s\u0027 % message[\u0027payload\u0027][\u0027nodename\u0027])"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"class CpuKernelPercent(ComputeMetricsNotificationBase):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAASn%2F%2F5U0%3D","line":282,"updated":"2013-08-28 09:43:44.000000000","message":"The source must not be set for meter that come from a openstack componment","commit_id":"7418af83ef39317e2fa8936c1778c568e722090f"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"e381c4e8278984357f657a1a0bb398b496e94829","unresolved":false,"context_lines":[{"line_number":296,"context_line":"                resource_id\u003dinfo[\u0027resource_id\u0027],"},{"line_number":297,"context_line":"                timestamp\u003dinfo[\u0027timestamp\u0027],"},{"line_number":298,"context_line":"                resource_metadata\u003dinfo[\u0027payload\u0027],"},{"line_number":299,"context_line":"                source\u003d\u0027compute_%s\u0027 % message[\u0027payload\u0027][\u0027nodename\u0027])"},{"line_number":300,"context_line":""},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"class CpuIdlePercent(ComputeMetricsNotificationBase):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAASn%2F%2F5Us%3D","line":299,"updated":"2013-08-28 09:43:44.000000000","message":"The source must not be set for meter that come from a openstack componment","commit_id":"7418af83ef39317e2fa8936c1778c568e722090f"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"e381c4e8278984357f657a1a0bb398b496e94829","unresolved":false,"context_lines":[{"line_number":313,"context_line":"                resource_id\u003dinfo[\u0027resource_id\u0027],"},{"line_number":314,"context_line":"                timestamp\u003dinfo[\u0027timestamp\u0027],"},{"line_number":315,"context_line":"                resource_metadata\u003dinfo[\u0027payload\u0027],"},{"line_number":316,"context_line":"                source\u003d\u0027compute_%s\u0027 % message[\u0027payload\u0027][\u0027nodename\u0027])"},{"line_number":317,"context_line":""},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"class CpuUserPercent(ComputeMetricsNotificationBase):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAASn%2F%2F5Uo%3D","line":316,"updated":"2013-08-28 09:43:44.000000000","message":"The source must not be set for meter that come from a openstack componment","commit_id":"7418af83ef39317e2fa8936c1778c568e722090f"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"e381c4e8278984357f657a1a0bb398b496e94829","unresolved":false,"context_lines":[{"line_number":330,"context_line":"                resource_id\u003dinfo[\u0027resource_id\u0027],"},{"line_number":331,"context_line":"                timestamp\u003dinfo[\u0027timestamp\u0027],"},{"line_number":332,"context_line":"                resource_metadata\u003dinfo[\u0027payload\u0027],"},{"line_number":333,"context_line":"                source\u003d\u0027compute_%s\u0027 % message[\u0027payload\u0027][\u0027nodename\u0027])"},{"line_number":334,"context_line":""},{"line_number":335,"context_line":""},{"line_number":336,"context_line":"class CpuIowaitPercent(ComputeMetricsNotificationBase):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAASn%2F%2F5Uk%3D","line":333,"updated":"2013-08-28 09:43:44.000000000","message":"The source must not be set for meter that come from a openstack componment","commit_id":"7418af83ef39317e2fa8936c1778c568e722090f"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"e381c4e8278984357f657a1a0bb398b496e94829","unresolved":false,"context_lines":[{"line_number":347,"context_line":"                resource_id\u003dinfo[\u0027resource_id\u0027],"},{"line_number":348,"context_line":"                timestamp\u003dinfo[\u0027timestamp\u0027],"},{"line_number":349,"context_line":"                resource_metadata\u003dinfo[\u0027payload\u0027],"},{"line_number":350,"context_line":"                source\u003d\u0027compute_%s\u0027 % message[\u0027payload\u0027][\u0027nodename\u0027])"},{"line_number":351,"context_line":""},{"line_number":352,"context_line":""},{"line_number":353,"context_line":"class CpuPercent(ComputeMetricsNotificationBase):"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAASn%2F%2F5Ug%3D","line":350,"updated":"2013-08-28 09:43:44.000000000","message":"The source must not be set for meter that come from a openstack componment","commit_id":"7418af83ef39317e2fa8936c1778c568e722090f"},{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"e381c4e8278984357f657a1a0bb398b496e94829","unresolved":false,"context_lines":[{"line_number":364,"context_line":"                resource_id\u003dinfo[\u0027resource_id\u0027],"},{"line_number":365,"context_line":"                timestamp\u003dinfo[\u0027timestamp\u0027],"},{"line_number":366,"context_line":"                resource_metadata\u003dinfo[\u0027payload\u0027],"},{"line_number":367,"context_line":"                source\u003d\u0027compute_%s\u0027 % message[\u0027payload\u0027][\u0027nodename\u0027])"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAASn%2F%2F5Uc%3D","line":367,"updated":"2013-08-28 09:43:44.000000000","message":"The source must not be set for meter that come from a openstack componment","commit_id":"7418af83ef39317e2fa8936c1778c568e722090f"},{"author":{"_account_id":5313,"name":"David Peraza","email":"david_peraza@persistentsys.com","username":"dperaza"},"change_message_id":"764a8e4b0d3d7a030ced9d82aa8f55f40d8e25e7","unresolved":false,"context_lines":[{"line_number":182,"context_line":""},{"line_number":183,"context_line":"    @staticmethod"},{"line_number":184,"context_line":"    def _get_sample(message, name):"},{"line_number":185,"context_line":"        for metric in message[\u0027payload\u0027].get(\u0027metrics\u0027, []):"},{"line_number":186,"context_line":"            if name \u003d\u003d metric[\u0027name\u0027]:"},{"line_number":187,"context_line":"                info \u003d {}"},{"line_number":188,"context_line":"                metadata \u003d copy.copy(metric)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2F8CA%3D","line":185,"updated":"2013-10-24 22:08:07.000000000","message":"what happens if no metric key in message[\u0027payload\u0027] is that an error?","commit_id":"aa2cfc602ddc80648a1e5f3451716f1a564ddee8"},{"author":{"_account_id":7073,"name":"mouad benchchaoui","email":"m.benchchaoui@x-ion.de","username":"mouad"},"change_message_id":"fefa73aa2f393057c6774661f58bead99afb6173","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    def _get_sample(message, name):"},{"line_number":185,"context_line":"        for metric in message[\u0027payload\u0027].get(\u0027metrics\u0027, []):"},{"line_number":186,"context_line":"            if name \u003d\u003d metric[\u0027name\u0027]:"},{"line_number":187,"context_line":"                info \u003d {}"},{"line_number":188,"context_line":"                metadata \u003d copy.copy(metric)"},{"line_number":189,"context_line":"                metadata[\u0027event_type\u0027] \u003d message[\u0027event_type\u0027]"},{"line_number":190,"context_line":"                metadata[\u0027host\u0027] \u003d message[\u0027publisher_id\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATH%2F%2FdIw%3D","line":187,"updated":"2013-10-15 23:25:37.000000000","message":"If you just want to create a shallow copy, you can simply do:\n\n info \u003d dict(metadata)","commit_id":"aa2cfc602ddc80648a1e5f3451716f1a564ddee8"},{"author":{"_account_id":7073,"name":"mouad benchchaoui","email":"m.benchchaoui@x-ion.de","username":"mouad"},"change_message_id":"fee57518ff0983be2a5ab6751edf128876c0025c","unresolved":false,"context_lines":[{"line_number":184,"context_line":"    def _get_sample(message, name):"},{"line_number":185,"context_line":"        for metric in message[\u0027payload\u0027].get(\u0027metrics\u0027, []):"},{"line_number":186,"context_line":"            if name \u003d\u003d metric[\u0027name\u0027]:"},{"line_number":187,"context_line":"                info \u003d {}"},{"line_number":188,"context_line":"                metadata \u003d copy.copy(metric)"},{"line_number":189,"context_line":"                metadata[\u0027event_type\u0027] \u003d message[\u0027event_type\u0027]"},{"line_number":190,"context_line":"                metadata[\u0027host\u0027] \u003d message[\u0027publisher_id\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATH%2F%2Fan0%3D","line":187,"in_reply_to":"AAAATH%2F%2FdIw%3D","updated":"2013-10-16 13:57:04.000000000","message":"Or using copy method of a dict:\n\n   info \u003d metric.copy()","commit_id":"aa2cfc602ddc80648a1e5f3451716f1a564ddee8"},{"author":{"_account_id":7073,"name":"mouad benchchaoui","email":"m.benchchaoui@x-ion.de","username":"mouad"},"change_message_id":"fefa73aa2f393057c6774661f58bead99afb6173","unresolved":false,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":"class CpuFrequency(ComputeMetricsNotificationBase):"},{"line_number":201,"context_line":"    def process_notification(self, message):"},{"line_number":202,"context_line":"        info \u003d self._get_sample(message, \u0027cpu.frequency\u0027)"},{"line_number":203,"context_line":"        if info:"},{"line_number":204,"context_line":"            yield sample.Sample("},{"line_number":205,"context_line":"                name\u003d\u0027compute.node.%s\u0027 % info[\u0027payload\u0027][\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATH%2F%2FdEI%3D","line":202,"updated":"2013-10-15 23:25:37.000000000","message":"Can you re-write this class and the ones below it without repeating yourself !? just an idea:\n\nclass ComputeMetricsNotificationBase ....\n\n    # Or use abc.abstractproperty\n    metric \u003d None\n    unit \u003d None\n    type \u003d None\n\n    ....\n\n    def process_notification(self, message):\n         info \u003d self._get_sample(message, self.metric)\n         if info:\n              yield sample.Sample(\n                   ....\n                   type\u003dself.type,\n                   unit\u003dself.unit,\n                   volume\u003dinfo[\u0027payload\u0027][\u0027value\u0027] * 100 if unit \u003d\u003d \u0027%\u0027 else info[\u0027payload\u0027][\u0027value\u0027],\n                   ....\n                   )\n\nthan this class can be wrote like this:\n\nclass CpuFrequency(ComputeMetricsNotificationBase):\n     metric \u003d \u0027cpu.frequency\u0027\n     unit \u003d \u0027MHz\u0027\n     type \u003d sample.TYPE_GAUGE\n\nclass CpuUserTime(ComputeMetricsNotificationBase):\n     metric \u003d \u0027cpu.user.time\u0027\n     unit \u003d \u0027ns\u0027\n     type \u003d sample.TYPE_CUMULATIVE\n\n...","commit_id":"aa2cfc602ddc80648a1e5f3451716f1a564ddee8"},{"author":{"_account_id":5313,"name":"David Peraza","email":"david_peraza@persistentsys.com","username":"dperaza"},"change_message_id":"764a8e4b0d3d7a030ced9d82aa8f55f40d8e25e7","unresolved":false,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":"class CpuFrequency(ComputeMetricsNotificationBase):"},{"line_number":201,"context_line":"    def process_notification(self, message):"},{"line_number":202,"context_line":"        info \u003d self._get_sample(message, \u0027cpu.frequency\u0027)"},{"line_number":203,"context_line":"        if info:"},{"line_number":204,"context_line":"            yield sample.Sample("},{"line_number":205,"context_line":"                name\u003d\u0027compute.node.%s\u0027 % info[\u0027payload\u0027][\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2F8BQ%3D","line":202,"in_reply_to":"AAAATH%2F%2FdEI%3D","updated":"2013-10-24 22:08:07.000000000","message":"+1 on this comment. Can you also add some pydocs to each class explaining/defining each meter","commit_id":"aa2cfc602ddc80648a1e5f3451716f1a564ddee8"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"89a8226b9329194a70faa8ca3a24ed32d5c2eb6c","unresolved":false,"context_lines":[{"line_number":199,"context_line":""},{"line_number":200,"context_line":"class CpuFrequency(ComputeMetricsNotificationBase):"},{"line_number":201,"context_line":"    def process_notification(self, message):"},{"line_number":202,"context_line":"        info \u003d self._get_sample(message, \u0027cpu.frequency\u0027)"},{"line_number":203,"context_line":"        if info:"},{"line_number":204,"context_line":"            yield sample.Sample("},{"line_number":205,"context_line":"                name\u003d\u0027compute.node.%s\u0027 % info[\u0027payload\u0027][\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2BtAQ%3D","line":202,"in_reply_to":"AAAATn%2F%2F8BQ%3D","updated":"2013-11-21 10:46:46.000000000","message":"If you suggest to rewrite all the classes below than we need to rewrite all notifications.py because there are several already existing classes that may be rewrote in the manner you proposed. But I think it is not the part if this cr. It should be a separate, refactoring one","commit_id":"aa2cfc602ddc80648a1e5f3451716f1a564ddee8"}],"ceilometer/compute/notifications/__init__.py":[{"author":{"_account_id":5313,"name":"David Peraza","email":"david_peraza@persistentsys.com","username":"dperaza"},"change_message_id":"e7ce01d95ce00c342142fe43c1766b923aab9f6e","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"OPTS \u003d ["},{"line_number":25,"context_line":"    cfg.StrOpt(\u0027nova_control_exchange\u0027,"},{"line_number":26,"context_line":"               default\u003d\u0027nova\u0027,"},{"line_number":27,"context_line":"               help\u003d\"Exchange name for Nova notifications\"),"},{"line_number":28,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F9UfM%3D","line":25,"updated":"2013-12-12 17:40:52.000000000","message":"You added a new config option here, should you also add this option to the sample ceilometer.conf under etc?","commit_id":"364bcb85bf66b4b75ad2778ce84171b8c3fccf8b"},{"author":{"_account_id":5313,"name":"David Peraza","email":"david_peraza@persistentsys.com","username":"dperaza"},"change_message_id":"d453c678102a9da2737179c21790a9b6dde47017","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"OPTS \u003d ["},{"line_number":25,"context_line":"    cfg.StrOpt(\u0027nova_control_exchange\u0027,"},{"line_number":26,"context_line":"               default\u003d\u0027nova\u0027,"},{"line_number":27,"context_line":"               help\u003d\"Exchange name for Nova notifications\"),"},{"line_number":28,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F9FbY%3D","line":25,"in_reply_to":"AAAATn%2F9R44%3D","updated":"2013-12-16 22:54:39.000000000","message":"Oh, OK... makes sense now, thanks","commit_id":"364bcb85bf66b4b75ad2778ce84171b8c3fccf8b"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"dd7084a49fcbf8bcf5d50528cbf3747a54628418","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"OPTS \u003d ["},{"line_number":25,"context_line":"    cfg.StrOpt(\u0027nova_control_exchange\u0027,"},{"line_number":26,"context_line":"               default\u003d\u0027nova\u0027,"},{"line_number":27,"context_line":"               help\u003d\"Exchange name for Nova notifications\"),"},{"line_number":28,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F9R44%3D","line":25,"in_reply_to":"AAAATn%2F9UfM%3D","updated":"2013-12-13 05:23:56.000000000","message":"this is not a new option, only change the place","commit_id":"364bcb85bf66b4b75ad2778ce84171b8c3fccf8b"}],"ceilometer/compute/notifications/cpu.py":[{"author":{"_account_id":5313,"name":"David Peraza","email":"david_peraza@persistentsys.com","username":"dperaza"},"change_message_id":"e7ce01d95ce00c342142fe43c1766b923aab9f6e","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @staticmethod"},{"line_number":36,"context_line":"    def _get_sample(message, name):"},{"line_number":37,"context_line":"        for metric in message[\u0027payload\u0027].get(\u0027metrics\u0027, []):"},{"line_number":38,"context_line":"            if name \u003d\u003d metric[\u0027name\u0027]:"},{"line_number":39,"context_line":"                info \u003d {}"},{"line_number":40,"context_line":"                info[\u0027payload\u0027] \u003d metric"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F9Ueg%3D","line":37,"updated":"2013-12-12 17:40:52.000000000","message":"should there be some error handling around payload key? Be more defensive here. I think handling KeyError should do with more info on Logs on what sample is being handled","commit_id":"364bcb85bf66b4b75ad2778ce84171b8c3fccf8b"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"dd7084a49fcbf8bcf5d50528cbf3747a54628418","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    @staticmethod"},{"line_number":36,"context_line":"    def _get_sample(message, name):"},{"line_number":37,"context_line":"        for metric in message[\u0027payload\u0027].get(\u0027metrics\u0027, []):"},{"line_number":38,"context_line":"            if name \u003d\u003d metric[\u0027name\u0027]:"},{"line_number":39,"context_line":"                info \u003d {}"},{"line_number":40,"context_line":"                info[\u0027payload\u0027] \u003d metric"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F9R5M%3D","line":37,"in_reply_to":"AAAATn%2F9Ueg%3D","updated":"2013-12-13 05:23:56.000000000","message":"Done","commit_id":"364bcb85bf66b4b75ad2778ce84171b8c3fccf8b"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"e766a6db3f3f92da5a7ef645a724b0c0f255b476","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                        message[\u0027payload\u0027][\u0027host\u0027],"},{"line_number":50,"context_line":"                        message[\u0027payload\u0027][\u0027nodename\u0027])"},{"line_number":51,"context_line":"                    info[\u0027timestamp\u0027] \u003d str(timeutils.parse_strtime("},{"line_number":52,"context_line":"                        metric[\u0027timestamp\u0027]))"},{"line_number":53,"context_line":"                    return info"},{"line_number":54,"context_line":"        except Exception as err:"},{"line_number":55,"context_line":"            LOG.warning(_(\u0027Handle the %(m)s sample with an NameError: %(e)s\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F87so%3D","line":52,"updated":"2013-12-18 16:49:21.000000000","message":"do we need timestamp as a first-level value for a specific reason? it\u0027s already in info[\u0027payload\u0027] and will be put into metadata.","commit_id":"f5e1f05750b35e388424cc6da63f3b60c112223c"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"7f57e5cbaaeaf41a8dade3ab2830c162e81c0504","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                        message[\u0027payload\u0027][\u0027host\u0027],"},{"line_number":50,"context_line":"                        message[\u0027payload\u0027][\u0027nodename\u0027])"},{"line_number":51,"context_line":"                    info[\u0027timestamp\u0027] \u003d str(timeutils.parse_strtime("},{"line_number":52,"context_line":"                        metric[\u0027timestamp\u0027]))"},{"line_number":53,"context_line":"                    return info"},{"line_number":54,"context_line":"        except Exception as err:"},{"line_number":55,"context_line":"            LOG.warning(_(\u0027Handle the %(m)s sample with an NameError: %(e)s\u0027)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F85Mg%3D","line":52,"in_reply_to":"AAAATn%2F87so%3D","updated":"2013-12-19 03:27:53.000000000","message":"@gordon chung, hi, this message  format is different from the others, no timestamp in the info[\u0027payload\u0027], but the metric has its own timestamp. you can see the  messge format in t test_cpi.py (METRICS_UPDATE).","commit_id":"f5e1f05750b35e388424cc6da63f3b60c112223c"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"e766a6db3f3f92da5a7ef645a724b0c0f255b476","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                        metric[\u0027timestamp\u0027]))"},{"line_number":53,"context_line":"                    return info"},{"line_number":54,"context_line":"        except Exception as err:"},{"line_number":55,"context_line":"            LOG.warning(_(\u0027Handle the %(m)s sample with an NameError: %(e)s\u0027)"},{"line_number":56,"context_line":"                        % ({\u0027m\u0027: name, \u0027e\u0027: err}))"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def process_notification(self, message):"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F87rE%3D","line":55,"updated":"2013-12-18 16:49:21.000000000","message":"this isn\u0027t necessarily a NameError -- we\u0027re catching all exceptions here.\n\nmaybe change this message to say: \u0027An error occurred while building %(m)s sample: %(e)s\u0027","commit_id":"f5e1f05750b35e388424cc6da63f3b60c112223c"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"7f57e5cbaaeaf41a8dade3ab2830c162e81c0504","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                        metric[\u0027timestamp\u0027]))"},{"line_number":53,"context_line":"                    return info"},{"line_number":54,"context_line":"        except Exception as err:"},{"line_number":55,"context_line":"            LOG.warning(_(\u0027Handle the %(m)s sample with an NameError: %(e)s\u0027)"},{"line_number":56,"context_line":"                        % ({\u0027m\u0027: name, \u0027e\u0027: err}))"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def process_notification(self, message):"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F85NI%3D","line":55,"in_reply_to":"AAAATn%2F87rE%3D","updated":"2013-12-19 03:27:53.000000000","message":"Done","commit_id":"f5e1f05750b35e388424cc6da63f3b60c112223c"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"e766a6db3f3f92da5a7ef645a724b0c0f255b476","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                    return info"},{"line_number":54,"context_line":"        except Exception as err:"},{"line_number":55,"context_line":"            LOG.warning(_(\u0027Handle the %(m)s sample with an NameError: %(e)s\u0027)"},{"line_number":56,"context_line":"                        % ({\u0027m\u0027: name, \u0027e\u0027: err}))"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def process_notification(self, message):"},{"line_number":59,"context_line":"        info \u003d self._get_sample(message, self.metric)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F87q4%3D","line":56,"updated":"2013-12-18 16:49:21.000000000","message":"we probably don\u0027t need the parenthesis around dict","commit_id":"f5e1f05750b35e388424cc6da63f3b60c112223c"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"7f57e5cbaaeaf41a8dade3ab2830c162e81c0504","unresolved":false,"context_lines":[{"line_number":53,"context_line":"                    return info"},{"line_number":54,"context_line":"        except Exception as err:"},{"line_number":55,"context_line":"            LOG.warning(_(\u0027Handle the %(m)s sample with an NameError: %(e)s\u0027)"},{"line_number":56,"context_line":"                        % ({\u0027m\u0027: name, \u0027e\u0027: err}))"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def process_notification(self, message):"},{"line_number":59,"context_line":"        info \u003d self._get_sample(message, self.metric)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F85NE%3D","line":56,"in_reply_to":"AAAATn%2F87q4%3D","updated":"2013-12-19 03:27:53.000000000","message":"Done","commit_id":"f5e1f05750b35e388424cc6da63f3b60c112223c"}],"ceilometer/tests/compute/notifications/test_cpu.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"e766a6db3f3f92da5a7ef645a724b0c0f255b476","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        self.assertIn(METRICS_UPDATE[\u0027event_type\u0027],"},{"line_number":104,"context_line":"                      ic.event_types)"},{"line_number":105,"context_line":"        samples \u003d list(ic.process_notification(METRICS_UPDATE))"},{"line_number":106,"context_line":"        c \u003d samples[0]"},{"line_number":107,"context_line":"        resource_id \u003d \u0027%s_%s\u0027 % (METRICS_UPDATE[\u0027payload\u0027][\u0027host\u0027],"},{"line_number":108,"context_line":"                                 METRICS_UPDATE[\u0027payload\u0027][\u0027nodename\u0027])"},{"line_number":109,"context_line":"        self.assertEqual(c.resource_id, resource_id)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F87ns%3D","line":106,"updated":"2013-12-18 16:49:21.000000000","message":"maybe make the above code a method that all tests use.\n\nie. def process_notification(ic): ... return c","commit_id":"f5e1f05750b35e388424cc6da63f3b60c112223c"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"7f57e5cbaaeaf41a8dade3ab2830c162e81c0504","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        self.assertIn(METRICS_UPDATE[\u0027event_type\u0027],"},{"line_number":104,"context_line":"                      ic.event_types)"},{"line_number":105,"context_line":"        samples \u003d list(ic.process_notification(METRICS_UPDATE))"},{"line_number":106,"context_line":"        c \u003d samples[0]"},{"line_number":107,"context_line":"        resource_id \u003d \u0027%s_%s\u0027 % (METRICS_UPDATE[\u0027payload\u0027][\u0027host\u0027],"},{"line_number":108,"context_line":"                                 METRICS_UPDATE[\u0027payload\u0027][\u0027nodename\u0027])"},{"line_number":109,"context_line":"        self.assertEqual(c.resource_id, resource_id)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F85MY%3D","line":106,"in_reply_to":"AAAATn%2F87ns%3D","updated":"2013-12-19 03:27:53.000000000","message":"Done","commit_id":"f5e1f05750b35e388424cc6da63f3b60c112223c"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"e766a6db3f3f92da5a7ef645a724b0c0f255b476","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        samples \u003d list(ic.process_notification(METRICS_UPDATE))"},{"line_number":106,"context_line":"        c \u003d samples[0]"},{"line_number":107,"context_line":"        resource_id \u003d \u0027%s_%s\u0027 % (METRICS_UPDATE[\u0027payload\u0027][\u0027host\u0027],"},{"line_number":108,"context_line":"                                 METRICS_UPDATE[\u0027payload\u0027][\u0027nodename\u0027])"},{"line_number":109,"context_line":"        self.assertEqual(c.resource_id, resource_id)"},{"line_number":110,"context_line":"        self.assertEqual(c.volume, 1600)"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F87o4%3D","line":108,"updated":"2013-12-18 16:49:21.000000000","message":"define this globally","commit_id":"f5e1f05750b35e388424cc6da63f3b60c112223c"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"7f57e5cbaaeaf41a8dade3ab2830c162e81c0504","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        samples \u003d list(ic.process_notification(METRICS_UPDATE))"},{"line_number":106,"context_line":"        c \u003d samples[0]"},{"line_number":107,"context_line":"        resource_id \u003d \u0027%s_%s\u0027 % (METRICS_UPDATE[\u0027payload\u0027][\u0027host\u0027],"},{"line_number":108,"context_line":"                                 METRICS_UPDATE[\u0027payload\u0027][\u0027nodename\u0027])"},{"line_number":109,"context_line":"        self.assertEqual(c.resource_id, resource_id)"},{"line_number":110,"context_line":"        self.assertEqual(c.volume, 1600)"},{"line_number":111,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAATn%2F85MU%3D","line":108,"in_reply_to":"AAAATn%2F87o4%3D","updated":"2013-12-19 03:27:53.000000000","message":"Done","commit_id":"f5e1f05750b35e388424cc6da63f3b60c112223c"}],"etc/ceilometer/ceilometer.conf.sample":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"20c8488b3c335206119ade3905ec287b1d492a30","unresolved":false,"context_lines":[{"line_number":35,"context_line":"# Exchange name for Nova notifications (string value)"},{"line_number":36,"context_line":"#nova_control_exchange\u003dnova"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"# Which metrics to use for ceilometer,metrics_update_confmust"},{"line_number":39,"context_line":"# be configured to a fixed format:\"name+unit+type\".The name is"},{"line_number":40,"context_line":"# meter id(e.g.:cpu.percent) The unit is the description of"},{"line_number":41,"context_line":"# the unit of measurement.The type must be one of the meters"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAARn%2F%2F6vI%3D","line":38,"updated":"2013-08-20 08:54:31.000000000","message":"missing spaces","commit_id":"1a3e8a989dc5b5481d38ae483efe5c9b11feb9a8"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"9c4d61ba392e2f7a1e4cb8ea0de856f074ec5074","unresolved":false,"context_lines":[{"line_number":35,"context_line":"# Exchange name for Nova notifications (string value)"},{"line_number":36,"context_line":"#nova_control_exchange\u003dnova"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"# Which metrics to use for ceilometer,metrics_update_confmust"},{"line_number":39,"context_line":"# be configured to a fixed format:\"name+unit+type\".The name is"},{"line_number":40,"context_line":"# meter id(e.g.:cpu.percent) The unit is the description of"},{"line_number":41,"context_line":"# the unit of measurement.The type must be one of the meters"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAARn%2F%2F2pc%3D","line":38,"in_reply_to":"AAAARn%2F%2F6vI%3D","updated":"2013-08-21 05:51:36.000000000","message":"Done","commit_id":"1a3e8a989dc5b5481d38ae483efe5c9b11feb9a8"}],"setup.cfg":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"20c8488b3c335206119ade3905ec287b1d492a30","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    vcpus \u003d ceilometer.compute.notifications:VCpus"},{"line_number":38,"context_line":"    disk_root_size \u003d ceilometer.compute.notifications:RootDiskSize"},{"line_number":39,"context_line":"    disk_ephemeral_size \u003d ceilometer.compute.notifications:EphemeralDiskSize"},{"line_number":40,"context_line":"    metrics \u003d ceilometer.compute.notifications:MetricsUpdate"},{"line_number":41,"context_line":"    volume \u003d ceilometer.volume.notifications:Volume"},{"line_number":42,"context_line":"    volume_size \u003d ceilometer.volume.notifications:VolumeSize"},{"line_number":43,"context_line":"    image_crud \u003d ceilometer.image.notifications:ImageCRUD"}],"source_content_type":"text/x-ttcn-cfg","patch_set":1,"id":"AAAARn%2F%2F6vA%3D","line":40,"updated":"2013-08-20 08:54:31.000000000","message":"metrics is a terrible name, I\u0027ve no idea what the metric is about","commit_id":"1a3e8a989dc5b5481d38ae483efe5c9b11feb9a8"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"9c4d61ba392e2f7a1e4cb8ea0de856f074ec5074","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    vcpus \u003d ceilometer.compute.notifications:VCpus"},{"line_number":38,"context_line":"    disk_root_size \u003d ceilometer.compute.notifications:RootDiskSize"},{"line_number":39,"context_line":"    disk_ephemeral_size \u003d ceilometer.compute.notifications:EphemeralDiskSize"},{"line_number":40,"context_line":"    metrics \u003d ceilometer.compute.notifications:MetricsUpdate"},{"line_number":41,"context_line":"    volume \u003d ceilometer.volume.notifications:Volume"},{"line_number":42,"context_line":"    volume_size \u003d ceilometer.volume.notifications:VolumeSize"},{"line_number":43,"context_line":"    image_crud \u003d ceilometer.image.notifications:ImageCRUD"}],"source_content_type":"text/x-ttcn-cfg","patch_set":1,"id":"AAAARn%2F%2F2oI%3D","line":40,"in_reply_to":"AAAARn%2F%2F6vA%3D","updated":"2013-08-21 05:51:36.000000000","message":"@Julien Danjou\n\nThis patch depends on https://review.openstack.org/#/c/35760/23\nhttps://review.openstack.org/#/c/35767/\nbp:https://blueprints.launchpad.net/nova/+spec/utilization-aware-scheduling\nDeployer can write  plugins to get metrics(e.g. cpu ,memory,network )","commit_id":"1a3e8a989dc5b5481d38ae483efe5c9b11feb9a8"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"81f753ae1913c3701e7517d7fc499067e8c24744","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    vcpus \u003d ceilometer.compute.notifications:VCpus"},{"line_number":38,"context_line":"    disk_root_size \u003d ceilometer.compute.notifications:RootDiskSize"},{"line_number":39,"context_line":"    disk_ephemeral_size \u003d ceilometer.compute.notifications:EphemeralDiskSize"},{"line_number":40,"context_line":"    cpu_fequency \u003d ceilometer.compute.notifications:CpuFrequency"},{"line_number":41,"context_line":"    cpu_user_time \u003d ceilometer.compute.notifications:CpuUserTime"},{"line_number":42,"context_line":"    cpu_kernel_time \u003d ceilometer.compute.notifications:CpuKernelTime"},{"line_number":43,"context_line":"    cpu_idle_time \u003d ceilometer.compute.notifications:CpuIdleTime"}],"source_content_type":"text/x-ttcn-cfg","patch_set":8,"id":"AAAASn%2F%2F6gA%3D","line":40,"updated":"2013-08-28 02:16:32.000000000","message":"cpu_frequency","commit_id":"3869563da5efd5c6c190521f838a90347ca74150"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"0f03ce2b00ec0b44cc740bbabbb5a472a8bccaad","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    vcpus \u003d ceilometer.compute.notifications:VCpus"},{"line_number":38,"context_line":"    disk_root_size \u003d ceilometer.compute.notifications:RootDiskSize"},{"line_number":39,"context_line":"    disk_ephemeral_size \u003d ceilometer.compute.notifications:EphemeralDiskSize"},{"line_number":40,"context_line":"    cpu_fequency \u003d ceilometer.compute.notifications:CpuFrequency"},{"line_number":41,"context_line":"    cpu_user_time \u003d ceilometer.compute.notifications:CpuUserTime"},{"line_number":42,"context_line":"    cpu_kernel_time \u003d ceilometer.compute.notifications:CpuKernelTime"},{"line_number":43,"context_line":"    cpu_idle_time \u003d ceilometer.compute.notifications:CpuIdleTime"}],"source_content_type":"text/x-ttcn-cfg","patch_set":8,"id":"AAAASn%2F%2F6C4%3D","line":40,"in_reply_to":"AAAASn%2F%2F6gA%3D","updated":"2013-08-28 06:05:23.000000000","message":"Done","commit_id":"3869563da5efd5c6c190521f838a90347ca74150"}],"tests/compute/test_notifications.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"1485f33b6b780f33d89f58f78920769b20cf2312","unresolved":false,"context_lines":[{"line_number":640,"context_line":"        ic \u003d notifications.ComputeNodeCpuFrequency()"},{"line_number":641,"context_line":"        self.assertIn(METRICS_UPDATE[\u0027event_type\u0027],"},{"line_number":642,"context_line":"                      ic.event_types)"},{"line_number":643,"context_line":"        counters \u003d list(ic.process_notification(METRICS_UPDATE))"},{"line_number":644,"context_line":"        c \u003d counters[0]"},{"line_number":645,"context_line":"        resource_id \u003d \u0027%s_%s\u0027 % (METRICS_UPDATE[\u0027payload\u0027][\u0027compute_id\u0027],"},{"line_number":646,"context_line":"                                 \u0027cpu.frequency\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASX%2F%2F2P4%3D","line":643,"updated":"2013-08-26 11:49:44.000000000","message":"Please don\u0027t use counters, but samples.","commit_id":"bc84a6e70742aa8b9b859204b8d2fbbefb1526ad"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"79217ce44c589ee0ed20e30afcbbebf08489090e","unresolved":false,"context_lines":[{"line_number":640,"context_line":"        ic \u003d notifications.ComputeNodeCpuFrequency()"},{"line_number":641,"context_line":"        self.assertIn(METRICS_UPDATE[\u0027event_type\u0027],"},{"line_number":642,"context_line":"                      ic.event_types)"},{"line_number":643,"context_line":"        counters \u003d list(ic.process_notification(METRICS_UPDATE))"},{"line_number":644,"context_line":"        c \u003d counters[0]"},{"line_number":645,"context_line":"        resource_id \u003d \u0027%s_%s\u0027 % (METRICS_UPDATE[\u0027payload\u0027][\u0027compute_id\u0027],"},{"line_number":646,"context_line":"                                 \u0027cpu.frequency\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2F%2Fsg%3D","line":643,"in_reply_to":"AAAASX%2F%2F2P4%3D","updated":"2013-08-27 02:32:49.000000000","message":"Done","commit_id":"bc84a6e70742aa8b9b859204b8d2fbbefb1526ad"},{"author":{"_account_id":5313,"name":"David Peraza","email":"david_peraza@persistentsys.com","username":"dperaza"},"change_message_id":"764a8e4b0d3d7a030ced9d82aa8f55f40d8e25e7","unresolved":false,"context_lines":[{"line_number":647,"context_line":"        self.assertEqual(c.resource_id, resource_id)"},{"line_number":648,"context_line":"        self.assertEqual(c.volume, 1600)"},{"line_number":649,"context_line":""},{"line_number":650,"context_line":"    def test_compute_cpu_user_time(self):"},{"line_number":651,"context_line":"        ic \u003d notifications.CpuUserTime()"},{"line_number":652,"context_line":"        self.assertIn(METRICS_UPDATE[\u0027event_type\u0027],"},{"line_number":653,"context_line":"                      ic.event_types)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2F8AU%3D","line":650,"updated":"2013-10-24 22:08:07.000000000","message":"same comment on re-use applies here, you could build a common _test_compute_cpu that runs the test and you pass ic, name and volume as reference","commit_id":"aa2cfc602ddc80648a1e5f3451716f1a564ddee8"}]}
