)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"24b55c7a2ce0aa64a17480dee63d282e38ffeb65","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Added hardware agent\u0027s inspector and snmp implementation"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added the inspector interface to hardware agent, also added the snmp"},{"line_number":10,"context_line":"impelmenation of that inspector."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Part of the blueprint monitoring-physical-devices."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAARn%2F%2Fvgk%3D","line":10,"updated":"2013-08-22 13:15:36.000000000","message":"Typo on implementation","commit_id":"dc4b6097751f804cdc16648bdfa074d4171b154c"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"97403745dd5b908c50928a610e1431e3e13b0918","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Added hardware agent\u0027s inspector and snmp implementation"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added the inspector interface to hardware agent, also added the snmp"},{"line_number":10,"context_line":"impelmenation of that inspector."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Part of the blueprint monitoring-physical-devices."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAASX%2F%2F9UQ%3D","line":10,"in_reply_to":"AAAARn%2F%2Fvgk%3D","updated":"2013-08-23 08:32:15.000000000","message":"Done","commit_id":"dc4b6097751f804cdc16648bdfa074d4171b154c"}],"ceilometer/hardware/inspector/base.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"f44e85b190a4746ad86a0a4070b51b9406f8409b","unresolved":false,"context_lines":[{"line_number":72,"context_line":"#"},{"line_number":73,"context_line":"InterfaceStats \u003d collections.namedtuple("},{"line_number":74,"context_line":"    \u0027InterfaceStats\u0027,"},{"line_number":75,"context_line":"    [\u0027bandwidth\u0027, \u0027rx_bytes\u0027, \u0027tx_bytes\u0027, \u0027error\u0027])"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"class Inspector(object):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2Fttk%3D","line":75,"updated":"2013-08-30 16:08:05.000000000","message":"i think you\u0027re missing \u0027name\u0027, that or your note above is wrong.","commit_id":"07c0401eee16259e7c8d9ccbd2f7d1029413d392"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"965d412b74e1f2dd2106e72be120fb1e3f0ba927","unresolved":false,"context_lines":[{"line_number":72,"context_line":"#"},{"line_number":73,"context_line":"InterfaceStats \u003d collections.namedtuple("},{"line_number":74,"context_line":"    \u0027InterfaceStats\u0027,"},{"line_number":75,"context_line":"    [\u0027bandwidth\u0027, \u0027rx_bytes\u0027, \u0027tx_bytes\u0027, \u0027error\u0027])"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"class Inspector(object):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2Fozs%3D","line":75,"in_reply_to":"AAAASn%2F%2Fttk%3D","updated":"2013-09-02 02:50:20.000000000","message":"Done","commit_id":"07c0401eee16259e7c8d9ccbd2f7d1029413d392"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"f44e85b190a4746ad86a0a4070b51b9406f8409b","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"class Inspector(object):"},{"line_number":79,"context_line":"    def inspect_cpu(self, host):"},{"line_number":80,"context_line":"        \"\"\"Inspect the CPU statistics for ahost."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        :param host: the target host"},{"line_number":83,"context_line":"        :return: CPUStats"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2FttY%3D","line":80,"updated":"2013-08-30 16:08:05.000000000","message":"s/ahost/a host/","commit_id":"07c0401eee16259e7c8d9ccbd2f7d1029413d392"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"965d412b74e1f2dd2106e72be120fb1e3f0ba927","unresolved":false,"context_lines":[{"line_number":77,"context_line":""},{"line_number":78,"context_line":"class Inspector(object):"},{"line_number":79,"context_line":"    def inspect_cpu(self, host):"},{"line_number":80,"context_line":"        \"\"\"Inspect the CPU statistics for ahost."},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"        :param host: the target host"},{"line_number":83,"context_line":"        :return: CPUStats"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2Fozo%3D","line":80,"in_reply_to":"AAAASn%2F%2FttY%3D","updated":"2013-09-02 02:50:20.000000000","message":"Done","commit_id":"07c0401eee16259e7c8d9ccbd2f7d1029413d392"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"cb660aad7f58565899c0f866637da9e76d562b7d","unresolved":false,"context_lines":[{"line_number":74,"context_line":"    [\u0027bandwidth\u0027, \u0027rx_bytes\u0027, \u0027tx_bytes\u0027, \u0027error\u0027])"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"class Inspector(object):"},{"line_number":78,"context_line":"    def inspect_cpu(self, host):"},{"line_number":79,"context_line":"        \"\"\"Inspect the CPU statistics for a host."},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATH%2F%2FgAw%3D","line":77,"updated":"2013-10-15 11:26:59.000000000","message":"Should this be an abstract base class?","commit_id":"012b808cbf183e769cc2d81236d10c84e4a5022f"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"8e328685fc3fb0e27f7b310557efe4a6ca646ffa","unresolved":false,"context_lines":[{"line_number":32,"context_line":"#"},{"line_number":33,"context_line":"CPUStats \u003d collections.namedtuple("},{"line_number":34,"context_line":"    \u0027CPUStats\u0027,"},{"line_number":35,"context_line":"    [\u0027cpu1MinLoad\u0027, \u0027cpu5MinLoad\u0027, \u0027cpu15MinLoad\u0027])"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"# Named tuple representing RAM statistics."},{"line_number":38,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FRuk%3D","line":35,"updated":"2014-01-15 16:15:12.000000000","message":"missing \u0027number\u0027... or above comment is wrong.","commit_id":"bb4bc509a39b87fcdbfc8eb470b329f97eadeee2"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"09c605dd5b1d08067ab5346ed071550c58c726be","unresolved":false,"context_lines":[{"line_number":32,"context_line":"#"},{"line_number":33,"context_line":"CPUStats \u003d collections.namedtuple("},{"line_number":34,"context_line":"    \u0027CPUStats\u0027,"},{"line_number":35,"context_line":"    [\u0027cpu1MinLoad\u0027, \u0027cpu5MinLoad\u0027, \u0027cpu15MinLoad\u0027])"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"# Named tuple representing RAM statistics."},{"line_number":38,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FO%2Fo%3D","line":35,"in_reply_to":"AAAAUH%2F%2FRuk%3D","updated":"2014-01-16 03:43:59.000000000","message":"Done. Comment is wrong.","commit_id":"bb4bc509a39b87fcdbfc8eb470b329f97eadeee2"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"6bcc1a7fa39230e427fc0dc36c3c4d940cb40448","unresolved":false,"context_lines":[{"line_number":31,"context_line":"#"},{"line_number":32,"context_line":"CPUStats \u003d collections.namedtuple("},{"line_number":33,"context_line":"    \u0027CPUStats\u0027,"},{"line_number":34,"context_line":"    [\u0027cpu1MinLoad\u0027, \u0027cpu5MinLoad\u0027, \u0027cpu15MinLoad\u0027])"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"# Named tuple representing RAM statistics."},{"line_number":37,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAUH%2F%2FBb4%3D","line":34,"updated":"2014-01-18 18:15:52.000000000","message":"Since these names are used to define attributes, could they be reformatted to match the normal pep8 rules? cpu_1_min, cpu_5_min, cpu_15_min maybe?","commit_id":"0e54b4f7b6ff9b9d608858cb5d01e16f49b99242"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4de4ea9b2f368959770e3ab347cda2be3215bedb","unresolved":false,"context_lines":[{"line_number":31,"context_line":"#"},{"line_number":32,"context_line":"CPUStats \u003d collections.namedtuple("},{"line_number":33,"context_line":"    \u0027CPUStats\u0027,"},{"line_number":34,"context_line":"    [\u0027cpu1MinLoad\u0027, \u0027cpu5MinLoad\u0027, \u0027cpu15MinLoad\u0027])"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"# Named tuple representing RAM statistics."},{"line_number":37,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAUH%2F%2B4hA%3D","line":34,"in_reply_to":"AAAAUH%2F%2FBb4%3D","updated":"2014-01-21 07:33:38.000000000","message":"Done","commit_id":"0e54b4f7b6ff9b9d608858cb5d01e16f49b99242"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"6bcc1a7fa39230e427fc0dc36c3c4d940cb40448","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        \"\"\""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    @abc.abstractmethod"},{"line_number":90,"context_line":"    def inspect_diskspace(self, host):"},{"line_number":91,"context_line":"        \"\"\"Inspect the disk statistics for a host."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        :param : the target host"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAUH%2F%2FBbs%3D","line":90,"updated":"2014-01-18 18:15:52.000000000","message":"This returns more than \"space\" information about the disk. How about calling it just inspect_disk()?","commit_id":"0e54b4f7b6ff9b9d608858cb5d01e16f49b99242"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4de4ea9b2f368959770e3ab347cda2be3215bedb","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        \"\"\""},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    @abc.abstractmethod"},{"line_number":90,"context_line":"    def inspect_diskspace(self, host):"},{"line_number":91,"context_line":"        \"\"\"Inspect the disk statistics for a host."},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        :param : the target host"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAUH%2F%2B4gk%3D","line":90,"in_reply_to":"AAAAUH%2F%2FBbs%3D","updated":"2014-01-21 07:33:38.000000000","message":"Done","commit_id":"0e54b4f7b6ff9b9d608858cb5d01e16f49b99242"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"6bcc1a7fa39230e427fc0dc36c3c4d940cb40448","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        \"\"\""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    @abc.abstractmethod"},{"line_number":98,"context_line":"    def inspect_memoryspace(self, host):"},{"line_number":99,"context_line":"        \"\"\"Inspect the ram statistics for a host."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        :param : the target host"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAUH%2F%2FBbw%3D","line":98,"updated":"2014-01-18 18:15:52.000000000","message":"Similarly, can this be inspect_memory()?","commit_id":"0e54b4f7b6ff9b9d608858cb5d01e16f49b99242"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4de4ea9b2f368959770e3ab347cda2be3215bedb","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        \"\"\""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    @abc.abstractmethod"},{"line_number":98,"context_line":"    def inspect_memoryspace(self, host):"},{"line_number":99,"context_line":"        \"\"\"Inspect the ram statistics for a host."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        :param : the target host"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAUH%2F%2B4gg%3D","line":98,"in_reply_to":"AAAAUH%2F%2FBbw%3D","updated":"2014-01-21 07:33:38.000000000","message":"Done","commit_id":"0e54b4f7b6ff9b9d608858cb5d01e16f49b99242"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"9698ae2294913d4ec70af8a3b670f9c09011e070","unresolved":false,"context_lines":[{"line_number":24,"context_line":"import six"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"# Named tuple representing CPU statistics."},{"line_number":27,"context_line":"#"},{"line_number":28,"context_line":"# cpu1MinLoad: 1 minute load"},{"line_number":29,"context_line":"# cpu5MinLoad: 5 minute load"},{"line_number":30,"context_line":"# cpu15MinLoad: 15 minute load"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUH%2F9oPI%3D","line":27,"updated":"2014-02-05 15:06:32.000000000","message":"Why there are only 3 params for CPU? I mean can it be configurable? Maybe it was discussed somewhere and I missed it. Are these meters about \u0027cpu load for the last x minutes\u0027?","commit_id":"ef56efb8f74999cc7c1ed39177bb42c0538707ed"},{"author":{"_account_id":7478,"name":"Nadya Shakhat","email":"nadmi4@gmail.com","username":"nprivalova"},"change_message_id":"90fd9acdad48d9b37d1d49389a3529f43fc69f4f","unresolved":false,"context_lines":[{"line_number":24,"context_line":"import six"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"# Named tuple representing CPU statistics."},{"line_number":27,"context_line":"#"},{"line_number":28,"context_line":"# cpu1MinLoad: 1 minute load"},{"line_number":29,"context_line":"# cpu5MinLoad: 5 minute load"},{"line_number":30,"context_line":"# cpu15MinLoad: 15 minute load"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUH%2F9Xb0%3D","line":27,"in_reply_to":"AAAAUH%2F9a1Q%3D","updated":"2014-02-07 12:26:41.000000000","message":"ok, thank you","commit_id":"ef56efb8f74999cc7c1ed39177bb42c0538707ed"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4b2742bae14155a45daeb5832326dba125817ecb","unresolved":false,"context_lines":[{"line_number":24,"context_line":"import six"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"# Named tuple representing CPU statistics."},{"line_number":27,"context_line":"#"},{"line_number":28,"context_line":"# cpu1MinLoad: 1 minute load"},{"line_number":29,"context_line":"# cpu5MinLoad: 5 minute load"},{"line_number":30,"context_line":"# cpu15MinLoad: 15 minute load"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUH%2F9a1Q%3D","line":27,"in_reply_to":"AAAAUH%2F9oPI%3D","updated":"2014-02-07 01:48:33.000000000","message":"Yes, it\u0027s the cpu load for the last x minutes. Those definitions are from SNMP OID. http://www.debianhelp.co.uk/linuxoids.htm","commit_id":"ef56efb8f74999cc7c1ed39177bb42c0538707ed"}],"ceilometer/hardware/inspector/inspector.py":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"24b55c7a2ce0aa64a17480dee63d282e38ffeb65","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"class InspectorException(Exception):"},{"line_number":80,"context_line":"    def __init__(self, message\u003dNone):"},{"line_number":81,"context_line":"        super(InspectorException, self).__init__(message)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"class Inspector(PluginBase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAARn%2F%2FvjI%3D","line":81,"updated":"2013-08-22 13:15:36.000000000","message":"Useless","commit_id":"dc4b6097751f804cdc16648bdfa074d4171b154c"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"97403745dd5b908c50928a610e1431e3e13b0918","unresolved":false,"context_lines":[{"line_number":78,"context_line":""},{"line_number":79,"context_line":"class InspectorException(Exception):"},{"line_number":80,"context_line":"    def __init__(self, message\u003dNone):"},{"line_number":81,"context_line":"        super(InspectorException, self).__init__(message)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"class Inspector(PluginBase):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAASX%2F%2F9Ug%3D","line":81,"in_reply_to":"AAAARn%2F%2FvjI%3D","updated":"2013-08-23 08:32:15.000000000","message":"Done","commit_id":"dc4b6097751f804cdc16648bdfa074d4171b154c"},{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"24b55c7a2ce0aa64a17480dee63d282e38ffeb65","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"class Inspector(PluginBase):"},{"line_number":85,"context_line":"    def __init__(self):"},{"line_number":86,"context_line":"        super(Inspector, self).__init__()"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def inspect_cpu(self, host):"},{"line_number":89,"context_line":"        \"\"\"Inspect the CPU statistics for ahost."}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAARn%2F%2FvjE%3D","line":86,"updated":"2013-08-22 13:15:36.000000000","message":"Useless","commit_id":"dc4b6097751f804cdc16648bdfa074d4171b154c"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"97403745dd5b908c50928a610e1431e3e13b0918","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"class Inspector(PluginBase):"},{"line_number":85,"context_line":"    def __init__(self):"},{"line_number":86,"context_line":"        super(Inspector, self).__init__()"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"    def inspect_cpu(self, host):"},{"line_number":89,"context_line":"        \"\"\"Inspect the CPU statistics for ahost."}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAASX%2F%2F9UY%3D","line":86,"in_reply_to":"AAAARn%2F%2FvjE%3D","updated":"2013-08-23 08:32:15.000000000","message":"Done","commit_id":"dc4b6097751f804cdc16648bdfa074d4171b154c"}],"ceilometer/hardware/inspector/snmp.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"f44e85b190a4746ad86a0a4070b51b9406f8409b","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        if errorIndication:"},{"line_number":74,"context_line":"            LOG.error(errorIndication)"},{"line_number":75,"context_line":"        else:"},{"line_number":76,"context_line":"            if errorStatus:"},{"line_number":77,"context_line":"                LOG.error(\"%s at %s\","},{"line_number":78,"context_line":"                          errorStatus.prettyPrint(),"},{"line_number":79,"context_line":"                          errorIndex and varBinds[int(errorIndex) - 1] or \"?\","}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2FtfY%3D","line":76,"updated":"2013-08-30 16:08:05.000000000","message":"i\u0027m not sure there needs to be a nested if here, seems like it it could be all one if/elif/else statement","commit_id":"07c0401eee16259e7c8d9ccbd2f7d1029413d392"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"965d412b74e1f2dd2106e72be120fb1e3f0ba927","unresolved":false,"context_lines":[{"line_number":73,"context_line":"        if errorIndication:"},{"line_number":74,"context_line":"            LOG.error(errorIndication)"},{"line_number":75,"context_line":"        else:"},{"line_number":76,"context_line":"            if errorStatus:"},{"line_number":77,"context_line":"                LOG.error(\"%s at %s\","},{"line_number":78,"context_line":"                          errorStatus.prettyPrint(),"},{"line_number":79,"context_line":"                          errorIndex and varBinds[int(errorIndex) - 1] or \"?\","}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2Fozc%3D","line":76,"in_reply_to":"AAAASn%2F%2FtfY%3D","updated":"2013-09-02 02:50:20.000000000","message":"Done","commit_id":"07c0401eee16259e7c8d9ccbd2f7d1029413d392"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"f44e85b190a4746ad86a0a4070b51b9406f8409b","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                          )"},{"line_number":81,"context_line":"            else:"},{"line_number":82,"context_line":"                for name, val in varBinds:"},{"line_number":83,"context_line":"                    return val"},{"line_number":84,"context_line":"        # reach here means error"},{"line_number":85,"context_line":"        raise SNMPException()"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2Ftf4%3D","line":83,"updated":"2013-08-30 16:08:05.000000000","message":"should this be a yield? seems like the for loop isn\u0027t really useful if it isn\u0027t","commit_id":"07c0401eee16259e7c8d9ccbd2f7d1029413d392"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"965d412b74e1f2dd2106e72be120fb1e3f0ba927","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                          )"},{"line_number":81,"context_line":"            else:"},{"line_number":82,"context_line":"                for name, val in varBinds:"},{"line_number":83,"context_line":"                    return val"},{"line_number":84,"context_line":"        # reach here means error"},{"line_number":85,"context_line":"        raise SNMPException()"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2Fox8%3D","line":83,"in_reply_to":"AAAASn%2F%2Ftf4%3D","updated":"2013-09-02 02:50:20.000000000","message":"Done","commit_id":"07c0401eee16259e7c8d9ccbd2f7d1029413d392"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"f44e85b190a4746ad86a0a4070b51b9406f8409b","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        if errorIndication:"},{"line_number":96,"context_line":"            LOG.error(errorIndication)"},{"line_number":97,"context_line":"        else:"},{"line_number":98,"context_line":"            if errorStatus:"},{"line_number":99,"context_line":"                LOG.error(\"%s at %s\","},{"line_number":100,"context_line":"                          errorStatus.prettyPrint(),"},{"line_number":101,"context_line":"                          errorIndex and varBindtbl[int(errorIndex) - 1] or \"?\""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2FtfQ%3D","line":98,"updated":"2013-08-30 16:08:05.000000000","message":"i\u0027m not sure there needs to be a nested if here, seems like it it could be all one if/elif/else statement","commit_id":"07c0401eee16259e7c8d9ccbd2f7d1029413d392"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"965d412b74e1f2dd2106e72be120fb1e3f0ba927","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        if errorIndication:"},{"line_number":96,"context_line":"            LOG.error(errorIndication)"},{"line_number":97,"context_line":"        else:"},{"line_number":98,"context_line":"            if errorStatus:"},{"line_number":99,"context_line":"                LOG.error(\"%s at %s\","},{"line_number":100,"context_line":"                          errorStatus.prettyPrint(),"},{"line_number":101,"context_line":"                          errorIndex and varBindtbl[int(errorIndex) - 1] or \"?\""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2Fox4%3D","line":98,"in_reply_to":"AAAASn%2F%2FtfQ%3D","updated":"2013-09-02 02:50:20.000000000","message":"Done","commit_id":"07c0401eee16259e7c8d9ccbd2f7d1029413d392"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"f44e85b190a4746ad86a0a4070b51b9406f8409b","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                    bandwidth \u003d self._get_value_from_oid(bw_oid, host) / 8"},{"line_number":169,"context_line":"                    rx_oid \u003d \"%s.%s\" % (self._interface_received_oid,"},{"line_number":170,"context_line":"                                        str(value))"},{"line_number":171,"context_line":"                    rx_bytes \u003d self._get_value_from_oid(rx_oid, host)"},{"line_number":172,"context_line":"                    tx_oid \u003d \"%s.%s\" % (self._interface_transmitted_oid,"},{"line_number":173,"context_line":"                                        str(value))"},{"line_number":174,"context_line":"                    tx_bytes \u003d self._get_value_from_oid(tx_oid, host)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2FtbY%3D","line":171,"updated":"2013-08-30 16:08:05.000000000","message":"i know nothing about pysnmp but its somewhat odd they return bandwidth as bits and other stuff as bytes. just commenting to get a confirm this is correct.","commit_id":"07c0401eee16259e7c8d9ccbd2f7d1029413d392"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"965d412b74e1f2dd2106e72be120fb1e3f0ba927","unresolved":false,"context_lines":[{"line_number":168,"context_line":"                    bandwidth \u003d self._get_value_from_oid(bw_oid, host) / 8"},{"line_number":169,"context_line":"                    rx_oid \u003d \"%s.%s\" % (self._interface_received_oid,"},{"line_number":170,"context_line":"                                        str(value))"},{"line_number":171,"context_line":"                    rx_bytes \u003d self._get_value_from_oid(rx_oid, host)"},{"line_number":172,"context_line":"                    tx_oid \u003d \"%s.%s\" % (self._interface_transmitted_oid,"},{"line_number":173,"context_line":"                                        str(value))"},{"line_number":174,"context_line":"                    tx_bytes \u003d self._get_value_from_oid(tx_oid, host)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2Foxk%3D","line":171,"in_reply_to":"AAAASn%2F%2FtbY%3D","updated":"2013-09-02 02:50:20.000000000","message":"I know little about pysnmp either, I just rebased Toni\u0027s original code. However, it seems in SNMP the bandwidth is bits, http://tools.cisco.com/Support/SNMP/do/BrowseOID.do?local\u003den\u0026translate\u003dTranslate\u0026objectInput\u003difSpeed#oidContent","commit_id":"07c0401eee16259e7c8d9ccbd2f7d1029413d392"},{"author":{"_account_id":8669,"name":"Lucas Graf","email":"graflu0@students.zhaw.ch","username":"graflu0"},"change_message_id":"abc9af340dde8954ce4cec281f68f2858eebdb0c","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        cpu_15_min_load_ind \u003d \\"},{"line_number":114,"context_line":"            str(self._get_value_from_oid(self._cpu_15_min_load_oid, host))"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        return base.CPUStats(cpu1MinLoad\u003dfloat(cpu_1_min_load_ind),"},{"line_number":117,"context_line":"                             cpu5MinLoad\u003dfloat(cpu_5_min_load_ind),"},{"line_number":118,"context_line":"                             cpu15MinLoad\u003dfloat(cpu_15_min_load_ind))"},{"line_number":119,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAS3%2F%2F95M%3D","line":116,"updated":"2013-09-16 13:09:45.000000000","message":"Use yield instead of return. it\u0027s then possible to handle all inspect-methods in the same way.","commit_id":"f64fd5002cf41e821e3a7cb2f737d9755cf392fc"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"3a0ea3545bf1ca54301e3756d8544de302a9c650","unresolved":false,"context_lines":[{"line_number":113,"context_line":"        cpu_15_min_load_ind \u003d \\"},{"line_number":114,"context_line":"            str(self._get_value_from_oid(self._cpu_15_min_load_oid, host))"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        return base.CPUStats(cpu1MinLoad\u003dfloat(cpu_1_min_load_ind),"},{"line_number":117,"context_line":"                             cpu5MinLoad\u003dfloat(cpu_5_min_load_ind),"},{"line_number":118,"context_line":"                             cpu15MinLoad\u003dfloat(cpu_15_min_load_ind))"},{"line_number":119,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAS3%2F%2F7YA%3D","line":116,"in_reply_to":"AAAAS3%2F%2F95M%3D","updated":"2013-09-17 05:16:23.000000000","message":"Done","commit_id":"f64fd5002cf41e821e3a7cb2f737d9755cf392fc"},{"author":{"_account_id":8669,"name":"Lucas Graf","email":"graflu0@students.zhaw.ch","username":"graflu0"},"change_message_id":"abc9af340dde8954ce4cec281f68f2858eebdb0c","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        #get used memory"},{"line_number":124,"context_line":"        used \u003d self._get_value_from_oid(self._memory_used_oid, host)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        return base.MemoryStats(total\u003dint(total), used\u003dint(used))"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    def inspect_diskspace(self, host):"},{"line_number":129,"context_line":"        disks \u003d self._walk_oid(self._disk_index_oid, host)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAS3%2F%2F95E%3D","line":126,"updated":"2013-09-16 13:09:45.000000000","message":"Use yield instead of return. it\u0027s then possible to handle all inspect-methods in the same way.","commit_id":"f64fd5002cf41e821e3a7cb2f737d9755cf392fc"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"3a0ea3545bf1ca54301e3756d8544de302a9c650","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        #get used memory"},{"line_number":124,"context_line":"        used \u003d self._get_value_from_oid(self._memory_used_oid, host)"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"        return base.MemoryStats(total\u003dint(total), used\u003dint(used))"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    def inspect_diskspace(self, host):"},{"line_number":129,"context_line":"        disks \u003d self._walk_oid(self._disk_index_oid, host)"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAS3%2F%2F7X8%3D","line":126,"in_reply_to":"AAAAS3%2F%2F95E%3D","updated":"2013-09-17 05:16:23.000000000","message":"Done","commit_id":"f64fd5002cf41e821e3a7cb2f737d9755cf392fc"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"8e328685fc3fb0e27f7b310557efe4a6ca646ffa","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        else:"},{"line_number":81,"context_line":"            return varBinds[0][1]"},{"line_number":82,"context_line":"        # reach here means error"},{"line_number":83,"context_line":"        raise SNMPException()"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def _walk_oid(self, oid, host):"},{"line_number":86,"context_line":"        ret \u003d self._cmdGen.nextCmd("}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FRiY%3D","line":83,"updated":"2014-01-15 16:15:12.000000000","message":"this raise will never be reached.","commit_id":"bb4bc509a39b87fcdbfc8eb470b329f97eadeee2"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"44f8a46e04bc5893fe76fe36725a32235c9a5f72","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        else:"},{"line_number":81,"context_line":"            return varBinds[0][1]"},{"line_number":82,"context_line":"        # reach here means error"},{"line_number":83,"context_line":"        raise SNMPException()"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def _walk_oid(self, oid, host):"},{"line_number":86,"context_line":"        ret \u003d self._cmdGen.nextCmd("}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FML8%3D","line":83,"in_reply_to":"AAAAUH%2F%2FO%2F0%3D","updated":"2014-01-16 16:05:17.000000000","message":"oh. i thought you needed to throw a try/except to raise errors. didn\u0027t know you could just drop it at the bottom and have it cover everything that happens above.","commit_id":"bb4bc509a39b87fcdbfc8eb470b329f97eadeee2"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"09c605dd5b1d08067ab5346ed071550c58c726be","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        else:"},{"line_number":81,"context_line":"            return varBinds[0][1]"},{"line_number":82,"context_line":"        # reach here means error"},{"line_number":83,"context_line":"        raise SNMPException()"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def _walk_oid(self, oid, host):"},{"line_number":86,"context_line":"        ret \u003d self._cmdGen.nextCmd("}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FO%2F0%3D","line":83,"in_reply_to":"AAAAUH%2F%2FRiY%3D","updated":"2014-01-16 03:43:59.000000000","message":"If error happens, this exception could be reached.","commit_id":"bb4bc509a39b87fcdbfc8eb470b329f97eadeee2"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"8e328685fc3fb0e27f7b310557efe4a6ca646ffa","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                      errorIndex and varBindtbl[int(errorIndex) - 1] or \"?\""},{"line_number":99,"context_line":"                      )"},{"line_number":100,"context_line":"        else:"},{"line_number":101,"context_line":"            return varBindtbl"},{"line_number":102,"context_line":"        # reach here means error"},{"line_number":103,"context_line":"        raise SNMPException()"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FRhA%3D","line":101,"updated":"2014-01-15 16:15:12.000000000","message":"walk_oid and get_value_from_oid are the same except returns are different (one is a subset of other)... we should merged them.","commit_id":"bb4bc509a39b87fcdbfc8eb470b329f97eadeee2"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"44f8a46e04bc5893fe76fe36725a32235c9a5f72","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                      errorIndex and varBindtbl[int(errorIndex) - 1] or \"?\""},{"line_number":99,"context_line":"                      )"},{"line_number":100,"context_line":"        else:"},{"line_number":101,"context_line":"            return varBindtbl"},{"line_number":102,"context_line":"        # reach here means error"},{"line_number":103,"context_line":"        raise SNMPException()"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FMLg%3D","line":101,"in_reply_to":"AAAAUH%2F%2FPAE%3D","updated":"2014-01-16 16:05:17.000000000","message":"ah you\u0027re right. didn\u0027t realise one said nextCmd() and the other said getCmd()","commit_id":"bb4bc509a39b87fcdbfc8eb470b329f97eadeee2"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"09c605dd5b1d08067ab5346ed071550c58c726be","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                      errorIndex and varBindtbl[int(errorIndex) - 1] or \"?\""},{"line_number":99,"context_line":"                      )"},{"line_number":100,"context_line":"        else:"},{"line_number":101,"context_line":"            return varBindtbl"},{"line_number":102,"context_line":"        # reach here means error"},{"line_number":103,"context_line":"        raise SNMPException()"},{"line_number":104,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FPAE%3D","line":101,"in_reply_to":"AAAAUH%2F%2FRhA%3D","updated":"2014-01-16 03:43:59.000000000","message":"I\u0027m afraid not. get_value_from_oid calls self._cmdGen.getCmd() while walk_oid calls self._cmdGen.nextCmd","commit_id":"bb4bc509a39b87fcdbfc8eb470b329f97eadeee2"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"8e328685fc3fb0e27f7b310557efe4a6ca646ffa","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def inspect_cpu(self, host):"},{"line_number":106,"context_line":"        #get 1 minute load"},{"line_number":107,"context_line":"        cpu_1_min_load_ind \u003d \\"},{"line_number":108,"context_line":"            str(self._get_value_from_oid(self._cpu_1_min_load_oid, host))"},{"line_number":109,"context_line":"        #get 5 minute load"},{"line_number":110,"context_line":"        cpu_5_min_load_ind \u003d \\"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FRgY%3D","line":107,"updated":"2014-01-15 16:15:12.000000000","message":"(nit) but what does \u0027ind\u0027 stand for in variable names?","commit_id":"bb4bc509a39b87fcdbfc8eb470b329f97eadeee2"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"09c605dd5b1d08067ab5346ed071550c58c726be","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def inspect_cpu(self, host):"},{"line_number":106,"context_line":"        #get 1 minute load"},{"line_number":107,"context_line":"        cpu_1_min_load_ind \u003d \\"},{"line_number":108,"context_line":"            str(self._get_value_from_oid(self._cpu_1_min_load_oid, host))"},{"line_number":109,"context_line":"        #get 5 minute load"},{"line_number":110,"context_line":"        cpu_5_min_load_ind \u003d \\"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUH%2F%2FO%2Fk%3D","line":107,"in_reply_to":"AAAAUH%2F%2FRgY%3D","updated":"2014-01-16 03:43:59.000000000","message":"Don\u0027t know either. I submit the patch based on Toni\u0027s branch at   https://github.com/graflu0/ceilometer. I\u0027ll change that however.","commit_id":"bb4bc509a39b87fcdbfc8eb470b329f97eadeee2"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"7fcbdc1bab19a1f967401ca5842b9fcee7a1b7c3","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    _interface_ip_oid \u003d \"1.3.6.1.2.1.4.20.1.2\""},{"line_number":54,"context_line":"    _interface_received_oid \u003d \"1.3.6.1.2.1.2.2.1.10\""},{"line_number":55,"context_line":"    _interface_transmitted_oid \u003d \"1.3.6.1.2.1.2.2.1.16\""},{"line_number":56,"context_line":"    _interface_error_oid \u003d \"1.3.6.1.2.1.2.2.1.20\""},{"line_number":57,"context_line":"    #Default port and security name"},{"line_number":58,"context_line":"    _port \u003d 161"},{"line_number":59,"context_line":"    _security_name \u003d \u0027public\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAUH%2F%2FGk8%3D","line":56,"updated":"2014-01-17 12:30:46.000000000","message":"Is there any python library that defines constants for these (presumably well-known) OIDs?","commit_id":"0e54b4f7b6ff9b9d608858cb5d01e16f49b99242"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4de4ea9b2f368959770e3ab347cda2be3215bedb","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    _interface_ip_oid \u003d \"1.3.6.1.2.1.4.20.1.2\""},{"line_number":54,"context_line":"    _interface_received_oid \u003d \"1.3.6.1.2.1.2.2.1.10\""},{"line_number":55,"context_line":"    _interface_transmitted_oid \u003d \"1.3.6.1.2.1.2.2.1.16\""},{"line_number":56,"context_line":"    _interface_error_oid \u003d \"1.3.6.1.2.1.2.2.1.20\""},{"line_number":57,"context_line":"    #Default port and security name"},{"line_number":58,"context_line":"    _port \u003d 161"},{"line_number":59,"context_line":"    _security_name \u003d \u0027public\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAUH%2F%2B4fw%3D","line":56,"in_reply_to":"AAAAUH%2F%2FBb0%3D","updated":"2014-01-21 07:33:38.000000000","message":"They\u0027re well-known OIDs. But I don\u0027t know if there is any python library that defines these constants. I didn\u0027t write these code, just rebased on Toni\u0027s branch at  https://github.com/graflu0/ceilometer","commit_id":"0e54b4f7b6ff9b9d608858cb5d01e16f49b99242"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"6bcc1a7fa39230e427fc0dc36c3c4d940cb40448","unresolved":false,"context_lines":[{"line_number":53,"context_line":"    _interface_ip_oid \u003d \"1.3.6.1.2.1.4.20.1.2\""},{"line_number":54,"context_line":"    _interface_received_oid \u003d \"1.3.6.1.2.1.2.2.1.10\""},{"line_number":55,"context_line":"    _interface_transmitted_oid \u003d \"1.3.6.1.2.1.2.2.1.16\""},{"line_number":56,"context_line":"    _interface_error_oid \u003d \"1.3.6.1.2.1.2.2.1.20\""},{"line_number":57,"context_line":"    #Default port and security name"},{"line_number":58,"context_line":"    _port \u003d 161"},{"line_number":59,"context_line":"    _security_name \u003d \u0027public\u0027"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAUH%2F%2FBb0%3D","line":56,"in_reply_to":"AAAAUH%2F%2FGk8%3D","updated":"2014-01-18 18:15:52.000000000","message":"Are the well-known, or do they need to be configurable?","commit_id":"0e54b4f7b6ff9b9d608858cb5d01e16f49b99242"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"6bcc1a7fa39230e427fc0dc36c3c4d940cb40448","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                                       host.port or self._port)),"},{"line_number":70,"context_line":"            oid"},{"line_number":71,"context_line":"        )"},{"line_number":72,"context_line":"        (errorIndication, errorStatus, errorIndex, varBinds) \u003d ret"},{"line_number":73,"context_line":"        if errorIndication:"},{"line_number":74,"context_line":"            LOG.error(errorIndication)"},{"line_number":75,"context_line":"        elif errorStatus:"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAUH%2F%2FBbk%3D","line":72,"updated":"2014-01-18 18:15:52.000000000","message":"How verbose are the error messages coming out of the SNMP library and being reported on lines 73-79? Do we need to include information like the endpoint we were talking to, the OID we were querying, etc. to ensure that there is enough detail for an operator to debug a problem?","commit_id":"0e54b4f7b6ff9b9d608858cb5d01e16f49b99242"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4de4ea9b2f368959770e3ab347cda2be3215bedb","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                                       host.port or self._port)),"},{"line_number":70,"context_line":"            oid"},{"line_number":71,"context_line":"        )"},{"line_number":72,"context_line":"        (errorIndication, errorStatus, errorIndex, varBinds) \u003d ret"},{"line_number":73,"context_line":"        if errorIndication:"},{"line_number":74,"context_line":"            LOG.error(errorIndication)"},{"line_number":75,"context_line":"        elif errorStatus:"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAUH%2F%2B4ao%3D","line":72,"in_reply_to":"AAAAUH%2F%2FBbk%3D","updated":"2014-01-21 07:33:38.000000000","message":"Done","commit_id":"0e54b4f7b6ff9b9d608858cb5d01e16f49b99242"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"6bcc1a7fa39230e427fc0dc36c3c4d940cb40448","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                      )"},{"line_number":80,"context_line":"        else:"},{"line_number":81,"context_line":"            return varBinds[0][1]"},{"line_number":82,"context_line":"        # reach here means error"},{"line_number":83,"context_line":"        raise SNMPException()"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def _walk_oid(self, oid, host):"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAUH%2F%2FBbg%3D","line":82,"updated":"2014-01-18 18:15:52.000000000","message":"The exception raised needs to have some detail about what happened, similar to what is logged above. In fact, it\u0027s probably better to simply raise here and let the caller log the error.","commit_id":"0e54b4f7b6ff9b9d608858cb5d01e16f49b99242"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4de4ea9b2f368959770e3ab347cda2be3215bedb","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                      )"},{"line_number":80,"context_line":"        else:"},{"line_number":81,"context_line":"            return varBinds[0][1]"},{"line_number":82,"context_line":"        # reach here means error"},{"line_number":83,"context_line":"        raise SNMPException()"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def _walk_oid(self, oid, host):"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAUH%2F%2B4as%3D","line":82,"in_reply_to":"AAAAUH%2F%2FBbg%3D","updated":"2014-01-21 07:33:38.000000000","message":"Done","commit_id":"0e54b4f7b6ff9b9d608858cb5d01e16f49b99242"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"6bcc1a7fa39230e427fc0dc36c3c4d940cb40448","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        # reach here means error"},{"line_number":83,"context_line":"        raise SNMPException()"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def _walk_oid(self, oid, host):"},{"line_number":86,"context_line":"        ret \u003d self._cmdGen.nextCmd("},{"line_number":87,"context_line":"            cmdgen.CommunityData(self._get_security_name(host)),"},{"line_number":88,"context_line":"            cmdgen.UdpTransportTarget((host.hostname,"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAUH%2F%2FBbc%3D","line":85,"updated":"2014-01-18 18:15:52.000000000","message":"This method looks exactly the same as _get_value_from_oid() except that the return value in the previous method is being dereferenced to get a value out. Could _get_value_from_oid() be re-implemented in terms of calling _walk_oid() to avoid duplicating the rest of the logic?","commit_id":"0e54b4f7b6ff9b9d608858cb5d01e16f49b99242"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4de4ea9b2f368959770e3ab347cda2be3215bedb","unresolved":false,"context_lines":[{"line_number":82,"context_line":"        # reach here means error"},{"line_number":83,"context_line":"        raise SNMPException()"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def _walk_oid(self, oid, host):"},{"line_number":86,"context_line":"        ret \u003d self._cmdGen.nextCmd("},{"line_number":87,"context_line":"            cmdgen.CommunityData(self._get_security_name(host)),"},{"line_number":88,"context_line":"            cmdgen.UdpTransportTarget((host.hostname,"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAUH%2F%2B4X8%3D","line":85,"in_reply_to":"AAAAUH%2F%2FBbc%3D","updated":"2014-01-21 07:33:38.000000000","message":"Actually, they\u0027re different. This calls self._cmdGen.nextCmd but _get_value_from_oid() calls self._cmdGen.getCmd. However, since the error handling are the same, I\u0027ll try to use the same function for error handling.","commit_id":"0e54b4f7b6ff9b9d608858cb5d01e16f49b99242"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"6bcc1a7fa39230e427fc0dc36c3c4d940cb40448","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        raise SNMPException()"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def inspect_cpu(self, host):"},{"line_number":106,"context_line":"        #get 1 minute load"},{"line_number":107,"context_line":"        cpu_1_min_load \u003d \\"},{"line_number":108,"context_line":"            str(self._get_value_from_oid(self._cpu_1_min_load_oid, host))"},{"line_number":109,"context_line":"        #get 5 minute load"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAUH%2F%2FBbQ%3D","line":106,"updated":"2014-01-18 18:15:52.000000000","message":"Why are the return values from _get_value_from_oid() being converted to str() here and then converted to float() when passed to CPUStats? What type is being returned from _get_value_from_oid()? Could we use it directly?","commit_id":"0e54b4f7b6ff9b9d608858cb5d01e16f49b99242"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4de4ea9b2f368959770e3ab347cda2be3215bedb","unresolved":false,"context_lines":[{"line_number":103,"context_line":"        raise SNMPException()"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def inspect_cpu(self, host):"},{"line_number":106,"context_line":"        #get 1 minute load"},{"line_number":107,"context_line":"        cpu_1_min_load \u003d \\"},{"line_number":108,"context_line":"            str(self._get_value_from_oid(self._cpu_1_min_load_oid, host))"},{"line_number":109,"context_line":"        #get 5 minute load"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAUH%2F%2B4JI%3D","line":106,"in_reply_to":"AAAAUH%2F%2FBbQ%3D","updated":"2014-01-21 07:33:38.000000000","message":"We don\u0027t know the actual type returned by _get_value_from_oid(). It is MibScalar() instance holding a value of OctetString, IpAddress, Integer, or other types depending on the oid. We here to use str() and float() as a convenient way to do the type transform.","commit_id":"0e54b4f7b6ff9b9d608858cb5d01e16f49b99242"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"7fcbdc1bab19a1f967401ca5842b9fcee7a1b7c3","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            str(self._get_value_from_oid(self._cpu_5_min_load_oid, host))"},{"line_number":112,"context_line":"        #get 15 minute load"},{"line_number":113,"context_line":"        cpu_15_min_load \u003d \\"},{"line_number":114,"context_line":"            str(self._get_value_from_oid(self._cpu_15_min_load_oid, host))"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        yield base.CPUStats(cpu1MinLoad\u003dfloat(cpu_1_min_load),"},{"line_number":117,"context_line":"                            cpu5MinLoad\u003dfloat(cpu_5_min_load),"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAUH%2F%2FGkA%3D","line":114,"updated":"2014-01-17 12:30:46.000000000","message":"Does this translate into 3 separate remote calls out to the SNMP daemon to retrieve the 1, 5 \u0026 15 min CPU loads?\n\nCould this be rationalized by adding a _get_values_from_oids that uses cmdGen.bulkCmd to access multiple OIDs in one call?","commit_id":"0e54b4f7b6ff9b9d608858cb5d01e16f49b99242"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4de4ea9b2f368959770e3ab347cda2be3215bedb","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            str(self._get_value_from_oid(self._cpu_5_min_load_oid, host))"},{"line_number":112,"context_line":"        #get 15 minute load"},{"line_number":113,"context_line":"        cpu_15_min_load \u003d \\"},{"line_number":114,"context_line":"            str(self._get_value_from_oid(self._cpu_15_min_load_oid, host))"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        yield base.CPUStats(cpu1MinLoad\u003dfloat(cpu_1_min_load),"},{"line_number":117,"context_line":"                            cpu5MinLoad\u003dfloat(cpu_5_min_load),"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAUH%2F%2B4GQ%3D","line":114,"in_reply_to":"AAAAUH%2F%2FBbA%3D","updated":"2014-01-21 07:33:38.000000000","message":"Though there is a bulkCmd command in pysnmp, but it doesn\u0027t support all the versions of snmp. In some snmp versions(version \u003c2c), this might results a error.","commit_id":"0e54b4f7b6ff9b9d608858cb5d01e16f49b99242"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"6bcc1a7fa39230e427fc0dc36c3c4d940cb40448","unresolved":false,"context_lines":[{"line_number":111,"context_line":"            str(self._get_value_from_oid(self._cpu_5_min_load_oid, host))"},{"line_number":112,"context_line":"        #get 15 minute load"},{"line_number":113,"context_line":"        cpu_15_min_load \u003d \\"},{"line_number":114,"context_line":"            str(self._get_value_from_oid(self._cpu_15_min_load_oid, host))"},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"        yield base.CPUStats(cpu1MinLoad\u003dfloat(cpu_1_min_load),"},{"line_number":117,"context_line":"                            cpu5MinLoad\u003dfloat(cpu_5_min_load),"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAUH%2F%2FBbA%3D","line":114,"in_reply_to":"AAAAUH%2F%2FGkA%3D","updated":"2014-01-18 18:15:52.000000000","message":"Yes, could we ask for a lot of the information we need about a host at the same time and cache it so the inspect methods can pull out the values they want?","commit_id":"0e54b4f7b6ff9b9d608858cb5d01e16f49b99242"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"6bcc1a7fa39230e427fc0dc36c3c4d940cb40448","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        for interface in net_interfaces:"},{"line_number":153,"context_line":"            for object_name, value in interface:"},{"line_number":154,"context_line":"                ip \u003d self._get_ip_for_interface(host, value)"},{"line_number":155,"context_line":"                if ip and not ip.startswith(\"127.\"):"},{"line_number":156,"context_line":"                    name_oid \u003d \"%s.%s\" % (self._interface_name_oid,"},{"line_number":157,"context_line":"                                          str(value))"},{"line_number":158,"context_line":"                    name \u003d self._get_value_from_oid(name_oid, host)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAUH%2F%2FBbM%3D","line":155,"updated":"2014-01-18 18:15:52.000000000","message":"If the SNMP query returns the localhost interface, why should we ignore it?\n\nIf we definitely want to ignore it, you could remove some indentation in the loop by changing this to:\n\n  if not ip or ip.startsswith(\u0027127.\u0027):\n    continue\n  # ...lines 156-184","commit_id":"0e54b4f7b6ff9b9d608858cb5d01e16f49b99242"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"4de4ea9b2f368959770e3ab347cda2be3215bedb","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        for interface in net_interfaces:"},{"line_number":153,"context_line":"            for object_name, value in interface:"},{"line_number":154,"context_line":"                ip \u003d self._get_ip_for_interface(host, value)"},{"line_number":155,"context_line":"                if ip and not ip.startswith(\"127.\"):"},{"line_number":156,"context_line":"                    name_oid \u003d \"%s.%s\" % (self._interface_name_oid,"},{"line_number":157,"context_line":"                                          str(value))"},{"line_number":158,"context_line":"                    name \u003d self._get_value_from_oid(name_oid, host)"}],"source_content_type":"text/x-python","patch_set":13,"id":"AAAAUH%2F%2B4GE%3D","line":155,"in_reply_to":"AAAAUH%2F%2FBbM%3D","updated":"2014-01-21 07:33:38.000000000","message":"Done","commit_id":"0e54b4f7b6ff9b9d608858cb5d01e16f49b99242"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"3fe6d262f4b83649603e66964f79690d0dcd1ef6","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from ceilometer.openstack.common import log as logging"},{"line_number":25,"context_line":"from pysnmp.entity.rfc3413.oneliner import cmdgen"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class SNMPException(Exception):"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUH%2F9Wq8%3D","line":27,"updated":"2014-02-07 14:25:00.000000000","message":"unused","commit_id":"ef56efb8f74999cc7c1ed39177bb42c0538707ed"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"d0052cc53a4e8d27201ca2182707e31947943999","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from ceilometer.openstack.common import log as logging"},{"line_number":25,"context_line":"from pysnmp.entity.rfc3413.oneliner import cmdgen"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"class SNMPException(Exception):"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2F%2BEk%3D","line":27,"in_reply_to":"AAAAUH%2F9Wq8%3D","updated":"2014-02-08 05:20:05.000000000","message":"Done","commit_id":"ef56efb8f74999cc7c1ed39177bb42c0538707ed"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"3fe6d262f4b83649603e66964f79690d0dcd1ef6","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                   oid)"},{"line_number":99,"context_line":"        (error, data) \u003d parse_snmp_return(ret)"},{"line_number":100,"context_line":"        if error:"},{"line_number":101,"context_line":"            raise SNMPException(\"Error heppend, oid %(oid)s, \""},{"line_number":102,"context_line":"                                \"host %(host)s, %(err)s\" % dict(oid\u003doid,"},{"line_number":103,"context_line":"                                host\u003dhost.hostname, err\u003ddata))"},{"line_number":104,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUH%2F9Wrw%3D","line":101,"updated":"2014-02-07 14:25:00.000000000","message":"s/Error heppened/An error occurred/","commit_id":"ef56efb8f74999cc7c1ed39177bb42c0538707ed"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"d0052cc53a4e8d27201ca2182707e31947943999","unresolved":false,"context_lines":[{"line_number":98,"context_line":"                   oid)"},{"line_number":99,"context_line":"        (error, data) \u003d parse_snmp_return(ret)"},{"line_number":100,"context_line":"        if error:"},{"line_number":101,"context_line":"            raise SNMPException(\"Error heppend, oid %(oid)s, \""},{"line_number":102,"context_line":"                                \"host %(host)s, %(err)s\" % dict(oid\u003doid,"},{"line_number":103,"context_line":"                                host\u003dhost.hostname, err\u003ddata))"},{"line_number":104,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":14,"id":"AAAAUX%2F%2F%2BEg%3D","line":101,"in_reply_to":"AAAAUH%2F9Wrw%3D","updated":"2014-02-08 05:20:05.000000000","message":"Done","commit_id":"ef56efb8f74999cc7c1ed39177bb42c0538707ed"},{"author":{"_account_id":2860,"name":"litong01","email":"email4tong@yahoo.com","username":"litong01"},"change_message_id":"5454bca2ae6946951e35841e4bccf90c0d510e17","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        options \u003d urlparse.parse_qs(host.query)"},{"line_number":192,"context_line":"        return options.get(\u0027security_name\u0027, [self._security_name])[-1]"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def _get_ip_for_interface(self, host, interface_id):"},{"line_number":195,"context_line":"        ip_addresses \u003d self._walk_oid(self._interface_ip_oid, host)"},{"line_number":196,"context_line":"        for ip in ip_addresses:"},{"line_number":197,"context_line":"            for name, value in ip:"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAU3%2F%2Fof8%3D","line":194,"updated":"2014-02-25 15:05:45.000000000","message":"seems to me this will not support IPv6. should it be a consideration?","commit_id":"e1c8127829a75171c649cf93f437337993a1ac2e"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"8cbdbb26224f451a302d79953caca8ec854118e3","unresolved":false,"context_lines":[{"line_number":191,"context_line":"        options \u003d urlparse.parse_qs(host.query)"},{"line_number":192,"context_line":"        return options.get(\u0027security_name\u0027, [self._security_name])[-1]"},{"line_number":193,"context_line":""},{"line_number":194,"context_line":"    def _get_ip_for_interface(self, host, interface_id):"},{"line_number":195,"context_line":"        ip_addresses \u003d self._walk_oid(self._interface_ip_oid, host)"},{"line_number":196,"context_line":"        for ip in ip_addresses:"},{"line_number":197,"context_line":"            for name, value in ip:"}],"source_content_type":"text/x-python","patch_set":15,"id":"AAAAU3%2F%2FhHg%3D","line":194,"in_reply_to":"AAAAU3%2F%2Fof8%3D","updated":"2014-02-26 06:44:17.000000000","message":"This \u0027.\u0027 is used to separate the oid part, I don\u0027t think this will affect the ipv6 address.","commit_id":"e1c8127829a75171c649cf93f437337993a1ac2e"}],"etc/ceilometer/ceilometer.conf.sample":[{"author":{"_account_id":1669,"name":"Julien Danjou","display_name":"jd","email":"julien@danjou.info","username":"jdanjou"},"change_message_id":"24b55c7a2ce0aa64a17480dee63d282e38ffeb65","unresolved":false,"context_lines":[{"line_number":619,"context_line":""},{"line_number":620,"context_line":"# SNMP security name (string value)"},{"line_number":621,"context_line":"#security_name\u003dpublic"},{"line_number":622,"context_line":""},{"line_number":623,"context_line":""},{"line_number":624,"context_line":"[rpc_notifier2]"},{"line_number":625,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAARn%2F%2Fvjc%3D","line":622,"updated":"2013-08-22 13:15:36.000000000","message":"These should not be global options","commit_id":"dc4b6097751f804cdc16648bdfa074d4171b154c"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"97403745dd5b908c50928a610e1431e3e13b0918","unresolved":false,"context_lines":[{"line_number":619,"context_line":""},{"line_number":620,"context_line":"# SNMP security name (string value)"},{"line_number":621,"context_line":"#security_name\u003dpublic"},{"line_number":622,"context_line":""},{"line_number":623,"context_line":""},{"line_number":624,"context_line":"[rpc_notifier2]"},{"line_number":625,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":3,"id":"AAAASX%2F%2F9T8%3D","line":622,"in_reply_to":"AAAARn%2F%2Fvjc%3D","updated":"2013-08-23 08:32:15.000000000","message":"ok, i\u0027ll move these into the resource url defined in piepline.","commit_id":"dc4b6097751f804cdc16648bdfa074d4171b154c"}],"tests/hardware/inspector/base.py":[{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"f44e85b190a4746ad86a0a4070b51b9406f8409b","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from ceilometer.hardware.inspector import base"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class InsepctorBaseTest(object):"},{"line_number":23,"context_line":"    \"\"\"Subclass must set self.insepctor and self.host in"},{"line_number":24,"context_line":"    self.setUp()"},{"line_number":25,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2FtrA%3D","line":22,"updated":"2013-08-30 16:08:05.000000000","message":"s/InsepctorBaseTest/InspectorBaseTest/","commit_id":"07c0401eee16259e7c8d9ccbd2f7d1029413d392"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"965d412b74e1f2dd2106e72be120fb1e3f0ba927","unresolved":false,"context_lines":[{"line_number":19,"context_line":"from ceilometer.hardware.inspector import base"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class InsepctorBaseTest(object):"},{"line_number":23,"context_line":"    \"\"\"Subclass must set self.insepctor and self.host in"},{"line_number":24,"context_line":"    self.setUp()"},{"line_number":25,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2Foxc%3D","line":22,"in_reply_to":"AAAASn%2F%2FtrA%3D","updated":"2013-09-02 02:50:20.000000000","message":"Done","commit_id":"07c0401eee16259e7c8d9ccbd2f7d1029413d392"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"f44e85b190a4746ad86a0a4070b51b9406f8409b","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class InsepctorBaseTest(object):"},{"line_number":23,"context_line":"    \"\"\"Subclass must set self.insepctor and self.host in"},{"line_number":24,"context_line":"    self.setUp()"},{"line_number":25,"context_line":"    \"\"\""},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2Ftrg%3D","line":23,"updated":"2013-08-30 16:08:05.000000000","message":"s/self.insepctor/self.inspector/","commit_id":"07c0401eee16259e7c8d9ccbd2f7d1029413d392"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"965d412b74e1f2dd2106e72be120fb1e3f0ba927","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class InsepctorBaseTest(object):"},{"line_number":23,"context_line":"    \"\"\"Subclass must set self.insepctor and self.host in"},{"line_number":24,"context_line":"    self.setUp()"},{"line_number":25,"context_line":"    \"\"\""},{"line_number":26,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2FoxY%3D","line":23,"in_reply_to":"AAAASn%2F%2Ftrg%3D","updated":"2013-09-02 02:50:20.000000000","message":"Done","commit_id":"07c0401eee16259e7c8d9ccbd2f7d1029413d392"}],"tests/hardware/inspector/test_snmp.py":[{"author":{"_account_id":2813,"name":"Mehdi Abaakouk","email":"sileht@sileht.net","username":"sileht"},"change_message_id":"330bb407c2be78c54f046d72f1e3e0828eaa0fd8","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        self.stubs.Set(self.inspector._cmdGen, \u0027getCmd\u0027, faux_getCmd)"},{"line_number":162,"context_line":"        self.stubs.Set(self.inspector._cmdGen, \u0027nextCmd\u0027, faux_nextCmd)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    def test_inspect_cpu(self):"},{"line_number":165,"context_line":"        self.assertEqual(self.inspector.inspect_cpu(self.host),"},{"line_number":166,"context_line":"                         expected_cpu)"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2F5Rk%3D","line":164,"updated":"2013-08-28 09:57:56.000000000","message":"What do you think about moved all test_inspect_XXX method to a base test class for all inspectors, to ensure that all futures implementation return the same datas","commit_id":"dfee8f942bd01440de2d3b205e29ad2a67a6a9a2"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"fb3b35d3efda360e111c08b533b757889251be4d","unresolved":false,"context_lines":[{"line_number":161,"context_line":"        self.stubs.Set(self.inspector._cmdGen, \u0027getCmd\u0027, faux_getCmd)"},{"line_number":162,"context_line":"        self.stubs.Set(self.inspector._cmdGen, \u0027nextCmd\u0027, faux_nextCmd)"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"    def test_inspect_cpu(self):"},{"line_number":165,"context_line":"        self.assertEqual(self.inspector.inspect_cpu(self.host),"},{"line_number":166,"context_line":"                         expected_cpu)"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAASn%2F%2F1Ik%3D","line":164,"in_reply_to":"AAAASn%2F%2F5Rk%3D","updated":"2013-08-29 02:42:24.000000000","message":"Thanks for the review. I\u0027ll do that.","commit_id":"dfee8f942bd01440de2d3b205e29ad2a67a6a9a2"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"f44e85b190a4746ad86a0a4070b51b9406f8409b","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from ceilometer.openstack.common import network_utils"},{"line_number":23,"context_line":"from ceilometer.tests import base as test_base"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from .base import InsepctorBaseTest as Base"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class FakeMac(object):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2FtoU%3D","line":25,"updated":"2013-08-30 16:08:05.000000000","message":"maybe use an absolute path instead of relative here. or don\u0027t.","commit_id":"07c0401eee16259e7c8d9ccbd2f7d1029413d392"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"965d412b74e1f2dd2106e72be120fb1e3f0ba927","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from ceilometer.openstack.common import network_utils"},{"line_number":23,"context_line":"from ceilometer.tests import base as test_base"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from .base import InsepctorBaseTest as Base"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class FakeMac(object):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2Fow8%3D","line":25,"in_reply_to":"AAAASn%2F%2FtoU%3D","updated":"2013-09-02 02:50:20.000000000","message":"I followed the convention used in tests/api/v2/*.py","commit_id":"07c0401eee16259e7c8d9ccbd2f7d1029413d392"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"f44e85b190a4746ad86a0a4070b51b9406f8409b","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        return (\"faux_nextCmd Error\", None, 0, [])"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"class TestSNMPInsepctor(Base, test_base.TestCase):"},{"line_number":210,"context_line":"    def setUp(self):"},{"line_number":211,"context_line":"        super(TestSNMPInsepctor, self).setUp()"},{"line_number":212,"context_line":"        self.inspector \u003d snmp.SNMPInspector()"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2Ftn8%3D","line":209,"updated":"2013-08-30 16:08:05.000000000","message":"s/TestSNMPInsepctor/TestSNMPInspector/\n\nsame below","commit_id":"07c0401eee16259e7c8d9ccbd2f7d1029413d392"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"965d412b74e1f2dd2106e72be120fb1e3f0ba927","unresolved":false,"context_lines":[{"line_number":206,"context_line":"        return (\"faux_nextCmd Error\", None, 0, [])"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":""},{"line_number":209,"context_line":"class TestSNMPInsepctor(Base, test_base.TestCase):"},{"line_number":210,"context_line":"    def setUp(self):"},{"line_number":211,"context_line":"        super(TestSNMPInsepctor, self).setUp()"},{"line_number":212,"context_line":"        self.inspector \u003d snmp.SNMPInspector()"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAASn%2F%2Fow0%3D","line":209,"in_reply_to":"AAAASn%2F%2Ftn8%3D","updated":"2013-09-02 02:50:20.000000000","message":"Done","commit_id":"07c0401eee16259e7c8d9ccbd2f7d1029413d392"}]}
