)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12712,"name":"Gleb Stepanov","email":"gstepanov@mirantis.com","username":"stgleb"},"change_message_id":"ba3416f2fc216bc626c4cb1581be2969d8cb538e","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[WIP] Add compute cpu metrics"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This includes \u0027cpu.idle_time_ns\u0027, \u0027cpu.wait_time_ns\u0027, \u0027cpu.user_time_ns\u0027, \u0027cpu.system_time_ns\u0027, and \u0027cpu.frequency_MHz\u0027"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Ib4b6ca2ba3b3a4d660c7e35bda9a7952bf7764d1"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"7aa08908_e2a4e308","line":9,"updated":"2016-06-08 14:45:40.000000000","message":"Sorry for beign perfectionist, but i think commit message should be splitted.","commit_id":"c8701d7d8f8f33facbe0514729c9aa6438211831"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"50222adcdb9bd478743873f7e0f909555b5574f0","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This includes:"},{"line_number":10,"context_line":"cpu.idle_time_ns"},{"line_number":11,"context_line":"cpu.wait_time_ns"},{"line_number":12,"context_line":"cpu.user_time_ns"},{"line_number":13,"context_line":"cpu.system_time_ns"},{"line_number":14,"context_line":"cpu.frequency_MHz"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7aa08908_c176ed04","line":11,"range":{"start_line":11,"start_character":4,"end_line":11,"end_character":16},"updated":"2016-06-08 21:43:09.000000000","message":"update the documentation","commit_id":"340da015dbe3589e82553f6c39f5241f35777653"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"29bdc5bee4e29a8b1ce7055c1dedfeb0c7a0a224","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This includes:"},{"line_number":10,"context_line":"cpu.idle_time_ns"},{"line_number":11,"context_line":"cpu.wait_time_ns"},{"line_number":12,"context_line":"cpu.user_time_ns"},{"line_number":13,"context_line":"cpu.system_time_ns"},{"line_number":14,"context_line":"cpu.frequency_MHz"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7aa08908_416cbd07","line":11,"range":{"start_line":11,"start_character":4,"end_line":11,"end_character":16},"in_reply_to":"7aa08908_c176ed04","updated":"2016-06-08 21:45:20.000000000","message":"Will do!","commit_id":"340da015dbe3589e82553f6c39f5241f35777653"}],"docs/Plugins.md":[{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"18e333661fae315c5cacbd53ab6fc1a547da303e","unresolved":false,"context_lines":[{"line_number":314,"context_line":"| cpu.wait_time  |  | Time the CPU is idle AND there is at least one I/O request in progress |"},{"line_number":315,"context_line":"| cpu.user_time  |  | Time the CPU is used at the user level |"},{"line_number":316,"context_line":"| cpu.system_time  |  | Time the CPU is used at the system level |"},{"line_number":317,"context_line":"| cpu.frequency_MHz |  | Maximum MHz value for the cpu. **NOTE: This value is dynamic, and driven by CPU governor depending on current resource need .** |"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"### Load"},{"line_number":320,"context_line":"| Metric Name | Dimensions | Semantics |"}],"source_content_type":"text/x-markdown","patch_set":6,"id":"7aa08908_ef37204b","line":317,"range":{"start_line":317,"start_character":6,"end_line":317,"end_character":19},"updated":"2016-06-10 17:28:49.000000000","message":"I think this is now .frequency_mhz, with lowercase","commit_id":"16f1fc0a446f5735da3e250f39930014ee2ab737"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"62316d263f95ae60b40329e10bfcbe76b6c521c6","unresolved":false,"context_lines":[{"line_number":314,"context_line":"| cpu.wait_time  |  | Time the CPU is idle AND there is at least one I/O request in progress |"},{"line_number":315,"context_line":"| cpu.user_time  |  | Time the CPU is used at the user level |"},{"line_number":316,"context_line":"| cpu.system_time  |  | Time the CPU is used at the system level |"},{"line_number":317,"context_line":"| cpu.frequency_MHz |  | Maximum MHz value for the cpu. **NOTE: This value is dynamic, and driven by CPU governor depending on current resource need .** |"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"### Load"},{"line_number":320,"context_line":"| Metric Name | Dimensions | Semantics |"}],"source_content_type":"text/x-markdown","patch_set":6,"id":"7aa08908_cf7864fb","line":317,"range":{"start_line":317,"start_character":6,"end_line":317,"end_character":19},"in_reply_to":"7aa08908_ef37204b","updated":"2016-06-10 17:29:52.000000000","message":"Good catch!! Thanks!!","commit_id":"16f1fc0a446f5735da3e250f39930014ee2ab737"}],"monasca_agent/collector/checks_d/cpu.py":[{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"f8f0c69fe16a72493e1738a3541027f1c19df6ac","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        lscpu_command \u003d subprocess.Popen(\u0027lscpu\u0027, stdout\u003dsubprocess.PIPE,"},{"line_number":32,"context_line":"                                         stderr\u003dsubprocess.PIPE)"},{"line_number":33,"context_line":"        lscpu_output \u003d lscpu_command.communicate()[0].decode(encoding\u003d\u0027UTF-8\u0027)"},{"line_number":34,"context_line":"        cpu_freq_output \u003d re.search(\"(CPU MHz:.*?(\\d+\\.\\d+)\\nB)\", lscpu_output)"},{"line_number":35,"context_line":"        cpu_freq \u003d float(cpu_freq_output.group(2))"},{"line_number":36,"context_line":"        num_of_metrics \u003d self._format_results(cpu_stats.user + cpu_stats.nice,"},{"line_number":37,"context_line":"                                              cpu_stats.system + cpu_stats.irq + cpu_stats.softirq,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_c56480ba","line":34,"range":{"start_line":34,"start_character":8,"end_line":34,"end_character":23},"updated":"2016-06-08 02:54:06.000000000","message":"Before you attempt to select a group from the regexp you\u0027ll need to test that you have a valid repsonse.  You could do this by testing to see if cpu_freq_output is a valid response object or by wraping the entire subprocess and output parsing in a try/catch.  The second option may be better since we should be trapping any errors from the subprocess call anyway.","commit_id":"c8701d7d8f8f33facbe0514729c9aa6438211831"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"f8f0c69fe16a72493e1738a3541027f1c19df6ac","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            num_of_metrics +\u003d 1"},{"line_number":50,"context_line":"        log.debug(\u0027Collected {0} cpu metrics\u0027.format(num_of_metrics))"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def _format_results(self, us, sy, wa, idle, st, idle_ns, wa_ns, us_ns,"},{"line_number":53,"context_line":"                        sy_ns, cpu_freq, dimensions, instance):"},{"line_number":54,"context_line":"        data \u003d {\u0027cpu.user_perc\u0027: us,"},{"line_number":55,"context_line":"                \u0027cpu.system_perc\u0027: sy,"}],"source_content_type":"text/x-python","patch_set":1,"id":"7aa08908_c5d92059","line":52,"range":{"start_line":52,"start_character":8,"end_line":52,"end_character":23},"updated":"2016-06-08 02:54:06.000000000","message":"I\u0027m wondering if this function could be improved.  It takes an awful lot of arguments and tries to be clever with the data.  Is it possible to simplify this?  Maybe just loop over the data in the check function and avoid this function entirely?","commit_id":"c8701d7d8f8f33facbe0514729c9aa6438211831"},{"author":{"_account_id":15027,"name":"Michael Hoppal","email":"michael.jam.hoppal@hpe.com","username":"michael-hoppal"},"change_message_id":"50222adcdb9bd478743873f7e0f909555b5574f0","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    def __init__(self, name, init_config, agent_config):"},{"line_number":16,"context_line":"        super(Cpu, self).__init__(name, init_config, agent_config)"},{"line_number":17,"context_line":"        psutil.cpu_percent(interval\u003dNone, percpu\u003dFalse)"},{"line_number":18,"context_line":"        psutil.cpu_times_percent(interval\u003dNone, percpu\u003dFalse)"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    def check(self, instance):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_215c117c","line":17,"range":{"start_line":17,"start_character":27,"end_line":17,"end_character":35},"updated":"2016-06-08 21:43:09.000000000","message":"should you put in a comment here why you are calling this in the init","commit_id":"340da015dbe3589e82553f6c39f5241f35777653"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"29bdc5bee4e29a8b1ce7055c1dedfeb0c7a0a224","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"    def __init__(self, name, init_config, agent_config):"},{"line_number":16,"context_line":"        super(Cpu, self).__init__(name, init_config, agent_config)"},{"line_number":17,"context_line":"        psutil.cpu_percent(interval\u003dNone, percpu\u003dFalse)"},{"line_number":18,"context_line":"        psutil.cpu_times_percent(interval\u003dNone, percpu\u003dFalse)"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"    def check(self, instance):"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_61ae192f","line":17,"range":{"start_line":17,"start_character":27,"end_line":17,"end_character":35},"in_reply_to":"7aa08908_215c117c","updated":"2016-06-08 21:45:20.000000000","message":"Yes I should!","commit_id":"340da015dbe3589e82553f6c39f5241f35777653"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"9b32a2f2dc8331d438e287f86bfd639e27edfb27","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    def check(self, instance):"},{"line_number":21,"context_line":"        \"\"\"Capture cpu stats"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"        \"\"\""},{"line_number":24,"context_line":"        num_of_metrics \u003d 0"},{"line_number":25,"context_line":"        dimensions \u003d self._set_dimensions(None, instance)"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_686ec697","line":23,"range":{"start_line":23,"start_character":8,"end_line":23,"end_character":11},"updated":"2016-06-09 17:57:55.000000000","message":"Why the blank line?","commit_id":"340da015dbe3589e82553f6c39f5241f35777653"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"22b902e8934a3fb6d6aa407e2d01cddea5fc0785","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    def check(self, instance):"},{"line_number":21,"context_line":"        \"\"\"Capture cpu stats"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"        \"\"\""},{"line_number":24,"context_line":"        num_of_metrics \u003d 0"},{"line_number":25,"context_line":"        dimensions \u003d self._set_dimensions(None, instance)"},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_03d6cec2","line":23,"range":{"start_line":23,"start_character":8,"end_line":23,"end_character":11},"in_reply_to":"7aa08908_686ec697","updated":"2016-06-10 15:26:51.000000000","message":"I have no idea but Im deleting it!","commit_id":"340da015dbe3589e82553f6c39f5241f35777653"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"9b32a2f2dc8331d438e287f86bfd639e27edfb27","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"        cpu_stats \u003d psutil.cpu_times_percent(interval\u003dNone, percpu\u003dFalse)"},{"line_number":33,"context_line":"        cpu_times \u003d psutil.cpu_times(percpu\u003dFalse)"},{"line_number":34,"context_line":"        cpu_perc \u003d psutil.cpu_percent(interval\u003dNone, percpu\u003dFalse)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        try:"},{"line_number":37,"context_line":"            lscpu_command \u003d subprocess.Popen(\u0027lscpu\u0027, stdout\u003dsubprocess.PIPE, stderr\u003dsubprocess.PIPE)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_e8bd96d8","line":34,"range":{"start_line":34,"start_character":8,"end_line":34,"end_character":16},"updated":"2016-06-09 17:57:55.000000000","message":"Just wondering, now that you\u0027ve introduced two additional invocations, plus the one below for cpu_freq, about the overall impact on performance and latency. Basically, how has this impacted the overall collection time for this plugin.","commit_id":"340da015dbe3589e82553f6c39f5241f35777653"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"6aa3fcc2ccce49364b9820f6d2f1eccd56525aa5","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        cpu_perc \u003d psutil.cpu_percent(interval\u003dNone, percpu\u003dFalse)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        try:"},{"line_number":37,"context_line":"            lscpu_command \u003d subprocess.Popen(\u0027lscpu\u0027, stdout\u003dsubprocess.PIPE, stderr\u003dsubprocess.PIPE)"},{"line_number":38,"context_line":"            lscpu_output \u003d lscpu_command.communicate()[0].decode("},{"line_number":39,"context_line":"                encoding\u003d\u0027UTF-8\u0027)"},{"line_number":40,"context_line":"            cpu_freq_output \u003d re.search(\"(CPU MHz:.*?(\\d+\\.\\d+)\\nB)\", lscpu_output)"},{"line_number":41,"context_line":"            cpu_freq \u003d float(cpu_freq_output.group(2))"},{"line_number":42,"context_line":"        except Exception:"},{"line_number":43,"context_line":"            log.exception(\u0027Cannot extract CPU MHz information using lscpu\u0027)"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_647aa725","line":41,"range":{"start_line":37,"start_character":0,"end_line":41,"end_character":54},"updated":"2016-06-08 21:59:28.000000000","message":"Is the cpu_freq going to change? Maybe this should be run in __init__?","commit_id":"340da015dbe3589e82553f6c39f5241f35777653"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"6fec60b6324f2f10b166a1bed305227fcd399d84","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        cpu_perc \u003d psutil.cpu_percent(interval\u003dNone, percpu\u003dFalse)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        try:"},{"line_number":37,"context_line":"            lscpu_command \u003d subprocess.Popen(\u0027lscpu\u0027, stdout\u003dsubprocess.PIPE, stderr\u003dsubprocess.PIPE)"},{"line_number":38,"context_line":"            lscpu_output \u003d lscpu_command.communicate()[0].decode("},{"line_number":39,"context_line":"                encoding\u003d\u0027UTF-8\u0027)"},{"line_number":40,"context_line":"            cpu_freq_output \u003d re.search(\"(CPU MHz:.*?(\\d+\\.\\d+)\\nB)\", lscpu_output)"},{"line_number":41,"context_line":"            cpu_freq \u003d float(cpu_freq_output.group(2))"},{"line_number":42,"context_line":"        except Exception:"},{"line_number":43,"context_line":"            log.exception(\u0027Cannot extract CPU MHz information using lscpu\u0027)"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_6bea6fdc","line":41,"range":{"start_line":37,"start_character":0,"end_line":41,"end_character":54},"in_reply_to":"7aa08908_5a114651","updated":"2016-06-09 02:58:50.000000000","message":"The CPUs we were playing with earlier did throttle based on load.  My workstation reported values from 1200 to 3500 Mhz depending on how hard I was pushing it.  I\u0027m not sure what the plan is for this data since it can be so variable.","commit_id":"340da015dbe3589e82553f6c39f5241f35777653"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"3a976bead8309eeba4614f52afa9a4c825367c1b","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        cpu_perc \u003d psutil.cpu_percent(interval\u003dNone, percpu\u003dFalse)"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"        try:"},{"line_number":37,"context_line":"            lscpu_command \u003d subprocess.Popen(\u0027lscpu\u0027, stdout\u003dsubprocess.PIPE, stderr\u003dsubprocess.PIPE)"},{"line_number":38,"context_line":"            lscpu_output \u003d lscpu_command.communicate()[0].decode("},{"line_number":39,"context_line":"                encoding\u003d\u0027UTF-8\u0027)"},{"line_number":40,"context_line":"            cpu_freq_output \u003d re.search(\"(CPU MHz:.*?(\\d+\\.\\d+)\\nB)\", lscpu_output)"},{"line_number":41,"context_line":"            cpu_freq \u003d float(cpu_freq_output.group(2))"},{"line_number":42,"context_line":"        except Exception:"},{"line_number":43,"context_line":"            log.exception(\u0027Cannot extract CPU MHz information using lscpu\u0027)"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_5a114651","line":41,"range":{"start_line":37,"start_character":0,"end_line":41,"end_character":54},"in_reply_to":"7aa08908_647aa725","updated":"2016-06-08 22:31:54.000000000","message":"I think the cpu_freq changes this is the max speed of the cpu. I need to do more research and testing on this. Thank you Craig!","commit_id":"340da015dbe3589e82553f6c39f5241f35777653"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"9b32a2f2dc8331d438e287f86bfd639e27edfb27","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            cpu_freq_output \u003d re.search(\"(CPU MHz:.*?(\\d+\\.\\d+)\\nB)\", lscpu_output)"},{"line_number":41,"context_line":"            cpu_freq \u003d float(cpu_freq_output.group(2))"},{"line_number":42,"context_line":"        except Exception:"},{"line_number":43,"context_line":"            log.exception(\u0027Cannot extract CPU MHz information using lscpu\u0027)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        data \u003d {\u0027cpu.user_perc\u0027: cpu_stats.user + cpu_stats.nice,"},{"line_number":46,"context_line":"                \u0027cpu.system_perc\u0027: cpu_stats.system + cpu_stats.irq + cpu_stats.softirq,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_68d9a683","line":43,"range":{"start_line":43,"start_character":0,"end_line":43,"end_character":12},"updated":"2016-06-09 17:57:55.000000000","message":"It might be good to consider moving lines 26-43 into a private method _get_cpu_freq(...), just to make the code a little cleaner, self-contained and testable.","commit_id":"340da015dbe3589e82553f6c39f5241f35777653"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"22b902e8934a3fb6d6aa407e2d01cddea5fc0785","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            cpu_freq_output \u003d re.search(\"(CPU MHz:.*?(\\d+\\.\\d+)\\nB)\", lscpu_output)"},{"line_number":41,"context_line":"            cpu_freq \u003d float(cpu_freq_output.group(2))"},{"line_number":42,"context_line":"        except Exception:"},{"line_number":43,"context_line":"            log.exception(\u0027Cannot extract CPU MHz information using lscpu\u0027)"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"        data \u003d {\u0027cpu.user_perc\u0027: cpu_stats.user + cpu_stats.nice,"},{"line_number":46,"context_line":"                \u0027cpu.system_perc\u0027: cpu_stats.system + cpu_stats.irq + cpu_stats.softirq,"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_63907296","line":43,"range":{"start_line":43,"start_character":0,"end_line":43,"end_character":12},"in_reply_to":"7aa08908_68d9a683","updated":"2016-06-10 15:26:51.000000000","message":"Done","commit_id":"340da015dbe3589e82553f6c39f5241f35777653"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"c963528713353adf1403842b1eebed03761be2c9","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                \u0027cpu.idle_time_ns\u0027: cpu_times.idle,"},{"line_number":52,"context_line":"                \u0027cpu.wait_time_ns\u0027: cpu_times.iowait,"},{"line_number":53,"context_line":"                \u0027cpu.user_time_ns\u0027: cpu_times.user + cpu_times.nice,"},{"line_number":54,"context_line":"                \u0027cpu.system_time_ns\u0027: cpu_times.system + cpu_times.irq + cpu_times.softirq,"},{"line_number":55,"context_line":"                \u0027cpu.frequency_MHz\u0027: cpu_freq}"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        for key, value in data.iteritems():"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_41b5dd7b","line":54,"range":{"start_line":54,"start_character":21,"end_line":54,"end_character":35},"updated":"2016-06-08 21:44:54.000000000","message":"Should we be trying to specify units in the metric name?","commit_id":"340da015dbe3589e82553f6c39f5241f35777653"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"6fec60b6324f2f10b166a1bed305227fcd399d84","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                \u0027cpu.idle_time_ns\u0027: cpu_times.idle,"},{"line_number":52,"context_line":"                \u0027cpu.wait_time_ns\u0027: cpu_times.iowait,"},{"line_number":53,"context_line":"                \u0027cpu.user_time_ns\u0027: cpu_times.user + cpu_times.nice,"},{"line_number":54,"context_line":"                \u0027cpu.system_time_ns\u0027: cpu_times.system + cpu_times.irq + cpu_times.softirq,"},{"line_number":55,"context_line":"                \u0027cpu.frequency_MHz\u0027: cpu_freq}"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        for key, value in data.iteritems():"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_8bc23b51","line":54,"range":{"start_line":54,"start_character":21,"end_line":54,"end_character":35},"in_reply_to":"7aa08908_213d31dd","updated":"2016-06-09 02:58:50.000000000","message":"Total MB makes sense to me and the _sec ones are a rate per second so those make sense as well.  Since we couldn\u0027t find any documentation on the units from psutil I\u0027d prefer not to specify.  If we can find out definitively what psutil reports I\u0027d be ok with putting the units on the metric name.","commit_id":"340da015dbe3589e82553f6c39f5241f35777653"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"c348d443aae65f96c82bd9e846742f342762f7a0","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                \u0027cpu.idle_time_ns\u0027: cpu_times.idle,"},{"line_number":52,"context_line":"                \u0027cpu.wait_time_ns\u0027: cpu_times.iowait,"},{"line_number":53,"context_line":"                \u0027cpu.user_time_ns\u0027: cpu_times.user + cpu_times.nice,"},{"line_number":54,"context_line":"                \u0027cpu.system_time_ns\u0027: cpu_times.system + cpu_times.irq + cpu_times.softirq,"},{"line_number":55,"context_line":"                \u0027cpu.frequency_MHz\u0027: cpu_freq}"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        for key, value in data.iteritems():"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_213d31dd","line":54,"range":{"start_line":54,"start_character":21,"end_line":54,"end_character":35},"in_reply_to":"7aa08908_41b5dd7b","updated":"2016-06-08 21:47:11.000000000","message":"I saw it in mem.total_mb and io.write_time_sec, what you think?","commit_id":"340da015dbe3589e82553f6c39f5241f35777653"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"22b902e8934a3fb6d6aa407e2d01cddea5fc0785","unresolved":false,"context_lines":[{"line_number":51,"context_line":"                \u0027cpu.idle_time_ns\u0027: cpu_times.idle,"},{"line_number":52,"context_line":"                \u0027cpu.wait_time_ns\u0027: cpu_times.iowait,"},{"line_number":53,"context_line":"                \u0027cpu.user_time_ns\u0027: cpu_times.user + cpu_times.nice,"},{"line_number":54,"context_line":"                \u0027cpu.system_time_ns\u0027: cpu_times.system + cpu_times.irq + cpu_times.softirq,"},{"line_number":55,"context_line":"                \u0027cpu.frequency_MHz\u0027: cpu_freq}"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        for key, value in data.iteritems():"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_0578d6f7","line":54,"range":{"start_line":54,"start_character":21,"end_line":54,"end_character":35},"in_reply_to":"7aa08908_8bc23b51","updated":"2016-06-10 15:26:51.000000000","message":"Ok sounds good I will take the units out!","commit_id":"340da015dbe3589e82553f6c39f5241f35777653"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"6aa3fcc2ccce49364b9820f6d2f1eccd56525aa5","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                \u0027cpu.wait_time_ns\u0027: cpu_times.iowait,"},{"line_number":53,"context_line":"                \u0027cpu.user_time_ns\u0027: cpu_times.user + cpu_times.nice,"},{"line_number":54,"context_line":"                \u0027cpu.system_time_ns\u0027: cpu_times.system + cpu_times.irq + cpu_times.softirq,"},{"line_number":55,"context_line":"                \u0027cpu.frequency_MHz\u0027: cpu_freq}"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        for key, value in data.iteritems():"},{"line_number":58,"context_line":"            if data[key] is None or instance.get(\u0027cpu_idle_only\u0027) and \u0027idle_perc\u0027 not in key:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_64e58707","line":55,"range":{"start_line":55,"start_character":37,"end_line":55,"end_character":45},"updated":"2016-06-08 21:59:28.000000000","message":"Note that this is not guaranteed to have been set if there was an exception above","commit_id":"340da015dbe3589e82553f6c39f5241f35777653"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"22b902e8934a3fb6d6aa407e2d01cddea5fc0785","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                \u0027cpu.wait_time_ns\u0027: cpu_times.iowait,"},{"line_number":53,"context_line":"                \u0027cpu.user_time_ns\u0027: cpu_times.user + cpu_times.nice,"},{"line_number":54,"context_line":"                \u0027cpu.system_time_ns\u0027: cpu_times.system + cpu_times.irq + cpu_times.softirq,"},{"line_number":55,"context_line":"                \u0027cpu.frequency_MHz\u0027: cpu_freq}"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        for key, value in data.iteritems():"},{"line_number":58,"context_line":"            if data[key] is None or instance.get(\u0027cpu_idle_only\u0027) and \u0027idle_perc\u0027 not in key:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_08cc2d60","line":55,"range":{"start_line":55,"start_character":37,"end_line":55,"end_character":45},"in_reply_to":"7aa08908_083622b4","updated":"2016-06-10 15:26:51.000000000","message":"Done","commit_id":"340da015dbe3589e82553f6c39f5241f35777653"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"3a976bead8309eeba4614f52afa9a4c825367c1b","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                \u0027cpu.wait_time_ns\u0027: cpu_times.iowait,"},{"line_number":53,"context_line":"                \u0027cpu.user_time_ns\u0027: cpu_times.user + cpu_times.nice,"},{"line_number":54,"context_line":"                \u0027cpu.system_time_ns\u0027: cpu_times.system + cpu_times.irq + cpu_times.softirq,"},{"line_number":55,"context_line":"                \u0027cpu.frequency_MHz\u0027: cpu_freq}"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        for key, value in data.iteritems():"},{"line_number":58,"context_line":"            if data[key] is None or instance.get(\u0027cpu_idle_only\u0027) and \u0027idle_perc\u0027 not in key:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_ba330af5","line":55,"range":{"start_line":55,"start_character":37,"end_line":55,"end_character":45},"in_reply_to":"7aa08908_64e58707","updated":"2016-06-08 22:31:54.000000000","message":"Yes!","commit_id":"340da015dbe3589e82553f6c39f5241f35777653"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"9b32a2f2dc8331d438e287f86bfd639e27edfb27","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                \u0027cpu.wait_time_ns\u0027: cpu_times.iowait,"},{"line_number":53,"context_line":"                \u0027cpu.user_time_ns\u0027: cpu_times.user + cpu_times.nice,"},{"line_number":54,"context_line":"                \u0027cpu.system_time_ns\u0027: cpu_times.system + cpu_times.irq + cpu_times.softirq,"},{"line_number":55,"context_line":"                \u0027cpu.frequency_MHz\u0027: cpu_freq}"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        for key, value in data.iteritems():"},{"line_number":58,"context_line":"            if data[key] is None or instance.get(\u0027cpu_idle_only\u0027) and \u0027idle_perc\u0027 not in key:"}],"source_content_type":"text/x-python","patch_set":4,"id":"7aa08908_083622b4","line":55,"range":{"start_line":55,"start_character":37,"end_line":55,"end_character":45},"in_reply_to":"7aa08908_ba330af5","updated":"2016-06-09 17:57:55.000000000","message":"I think you should use lower case on the MHz, as in _mhz.","commit_id":"340da015dbe3589e82553f6c39f5241f35777653"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"2138d07114658a769c539be5f29165b809b2f9b9","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                \u0027cpu.idle_perc\u0027: cpu_stats.idle,"},{"line_number":43,"context_line":"                \u0027cpu.stolen_perc\u0027: cpu_stats.steal,"},{"line_number":44,"context_line":"                \u0027cpu.percent\u0027: cpu_perc,"},{"line_number":45,"context_line":"                \u0027cpu.idle_time\u0027: cpu_times.idle,"},{"line_number":46,"context_line":"                \u0027cpu.wait_time\u0027: cpu_times.iowait,"},{"line_number":47,"context_line":"                \u0027cpu.user_time\u0027: cpu_times.user + cpu_times.nice,"},{"line_number":48,"context_line":"                \u0027cpu.system_time\u0027: cpu_times.system + cpu_times.irq + cpu_times.softirq}"}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa08908_8962df3b","line":45,"range":{"start_line":45,"start_character":33,"end_line":45,"end_character":47},"updated":"2016-06-10 15:58:13.000000000","message":"How can cpu_times.idle be both cpu.idle_perc and cpu.idle_time? Those seem like those should have different sources?","commit_id":"16f1fc0a446f5735da3e250f39930014ee2ab737"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"121cf90ce9a19cf4c4811ba19d7669065f0fb45d","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                \u0027cpu.idle_perc\u0027: cpu_stats.idle,"},{"line_number":43,"context_line":"                \u0027cpu.stolen_perc\u0027: cpu_stats.steal,"},{"line_number":44,"context_line":"                \u0027cpu.percent\u0027: cpu_perc,"},{"line_number":45,"context_line":"                \u0027cpu.idle_time\u0027: cpu_times.idle,"},{"line_number":46,"context_line":"                \u0027cpu.wait_time\u0027: cpu_times.iowait,"},{"line_number":47,"context_line":"                \u0027cpu.user_time\u0027: cpu_times.user + cpu_times.nice,"},{"line_number":48,"context_line":"                \u0027cpu.system_time\u0027: cpu_times.system + cpu_times.irq + cpu_times.softirq}"}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa08908_7ebf68aa","line":45,"range":{"start_line":45,"start_character":33,"end_line":45,"end_character":47},"in_reply_to":"7aa08908_29b00b8b","updated":"2016-06-10 16:35:04.000000000","message":"My bad. I didn\u0027t notice that. So, it is ok","commit_id":"16f1fc0a446f5735da3e250f39930014ee2ab737"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"9b406aa4cb9331d3515b1bb3fe7d86af0570e64f","unresolved":false,"context_lines":[{"line_number":42,"context_line":"                \u0027cpu.idle_perc\u0027: cpu_stats.idle,"},{"line_number":43,"context_line":"                \u0027cpu.stolen_perc\u0027: cpu_stats.steal,"},{"line_number":44,"context_line":"                \u0027cpu.percent\u0027: cpu_perc,"},{"line_number":45,"context_line":"                \u0027cpu.idle_time\u0027: cpu_times.idle,"},{"line_number":46,"context_line":"                \u0027cpu.wait_time\u0027: cpu_times.iowait,"},{"line_number":47,"context_line":"                \u0027cpu.user_time\u0027: cpu_times.user + cpu_times.nice,"},{"line_number":48,"context_line":"                \u0027cpu.system_time\u0027: cpu_times.system + cpu_times.irq + cpu_times.softirq}"}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa08908_29b00b8b","line":45,"range":{"start_line":45,"start_character":33,"end_line":45,"end_character":47},"in_reply_to":"7aa08908_8962df3b","updated":"2016-06-10 16:01:17.000000000","message":"idle_time came from pustule.cpu_times call and idle_perc came from psutil.cpu_times_percent call. Same as iowait. Is that what you mean by different sources?","commit_id":"16f1fc0a446f5735da3e250f39930014ee2ab737"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"2138d07114658a769c539be5f29165b809b2f9b9","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                \u0027cpu.stolen_perc\u0027: cpu_stats.steal,"},{"line_number":44,"context_line":"                \u0027cpu.percent\u0027: cpu_perc,"},{"line_number":45,"context_line":"                \u0027cpu.idle_time\u0027: cpu_times.idle,"},{"line_number":46,"context_line":"                \u0027cpu.wait_time\u0027: cpu_times.iowait,"},{"line_number":47,"context_line":"                \u0027cpu.user_time\u0027: cpu_times.user + cpu_times.nice,"},{"line_number":48,"context_line":"                \u0027cpu.system_time\u0027: cpu_times.system + cpu_times.irq + cpu_times.softirq}"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa08908_694e93c2","line":46,"range":{"start_line":46,"start_character":33,"end_line":46,"end_character":49},"updated":"2016-06-10 15:58:13.000000000","message":"Same as cpu_times.idle?","commit_id":"16f1fc0a446f5735da3e250f39930014ee2ab737"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"121cf90ce9a19cf4c4811ba19d7669065f0fb45d","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                \u0027cpu.stolen_perc\u0027: cpu_stats.steal,"},{"line_number":44,"context_line":"                \u0027cpu.percent\u0027: cpu_perc,"},{"line_number":45,"context_line":"                \u0027cpu.idle_time\u0027: cpu_times.idle,"},{"line_number":46,"context_line":"                \u0027cpu.wait_time\u0027: cpu_times.iowait,"},{"line_number":47,"context_line":"                \u0027cpu.user_time\u0027: cpu_times.user + cpu_times.nice,"},{"line_number":48,"context_line":"                \u0027cpu.system_time\u0027: cpu_times.system + cpu_times.irq + cpu_times.softirq}"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"7aa08908_fee998b8","line":46,"range":{"start_line":46,"start_character":33,"end_line":46,"end_character":49},"in_reply_to":"7aa08908_694e93c2","updated":"2016-06-10 16:35:04.000000000","message":"Ignore my comment","commit_id":"16f1fc0a446f5735da3e250f39930014ee2ab737"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"1b13f3c9b2ad8ed591ada5b5d33c9940afbb1a34","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                encoding\u003d\u0027UTF-8\u0027)"},{"line_number":69,"context_line":"            cpu_freq_output \u003d re.search(\"(CPU MHz:.*?(\\d+\\.\\d+)\\nB)\", lscpu_output)"},{"line_number":70,"context_line":"            cpu_freq \u003d float(cpu_freq_output.group(2))"},{"line_number":71,"context_line":"            data[\u0027cpu.frequency_mhz\u0027] \u003d cpu_freq"},{"line_number":72,"context_line":"        except Exception:"},{"line_number":73,"context_line":"            log.exception(\u0027Cannot extract CPU MHz information using lscpu\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_1168c786","line":71,"range":{"start_line":71,"start_character":12,"end_line":71,"end_character":16},"updated":"2016-06-10 21:35:48.000000000","message":"Since this is a getter, it would be conventional to just return cpu_freq, and then assign it to data outside of the method. For example\n\ndata[\u0027cpu.frequency_mhz\u0027] \u003d _get_cpu_freq(self)","commit_id":"bc6c79418b5504fa434a614f285a39b57f8400e1"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"04bd95f1171582f55f5e6b65b2249f177c1d142d","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                encoding\u003d\u0027UTF-8\u0027)"},{"line_number":69,"context_line":"            cpu_freq_output \u003d re.search(\"(CPU MHz:.*?(\\d+\\.\\d+)\\nB)\", lscpu_output)"},{"line_number":70,"context_line":"            cpu_freq \u003d float(cpu_freq_output.group(2))"},{"line_number":71,"context_line":"            data[\u0027cpu.frequency_mhz\u0027] \u003d cpu_freq"},{"line_number":72,"context_line":"        except Exception:"},{"line_number":73,"context_line":"            log.exception(\u0027Cannot extract CPU MHz information using lscpu\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_71a14ba9","line":71,"range":{"start_line":71,"start_character":12,"end_line":71,"end_character":16},"in_reply_to":"7aa08908_1168c786","updated":"2016-06-10 21:39:58.000000000","message":"Is there a reasonable error value we could return from _get_cpu_freq or would we just not report the metric if there is a problem?","commit_id":"bc6c79418b5504fa434a614f285a39b57f8400e1"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"fa8e990a0e3266d7d1f37df50db8fa1002e15018","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                encoding\u003d\u0027UTF-8\u0027)"},{"line_number":69,"context_line":"            cpu_freq_output \u003d re.search(\"(CPU MHz:.*?(\\d+\\.\\d+)\\nB)\", lscpu_output)"},{"line_number":70,"context_line":"            cpu_freq \u003d float(cpu_freq_output.group(2))"},{"line_number":71,"context_line":"            data[\u0027cpu.frequency_mhz\u0027] \u003d cpu_freq"},{"line_number":72,"context_line":"        except Exception:"},{"line_number":73,"context_line":"            log.exception(\u0027Cannot extract CPU MHz information using lscpu\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_712cab4a","line":71,"range":{"start_line":71,"start_character":12,"end_line":71,"end_character":16},"in_reply_to":"7aa08908_1168c786","updated":"2016-06-10 21:38:16.000000000","message":"Yep your way is better! Thanks! But then I need to add maybe two lines to deal with the try catch.","commit_id":"bc6c79418b5504fa434a614f285a39b57f8400e1"},{"author":{"_account_id":14273,"name":"Joe Keen","email":"joe.keen@hpe.com","username":"jkeen"},"change_message_id":"e99dc32e2a646bb376d9e887377ed19d32bd0f83","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                encoding\u003d\u0027UTF-8\u0027)"},{"line_number":69,"context_line":"            cpu_freq_output \u003d re.search(\"(CPU MHz:.*?(\\d+\\.\\d+)\\nB)\", lscpu_output)"},{"line_number":70,"context_line":"            cpu_freq \u003d float(cpu_freq_output.group(2))"},{"line_number":71,"context_line":"            data[\u0027cpu.frequency_mhz\u0027] \u003d cpu_freq"},{"line_number":72,"context_line":"        except Exception:"},{"line_number":73,"context_line":"            log.exception(\u0027Cannot extract CPU MHz information using lscpu\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_eb2ced4b","line":71,"range":{"start_line":71,"start_character":12,"end_line":71,"end_character":16},"in_reply_to":"7aa08908_27a0219f","updated":"2016-06-13 19:07:55.000000000","message":"I think that\u0027s ok.","commit_id":"bc6c79418b5504fa434a614f285a39b57f8400e1"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"fb827dd35d1a49fe56df1320d2eef44379724cd0","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                encoding\u003d\u0027UTF-8\u0027)"},{"line_number":69,"context_line":"            cpu_freq_output \u003d re.search(\"(CPU MHz:.*?(\\d+\\.\\d+)\\nB)\", lscpu_output)"},{"line_number":70,"context_line":"            cpu_freq \u003d float(cpu_freq_output.group(2))"},{"line_number":71,"context_line":"            data[\u0027cpu.frequency_mhz\u0027] \u003d cpu_freq"},{"line_number":72,"context_line":"        except Exception:"},{"line_number":73,"context_line":"            log.exception(\u0027Cannot extract CPU MHz information using lscpu\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_27a0219f","line":71,"range":{"start_line":71,"start_character":12,"end_line":71,"end_character":16},"in_reply_to":"7aa08908_542ebdfa","updated":"2016-06-10 22:55:43.000000000","message":"If I call it add_cpu_req, then we don\u0027t need to change the code :-D Roland, Joe what you think?","commit_id":"bc6c79418b5504fa434a614f285a39b57f8400e1"},{"author":{"_account_id":18179,"name":"Kaiyan Sheng","email":"kaiyan.sheng@hpe.com","username":"kaiyan-sheng"},"change_message_id":"85166cbd2d47a05cb258fe7fa9b7ca086ba7cf8a","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                encoding\u003d\u0027UTF-8\u0027)"},{"line_number":69,"context_line":"            cpu_freq_output \u003d re.search(\"(CPU MHz:.*?(\\d+\\.\\d+)\\nB)\", lscpu_output)"},{"line_number":70,"context_line":"            cpu_freq \u003d float(cpu_freq_output.group(2))"},{"line_number":71,"context_line":"            data[\u0027cpu.frequency_mhz\u0027] \u003d cpu_freq"},{"line_number":72,"context_line":"        except Exception:"},{"line_number":73,"context_line":"            log.exception(\u0027Cannot extract CPU MHz information using lscpu\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_b199f370","line":71,"range":{"start_line":71,"start_character":12,"end_line":71,"end_character":16},"in_reply_to":"7aa08908_71a14ba9","updated":"2016-06-10 21:41:50.000000000","message":"Im thinking to return a True/False with _get_cpu_freq, if it\u0027s true, add cpu.frequency_mhz into data, if false, just don\u0027t do anything. What you think?","commit_id":"bc6c79418b5504fa434a614f285a39b57f8400e1"},{"author":{"_account_id":11809,"name":"Craig Bryant","email":"craig.bryant@hpe.com","username":"craig-bryant"},"change_message_id":"6ab0ed60dad711a8e4a6baad77469e4ddfa90633","unresolved":false,"context_lines":[{"line_number":68,"context_line":"                encoding\u003d\u0027UTF-8\u0027)"},{"line_number":69,"context_line":"            cpu_freq_output \u003d re.search(\"(CPU MHz:.*?(\\d+\\.\\d+)\\nB)\", lscpu_output)"},{"line_number":70,"context_line":"            cpu_freq \u003d float(cpu_freq_output.group(2))"},{"line_number":71,"context_line":"            data[\u0027cpu.frequency_mhz\u0027] \u003d cpu_freq"},{"line_number":72,"context_line":"        except Exception:"},{"line_number":73,"context_line":"            log.exception(\u0027Cannot extract CPU MHz information using lscpu\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7aa08908_542ebdfa","line":71,"range":{"start_line":71,"start_character":12,"end_line":71,"end_character":16},"in_reply_to":"7aa08908_b199f370","updated":"2016-06-10 22:22:18.000000000","message":"How about you call it _add_cpu_freq?","commit_id":"bc6c79418b5504fa434a614f285a39b57f8400e1"}]}
