)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"9aa62c2eea550cc644601c43852a8db87c425499","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is the spec to improve hardware snmp improvement."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Implements blueprint snmp-improvement"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I2791cdcd599d8b5cb497d2a2b91191f19f5fcf63"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"baada198_3f15cb48","line":11,"updated":"2014-07-06 18:55:46.000000000","message":"Shouldn\u0027t that tag be kept for the code patches that actually implement the BP?\n\n(to avoid confusing the launchpad whiteboard auto-update)","commit_id":"0ab3b527c6d22697d276854975c4be6cdf9228e7"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"451858024a35993ca88aeccad8c1da953db7c59c","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This is the spec to improve hardware snmp improvement."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Implements blueprint snmp-improvement"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Change-Id: I2791cdcd599d8b5cb497d2a2b91191f19f5fcf63"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"baada198_5aea8aac","line":11,"in_reply_to":"baada198_3f15cb48","updated":"2014-07-07 02:12:16.000000000","message":"I just follow the conventions in other nova/ceilometer bps.","commit_id":"0ab3b527c6d22697d276854975c4be6cdf9228e7"}],"specs/juno/snmp-improvement.rst":[{"author":{"_account_id":7585,"name":"Ladislav Smola","email":"lsmola@redhat.com","username":"lsmola"},"change_message_id":"2be8d08bd1f51ed234e2ca456a4664721c5b9712","unresolved":false,"context_lines":[{"line_number":86,"context_line":"The identifier parameter passed in to the method inspect_generic() serves as"},{"line_number":87,"context_line":"the key to the above mapping."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"The insepct_generic() method in snmp insepctor would do the following things::"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    1. map \u003d MAPPING[identifier]"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"baada198_696d1c98","line":89,"updated":"2014-07-03 09:20:47.000000000","message":"inspect typo","commit_id":"528766ade8141a82d6d699e2fdf4a9cfafd552f4"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"0b938ddb1e9d8e7f2c8288437c454859014e7bfc","unresolved":false,"context_lines":[{"line_number":86,"context_line":"The identifier parameter passed in to the method inspect_generic() serves as"},{"line_number":87,"context_line":"the key to the above mapping."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"The insepct_generic() method in snmp insepctor would do the following things::"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    1. map \u003d MAPPING[identifier]"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"baada198_e41daebf","line":89,"in_reply_to":"baada198_696d1c98","updated":"2014-07-04 02:04:01.000000000","message":"Done","commit_id":"528766ade8141a82d6d699e2fdf4a9cfafd552f4"},{"author":{"_account_id":6676,"name":"zqfan","email":"aji.zqfan@gmail.com","username":"aji-zqfan"},"change_message_id":"b2bd431fe44ff528d56688d4c4e81f7dc609a983","unresolved":false,"context_lines":[{"line_number":98,"context_line":"       and save the response as key-value pairs like oid:value in the cache."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    4. Call extra_metadata_func to get additional metadata for some special"},{"line_number":101,"context_line":"       cases, i.e. ip address"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    5. Based on the matching_type, return the (value, metadata) using the"},{"line_number":104,"context_line":"       oid:value key-value pairs in the cache. The metadata is constructed"}],"source_content_type":"text/x-rst","patch_set":2,"id":"baada198_780a6f22","line":101,"updated":"2014-07-02 11:39:10.000000000","message":"For now, it is ok since ip address is the only case. \n\nBut how should we deal with the parameters? directly hardcode them (for ip address, the \u0027host\u0027 seems not a constant value)?\n\nSince this is a generic entry for all inspector (including future ones), just curious that if (in future) there is another special case but different with ip address, then the extra_metadata_func should be a dict, the MAPPING[\u0027extra_metadata_func\u0027][identifier] can be the final function? (can be ignored since that has not happened yet, even will not happen at all)","commit_id":"528766ade8141a82d6d699e2fdf4a9cfafd552f4"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"0b938ddb1e9d8e7f2c8288437c454859014e7bfc","unresolved":false,"context_lines":[{"line_number":98,"context_line":"       and save the response as key-value pairs like oid:value in the cache."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    4. Call extra_metadata_func to get additional metadata for some special"},{"line_number":101,"context_line":"       cases, i.e. ip address"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    5. Based on the matching_type, return the (value, metadata) using the"},{"line_number":104,"context_line":"       oid:value key-value pairs in the cache. The metadata is constructed"}],"source_content_type":"text/x-rst","patch_set":2,"id":"baada198_a7f9f881","line":101,"in_reply_to":"baada198_495a1851","updated":"2014-07-04 02:04:01.000000000","message":"I think the project_id/user_id information can only be found by the TripleO discovery. But the discovery class is not known to pollster/inspector. How about put those values into the resource url and let the extra_metadata_func extract those information. \n\nI\u0027ll change the return value of inspect_generic to (value, metadata, extra) where the extra contains the information to help the pollster to create sample, i.e. project_id/user_id.\n\nThis might seems duplicated effort, but it gives future other inspector the opportunity to instruct the pollster how to construct the sample.","commit_id":"528766ade8141a82d6d699e2fdf4a9cfafd552f4"},{"author":{"_account_id":7585,"name":"Ladislav Smola","email":"lsmola@redhat.com","username":"lsmola"},"change_message_id":"2be8d08bd1f51ed234e2ca456a4664721c5b9712","unresolved":false,"context_lines":[{"line_number":98,"context_line":"       and save the response as key-value pairs like oid:value in the cache."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    4. Call extra_metadata_func to get additional metadata for some special"},{"line_number":101,"context_line":"       cases, i.e. ip address"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    5. Based on the matching_type, return the (value, metadata) using the"},{"line_number":104,"context_line":"       oid:value key-value pairs in the cache. The metadata is constructed"}],"source_content_type":"text/x-rst","patch_set":2,"id":"baada198_495a1851","line":101,"in_reply_to":"baada198_5755584e","updated":"2014-07-03 09:20:47.000000000","message":"I believe the extra_metadata should return all the sample fields, e.g.:\n\n{ip_address: snmp://name@password:1.2.3.4, project_id: xy, user_id: xy, metadata: {}}\n\nSo you would either have some function like \u0027extra_metadata\u0027 that would construct this from list of resources. Or you could build this directly in the Discovery class. E.g. for TripleO we have discovery from nova instances, so we can build the sample with all info filled, not just ip_address.","commit_id":"528766ade8141a82d6d699e2fdf4a9cfafd552f4"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"3dcc541dacb2751142640260b49443b66adfb106","unresolved":false,"context_lines":[{"line_number":98,"context_line":"       and save the response as key-value pairs like oid:value in the cache."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    4. Call extra_metadata_func to get additional metadata for some special"},{"line_number":101,"context_line":"       cases, i.e. ip address"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"    5. Based on the matching_type, return the (value, metadata) using the"},{"line_number":104,"context_line":"       oid:value key-value pairs in the cache. The metadata is constructed"}],"source_content_type":"text/x-rst","patch_set":2,"id":"baada198_5755584e","line":101,"in_reply_to":"baada198_780a6f22","updated":"2014-07-03 02:53:55.000000000","message":"the extra_metadata_func could be different for different identifier(hence the different metric), so i don\u0027t think it needs to be a nested dict here.\n\nthe calling to the extra_metadata_func will pass all the information, including the parameters from inspect_generic, the map, the cache, etc.","commit_id":"528766ade8141a82d6d699e2fdf4a9cfafd552f4"},{"author":{"_account_id":7585,"name":"Ladislav Smola","email":"lsmola@redhat.com","username":"lsmola"},"change_message_id":"2be8d08bd1f51ed234e2ca456a4664721c5b9712","unresolved":false,"context_lines":[{"line_number":143,"context_line":"    "},{"line_number":144,"context_line":"    So here we\u0027ll return 2 instances of (value, metadata):"},{"line_number":145,"context_line":"     (19222656, {\u0027device\u0027: \"/dev/sda2\", \u0027path\u0027: \"/\"})"},{"line_number":146,"context_line":"     (808112, {\u0027device\u0027: \"tmpfs\", \u0027path\u0027: \"/run\"})"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"In ceilometer.hardware.pollsters:"}],"source_content_type":"text/x-rst","patch_set":2,"id":"baada198_44c03d7c","line":146,"updated":"2014-07-03 09:20:47.000000000","message":"I am missing here how the resource_id will be build. IP address or nova instance id is not enough.\n\nSo possibly we could do that in \u0027extra_metadat_func\u0027, i would rather rename it to sample_decorator(or similar). So you can construct also resource_id inside this function. \n\ne.g. like \n\nfunction sample_decorator(sample)\n\nmetadata \u003d {ip_address: sample[\u0027ip_address\u0027]}\n\nmetadata.update(sample[\u0027metadata\u0027])\n\nsample.update({resource_id: (sample[\u0027ip_address\u0027] + sample[\u0027device\u0027], metadata: metadata))\n\nreturn sample\n\n\nOr something like this.","commit_id":"528766ade8141a82d6d699e2fdf4a9cfafd552f4"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"0b938ddb1e9d8e7f2c8288437c454859014e7bfc","unresolved":false,"context_lines":[{"line_number":143,"context_line":"    "},{"line_number":144,"context_line":"    So here we\u0027ll return 2 instances of (value, metadata):"},{"line_number":145,"context_line":"     (19222656, {\u0027device\u0027: \"/dev/sda2\", \u0027path\u0027: \"/\"})"},{"line_number":146,"context_line":"     (808112, {\u0027device\u0027: \"tmpfs\", \u0027path\u0027: \"/run\"})"},{"line_number":147,"context_line":""},{"line_number":148,"context_line":""},{"line_number":149,"context_line":"In ceilometer.hardware.pollsters:"}],"source_content_type":"text/x-rst","patch_set":2,"id":"baada198_279de8bc","line":146,"in_reply_to":"baada198_44c03d7c","updated":"2014-07-04 02:04:01.000000000","message":"good though, i\u0027ll modify the spec in the next version.","commit_id":"528766ade8141a82d6d699e2fdf4a9cfafd552f4"},{"author":{"_account_id":7585,"name":"Ladislav Smola","email":"lsmola@redhat.com","username":"lsmola"},"change_message_id":"2be8d08bd1f51ed234e2ca456a4664721c5b9712","unresolved":false,"context_lines":[{"line_number":148,"context_line":""},{"line_number":149,"context_line":"In ceilometer.hardware.pollsters:"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"We need to change accordingly to the new generic inspector interface."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"Alternatives"}],"source_content_type":"text/x-rst","patch_set":2,"id":"baada198_e4b151e2","line":151,"updated":"2014-07-03 09:20:47.000000000","message":"Last thing I am wondering is how to combine multiple meters in one. E.g. creating hardware.memory.util from hardware.memory.total and hardware.memory.used.\n\nShould it be done here, or on pipeline level? It will probably require building some dependency tree, so I guess it\u0027s worth another spec.","commit_id":"528766ade8141a82d6d699e2fdf4a9cfafd552f4"},{"author":{"_account_id":7585,"name":"Ladislav Smola","email":"lsmola@redhat.com","username":"lsmola"},"change_message_id":"b9b513f504d1dfc51727794447b35d62d014c3d2","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Improve the snmp hardware insepctor"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/ceilometer/+spec/snmp-improvement"}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_bf6bb41c","line":8,"updated":"2014-07-04 09:32:04.000000000","message":"inspector typo","commit_id":"b7fb8fc7a2f98fe140e657fdb85d4fec508aba52"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"b81a34d19180bb45c6ca017f605b4351129b2424","unresolved":false,"context_lines":[{"line_number":5,"context_line":" http://creativecommons.org/licenses/by/3.0/legalcode"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":8,"context_line":"Improve the snmp hardware insepctor"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/ceilometer/+spec/snmp-improvement"}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_fab37a4a","line":8,"in_reply_to":"baada198_bf6bb41c","updated":"2014-07-04 09:43:40.000000000","message":"Done","commit_id":"b7fb8fc7a2f98fe140e657fdb85d4fec508aba52"},{"author":{"_account_id":7585,"name":"Ladislav Smola","email":"lsmola@redhat.com","username":"lsmola"},"change_message_id":"b9b513f504d1dfc51727794447b35d62d014c3d2","unresolved":false,"context_lines":[{"line_number":90,"context_line":"       metadata \u003d {}"},{"line_number":91,"context_line":"       extra \u003d {}"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    2. Collect all the oids in the map, including the value_oid as"},{"line_number":94,"context_line":"       map[\u0027value_oid\u0027] and oids in metadata map[\u0027metadata\u0027]."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    3. Send out GetRequest or GetBulkRequest(based on the matching_type"}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_c4e25f9f","line":93,"updated":"2014-07-04 09:32:04.000000000","message":"Not sure if it is obvious, but this needs to be filtered by what is defined in pipeline sink definitions, right?\n\nOr is the plan to do bulk request for everything and filter it later?","commit_id":"b7fb8fc7a2f98fe140e657fdb85d4fec508aba52"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"b81a34d19180bb45c6ca017f605b4351129b2424","unresolved":false,"context_lines":[{"line_number":90,"context_line":"       metadata \u003d {}"},{"line_number":91,"context_line":"       extra \u003d {}"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"    2. Collect all the oids in the map, including the value_oid as"},{"line_number":94,"context_line":"       map[\u0027value_oid\u0027] and oids in metadata map[\u0027metadata\u0027]."},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    3. Send out GetRequest or GetBulkRequest(based on the matching_type"}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_3a7b328d","line":93,"in_reply_to":"baada198_c4e25f9f","updated":"2014-07-04 09:43:40.000000000","message":"all oids in this specific map, and filter it later","commit_id":"b7fb8fc7a2f98fe140e657fdb85d4fec508aba52"},{"author":{"_account_id":7585,"name":"Ladislav Smola","email":"lsmola@redhat.com","username":"lsmola"},"change_message_id":"b9b513f504d1dfc51727794447b35d62d014c3d2","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    3. Send out GetRequest or GetBulkRequest(based on the matching_type"},{"line_number":97,"context_line":"       respectively) to get those oid values which are not in the cache,"},{"line_number":98,"context_line":"       and save the response as key-value pairs like oid:value in the cache."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    4. Based on the matching_type, construct value and metadata using the"},{"line_number":101,"context_line":"       oid:value key-value pairs in the cache. The metadata is constructed"}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_5f0a9879","line":98,"updated":"2014-07-04 09:32:04.000000000","message":"I am little confused with \u0027cache\u0027 here. It should just store all the SNMP stats for one poll period, right. And will be cleared before another poll period, right?","commit_id":"b7fb8fc7a2f98fe140e657fdb85d4fec508aba52"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"b81a34d19180bb45c6ca017f605b4351129b2424","unresolved":false,"context_lines":[{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    3. Send out GetRequest or GetBulkRequest(based on the matching_type"},{"line_number":97,"context_line":"       respectively) to get those oid values which are not in the cache,"},{"line_number":98,"context_line":"       and save the response as key-value pairs like oid:value in the cache."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    4. Based on the matching_type, construct value and metadata using the"},{"line_number":101,"context_line":"       oid:value key-value pairs in the cache. The metadata is constructed"}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_9ab0be44","line":98,"in_reply_to":"baada198_5f0a9879","updated":"2014-07-04 09:43:40.000000000","message":"yes. the cache used here is because we try to collect all snmp stats in one request.","commit_id":"b7fb8fc7a2f98fe140e657fdb85d4fec508aba52"},{"author":{"_account_id":7585,"name":"Ladislav Smola","email":"lsmola@redhat.com","username":"lsmola"},"change_message_id":"b9b513f504d1dfc51727794447b35d62d014c3d2","unresolved":false,"context_lines":[{"line_number":132,"context_line":"           \u0027device\u0027: [\"1.3.6.1.4.1.2021.9.1.3\", str],"},{"line_number":133,"context_line":"           \u0027path\u0027: [\"1.3.6.1.4.1.2021.9.1.2\", str],"},{"line_number":134,"context_line":"        },"},{"line_number":135,"context_line":"        \u0027extra_metadata_func\u0027: None,"},{"line_number":136,"context_line":"      },"},{"line_number":137,"context_line":"    And in the cache, we have something like the following:"},{"line_number":138,"context_line":"    {"}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_04c9b725","line":135,"updated":"2014-07-04 09:32:04.000000000","message":"this should be post_op now","commit_id":"b7fb8fc7a2f98fe140e657fdb85d4fec508aba52"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"b81a34d19180bb45c6ca017f605b4351129b2424","unresolved":false,"context_lines":[{"line_number":132,"context_line":"           \u0027device\u0027: [\"1.3.6.1.4.1.2021.9.1.3\", str],"},{"line_number":133,"context_line":"           \u0027path\u0027: [\"1.3.6.1.4.1.2021.9.1.2\", str],"},{"line_number":134,"context_line":"        },"},{"line_number":135,"context_line":"        \u0027extra_metadata_func\u0027: None,"},{"line_number":136,"context_line":"      },"},{"line_number":137,"context_line":"    And in the cache, we have something like the following:"},{"line_number":138,"context_line":"    {"}],"source_content_type":"text/x-rst","patch_set":4,"id":"baada198_baad82eb","line":135,"in_reply_to":"baada198_04c9b725","updated":"2014-07-04 09:43:40.000000000","message":"Done","commit_id":"b7fb8fc7a2f98fe140e657fdb85d4fec508aba52"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"9aa62c2eea550cc644601c43852a8db87c425499","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Problem description"},{"line_number":22,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Currently, to add new hardware metrics, the developer needs to the followings:"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"1. Add new inspect method in ceilometer.hardware.inspector.base.Inspector class."},{"line_number":27,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"baada198_7f0ae326","line":24,"updated":"2014-07-06 18:55:46.000000000","message":"Non-blocking nitpick (only fix if pushing a new patchset):\n\n  s/needs to the followings/needs to do the following/","commit_id":"0ab3b527c6d22697d276854975c4be6cdf9228e7"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"451858024a35993ca88aeccad8c1da953db7c59c","unresolved":false,"context_lines":[{"line_number":21,"context_line":"Problem description"},{"line_number":22,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Currently, to add new hardware metrics, the developer needs to the followings:"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"1. Add new inspect method in ceilometer.hardware.inspector.base.Inspector class."},{"line_number":27,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"baada198_dab85a13","line":24,"in_reply_to":"baada198_7f0ae326","updated":"2014-07-07 02:12:16.000000000","message":"Done","commit_id":"0ab3b527c6d22697d276854975c4be6cdf9228e7"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"9aa62c2eea550cc644601c43852a8db87c425499","unresolved":false,"context_lines":[{"line_number":34,"context_line":"This could result in quite a lot of coding, considering the tons of metrics"},{"line_number":35,"context_line":"available through snmp which could be added."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Besides, since most of the existing snmpd agents support version 2c, we should"},{"line_number":38,"context_line":"leverage the snmp GetBulkRequest introduced in version 2c to minimize the"},{"line_number":39,"context_line":"network traffic between the snmp inspector and snmpd agent."},{"line_number":40,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"baada198_cab32f4b","line":37,"updated":"2014-07-06 18:55:46.000000000","message":"So, just to clarify ... are we now requiring at least version 2c, or trying the bulk command first and then falling back to an earlier version if that fails?","commit_id":"0ab3b527c6d22697d276854975c4be6cdf9228e7"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"451858024a35993ca88aeccad8c1da953db7c59c","unresolved":false,"context_lines":[{"line_number":34,"context_line":"This could result in quite a lot of coding, considering the tons of metrics"},{"line_number":35,"context_line":"available through snmp which could be added."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Besides, since most of the existing snmpd agents support version 2c, we should"},{"line_number":38,"context_line":"leverage the snmp GetBulkRequest introduced in version 2c to minimize the"},{"line_number":39,"context_line":"network traffic between the snmp inspector and snmpd agent."},{"line_number":40,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"baada198_1a3e528c","line":37,"in_reply_to":"baada198_cab32f4b","updated":"2014-07-07 02:12:16.000000000","message":"if it desn\u0027t we should fall back to getNextRequest. I\u0027ll add this in the next revision.","commit_id":"0ab3b527c6d22697d276854975c4be6cdf9228e7"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"9aa62c2eea550cc644601c43852a8db87c425499","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Here we define a mapping dict like the following::"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    MAPPING \u003d {"},{"line_number":72,"context_line":"      identifier: {"},{"line_number":73,"context_line":"        \u0027matching_type\u0027: EXACT or PREFIX,"},{"line_number":74,"context_line":"        \u0027value_oid\u0027: oid of the sample value,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"baada198_aab8bb2a","line":71,"updated":"2014-07-06 18:55:46.000000000","message":"So IIUC this mapping is still implemented in python code, right?\n\nWould it be more accessible to non-programming admins if it was encoded as say a YAML file?","commit_id":"0ab3b527c6d22697d276854975c4be6cdf9228e7"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"451858024a35993ca88aeccad8c1da953db7c59c","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Here we define a mapping dict like the following::"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    MAPPING \u003d {"},{"line_number":72,"context_line":"      identifier: {"},{"line_number":73,"context_line":"        \u0027matching_type\u0027: EXACT or PREFIX,"},{"line_number":74,"context_line":"        \u0027value_oid\u0027: oid of the sample value,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"baada198_dac21a52","line":71,"in_reply_to":"baada198_aab8bb2a","updated":"2014-07-07 02:12:16.000000000","message":"yes, it the mapping is still in python code. The reason that I don\u0027t want to use YAML is that in the mapping, we might still needs to refer to some python functions, i.e. value_converter, post_op, etc.\n\nBesides, I think the work load required to modify the YAML file and to implement new stevedore extensions are par with to modify the mapping in python code and to add new functions.","commit_id":"0ab3b527c6d22697d276854975c4be6cdf9228e7"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"d616ec1d5867e5e7be6ba1ad37339bd76973bbc6","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"Here we define a mapping dict like the following::"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    MAPPING \u003d {"},{"line_number":72,"context_line":"      identifier: {"},{"line_number":73,"context_line":"        \u0027matching_type\u0027: EXACT or PREFIX,"},{"line_number":74,"context_line":"        \u0027value_oid\u0027: oid of the sample value,"}],"source_content_type":"text/x-rst","patch_set":5,"id":"baada198_cbc32e36","line":71,"in_reply_to":"baada198_dac21a52","updated":"2014-07-07 05:15:06.000000000","message":"OK.","commit_id":"0ab3b527c6d22697d276854975c4be6cdf9228e7"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"9aa62c2eea550cc644601c43852a8db87c425499","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    MAPPING \u003d {"},{"line_number":72,"context_line":"      identifier: {"},{"line_number":73,"context_line":"        \u0027matching_type\u0027: EXACT or PREFIX,"},{"line_number":74,"context_line":"        \u0027value_oid\u0027: oid of the sample value,"},{"line_number":75,"context_line":"        \u0027metadata\u0027: {"},{"line_number":76,"context_line":"           metadata_name1: [oid1, value_converter],"},{"line_number":77,"context_line":"           metadata_name2: [oid2, value_converter],"}],"source_content_type":"text/x-rst","patch_set":5,"id":"baada198_ea77139e","line":74,"updated":"2014-07-06 18:55:46.000000000","message":"Would metric_oid be clearer than value_oid, and closer to the normal SNMP terminology?","commit_id":"0ab3b527c6d22697d276854975c4be6cdf9228e7"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"451858024a35993ca88aeccad8c1da953db7c59c","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    MAPPING \u003d {"},{"line_number":72,"context_line":"      identifier: {"},{"line_number":73,"context_line":"        \u0027matching_type\u0027: EXACT or PREFIX,"},{"line_number":74,"context_line":"        \u0027value_oid\u0027: oid of the sample value,"},{"line_number":75,"context_line":"        \u0027metadata\u0027: {"},{"line_number":76,"context_line":"           metadata_name1: [oid1, value_converter],"},{"line_number":77,"context_line":"           metadata_name2: [oid2, value_converter],"}],"source_content_type":"text/x-rst","patch_set":5,"id":"baada198_3a41560b","line":74,"in_reply_to":"baada198_ea77139e","updated":"2014-07-07 02:12:16.000000000","message":"Done","commit_id":"0ab3b527c6d22697d276854975c4be6cdf9228e7"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"9aa62c2eea550cc644601c43852a8db87c425499","unresolved":false,"context_lines":[{"line_number":76,"context_line":"           metadata_name1: [oid1, value_converter],"},{"line_number":77,"context_line":"           metadata_name2: [oid2, value_converter],"},{"line_number":78,"context_line":"        },"},{"line_number":79,"context_line":"        \u0027post_op\u0027: special func to modify the return data,"},{"line_number":80,"context_line":"      },"},{"line_number":81,"context_line":"    }"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"baada198_4a71dfa6","line":79,"updated":"2014-07-06 18:55:46.000000000","message":"Rather than a function, would a stevedore extension be closer to the normal plugability model used by ceilometer?","commit_id":"0ab3b527c6d22697d276854975c4be6cdf9228e7"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"451858024a35993ca88aeccad8c1da953db7c59c","unresolved":false,"context_lines":[{"line_number":76,"context_line":"           metadata_name1: [oid1, value_converter],"},{"line_number":77,"context_line":"           metadata_name2: [oid2, value_converter],"},{"line_number":78,"context_line":"        },"},{"line_number":79,"context_line":"        \u0027post_op\u0027: special func to modify the return data,"},{"line_number":80,"context_line":"      },"},{"line_number":81,"context_line":"    }"},{"line_number":82,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"baada198_fa927e4a","line":79,"in_reply_to":"baada198_4a71dfa6","updated":"2014-07-07 02:12:16.000000000","message":"I agree that if the mapping is defined in YAML, it should be stevedore extensions and vice versa.\n\nBut i\u0027m not very comfortable with stevedore extension because the I don\u0027t think the post_op could be generic enough to be a stevedore extension plugin to be used by several meters. This the reason I choose python code to define the mapping instead of YAML/stevedore.","commit_id":"0ab3b527c6d22697d276854975c4be6cdf9228e7"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"9aa62c2eea550cc644601c43852a8db87c425499","unresolved":false,"context_lines":[{"line_number":101,"context_line":"       oid:value key-value pairs in the cache. The metadata is constructed"},{"line_number":102,"context_line":"       as a dictionary like:"},{"line_number":103,"context_line":"       {"},{"line_number":104,"context_line":"         metadata_name1: value_converter(select_data(cache, oid1, index)),"},{"line_number":105,"context_line":"         metadata_name2: value_converter(select_data(cache, oid2, index)),"},{"line_number":106,"context_line":"       }"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"baada198_ca5c0f1c","line":104,"updated":"2014-07-06 18:55:46.000000000","message":"Is it envisaged that these value_converter functions are going to be very generic (e.g. str-\u003eint or int-\u003efloat), or fairly specific to each metric or small group of metrics?","commit_id":"0ab3b527c6d22697d276854975c4be6cdf9228e7"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"451858024a35993ca88aeccad8c1da953db7c59c","unresolved":false,"context_lines":[{"line_number":101,"context_line":"       oid:value key-value pairs in the cache. The metadata is constructed"},{"line_number":102,"context_line":"       as a dictionary like:"},{"line_number":103,"context_line":"       {"},{"line_number":104,"context_line":"         metadata_name1: value_converter(select_data(cache, oid1, index)),"},{"line_number":105,"context_line":"         metadata_name2: value_converter(select_data(cache, oid2, index)),"},{"line_number":106,"context_line":"       }"},{"line_number":107,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"baada198_7afcaeb8","line":104,"in_reply_to":"baada198_ca5c0f1c","updated":"2014-07-07 02:12:16.000000000","message":"generic functions like str(), int(), float(), etc.","commit_id":"0ab3b527c6d22697d276854975c4be6cdf9228e7"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"9aa62c2eea550cc644601c43852a8db87c425499","unresolved":false,"context_lines":[{"line_number":132,"context_line":"           \u0027device\u0027: [\"1.3.6.1.4.1.2021.9.1.3\", str],"},{"line_number":133,"context_line":"           \u0027path\u0027: [\"1.3.6.1.4.1.2021.9.1.2\", str],"},{"line_number":134,"context_line":"        },"},{"line_number":135,"context_line":"        \u0027post_op\u0027: None,"},{"line_number":136,"context_line":"      },"},{"line_number":137,"context_line":"    And in the cache, we have something like the following:"},{"line_number":138,"context_line":"    {"}],"source_content_type":"text/x-rst","patch_set":5,"id":"baada198_6ab2234d","line":135,"updated":"2014-07-06 18:55:46.000000000","message":"We could probably just let the post_op default to None if not present, or?","commit_id":"0ab3b527c6d22697d276854975c4be6cdf9228e7"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"451858024a35993ca88aeccad8c1da953db7c59c","unresolved":false,"context_lines":[{"line_number":132,"context_line":"           \u0027device\u0027: [\"1.3.6.1.4.1.2021.9.1.3\", str],"},{"line_number":133,"context_line":"           \u0027path\u0027: [\"1.3.6.1.4.1.2021.9.1.2\", str],"},{"line_number":134,"context_line":"        },"},{"line_number":135,"context_line":"        \u0027post_op\u0027: None,"},{"line_number":136,"context_line":"      },"},{"line_number":137,"context_line":"    And in the cache, we have something like the following:"},{"line_number":138,"context_line":"    {"}],"source_content_type":"text/x-rst","patch_set":5,"id":"baada198_ba6ba683","line":135,"in_reply_to":"baada198_6ab2234d","updated":"2014-07-07 02:12:16.000000000","message":"yes, \u0027post_op\u0027 is default None. I put None here just for clarity.","commit_id":"0ab3b527c6d22697d276854975c4be6cdf9228e7"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"9aa62c2eea550cc644601c43852a8db87c425499","unresolved":false,"context_lines":[{"line_number":240,"context_line":"Dependencies"},{"line_number":241,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"* https://review.openstack.org/#/c/92370"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":5,"id":"baada198_4aa8ffda","line":243,"updated":"2014-07-06 18:55:46.000000000","message":"Which pieces of Ladislav\u0027s tripleO discovery patch are a dependency of this work?","commit_id":"0ab3b527c6d22697d276854975c4be6cdf9228e7"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"d616ec1d5867e5e7be6ba1ad37339bd76973bbc6","unresolved":false,"context_lines":[{"line_number":240,"context_line":"Dependencies"},{"line_number":241,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"* https://review.openstack.org/#/c/92370"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":5,"id":"baada198_abc8ba55","line":243,"in_reply_to":"baada198_3a26b668","updated":"2014-07-07 05:15:06.000000000","message":"In that case, it might make sense to split that logic out into a separate patch, as lsmola is out of the office for the next 3 weeks due to vacation first and then EuroPython.","commit_id":"0ab3b527c6d22697d276854975c4be6cdf9228e7"},{"author":{"_account_id":4491,"name":"Lianhao Lu","email":"llh_misc@outlook.com","username":"lianhao-lu"},"change_message_id":"451858024a35993ca88aeccad8c1da953db7c59c","unresolved":false,"context_lines":[{"line_number":240,"context_line":"Dependencies"},{"line_number":241,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"* https://review.openstack.org/#/c/92370"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"Testing"}],"source_content_type":"text/x-rst","patch_set":5,"id":"baada198_3a26b668","line":243,"in_reply_to":"baada198_4aa8ffda","updated":"2014-07-07 02:12:16.000000000","message":"It depends on its change of the snmp inspector to support new authentication method of snmp 2c and above.","commit_id":"0ab3b527c6d22697d276854975c4be6cdf9228e7"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"0141e537fd8e48afa7e9ad943625cc12a482e30b","unresolved":false,"context_lines":[{"line_number":28,"context_line":""},{"line_number":29,"context_line":"2. Add new returned data type definition of the above new inspect method."},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"3. Implement the new inspect method in snmp inspetor."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"4. Add new hardware pollsters and register it in setup.cfg."},{"line_number":34,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"baada198_2470343f","line":31,"updated":"2014-07-08 01:24:36.000000000","message":"typo: inspetor-\u003e inspector","commit_id":"fe61b70bab8ea8d79c8bf80d34d941b2f80cbea9"},{"author":{"_account_id":8290,"name":"liusheng","email":"liusheng2048@gmail.com","username":"LiuSheng"},"change_message_id":"0141e537fd8e48afa7e9ad943625cc12a482e30b","unresolved":false,"context_lines":[{"line_number":189,"context_line":"-------------------------------"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"The existing model is to use GetNextRequest first to get the index and then"},{"line_number":192,"context_line":"use that index to GetRequest mutiple OIDs. We replace it with GetBulkRequest."},{"line_number":193,"context_line":"This could significantly reduce the snmp packet number exchanged between the"},{"line_number":194,"context_line":"snmp inspector and snmpd agent. Thus we could improve the performance."},{"line_number":195,"context_line":""}],"source_content_type":"text/x-rst","patch_set":6,"id":"baada198_a49b6464","line":192,"updated":"2014-07-08 01:24:36.000000000","message":"typo:mutiple-\u003emultiple","commit_id":"fe61b70bab8ea8d79c8bf80d34d941b2f80cbea9"}]}
