)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"69034697e970de6050955d7b7599b250df28ef6d","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Change-Id: Ic8a4fc37a42377c4ec50ffae421b3f47922ef982"},{"line_number":27,"context_line":"Story: 1710850"},{"line_number":28,"context_line":"Closes-Bug: #1710850"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"9f6a8fd7_0f59948c","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":20},"updated":"2018-04-23 06:47:25.000000000","message":"This is not required as you have added \u0027Story\u0027","commit_id":"589dda2d139f25014fa9f0a1bec1c2e440b615a2"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"4dfb901c5a2c3cc06671467b32e7ef08726122e9","unresolved":false,"context_lines":[{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Change-Id: Ic8a4fc37a42377c4ec50ffae421b3f47922ef982"},{"line_number":27,"context_line":"Story: 1710850"},{"line_number":28,"context_line":"Closes-Bug: #1710850"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"9f6a8fd7_3624edae","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":20},"in_reply_to":"9f6a8fd7_0f59948c","updated":"2018-04-23 12:59:56.000000000","message":"Done","commit_id":"589dda2d139f25014fa9f0a1bec1c2e440b615a2"}],"doc/source/admin/drivers/snmp.rst":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"4fb01b671659367886d91ca7fdeff6fa7a99e0d2","unresolved":false,"context_lines":[{"line_number":130,"context_line":"  (USM) user name. Synonym for now obsolete ``snmp_security`` parameter."},{"line_number":131,"context_line":"- ``snmp_auth_protocol``: SNMPv3 message authentication protocol ID."},{"line_number":132,"context_line":"  Known values include: ``none``, ``md5``, ``sha`` and possibly others"},{"line_number":133,"context_line":"  depending on the pysnmp package version being used. Default is ``none``."},{"line_number":134,"context_line":"- ``snmp_auth_key``: SNMPv3 message authentication key. Must be 8+"},{"line_number":135,"context_line":"  characters long. Required when message authentication is used."},{"line_number":136,"context_line":"- ``snmp_priv_protocol``: SNMPv3 message privacy (encryption) protocol ID."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa0c359_2f1f5f5b","line":133,"range":{"start_line":133,"start_character":2,"end_line":133,"end_character":52},"updated":"2018-02-27 05:12:50.000000000","message":"It would be useful to add the table or link indicating  pysnmp package versions that support respective auth protocols.","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"fd867901308734ef0d07618dde4137a98afdeed3","unresolved":false,"context_lines":[{"line_number":130,"context_line":"  (USM) user name. Synonym for now obsolete ``snmp_security`` parameter."},{"line_number":131,"context_line":"- ``snmp_auth_protocol``: SNMPv3 message authentication protocol ID."},{"line_number":132,"context_line":"  Known values include: ``none``, ``md5``, ``sha`` and possibly others"},{"line_number":133,"context_line":"  depending on the pysnmp package version being used. Default is ``none``."},{"line_number":134,"context_line":"- ``snmp_auth_key``: SNMPv3 message authentication key. Must be 8+"},{"line_number":135,"context_line":"  characters long. Required when message authentication is used."},{"line_number":136,"context_line":"- ``snmp_priv_protocol``: SNMPv3 message privacy (encryption) protocol ID."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1f9dbf25_8e19be89","line":133,"range":{"start_line":133,"start_character":2,"end_line":133,"end_character":52},"in_reply_to":"3fa0c359_2f1f5f5b","updated":"2018-02-28 09:26:27.000000000","message":"Done","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"4fb01b671659367886d91ca7fdeff6fa7a99e0d2","unresolved":false,"context_lines":[{"line_number":135,"context_line":"  characters long. Required when message authentication is used."},{"line_number":136,"context_line":"- ``snmp_priv_protocol``: SNMPv3 message privacy (encryption) protocol ID."},{"line_number":137,"context_line":"  Known values include: ``none``, ``des``, ``3des``, ``aes``, ``aes192``,"},{"line_number":138,"context_line":"  ``aes256`` and possibly others depending on the pysnmp package version"},{"line_number":139,"context_line":"  being used. Note that message privacy requires using message"},{"line_number":140,"context_line":"  authentication. Default is ``none``."},{"line_number":141,"context_line":"- ``snmp_priv_key``:  SNMPv3 message privacy (encryption) key. Must be 8+"},{"line_number":142,"context_line":"  characters long. Required when message encryption is used."}],"source_content_type":"text/x-rst","patch_set":2,"id":"3fa0c359_efaf37e0","line":139,"range":{"start_line":138,"start_character":13,"end_line":139,"end_character":14},"updated":"2018-02-27 05:12:50.000000000","message":"ditto.","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"fd867901308734ef0d07618dde4137a98afdeed3","unresolved":false,"context_lines":[{"line_number":135,"context_line":"  characters long. Required when message authentication is used."},{"line_number":136,"context_line":"- ``snmp_priv_protocol``: SNMPv3 message privacy (encryption) protocol ID."},{"line_number":137,"context_line":"  Known values include: ``none``, ``des``, ``3des``, ``aes``, ``aes192``,"},{"line_number":138,"context_line":"  ``aes256`` and possibly others depending on the pysnmp package version"},{"line_number":139,"context_line":"  being used. Note that message privacy requires using message"},{"line_number":140,"context_line":"  authentication. Default is ``none``."},{"line_number":141,"context_line":"- ``snmp_priv_key``:  SNMPv3 message privacy (encryption) key. Must be 8+"},{"line_number":142,"context_line":"  characters long. Required when message encryption is used."}],"source_content_type":"text/x-rst","patch_set":2,"id":"1f9dbf25_ae1efa6d","line":139,"range":{"start_line":138,"start_character":13,"end_line":139,"end_character":14},"in_reply_to":"3fa0c359_efaf37e0","updated":"2018-02-28 09:26:27.000000000","message":"Done","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6802ef70d172183898a84749a472cff494803ec0","unresolved":false,"context_lines":[{"line_number":131,"context_line":"- ``snmp_auth_protocol``: SNMPv3 message authentication protocol ID."},{"line_number":132,"context_line":"  Valid values include: ``none``, ``md5``, ``sha`` for all pysnmp versions"},{"line_number":133,"context_line":"  and additionally ``sha224``, ``sha256``, ``sha384``, ``sha512`` for"},{"line_number":134,"context_line":"  pysnmp versions 4.4.1 and later. Default is ``none``."},{"line_number":135,"context_line":"- ``snmp_auth_key``: SNMPv3 message authentication key. Must be 8+"},{"line_number":136,"context_line":"  characters long. Required when message authentication is used."},{"line_number":137,"context_line":"- ``snmp_priv_protocol``: SNMPv3 message privacy (encryption) protocol ID."}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_a455741f","line":134,"range":{"start_line":134,"start_character":35,"end_line":134,"end_character":55},"updated":"2018-04-19 06:37:39.000000000","message":"In the code [1] there are two defaults based on conditions. viz.  \u0027None\u0027 and \u0027md5\u0027.\n[1] https://review.openstack.org/#/c/547999/8/ironic/drivers/modules/snmp.py@141","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1cc794c5e5a10119a69d2f36f7690d139ba78654","unresolved":false,"context_lines":[{"line_number":131,"context_line":"- ``snmp_auth_protocol``: SNMPv3 message authentication protocol ID."},{"line_number":132,"context_line":"  Valid values include: ``none``, ``md5``, ``sha`` for all pysnmp versions"},{"line_number":133,"context_line":"  and additionally ``sha224``, ``sha256``, ``sha384``, ``sha512`` for"},{"line_number":134,"context_line":"  pysnmp versions 4.4.1 and later. Default is ``none``."},{"line_number":135,"context_line":"- ``snmp_auth_key``: SNMPv3 message authentication key. Must be 8+"},{"line_number":136,"context_line":"  characters long. Required when message authentication is used."},{"line_number":137,"context_line":"- ``snmp_priv_protocol``: SNMPv3 message privacy (encryption) protocol ID."}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_537d33e5","line":134,"range":{"start_line":134,"start_character":35,"end_line":134,"end_character":55},"in_reply_to":"9f6a8fd7_a455741f","updated":"2018-04-19 14:11:52.000000000","message":"Great catch! Forgot to update the doc. Fixed.","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6802ef70d172183898a84749a472cff494803ec0","unresolved":false,"context_lines":[{"line_number":137,"context_line":"- ``snmp_priv_protocol``: SNMPv3 message privacy (encryption) protocol ID."},{"line_number":138,"context_line":"  Valid values include: ``none``, ``des``, ``3des``, ``aes``, ``aes192``,"},{"line_number":139,"context_line":"  ``aes256`` for all pysnmp version and additionally ``aes192blmt``,"},{"line_number":140,"context_line":"  ``aes256blmt` for pysnmp versions 4.4.3+. Note that message privacy"},{"line_number":141,"context_line":"  requires using message authentication. Default is ``none``."},{"line_number":142,"context_line":"- ``snmp_priv_key``:  SNMPv3 message privacy (encryption) key. Must be 8+"},{"line_number":143,"context_line":"  characters long. Required when message encryption is used."}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_844950d1","line":140,"range":{"start_line":140,"start_character":14,"end_line":140,"end_character":15},"updated":"2018-04-19 06:37:39.000000000","message":"s/ ` / `` /","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1cc794c5e5a10119a69d2f36f7690d139ba78654","unresolved":false,"context_lines":[{"line_number":137,"context_line":"- ``snmp_priv_protocol``: SNMPv3 message privacy (encryption) protocol ID."},{"line_number":138,"context_line":"  Valid values include: ``none``, ``des``, ``3des``, ``aes``, ``aes192``,"},{"line_number":139,"context_line":"  ``aes256`` for all pysnmp version and additionally ``aes192blmt``,"},{"line_number":140,"context_line":"  ``aes256blmt` for pysnmp versions 4.4.3+. Note that message privacy"},{"line_number":141,"context_line":"  requires using message authentication. Default is ``none``."},{"line_number":142,"context_line":"- ``snmp_priv_key``:  SNMPv3 message privacy (encryption) key. Must be 8+"},{"line_number":143,"context_line":"  characters long. Required when message encryption is used."}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_1387bbd9","line":140,"range":{"start_line":140,"start_character":14,"end_line":140,"end_character":15},"in_reply_to":"9f6a8fd7_844950d1","updated":"2018-04-19 14:11:52.000000000","message":"Done","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6802ef70d172183898a84749a472cff494803ec0","unresolved":false,"context_lines":[{"line_number":138,"context_line":"  Valid values include: ``none``, ``des``, ``3des``, ``aes``, ``aes192``,"},{"line_number":139,"context_line":"  ``aes256`` for all pysnmp version and additionally ``aes192blmt``,"},{"line_number":140,"context_line":"  ``aes256blmt` for pysnmp versions 4.4.3+. Note that message privacy"},{"line_number":141,"context_line":"  requires using message authentication. Default is ``none``."},{"line_number":142,"context_line":"- ``snmp_priv_key``:  SNMPv3 message privacy (encryption) key. Must be 8+"},{"line_number":143,"context_line":"  characters long. Required when message encryption is used."},{"line_number":144,"context_line":"- ``snmp_context_engine_id``: SNMPv3 context engine ID. Default is"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_2f0dbd36","line":141,"range":{"start_line":141,"start_character":40,"end_line":141,"end_character":61},"updated":"2018-04-19 06:37:39.000000000","message":"In the code [1] there are two defaults based on conditions. viz.  \u0027None\u0027 and \u0027md5\u0027.\n[1] https://review.openstack.org/#/c/547999/8/ironic/drivers/modules/snmp.py@153","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1cc794c5e5a10119a69d2f36f7690d139ba78654","unresolved":false,"context_lines":[{"line_number":138,"context_line":"  Valid values include: ``none``, ``des``, ``3des``, ``aes``, ``aes192``,"},{"line_number":139,"context_line":"  ``aes256`` for all pysnmp version and additionally ``aes192blmt``,"},{"line_number":140,"context_line":"  ``aes256blmt` for pysnmp versions 4.4.3+. Note that message privacy"},{"line_number":141,"context_line":"  requires using message authentication. Default is ``none``."},{"line_number":142,"context_line":"- ``snmp_priv_key``:  SNMPv3 message privacy (encryption) key. Must be 8+"},{"line_number":143,"context_line":"  characters long. Required when message encryption is used."},{"line_number":144,"context_line":"- ``snmp_context_engine_id``: SNMPv3 context engine ID. Default is"}],"source_content_type":"text/x-rst","patch_set":8,"id":"9f6a8fd7_d3d623c4","line":141,"range":{"start_line":141,"start_character":40,"end_line":141,"end_character":61},"in_reply_to":"9f6a8fd7_2f0dbd36","updated":"2018-04-19 14:11:52.000000000","message":"Done","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"}],"ironic/drivers/modules/snmp.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"4fb01b671659367886d91ca7fdeff6fa7a99e0d2","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        % {\"v1\": SNMP_V1, \"v2c\": SNMP_V2C},"},{"line_number":99,"context_line":"    # synonym for `snmp_user`"},{"line_number":100,"context_line":"    \u0027snmp_security\u0027:"},{"line_number":101,"context_line":"        _(\"SNMPv3 User-based Security Model (USM) username. \""},{"line_number":102,"context_line":"          \"Required for version %(v3)s\")"},{"line_number":103,"context_line":"        % {\"v3\": SNMP_V3},"},{"line_number":104,"context_line":"    \u0027snmp_user\u0027:"},{"line_number":105,"context_line":"        _(\"SNMPv3 User-based Security Model (USM) username. \""}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_c6133d5b","line":102,"range":{"start_line":101,"start_character":10,"end_line":102,"end_character":38},"updated":"2018-02-27 05:12:50.000000000","message":"We need to mention here that snmp_security is being marked for obsolescence and one should use \u0027snmp_user\u0027 instead.","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"fd867901308734ef0d07618dde4137a98afdeed3","unresolved":false,"context_lines":[{"line_number":98,"context_line":"        % {\"v1\": SNMP_V1, \"v2c\": SNMP_V2C},"},{"line_number":99,"context_line":"    # synonym for `snmp_user`"},{"line_number":100,"context_line":"    \u0027snmp_security\u0027:"},{"line_number":101,"context_line":"        _(\"SNMPv3 User-based Security Model (USM) username. \""},{"line_number":102,"context_line":"          \"Required for version %(v3)s\")"},{"line_number":103,"context_line":"        % {\"v3\": SNMP_V3},"},{"line_number":104,"context_line":"    \u0027snmp_user\u0027:"},{"line_number":105,"context_line":"        _(\"SNMPv3 User-based Security Model (USM) username. \""}],"source_content_type":"text/x-python","patch_set":2,"id":"1f9dbf25_6e18f280","line":102,"range":{"start_line":101,"start_character":10,"end_line":102,"end_character":38},"in_reply_to":"3fa0c359_c6133d5b","updated":"2018-02-28 09:26:27.000000000","message":"Done","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"4fb01b671659367886d91ca7fdeff6fa7a99e0d2","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        _(\"SNMPv3 message authentication key. \""},{"line_number":125,"context_line":"          \"Must be 8+ characters long \""},{"line_number":126,"context_line":"          \"Required when message authentication is used\"),"},{"line_number":127,"context_line":"    \u0027snmp_context_name\u0027:"},{"line_number":128,"context_line":"        _(\"SNMPv3 context name. \""},{"line_number":129,"context_line":"          \"Default is an empty string (\u0027\u0027).\"),"},{"line_number":130,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_0625a55b","line":127,"range":{"start_line":127,"start_character":4,"end_line":127,"end_character":23},"updated":"2018-02-27 05:12:50.000000000","message":"Just curious, don\u0027t we also need to add support for \u0027contextEngineID\u0027?","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"fd867901308734ef0d07618dde4137a98afdeed3","unresolved":false,"context_lines":[{"line_number":124,"context_line":"        _(\"SNMPv3 message authentication key. \""},{"line_number":125,"context_line":"          \"Must be 8+ characters long \""},{"line_number":126,"context_line":"          \"Required when message authentication is used\"),"},{"line_number":127,"context_line":"    \u0027snmp_context_name\u0027:"},{"line_number":128,"context_line":"        _(\"SNMPv3 context name. \""},{"line_number":129,"context_line":"          \"Default is an empty string (\u0027\u0027).\"),"},{"line_number":130,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f9dbf25_53527a69","line":127,"range":{"start_line":127,"start_character":4,"end_line":127,"end_character":23},"in_reply_to":"3fa0c359_0625a55b","updated":"2018-02-28 09:26:27.000000000","message":"Good point! Done.","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"4fb01b671659367886d91ca7fdeff6fa7a99e0d2","unresolved":false,"context_lines":[{"line_number":661,"context_line":"def _parse_driver_info_snmpv3(info):"},{"line_number":662,"context_line":"    snmp_info \u003d {}"},{"line_number":663,"context_line":""},{"line_number":664,"context_line":"    if \u0027snmp_user\u0027 not in info and \u0027snmp_security\u0027 not in info:"},{"line_number":665,"context_line":"        raise exception.MissingParameterValue(_("},{"line_number":666,"context_line":"            \"SNMP driver requires snmp_user to be set for version %s.\")"},{"line_number":667,"context_line":"            % (SNMP_V3))"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_66882970","line":664,"range":{"start_line":664,"start_character":36,"end_line":664,"end_character":50},"updated":"2018-02-27 05:12:50.000000000","message":"Also if \u0027snmp_security\u0027 is being used, we should provide a warning message informing about its plan of obsolescence.","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"fd867901308734ef0d07618dde4137a98afdeed3","unresolved":false,"context_lines":[{"line_number":661,"context_line":"def _parse_driver_info_snmpv3(info):"},{"line_number":662,"context_line":"    snmp_info \u003d {}"},{"line_number":663,"context_line":""},{"line_number":664,"context_line":"    if \u0027snmp_user\u0027 not in info and \u0027snmp_security\u0027 not in info:"},{"line_number":665,"context_line":"        raise exception.MissingParameterValue(_("},{"line_number":666,"context_line":"            \"SNMP driver requires snmp_user to be set for version %s.\")"},{"line_number":667,"context_line":"            % (SNMP_V3))"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f9dbf25_7621a49f","line":664,"range":{"start_line":664,"start_character":36,"end_line":664,"end_character":50},"in_reply_to":"3fa0c359_66882970","updated":"2018-02-28 09:26:27.000000000","message":"Done","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"4fb01b671659367886d91ca7fdeff6fa7a99e0d2","unresolved":false,"context_lines":[{"line_number":668,"context_line":"    snmp_info[\u0027user\u0027] \u003d info.get(\u0027snmp_user\u0027, info.get(\u0027snmp_security\u0027))"},{"line_number":669,"context_line":"    if \u0027snmp_auth_protocol\u0027 in info:"},{"line_number":670,"context_line":"        auth_p \u003d info[\u0027snmp_auth_protocol\u0027]"},{"line_number":671,"context_line":"        try:"},{"line_number":672,"context_line":"            snmp_info[\u0027auth_protocol\u0027] \u003d snmp_auth_protocols[auth_p]"},{"line_number":673,"context_line":""},{"line_number":674,"context_line":"        except KeyError:"},{"line_number":675,"context_line":"            raise exception.InvalidParameterValue(_("},{"line_number":676,"context_line":"                \"SNMPPowerDriver: bad SNMPv3 authentication protocol: %s\")"},{"line_number":677,"context_line":"                % auth_p)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_e60e7930","line":674,"range":{"start_line":671,"start_character":8,"end_line":674,"end_character":24},"updated":"2018-02-27 05:12:50.000000000","message":"May be we could:-\nif auth_p not in snmp_auth_protocols:\n    raise exception.InvalidParameterValue(_(...))","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"fd867901308734ef0d07618dde4137a98afdeed3","unresolved":false,"context_lines":[{"line_number":668,"context_line":"    snmp_info[\u0027user\u0027] \u003d info.get(\u0027snmp_user\u0027, info.get(\u0027snmp_security\u0027))"},{"line_number":669,"context_line":"    if \u0027snmp_auth_protocol\u0027 in info:"},{"line_number":670,"context_line":"        auth_p \u003d info[\u0027snmp_auth_protocol\u0027]"},{"line_number":671,"context_line":"        try:"},{"line_number":672,"context_line":"            snmp_info[\u0027auth_protocol\u0027] \u003d snmp_auth_protocols[auth_p]"},{"line_number":673,"context_line":""},{"line_number":674,"context_line":"        except KeyError:"},{"line_number":675,"context_line":"            raise exception.InvalidParameterValue(_("},{"line_number":676,"context_line":"                \"SNMPPowerDriver: bad SNMPv3 authentication protocol: %s\")"},{"line_number":677,"context_line":"                % auth_p)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f9dbf25_d69f58b2","line":674,"range":{"start_line":671,"start_character":8,"end_line":674,"end_character":24},"in_reply_to":"3fa0c359_e60e7930","updated":"2018-02-28 09:26:27.000000000","message":"It is indeed a way to go, but what is your rationale for that given the \"ask forgiveness not permission\" motto? ;-)","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"4fb01b671659367886d91ca7fdeff6fa7a99e0d2","unresolved":false,"context_lines":[{"line_number":677,"context_line":"                % auth_p)"},{"line_number":678,"context_line":"    if \u0027snmp_priv_protocol\u0027 in info:"},{"line_number":679,"context_line":"        priv_p \u003d info[\u0027snmp_priv_protocol\u0027]"},{"line_number":680,"context_line":"        try:"},{"line_number":681,"context_line":"            snmp_info[\u0027priv_protocol\u0027] \u003d snmp_priv_protocols[priv_p]"},{"line_number":682,"context_line":""},{"line_number":683,"context_line":"        except KeyError:"},{"line_number":684,"context_line":"            raise exception.InvalidParameterValue(_("},{"line_number":685,"context_line":"                \"SNMPPowerDriver: bad SNMPv3 privacy protocol: %s\")"},{"line_number":686,"context_line":"                % priv_p)"},{"line_number":687,"context_line":""},{"line_number":688,"context_line":"    if \u0027snmp_auth_key\u0027 in info:"},{"line_number":689,"context_line":"        auth_k \u003d info[\u0027snmp_auth_key\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_8f8eb32b","line":686,"range":{"start_line":680,"start_character":8,"end_line":686,"end_character":25},"updated":"2018-02-27 05:12:50.000000000","message":"Ditto","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"fd867901308734ef0d07618dde4137a98afdeed3","unresolved":false,"context_lines":[{"line_number":677,"context_line":"                % auth_p)"},{"line_number":678,"context_line":"    if \u0027snmp_priv_protocol\u0027 in info:"},{"line_number":679,"context_line":"        priv_p \u003d info[\u0027snmp_priv_protocol\u0027]"},{"line_number":680,"context_line":"        try:"},{"line_number":681,"context_line":"            snmp_info[\u0027priv_protocol\u0027] \u003d snmp_priv_protocols[priv_p]"},{"line_number":682,"context_line":""},{"line_number":683,"context_line":"        except KeyError:"},{"line_number":684,"context_line":"            raise exception.InvalidParameterValue(_("},{"line_number":685,"context_line":"                \"SNMPPowerDriver: bad SNMPv3 privacy protocol: %s\")"},{"line_number":686,"context_line":"                % priv_p)"},{"line_number":687,"context_line":""},{"line_number":688,"context_line":"    if \u0027snmp_auth_key\u0027 in info:"},{"line_number":689,"context_line":"        auth_k \u003d info[\u0027snmp_auth_key\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f9dbf25_d688b872","line":686,"range":{"start_line":680,"start_character":8,"end_line":686,"end_character":25},"in_reply_to":"3fa0c359_8f8eb32b","updated":"2018-02-28 09:26:27.000000000","message":"Let\u0027s resolve this at the first occurrence above.","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"4fb01b671659367886d91ca7fdeff6fa7a99e0d2","unresolved":false,"context_lines":[{"line_number":694,"context_line":""},{"line_number":695,"context_line":"        snmp_info[\u0027auth_key\u0027] \u003d auth_k"},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"        if \u0027auth_protocol\u0027 not in snmp_info:"},{"line_number":698,"context_line":"            snmp_info[\u0027auth_protocol\u0027] \u003d snmp_auth_protocols[\u0027md5\u0027]"},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"    if \u0027snmp_priv_key\u0027 in info:"},{"line_number":701,"context_line":"        priv_k \u003d info[\u0027snmp_priv_key\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa0c359_afa92f7c","line":698,"range":{"start_line":697,"start_character":8,"end_line":698,"end_character":67},"updated":"2018-02-27 05:12:50.000000000","message":"Why are we defaulting to \u0027md5\u0027 when default auth_protocol is \u0027none\u0027? Would it be better to throw an MissingParameterValue exception?","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"fd867901308734ef0d07618dde4137a98afdeed3","unresolved":false,"context_lines":[{"line_number":694,"context_line":""},{"line_number":695,"context_line":"        snmp_info[\u0027auth_key\u0027] \u003d auth_k"},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"        if \u0027auth_protocol\u0027 not in snmp_info:"},{"line_number":698,"context_line":"            snmp_info[\u0027auth_protocol\u0027] \u003d snmp_auth_protocols[\u0027md5\u0027]"},{"line_number":699,"context_line":""},{"line_number":700,"context_line":"    if \u0027snmp_priv_key\u0027 in info:"},{"line_number":701,"context_line":"        priv_k \u003d info[\u0027snmp_priv_key\u0027]"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f9dbf25_36f8fcc2","line":698,"range":{"start_line":697,"start_character":8,"end_line":698,"end_character":67},"in_reply_to":"3fa0c359_afa92f7c","updated":"2018-02-28 09:26:27.000000000","message":"Default `auth_protocol` is `none` *unless* user gives us the authentication (or privacy) key. In that case it\u0027s cleat that they want some `auth/priv_protocol` other than `none`.\n\nThe most classical ones are `md5` and `des` so we are defaulting to them in hope that SNMP agent is configured accordingly. If not, user will have to configure `auth/priv_protocol` explicitly.\n\nDoes it make sense?","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f552e836b362f2e285adfdcb2baede0d6ede0a10","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        _(\"SNMPv3 User-based Security Model (USM) username. \""},{"line_number":130,"context_line":"          \"Required for version %(v3)s.\""},{"line_number":131,"context_line":"          \"Note: this property is obsolete by `snmp_user`.\")"},{"line_number":132,"context_line":"        % {\"v3\": SNMP_V3},"},{"line_number":133,"context_line":"    \u0027snmp_user\u0027:"},{"line_number":134,"context_line":"        _(\"SNMPv3 User-based Security Model (USM) username. \""},{"line_number":135,"context_line":"          \"Required for version %(v3)s\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_7e9e17b9","line":132,"updated":"2018-03-10 08:11:19.000000000","message":"side note: it\u0027s really weird to have a separate constant for number \"3\"..","commit_id":"939568b4beb15137bde7bd721932c38bbca5ebea"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"34997149171861db6ba4646340ba98bacd05b0aa","unresolved":false,"context_lines":[{"line_number":129,"context_line":"        _(\"SNMPv3 User-based Security Model (USM) username. \""},{"line_number":130,"context_line":"          \"Required for version %(v3)s.\""},{"line_number":131,"context_line":"          \"Note: this property is obsolete by `snmp_user`.\")"},{"line_number":132,"context_line":"        % {\"v3\": SNMP_V3},"},{"line_number":133,"context_line":"    \u0027snmp_user\u0027:"},{"line_number":134,"context_line":"        _(\"SNMPv3 User-based Security Model (USM) username. \""},{"line_number":135,"context_line":"          \"Required for version %(v3)s\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_c23caae2","line":132,"in_reply_to":"df7087c5_7e9e17b9","updated":"2018-03-15 14:52:38.000000000","message":"Pardon my C-style coding. ;-)\n\nOn the other hand, we have `v2c` as a constant as well. If we drop `3` it would be logical to drop `v2c` for uniformity. But that `v2c` has the whole lot of characters in it, is not it? ;-)","commit_id":"939568b4beb15137bde7bd721932c38bbca5ebea"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f552e836b362f2e285adfdcb2baede0d6ede0a10","unresolved":false,"context_lines":[{"line_number":137,"context_line":"    \u0027snmp_auth_protocol\u0027:"},{"line_number":138,"context_line":"        _(\"SNMPv3 message authentication protocol ID. \""},{"line_number":139,"context_line":"          \"Known values are: %(auth)s \""},{"line_number":140,"context_line":"          \"Default is \u0027none\u0027.\")"},{"line_number":141,"context_line":"        % {\u0027auth\u0027: sorted(snmp_auth_protocols)},"},{"line_number":142,"context_line":"    \u0027snmp_auth_key\u0027:"},{"line_number":143,"context_line":"        _(\"SNMPv3 message authentication key. \""}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_1ea59b04","line":140,"updated":"2018-03-10 08:11:19.000000000","message":"actually, when snmp_auth_key is set, the default is \u0027md5\u0027","commit_id":"939568b4beb15137bde7bd721932c38bbca5ebea"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"34997149171861db6ba4646340ba98bacd05b0aa","unresolved":false,"context_lines":[{"line_number":137,"context_line":"    \u0027snmp_auth_protocol\u0027:"},{"line_number":138,"context_line":"        _(\"SNMPv3 message authentication protocol ID. \""},{"line_number":139,"context_line":"          \"Known values are: %(auth)s \""},{"line_number":140,"context_line":"          \"Default is \u0027none\u0027.\")"},{"line_number":141,"context_line":"        % {\u0027auth\u0027: sorted(snmp_auth_protocols)},"},{"line_number":142,"context_line":"    \u0027snmp_auth_key\u0027:"},{"line_number":143,"context_line":"        _(\"SNMPv3 message authentication key. \""}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_65436843","line":140,"in_reply_to":"df7087c5_1ea59b04","updated":"2018-03-15 14:52:38.000000000","message":"Done","commit_id":"939568b4beb15137bde7bd721932c38bbca5ebea"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f552e836b362f2e285adfdcb2baede0d6ede0a10","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        self.version \u003d version"},{"line_number":188,"context_line":"        if self.version \u003d\u003d SNMP_V3:"},{"line_number":189,"context_line":"            self.user \u003d user"},{"line_number":190,"context_line":"            self.auth_proto \u003d snmp_auth_protocols[auth_proto or \u0027none\u0027]"},{"line_number":191,"context_line":"            self.auth_key \u003d auth_key"},{"line_number":192,"context_line":"            self.priv_proto \u003d snmp_priv_protocols[priv_proto or \u0027none\u0027]"},{"line_number":193,"context_line":"            self.priv_key \u003d priv_key"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_3ea89fd9","line":190,"updated":"2018-03-10 08:11:19.000000000","message":"should we handle KeyError here?","commit_id":"939568b4beb15137bde7bd721932c38bbca5ebea"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"34997149171861db6ba4646340ba98bacd05b0aa","unresolved":false,"context_lines":[{"line_number":187,"context_line":"        self.version \u003d version"},{"line_number":188,"context_line":"        if self.version \u003d\u003d SNMP_V3:"},{"line_number":189,"context_line":"            self.user \u003d user"},{"line_number":190,"context_line":"            self.auth_proto \u003d snmp_auth_protocols[auth_proto or \u0027none\u0027]"},{"line_number":191,"context_line":"            self.auth_key \u003d auth_key"},{"line_number":192,"context_line":"            self.priv_proto \u003d snmp_priv_protocols[priv_proto or \u0027none\u0027]"},{"line_number":193,"context_line":"            self.priv_key \u003d priv_key"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_c57fd463","line":190,"in_reply_to":"df7087c5_3ea89fd9","updated":"2018-03-15 14:52:38.000000000","message":"Done","commit_id":"939568b4beb15137bde7bd721932c38bbca5ebea"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f552e836b362f2e285adfdcb2baede0d6ede0a10","unresolved":false,"context_lines":[{"line_number":189,"context_line":"            self.user \u003d user"},{"line_number":190,"context_line":"            self.auth_proto \u003d snmp_auth_protocols[auth_proto or \u0027none\u0027]"},{"line_number":191,"context_line":"            self.auth_key \u003d auth_key"},{"line_number":192,"context_line":"            self.priv_proto \u003d snmp_priv_protocols[priv_proto or \u0027none\u0027]"},{"line_number":193,"context_line":"            self.priv_key \u003d priv_key"},{"line_number":194,"context_line":"            self.context_engine_id \u003d context_engine_id"},{"line_number":195,"context_line":"            self.context_name \u003d context_name or \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_deae43e6","line":192,"updated":"2018-03-10 08:11:19.000000000","message":"ditto?","commit_id":"939568b4beb15137bde7bd721932c38bbca5ebea"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"34997149171861db6ba4646340ba98bacd05b0aa","unresolved":false,"context_lines":[{"line_number":189,"context_line":"            self.user \u003d user"},{"line_number":190,"context_line":"            self.auth_proto \u003d snmp_auth_protocols[auth_proto or \u0027none\u0027]"},{"line_number":191,"context_line":"            self.auth_key \u003d auth_key"},{"line_number":192,"context_line":"            self.priv_proto \u003d snmp_priv_protocols[priv_proto or \u0027none\u0027]"},{"line_number":193,"context_line":"            self.priv_key \u003d priv_key"},{"line_number":194,"context_line":"            self.context_engine_id \u003d context_engine_id"},{"line_number":195,"context_line":"            self.context_name \u003d context_name or \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_659a88b9","line":192,"in_reply_to":"df7087c5_deae43e6","updated":"2018-03-15 14:52:38.000000000","message":"Done","commit_id":"939568b4beb15137bde7bd721932c38bbca5ebea"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f552e836b362f2e285adfdcb2baede0d6ede0a10","unresolved":false,"context_lines":[{"line_number":714,"context_line":"    if \u0027snmp_auth_protocol\u0027 in info:"},{"line_number":715,"context_line":"        auth_p \u003d info[\u0027snmp_auth_protocol\u0027]"},{"line_number":716,"context_line":"        try:"},{"line_number":717,"context_line":"            snmp_info[\u0027auth_protocol\u0027] \u003d snmp_auth_protocols[auth_p]"},{"line_number":718,"context_line":""},{"line_number":719,"context_line":"        except KeyError:"},{"line_number":720,"context_line":"            raise exception.InvalidParameterValue(_("}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_fea9c7dc","line":717,"updated":"2018-03-10 08:11:19.000000000","message":"maybe I\u0027m wrong, but it feels like you\u0027re doing the mapping through snmp_auth_protocols twice: first here, then again when creating an SnmpClient on line 190","commit_id":"939568b4beb15137bde7bd721932c38bbca5ebea"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"34997149171861db6ba4646340ba98bacd05b0aa","unresolved":false,"context_lines":[{"line_number":714,"context_line":"    if \u0027snmp_auth_protocol\u0027 in info:"},{"line_number":715,"context_line":"        auth_p \u003d info[\u0027snmp_auth_protocol\u0027]"},{"line_number":716,"context_line":"        try:"},{"line_number":717,"context_line":"            snmp_info[\u0027auth_protocol\u0027] \u003d snmp_auth_protocols[auth_p]"},{"line_number":718,"context_line":""},{"line_number":719,"context_line":"        except KeyError:"},{"line_number":720,"context_line":"            raise exception.InvalidParameterValue(_("}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_688c98d6","line":717,"in_reply_to":"df7087c5_fea9c7dc","updated":"2018-03-15 14:52:38.000000000","message":"Done","commit_id":"939568b4beb15137bde7bd721932c38bbca5ebea"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f552e836b362f2e285adfdcb2baede0d6ede0a10","unresolved":false,"context_lines":[{"line_number":718,"context_line":""},{"line_number":719,"context_line":"        except KeyError:"},{"line_number":720,"context_line":"            raise exception.InvalidParameterValue(_("},{"line_number":721,"context_line":"                \"SNMPPowerDriver: bad SNMPv3 authentication protocol: %s\")"},{"line_number":722,"context_line":"                % auth_p)"},{"line_number":723,"context_line":"    if \u0027snmp_priv_protocol\u0027 in info:"},{"line_number":724,"context_line":"        priv_p \u003d info[\u0027snmp_priv_protocol\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_9eb8cb2a","line":721,"updated":"2018-03-10 08:11:19.000000000","message":"let\u0027s provide acceptable values","commit_id":"939568b4beb15137bde7bd721932c38bbca5ebea"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"34997149171861db6ba4646340ba98bacd05b0aa","unresolved":false,"context_lines":[{"line_number":718,"context_line":""},{"line_number":719,"context_line":"        except KeyError:"},{"line_number":720,"context_line":"            raise exception.InvalidParameterValue(_("},{"line_number":721,"context_line":"                \"SNMPPowerDriver: bad SNMPv3 authentication protocol: %s\")"},{"line_number":722,"context_line":"                % auth_p)"},{"line_number":723,"context_line":"    if \u0027snmp_priv_protocol\u0027 in info:"},{"line_number":724,"context_line":"        priv_p \u003d info[\u0027snmp_priv_protocol\u0027]"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_eba6620f","line":721,"in_reply_to":"df7087c5_9eb8cb2a","updated":"2018-03-15 14:52:38.000000000","message":"Done","commit_id":"939568b4beb15137bde7bd721932c38bbca5ebea"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f552e836b362f2e285adfdcb2baede0d6ede0a10","unresolved":false,"context_lines":[{"line_number":723,"context_line":"    if \u0027snmp_priv_protocol\u0027 in info:"},{"line_number":724,"context_line":"        priv_p \u003d info[\u0027snmp_priv_protocol\u0027]"},{"line_number":725,"context_line":"        try:"},{"line_number":726,"context_line":"            snmp_info[\u0027priv_protocol\u0027] \u003d snmp_priv_protocols[priv_p]"},{"line_number":727,"context_line":""},{"line_number":728,"context_line":"        except KeyError:"},{"line_number":729,"context_line":"            raise exception.InvalidParameterValue(_("}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_beb34f4d","line":726,"updated":"2018-03-10 08:11:19.000000000","message":"ditto re double mapping","commit_id":"939568b4beb15137bde7bd721932c38bbca5ebea"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"34997149171861db6ba4646340ba98bacd05b0aa","unresolved":false,"context_lines":[{"line_number":723,"context_line":"    if \u0027snmp_priv_protocol\u0027 in info:"},{"line_number":724,"context_line":"        priv_p \u003d info[\u0027snmp_priv_protocol\u0027]"},{"line_number":725,"context_line":"        try:"},{"line_number":726,"context_line":"            snmp_info[\u0027priv_protocol\u0027] \u003d snmp_priv_protocols[priv_p]"},{"line_number":727,"context_line":""},{"line_number":728,"context_line":"        except KeyError:"},{"line_number":729,"context_line":"            raise exception.InvalidParameterValue(_("}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_c8b6048b","line":726,"in_reply_to":"df7087c5_beb34f4d","updated":"2018-03-15 14:52:38.000000000","message":"Done","commit_id":"939568b4beb15137bde7bd721932c38bbca5ebea"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f552e836b362f2e285adfdcb2baede0d6ede0a10","unresolved":false,"context_lines":[{"line_number":727,"context_line":""},{"line_number":728,"context_line":"        except KeyError:"},{"line_number":729,"context_line":"            raise exception.InvalidParameterValue(_("},{"line_number":730,"context_line":"                \"SNMPPowerDriver: bad SNMPv3 privacy protocol: %s\")"},{"line_number":731,"context_line":"                % priv_p)"},{"line_number":732,"context_line":""},{"line_number":733,"context_line":"    if \u0027snmp_auth_key\u0027 in info:"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_5e84735e","line":730,"updated":"2018-03-10 08:11:19.000000000","message":"ditto re acceptable values","commit_id":"939568b4beb15137bde7bd721932c38bbca5ebea"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"34997149171861db6ba4646340ba98bacd05b0aa","unresolved":false,"context_lines":[{"line_number":727,"context_line":""},{"line_number":728,"context_line":"        except KeyError:"},{"line_number":729,"context_line":"            raise exception.InvalidParameterValue(_("},{"line_number":730,"context_line":"                \"SNMPPowerDriver: bad SNMPv3 privacy protocol: %s\")"},{"line_number":731,"context_line":"                % priv_p)"},{"line_number":732,"context_line":""},{"line_number":733,"context_line":"    if \u0027snmp_auth_key\u0027 in info:"}],"source_content_type":"text/x-python","patch_set":6,"id":"df7087c5_abaceaec","line":730,"in_reply_to":"df7087c5_5e84735e","updated":"2018-03-15 14:52:38.000000000","message":"Done","commit_id":"939568b4beb15137bde7bd721932c38bbca5ebea"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6802ef70d172183898a84749a472cff494803ec0","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        _(\"SNMP community. Required for versions %(v1)s and %(v2c)s.\")"},{"line_number":126,"context_line":"        % {\"v1\": SNMP_V1, \"v2c\": SNMP_V2C},"},{"line_number":127,"context_line":"    # synonym for `snmp_user`"},{"line_number":128,"context_line":"    \u0027snmp_security\u0027:"},{"line_number":129,"context_line":"        _(\"SNMPv3 User-based Security Model (USM) username. \""},{"line_number":130,"context_line":"          \"Required for version %(v3)s. \""},{"line_number":131,"context_line":"          \"Note: this property is obsolete by `snmp_user`.\")"},{"line_number":132,"context_line":"        % {\"v3\": SNMP_V3},"},{"line_number":133,"context_line":"    \u0027snmp_user\u0027:"},{"line_number":134,"context_line":"        _(\"SNMPv3 User-based Security Model (USM) username. \""}],"source_content_type":"text/x-python","patch_set":8,"id":"9f6a8fd7_e484ccb3","line":131,"range":{"start_line":128,"start_character":4,"end_line":131,"end_character":60},"updated":"2018-04-19 06:37:39.000000000","message":"Since this propert is being marked for deprecation, better to keep this property separately.\nDEPRECATED_PROPERTIES \u003d {\n\u0027snmp_security\u0027:\n        _(\"SNMPv3 User-based Security Model (USM) username... \"),\n}\n\nCOMMON_PROPERTIES \u003d REQUIRED_PROPERTIES.copy()\nCOMMON_PROPERTIES.update(OPTIONAL_PROPERTIES)\nCOMMON_PROPERTIES.update(DEPRECATED_PROPERTIES)","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6802ef70d172183898a84749a472cff494803ec0","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    \u0027snmp_security\u0027:"},{"line_number":129,"context_line":"        _(\"SNMPv3 User-based Security Model (USM) username. \""},{"line_number":130,"context_line":"          \"Required for version %(v3)s. \""},{"line_number":131,"context_line":"          \"Note: this property is obsolete by `snmp_user`.\")"},{"line_number":132,"context_line":"        % {\"v3\": SNMP_V3},"},{"line_number":133,"context_line":"    \u0027snmp_user\u0027:"},{"line_number":134,"context_line":"        _(\"SNMPv3 User-based Security Model (USM) username. \""}],"source_content_type":"text/x-python","patch_set":8,"id":"9f6a8fd7_e4ffec31","line":131,"range":{"start_line":131,"start_character":34,"end_line":131,"end_character":42},"updated":"2018-04-19 06:37:39.000000000","message":"We cannot obsolete it right away. Will have to be deprecated for a release before being deprecated.\n\"This property is deprecated, please use `snmp_user` instead.\"","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1cc794c5e5a10119a69d2f36f7690d139ba78654","unresolved":false,"context_lines":[{"line_number":125,"context_line":"        _(\"SNMP community. Required for versions %(v1)s and %(v2c)s.\")"},{"line_number":126,"context_line":"        % {\"v1\": SNMP_V1, \"v2c\": SNMP_V2C},"},{"line_number":127,"context_line":"    # synonym for `snmp_user`"},{"line_number":128,"context_line":"    \u0027snmp_security\u0027:"},{"line_number":129,"context_line":"        _(\"SNMPv3 User-based Security Model (USM) username. \""},{"line_number":130,"context_line":"          \"Required for version %(v3)s. \""},{"line_number":131,"context_line":"          \"Note: this property is obsolete by `snmp_user`.\")"},{"line_number":132,"context_line":"        % {\"v3\": SNMP_V3},"},{"line_number":133,"context_line":"    \u0027snmp_user\u0027:"},{"line_number":134,"context_line":"        _(\"SNMPv3 User-based Security Model (USM) username. \""}],"source_content_type":"text/x-python","patch_set":8,"id":"9f6a8fd7_134a5b7f","line":131,"range":{"start_line":128,"start_character":4,"end_line":131,"end_character":60},"in_reply_to":"9f6a8fd7_e484ccb3","updated":"2018-04-19 14:11:52.000000000","message":"Done","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1cc794c5e5a10119a69d2f36f7690d139ba78654","unresolved":false,"context_lines":[{"line_number":128,"context_line":"    \u0027snmp_security\u0027:"},{"line_number":129,"context_line":"        _(\"SNMPv3 User-based Security Model (USM) username. \""},{"line_number":130,"context_line":"          \"Required for version %(v3)s. \""},{"line_number":131,"context_line":"          \"Note: this property is obsolete by `snmp_user`.\")"},{"line_number":132,"context_line":"        % {\"v3\": SNMP_V3},"},{"line_number":133,"context_line":"    \u0027snmp_user\u0027:"},{"line_number":134,"context_line":"        _(\"SNMPv3 User-based Security Model (USM) username. \""}],"source_content_type":"text/x-python","patch_set":8,"id":"9f6a8fd7_d35b8351","line":131,"range":{"start_line":131,"start_character":34,"end_line":131,"end_character":42},"in_reply_to":"9f6a8fd7_e4ffec31","updated":"2018-04-19 14:11:52.000000000","message":"Done","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6802ef70d172183898a84749a472cff494803ec0","unresolved":false,"context_lines":[{"line_number":702,"context_line":""},{"line_number":703,"context_line":"    if \u0027snmp_user\u0027 not in info and \u0027snmp_security\u0027 not in info:"},{"line_number":704,"context_line":"        raise exception.MissingParameterValue(_("},{"line_number":705,"context_line":"            \"SNMP driver requires snmp_user to be set for version %s.\")"},{"line_number":706,"context_line":"            % SNMP_V3)"},{"line_number":707,"context_line":"    snmp_info[\u0027user\u0027] \u003d info.get(\u0027snmp_user\u0027, info.get(\u0027snmp_security\u0027))"},{"line_number":708,"context_line":"    if \u0027snmp_security\u0027 in info:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f6a8fd7_8f9f295e","line":705,"range":{"start_line":705,"start_character":34,"end_line":705,"end_character":53},"updated":"2018-04-19 06:37:39.000000000","message":"s/ snmp_user to be set / \"\u0027driver_info\u0027 property \u0027snmp_user\u0027\" to be set on the node /","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1cc794c5e5a10119a69d2f36f7690d139ba78654","unresolved":false,"context_lines":[{"line_number":702,"context_line":""},{"line_number":703,"context_line":"    if \u0027snmp_user\u0027 not in info and \u0027snmp_security\u0027 not in info:"},{"line_number":704,"context_line":"        raise exception.MissingParameterValue(_("},{"line_number":705,"context_line":"            \"SNMP driver requires snmp_user to be set for version %s.\")"},{"line_number":706,"context_line":"            % SNMP_V3)"},{"line_number":707,"context_line":"    snmp_info[\u0027user\u0027] \u003d info.get(\u0027snmp_user\u0027, info.get(\u0027snmp_security\u0027))"},{"line_number":708,"context_line":"    if \u0027snmp_security\u0027 in info:"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f6a8fd7_090d4c36","line":705,"range":{"start_line":705,"start_character":34,"end_line":705,"end_character":53},"in_reply_to":"9f6a8fd7_8f9f295e","updated":"2018-04-19 14:11:52.000000000","message":"Done","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6802ef70d172183898a84749a472cff494803ec0","unresolved":false,"context_lines":[{"line_number":707,"context_line":"    snmp_info[\u0027user\u0027] \u003d info.get(\u0027snmp_user\u0027, info.get(\u0027snmp_security\u0027))"},{"line_number":708,"context_line":"    if \u0027snmp_security\u0027 in info:"},{"line_number":709,"context_line":"        LOG.warning(\"The `snmp_security` parameter is deprecated in \""},{"line_number":710,"context_line":"                    \"favor of `snmp_user` parameter.\")"},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"    return snmp_info"},{"line_number":713,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9f6a8fd7_8f6e4993","line":710,"range":{"start_line":710,"start_character":51,"end_line":710,"end_character":52},"updated":"2018-04-19 06:37:39.000000000","message":"May be you can add :\n\u0027Please remove the `snmp_security` parameter from the node\u0027s \u0027driver_info\u0027.\u0027\nAlso you will have to handle a case wherein user has specified both \u0027snmp_user\u0027 and  \u0027snmp_security\u0027. Issue a warning, indicating that the value in \u0027snmp_user\u0027 is being used and `snmp_security` is ignored.","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1cc794c5e5a10119a69d2f36f7690d139ba78654","unresolved":false,"context_lines":[{"line_number":707,"context_line":"    snmp_info[\u0027user\u0027] \u003d info.get(\u0027snmp_user\u0027, info.get(\u0027snmp_security\u0027))"},{"line_number":708,"context_line":"    if \u0027snmp_security\u0027 in info:"},{"line_number":709,"context_line":"        LOG.warning(\"The `snmp_security` parameter is deprecated in \""},{"line_number":710,"context_line":"                    \"favor of `snmp_user` parameter.\")"},{"line_number":711,"context_line":""},{"line_number":712,"context_line":"    return snmp_info"},{"line_number":713,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9f6a8fd7_696e4896","line":710,"range":{"start_line":710,"start_character":51,"end_line":710,"end_character":52},"in_reply_to":"9f6a8fd7_8f6e4993","updated":"2018-04-19 14:11:52.000000000","message":"Done","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6802ef70d172183898a84749a472cff494803ec0","unresolved":false,"context_lines":[{"line_number":733,"context_line":""},{"line_number":734,"context_line":"        except KeyError:"},{"line_number":735,"context_line":"            raise exception.InvalidParameterValue(_("},{"line_number":736,"context_line":"                \"SNMPPowerDriver: unknown SNMPv3 privacy protocol %s, \""},{"line_number":737,"context_line":"                \"%(proto)s, known protocols are: %(protos)s\") %"},{"line_number":738,"context_line":"                {\u0027proto\u0027: priv_p, \u0027protos\u0027: \u0027, \u0027.join(snmp_priv_protocols)}"},{"line_number":739,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f6a8fd7_cf56815d","line":736,"range":{"start_line":736,"start_character":65,"end_line":736,"end_character":68},"updated":"2018-04-19 06:37:39.000000000","message":"s/ \"%s\"//","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1cc794c5e5a10119a69d2f36f7690d139ba78654","unresolved":false,"context_lines":[{"line_number":733,"context_line":""},{"line_number":734,"context_line":"        except KeyError:"},{"line_number":735,"context_line":"            raise exception.InvalidParameterValue(_("},{"line_number":736,"context_line":"                \"SNMPPowerDriver: unknown SNMPv3 privacy protocol %s, \""},{"line_number":737,"context_line":"                \"%(proto)s, known protocols are: %(protos)s\") %"},{"line_number":738,"context_line":"                {\u0027proto\u0027: priv_p, \u0027protos\u0027: \u0027, \u0027.join(snmp_priv_protocols)}"},{"line_number":739,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f6a8fd7_c91d1410","line":736,"range":{"start_line":736,"start_character":65,"end_line":736,"end_character":68},"in_reply_to":"9f6a8fd7_cf56815d","updated":"2018-04-19 14:11:52.000000000","message":"Ah, my... Fixed","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6802ef70d172183898a84749a472cff494803ec0","unresolved":false,"context_lines":[{"line_number":763,"context_line":""},{"line_number":764,"context_line":"    if (\u0027priv_protocol\u0027 in snmp_info and"},{"line_number":765,"context_line":"            \u0027auth_protocol\u0027 not in snmp_info):"},{"line_number":766,"context_line":"        raise exception.InvalidParameterValue(_("},{"line_number":767,"context_line":"            \"SNMPPowerDriver: SNMPv3 privacy requires authentication\"))"},{"line_number":768,"context_line":""},{"line_number":769,"context_line":"    if (\u0027auth_protocol\u0027 in snmp_info and"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f6a8fd7_6f99751d","line":766,"range":{"start_line":766,"start_character":24,"end_line":766,"end_character":45},"updated":"2018-04-19 06:37:39.000000000","message":"Should it be MissingParameterValue?","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1cc794c5e5a10119a69d2f36f7690d139ba78654","unresolved":false,"context_lines":[{"line_number":763,"context_line":""},{"line_number":764,"context_line":"    if (\u0027priv_protocol\u0027 in snmp_info and"},{"line_number":765,"context_line":"            \u0027auth_protocol\u0027 not in snmp_info):"},{"line_number":766,"context_line":"        raise exception.InvalidParameterValue(_("},{"line_number":767,"context_line":"            \"SNMPPowerDriver: SNMPv3 privacy requires authentication\"))"},{"line_number":768,"context_line":""},{"line_number":769,"context_line":"    if (\u0027auth_protocol\u0027 in snmp_info and"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f6a8fd7_699f285f","line":766,"range":{"start_line":766,"start_character":24,"end_line":766,"end_character":45},"in_reply_to":"9f6a8fd7_6f99751d","updated":"2018-04-19 14:11:52.000000000","message":"Done","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6802ef70d172183898a84749a472cff494803ec0","unresolved":false,"context_lines":[{"line_number":764,"context_line":"    if (\u0027priv_protocol\u0027 in snmp_info and"},{"line_number":765,"context_line":"            \u0027auth_protocol\u0027 not in snmp_info):"},{"line_number":766,"context_line":"        raise exception.InvalidParameterValue(_("},{"line_number":767,"context_line":"            \"SNMPPowerDriver: SNMPv3 privacy requires authentication\"))"},{"line_number":768,"context_line":""},{"line_number":769,"context_line":"    if (\u0027auth_protocol\u0027 in snmp_info and"},{"line_number":770,"context_line":"            \u0027auth_key\u0027 not in snmp_info):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f6a8fd7_2fee1d88","line":767,"range":{"start_line":767,"start_character":45,"end_line":767,"end_character":68},"updated":"2018-04-19 06:37:39.000000000","message":"Also add the name of the corresponding required driver_info property \u0027auth_protocol\u0027 to the exception message.","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1cc794c5e5a10119a69d2f36f7690d139ba78654","unresolved":false,"context_lines":[{"line_number":764,"context_line":"    if (\u0027priv_protocol\u0027 in snmp_info and"},{"line_number":765,"context_line":"            \u0027auth_protocol\u0027 not in snmp_info):"},{"line_number":766,"context_line":"        raise exception.InvalidParameterValue(_("},{"line_number":767,"context_line":"            \"SNMPPowerDriver: SNMPv3 privacy requires authentication\"))"},{"line_number":768,"context_line":""},{"line_number":769,"context_line":"    if (\u0027auth_protocol\u0027 in snmp_info and"},{"line_number":770,"context_line":"            \u0027auth_key\u0027 not in snmp_info):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f6a8fd7_29bff061","line":767,"range":{"start_line":767,"start_character":45,"end_line":767,"end_character":68},"in_reply_to":"9f6a8fd7_2fee1d88","updated":"2018-04-19 14:11:52.000000000","message":"Done","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6802ef70d172183898a84749a472cff494803ec0","unresolved":false,"context_lines":[{"line_number":769,"context_line":"    if (\u0027auth_protocol\u0027 in snmp_info and"},{"line_number":770,"context_line":"            \u0027auth_key\u0027 not in snmp_info):"},{"line_number":771,"context_line":"        raise exception.MissingParameterValue(_("},{"line_number":772,"context_line":"            \"SNMPPowerDriver: missing SNMPv3 authentication key\"))"},{"line_number":773,"context_line":""},{"line_number":774,"context_line":"    if (\u0027priv_protocol\u0027 in snmp_info and"},{"line_number":775,"context_line":"            \u0027priv_key\u0027 not in snmp_info):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f6a8fd7_6f673527","line":772,"range":{"start_line":772,"start_character":30,"end_line":772,"end_character":63},"updated":"2018-04-19 06:37:39.000000000","message":"\u0027auth_key\u0027 is optional parameter and hence it is required to indicate in the message that it is required as SNMP authentication is being specified.","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1cc794c5e5a10119a69d2f36f7690d139ba78654","unresolved":false,"context_lines":[{"line_number":769,"context_line":"    if (\u0027auth_protocol\u0027 in snmp_info and"},{"line_number":770,"context_line":"            \u0027auth_key\u0027 not in snmp_info):"},{"line_number":771,"context_line":"        raise exception.MissingParameterValue(_("},{"line_number":772,"context_line":"            \"SNMPPowerDriver: missing SNMPv3 authentication key\"))"},{"line_number":773,"context_line":""},{"line_number":774,"context_line":"    if (\u0027priv_protocol\u0027 in snmp_info and"},{"line_number":775,"context_line":"            \u0027priv_key\u0027 not in snmp_info):"}],"source_content_type":"text/x-python","patch_set":8,"id":"9f6a8fd7_a92540c4","line":772,"range":{"start_line":772,"start_character":30,"end_line":772,"end_character":63},"in_reply_to":"9f6a8fd7_6f673527","updated":"2018-04-19 14:11:52.000000000","message":"Done","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6802ef70d172183898a84749a472cff494803ec0","unresolved":false,"context_lines":[{"line_number":774,"context_line":"    if (\u0027priv_protocol\u0027 in snmp_info and"},{"line_number":775,"context_line":"            \u0027priv_key\u0027 not in snmp_info):"},{"line_number":776,"context_line":"        raise exception.MissingParameterValue(_("},{"line_number":777,"context_line":"            \"SNMPPowerDriver: missing SNMPv3 privacy key\"))"},{"line_number":778,"context_line":""},{"line_number":779,"context_line":"    return snmp_info"},{"line_number":780,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9f6a8fd7_0f47997a","line":777,"range":{"start_line":777,"start_character":31,"end_line":777,"end_character":56},"updated":"2018-04-19 06:37:39.000000000","message":"\u0027priv_key\u0027 is optional parameter and hence it is required to indicate in the message that it is required as SNMP privacy protocol is being specified.\nAlso , it would be useful if we could generate a single exception indicating all the missing parameters.","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1cc794c5e5a10119a69d2f36f7690d139ba78654","unresolved":false,"context_lines":[{"line_number":774,"context_line":"    if (\u0027priv_protocol\u0027 in snmp_info and"},{"line_number":775,"context_line":"            \u0027priv_key\u0027 not in snmp_info):"},{"line_number":776,"context_line":"        raise exception.MissingParameterValue(_("},{"line_number":777,"context_line":"            \"SNMPPowerDriver: missing SNMPv3 privacy key\"))"},{"line_number":778,"context_line":""},{"line_number":779,"context_line":"    return snmp_info"},{"line_number":780,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"9f6a8fd7_8dc6479a","line":777,"range":{"start_line":777,"start_character":31,"end_line":777,"end_character":56},"in_reply_to":"9f6a8fd7_0f47997a","updated":"2018-04-19 14:11:52.000000000","message":"Done.\nNot sure about the single exception listing all *combinations* of parameters - may be confusing...","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"69034697e970de6050955d7b7599b250df28ef6d","unresolved":false,"context_lines":[{"line_number":715,"context_line":"        LOG.warning(\"The `driver_info/snmp_security` parameter is deprecated \""},{"line_number":716,"context_line":"                    \"in favor of `driver_info/snmp_user` parameter. Please \""},{"line_number":717,"context_line":"                    \"remove the `driver_info/snmp_security` parameter from \""},{"line_number":718,"context_line":"                    \"node configuration.\")"},{"line_number":719,"context_line":""},{"line_number":720,"context_line":"        if \u0027snmp_user\u0027 in info:"},{"line_number":721,"context_line":"            LOG.warning(\"The `driver_info/snmp_security` parameter is ignored \""}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_af8c28d7","line":718,"range":{"start_line":718,"start_character":21,"end_line":718,"end_character":25},"updated":"2018-04-23 06:47:25.000000000","message":"Need to add node id in warning messages.\ns/ \u0027node configuration.\u0027 / node %(node)s configuration\u0027.","commit_id":"589dda2d139f25014fa9f0a1bec1c2e440b615a2"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"4dfb901c5a2c3cc06671467b32e7ef08726122e9","unresolved":false,"context_lines":[{"line_number":715,"context_line":"        LOG.warning(\"The `driver_info/snmp_security` parameter is deprecated \""},{"line_number":716,"context_line":"                    \"in favor of `driver_info/snmp_user` parameter. Please \""},{"line_number":717,"context_line":"                    \"remove the `driver_info/snmp_security` parameter from \""},{"line_number":718,"context_line":"                    \"node configuration.\")"},{"line_number":719,"context_line":""},{"line_number":720,"context_line":"        if \u0027snmp_user\u0027 in info:"},{"line_number":721,"context_line":"            LOG.warning(\"The `driver_info/snmp_security` parameter is ignored \""}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_91e1439e","line":718,"range":{"start_line":718,"start_character":21,"end_line":718,"end_character":25},"in_reply_to":"9f6a8fd7_af8c28d7","updated":"2018-04-23 12:59:56.000000000","message":"Done","commit_id":"589dda2d139f25014fa9f0a1bec1c2e440b615a2"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"69034697e970de6050955d7b7599b250df28ef6d","unresolved":false,"context_lines":[{"line_number":734,"context_line":""},{"line_number":735,"context_line":"        except KeyError:"},{"line_number":736,"context_line":"            raise exception.InvalidParameterValue(_("},{"line_number":737,"context_line":"                \"SNMPPowerDriver: unknown SNMPv3 authentication protocol \""},{"line_number":738,"context_line":"                \"`driver_info/snmp_auth_protocol` %(proto)s, known protocols \""},{"line_number":739,"context_line":"                \"are: %(protos)s\") %"},{"line_number":740,"context_line":"                {\u0027proto\u0027: auth_p, \u0027protos\u0027: \u0027, \u0027.join(snmp_auth_protocols)}"},{"line_number":741,"context_line":"            )"},{"line_number":742,"context_line":"    if \u0027snmp_priv_protocol\u0027 in info:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_afa50849","line":739,"range":{"start_line":737,"start_character":16,"end_line":739,"end_character":34},"updated":"2018-04-23 06:47:25.000000000","message":"We should also add the node uuid to all the exception messages. I think its not there for any of the messages in this file.","commit_id":"589dda2d139f25014fa9f0a1bec1c2e440b615a2"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"4dfb901c5a2c3cc06671467b32e7ef08726122e9","unresolved":false,"context_lines":[{"line_number":734,"context_line":""},{"line_number":735,"context_line":"        except KeyError:"},{"line_number":736,"context_line":"            raise exception.InvalidParameterValue(_("},{"line_number":737,"context_line":"                \"SNMPPowerDriver: unknown SNMPv3 authentication protocol \""},{"line_number":738,"context_line":"                \"`driver_info/snmp_auth_protocol` %(proto)s, known protocols \""},{"line_number":739,"context_line":"                \"are: %(protos)s\") %"},{"line_number":740,"context_line":"                {\u0027proto\u0027: auth_p, \u0027protos\u0027: \u0027, \u0027.join(snmp_auth_protocols)}"},{"line_number":741,"context_line":"            )"},{"line_number":742,"context_line":"    if \u0027snmp_priv_protocol\u0027 in info:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_786a4fed","line":739,"range":{"start_line":737,"start_character":16,"end_line":739,"end_character":34},"in_reply_to":"9f6a8fd7_afa50849","updated":"2018-04-23 12:59:56.000000000","message":"Done for those introduced by this patch.","commit_id":"589dda2d139f25014fa9f0a1bec1c2e440b615a2"}],"ironic/tests/unit/drivers/modules/test_snmp.py":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"69034697e970de6050955d7b7599b250df28ef6d","unresolved":false,"context_lines":[{"line_number":357,"context_line":"                                           snmp_user\u003d\u0027pass\u0027,"},{"line_number":358,"context_line":"                                           snmp_auth_protocol\u003d\u0027sha\u0027)"},{"line_number":359,"context_line":"        node \u003d self._get_test_node(info)"},{"line_number":360,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":361,"context_line":"                          snmp._parse_driver_info,"},{"line_number":362,"context_line":"                          node)"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"    def test__parse_driver_info_snmp_v3_auth_badproto(self):"},{"line_number":365,"context_line":"        info \u003d db_utils.get_test_snmp_info(snmp_version\u003d\u00273\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_a2443f48","line":362,"range":{"start_line":360,"start_character":8,"end_line":362,"end_character":31},"updated":"2018-04-23 06:47:25.000000000","message":"Since we are raising InvalidParameterValue in multiple condition, we could test it with regex to ensure that exception is raised from the intended place.\n\nself.assertRaisesRegex(exception.InvalidParameterValue,                         \n                       \u0027missing.*authentication key\u0027,\n                       snmp._parse_driver_info,\n                       node)","commit_id":"589dda2d139f25014fa9f0a1bec1c2e440b615a2"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"4dfb901c5a2c3cc06671467b32e7ef08726122e9","unresolved":false,"context_lines":[{"line_number":357,"context_line":"                                           snmp_user\u003d\u0027pass\u0027,"},{"line_number":358,"context_line":"                                           snmp_auth_protocol\u003d\u0027sha\u0027)"},{"line_number":359,"context_line":"        node \u003d self._get_test_node(info)"},{"line_number":360,"context_line":"        self.assertRaises(exception.InvalidParameterValue,"},{"line_number":361,"context_line":"                          snmp._parse_driver_info,"},{"line_number":362,"context_line":"                          node)"},{"line_number":363,"context_line":""},{"line_number":364,"context_line":"    def test__parse_driver_info_snmp_v3_auth_badproto(self):"},{"line_number":365,"context_line":"        info \u003d db_utils.get_test_snmp_info(snmp_version\u003d\u00273\u0027,"}],"source_content_type":"text/x-python","patch_set":10,"id":"9f6a8fd7_5b118551","line":362,"range":{"start_line":360,"start_character":8,"end_line":362,"end_character":31},"in_reply_to":"9f6a8fd7_a2443f48","updated":"2018-04-23 12:59:56.000000000","message":"Done","commit_id":"589dda2d139f25014fa9f0a1bec1c2e440b615a2"}],"releasenotes/notes/add-snmpv3-security-features-bbefb8b844813a53.yaml":[{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"4fb01b671659367886d91ca7fdeff6fa7a99e0d2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - SNMPv3 message authentication and encryption features added to Ironic"},{"line_number":4,"context_line":"    ``snmp`` driver. To enable these features, the following parameters"},{"line_number":5,"context_line":"    should be used in the node\u0027s ``driver_info``."},{"line_number":6,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3fa0c359_86e3f533","line":3,"range":{"start_line":3,"start_character":67,"end_line":3,"end_character":73},"updated":"2018-02-27 05:12:50.000000000","message":"nit: s/ Ironic / ironic /","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"fd867901308734ef0d07618dde4137a98afdeed3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - SNMPv3 message authentication and encryption features added to Ironic"},{"line_number":4,"context_line":"    ``snmp`` driver. To enable these features, the following parameters"},{"line_number":5,"context_line":"    should be used in the node\u0027s ``driver_info``."},{"line_number":6,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":2,"id":"1f9dbf25_76dc4446","line":3,"range":{"start_line":3,"start_character":67,"end_line":3,"end_character":73},"in_reply_to":"3fa0c359_86e3f533","updated":"2018-02-28 09:26:27.000000000","message":"Done","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"4fb01b671659367886d91ca7fdeff6fa7a99e0d2","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - SNMPv3 message authentication and encryption features added to Ironic"},{"line_number":4,"context_line":"    ``snmp`` driver. To enable these features, the following parameters"},{"line_number":5,"context_line":"    should be used in the node\u0027s ``driver_info``."},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    * ``snmp_user``"},{"line_number":8,"context_line":"    * ``snmp_auth_protocol``"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3fa0c359_c6c6dd9a","line":5,"range":{"start_line":5,"start_character":48,"end_line":5,"end_character":49},"updated":"2018-02-27 05:12:50.000000000","message":"s/ \u0027.\u0027 / \u0027:\u0027 /","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"fd867901308734ef0d07618dde4137a98afdeed3","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - SNMPv3 message authentication and encryption features added to Ironic"},{"line_number":4,"context_line":"    ``snmp`` driver. To enable these features, the following parameters"},{"line_number":5,"context_line":"    should be used in the node\u0027s ``driver_info``."},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    * ``snmp_user``"},{"line_number":8,"context_line":"    * ``snmp_auth_protocol``"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"1f9dbf25_b6bbace3","line":5,"range":{"start_line":5,"start_character":48,"end_line":5,"end_character":49},"in_reply_to":"3fa0c359_c6c6dd9a","updated":"2018-02-28 09:26:27.000000000","message":"Done","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"4fb01b671659367886d91ca7fdeff6fa7a99e0d2","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    * ``snmp_priv_protocol``"},{"line_number":11,"context_line":"    * ``snmp_priv_key``"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"  - Added support for the ContextName parameter of the SNMPv3 message at"},{"line_number":14,"context_line":"    Ironic\u0027s ``snmp`` driver. Non-default ContextName can be configured in"},{"line_number":15,"context_line":"    the node\u0027s ``driver_info`` as the ``snmp_context_name`` parameter."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3fa0c359_462f2d3e","line":13,"range":{"start_line":13,"start_character":4,"end_line":13,"end_character":69},"updated":"2018-02-27 05:12:50.000000000","message":"Can this be said as \n\u0027Added support for SNMPv3 context in ``snmp`` driver.","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"fd867901308734ef0d07618dde4137a98afdeed3","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    * ``snmp_priv_protocol``"},{"line_number":11,"context_line":"    * ``snmp_priv_key``"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"  - Added support for the ContextName parameter of the SNMPv3 message at"},{"line_number":14,"context_line":"    Ironic\u0027s ``snmp`` driver. Non-default ContextName can be configured in"},{"line_number":15,"context_line":"    the node\u0027s ``driver_info`` as the ``snmp_context_name`` parameter."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":2,"id":"1f9dbf25_f6c85475","line":13,"range":{"start_line":13,"start_character":4,"end_line":13,"end_character":69},"in_reply_to":"3fa0c359_462f2d3e","updated":"2018-02-28 09:26:27.000000000","message":"Rephrased a bit differently.","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"4fb01b671659367886d91ca7fdeff6fa7a99e0d2","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    * ``snmp_priv_key``"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"  - Added support for the ContextName parameter of the SNMPv3 message at"},{"line_number":14,"context_line":"    Ironic\u0027s ``snmp`` driver. Non-default ContextName can be configured in"},{"line_number":15,"context_line":"    the node\u0027s ``driver_info`` as the ``snmp_context_name`` parameter."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"deprecations:"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3fa0c359_c6749d6a","line":14,"range":{"start_line":14,"start_character":4,"end_line":14,"end_character":10},"updated":"2018-02-27 05:12:50.000000000","message":"nit: s/ Ironic / ironic /","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"4fb01b671659367886d91ca7fdeff6fa7a99e0d2","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    * ``snmp_priv_key``"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"  - Added support for the ContextName parameter of the SNMPv3 message at"},{"line_number":14,"context_line":"    Ironic\u0027s ``snmp`` driver. Non-default ContextName can be configured in"},{"line_number":15,"context_line":"    the node\u0027s ``driver_info`` as the ``snmp_context_name`` parameter."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"deprecations:"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3fa0c359_260f81e0","line":14,"range":{"start_line":14,"start_character":42,"end_line":14,"end_character":53},"updated":"2018-02-27 05:12:50.000000000","message":"s/ ContextName / SNMP context name \u0027 /","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"fd867901308734ef0d07618dde4137a98afdeed3","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    * ``snmp_priv_key``"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"  - Added support for the ContextName parameter of the SNMPv3 message at"},{"line_number":14,"context_line":"    Ironic\u0027s ``snmp`` driver. Non-default ContextName can be configured in"},{"line_number":15,"context_line":"    the node\u0027s ``driver_info`` as the ``snmp_context_name`` parameter."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"deprecations:"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"1f9dbf25_76aa0486","line":14,"range":{"start_line":14,"start_character":4,"end_line":14,"end_character":10},"in_reply_to":"3fa0c359_c6749d6a","updated":"2018-02-28 09:26:27.000000000","message":"Done","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"4fb01b671659367886d91ca7fdeff6fa7a99e0d2","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    the node\u0027s ``driver_info`` as the ``snmp_context_name`` parameter."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"deprecations:"},{"line_number":18,"context_line":"  - The ``snmp_security`` parameter of Ironic ``snmp`` driver is obsoleted"},{"line_number":19,"context_line":"    by the ``snmp_user`` parameter. Though ``snmp_security`` parameter"},{"line_number":20,"context_line":"    remains supported."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3fa0c359_2628e130","line":18,"range":{"start_line":18,"start_character":39,"end_line":18,"end_character":45},"updated":"2018-02-27 05:12:50.000000000","message":"ditto","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"fd867901308734ef0d07618dde4137a98afdeed3","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    the node\u0027s ``driver_info`` as the ``snmp_context_name`` parameter."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"deprecations:"},{"line_number":18,"context_line":"  - The ``snmp_security`` parameter of Ironic ``snmp`` driver is obsoleted"},{"line_number":19,"context_line":"    by the ``snmp_user`` parameter. Though ``snmp_security`` parameter"},{"line_number":20,"context_line":"    remains supported."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"1f9dbf25_36947c44","line":18,"range":{"start_line":18,"start_character":39,"end_line":18,"end_character":45},"in_reply_to":"3fa0c359_2628e130","updated":"2018-02-28 09:26:27.000000000","message":"Done","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"4fb01b671659367886d91ca7fdeff6fa7a99e0d2","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    the node\u0027s ``driver_info`` as the ``snmp_context_name`` parameter."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"deprecations:"},{"line_number":18,"context_line":"  - The ``snmp_security`` parameter of Ironic ``snmp`` driver is obsoleted"},{"line_number":19,"context_line":"    by the ``snmp_user`` parameter. Though ``snmp_security`` parameter"},{"line_number":20,"context_line":"    remains supported."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"3fa0c359_66d7c924","line":20,"range":{"start_line":18,"start_character":65,"end_line":20,"end_character":22},"updated":"2018-02-27 05:12:50.000000000","message":"may be we can say :-\n\u0027deprecated and it will be removed in future release.\u0027 Please use parameter ``snmp_user`` instead.","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"fd867901308734ef0d07618dde4137a98afdeed3","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    the node\u0027s ``driver_info`` as the ``snmp_context_name`` parameter."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"deprecations:"},{"line_number":18,"context_line":"  - The ``snmp_security`` parameter of Ironic ``snmp`` driver is obsoleted"},{"line_number":19,"context_line":"    by the ``snmp_user`` parameter. Though ``snmp_security`` parameter"},{"line_number":20,"context_line":"    remains supported."}],"source_content_type":"text/x-yaml","patch_set":2,"id":"1f9dbf25_b68e4c25","line":20,"range":{"start_line":18,"start_character":65,"end_line":20,"end_character":22},"in_reply_to":"3fa0c359_66d7c924","updated":"2018-02-28 09:26:27.000000000","message":"Done","commit_id":"1426edda10f7fa21f721bea5de4e4462a8f564a9"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f552e836b362f2e285adfdcb2baede0d6ede0a10","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - SNMPv3 message authentication and encryption features added to ironic"},{"line_number":4,"context_line":"    ``snmp`` driver. To enable these features, the following parameters"},{"line_number":5,"context_line":"    should be used in the node\u0027s ``driver_info```:`"},{"line_number":6,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":6,"id":"df7087c5_7e87f762","line":3,"updated":"2018-03-10 08:11:19.000000000","message":"to make the formatting work you need to start each item with\n\n - |\n   SNMPv3 blah-blah\n\notherwise the list below does not render, as all newlines are squashed\n\nAlso we tend to use present tense: \"Adds SNMPv3 message blah-blah\"","commit_id":"939568b4beb15137bde7bd721932c38bbca5ebea"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"34997149171861db6ba4646340ba98bacd05b0aa","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - SNMPv3 message authentication and encryption features added to ironic"},{"line_number":4,"context_line":"    ``snmp`` driver. To enable these features, the following parameters"},{"line_number":5,"context_line":"    should be used in the node\u0027s ``driver_info```:`"},{"line_number":6,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":6,"id":"df7087c5_2b90da49","line":3,"in_reply_to":"df7087c5_7e87f762","updated":"2018-03-15 14:52:38.000000000","message":"Done","commit_id":"939568b4beb15137bde7bd721932c38bbca5ebea"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f552e836b362f2e285adfdcb2baede0d6ede0a10","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    * ``snmp_priv_protocol``"},{"line_number":11,"context_line":"    * ``snmp_priv_key``"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"  - Added support for the ``context_engine_id`` and ``context_name``"},{"line_number":14,"context_line":"    parameters of SNMPv3 message at ironic\u0027s ``snmp`` driver. Non-default"},{"line_number":15,"context_line":"    values can be configured to node\u0027s ``driver_info``."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":6,"id":"df7087c5_1e7efb6a","line":13,"updated":"2018-03-10 08:11:19.000000000","message":"s/Added/Adds/","commit_id":"939568b4beb15137bde7bd721932c38bbca5ebea"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"34997149171861db6ba4646340ba98bacd05b0aa","unresolved":false,"context_lines":[{"line_number":10,"context_line":"    * ``snmp_priv_protocol``"},{"line_number":11,"context_line":"    * ``snmp_priv_key``"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"  - Added support for the ``context_engine_id`` and ``context_name``"},{"line_number":14,"context_line":"    parameters of SNMPv3 message at ironic\u0027s ``snmp`` driver. Non-default"},{"line_number":15,"context_line":"    values can be configured to node\u0027s ``driver_info``."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":6,"id":"df7087c5_0b92b64c","line":13,"in_reply_to":"df7087c5_1e7efb6a","updated":"2018-03-15 14:52:38.000000000","message":"Done","commit_id":"939568b4beb15137bde7bd721932c38bbca5ebea"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f552e836b362f2e285adfdcb2baede0d6ede0a10","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"  - Added support for the ``context_engine_id`` and ``context_name``"},{"line_number":14,"context_line":"    parameters of SNMPv3 message at ironic\u0027s ``snmp`` driver. Non-default"},{"line_number":15,"context_line":"    values can be configured to node\u0027s ``driver_info``."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"deprecations:"},{"line_number":18,"context_line":"  - The ``snmp_security`` parameter of ironic ``snmp`` driver is deprecated"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"df7087c5_3e817f4b","line":15,"updated":"2018-03-10 08:11:19.000000000","message":"nit: s/Non-default values/They/, s/to/in the/","commit_id":"939568b4beb15137bde7bd721932c38bbca5ebea"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"34997149171861db6ba4646340ba98bacd05b0aa","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"  - Added support for the ``context_engine_id`` and ``context_name``"},{"line_number":14,"context_line":"    parameters of SNMPv3 message at ironic\u0027s ``snmp`` driver. Non-default"},{"line_number":15,"context_line":"    values can be configured to node\u0027s ``driver_info``."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"deprecations:"},{"line_number":18,"context_line":"  - The ``snmp_security`` parameter of ironic ``snmp`` driver is deprecated"}],"source_content_type":"text/x-yaml","patch_set":6,"id":"df7087c5_cbb03ee0","line":15,"in_reply_to":"df7087c5_3e817f4b","updated":"2018-03-15 14:52:38.000000000","message":"Done","commit_id":"939568b4beb15137bde7bd721932c38bbca5ebea"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f552e836b362f2e285adfdcb2baede0d6ede0a10","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    values can be configured to node\u0027s ``driver_info``."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"deprecations:"},{"line_number":18,"context_line":"  - The ``snmp_security`` parameter of ironic ``snmp`` driver is deprecated"},{"line_number":19,"context_line":"    and it will be removed in future release.\u0027 Please use parameter"},{"line_number":20,"context_line":"    ``snmp_user`` instead."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"df7087c5_de972390","line":18,"updated":"2018-03-10 08:11:19.000000000","message":"maybe worth explicitly saying that it\u0027s a node\u0027s driver_info field? \"parameter\" may be confused with a configuration option","commit_id":"939568b4beb15137bde7bd721932c38bbca5ebea"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"34997149171861db6ba4646340ba98bacd05b0aa","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    values can be configured to node\u0027s ``driver_info``."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"deprecations:"},{"line_number":18,"context_line":"  - The ``snmp_security`` parameter of ironic ``snmp`` driver is deprecated"},{"line_number":19,"context_line":"    and it will be removed in future release.\u0027 Please use parameter"},{"line_number":20,"context_line":"    ``snmp_user`` instead."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"df7087c5_cb335e61","line":18,"in_reply_to":"df7087c5_de972390","updated":"2018-03-15 14:52:38.000000000","message":"Done","commit_id":"939568b4beb15137bde7bd721932c38bbca5ebea"},{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"f552e836b362f2e285adfdcb2baede0d6ede0a10","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"deprecations:"},{"line_number":18,"context_line":"  - The ``snmp_security`` parameter of ironic ``snmp`` driver is deprecated"},{"line_number":19,"context_line":"    and it will be removed in future release.\u0027 Please use parameter"},{"line_number":20,"context_line":"    ``snmp_user`` instead."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"df7087c5_fe92279f","line":19,"updated":"2018-03-10 08:11:19.000000000","message":"\u0027 after \"relelase\"","commit_id":"939568b4beb15137bde7bd721932c38bbca5ebea"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"34997149171861db6ba4646340ba98bacd05b0aa","unresolved":false,"context_lines":[{"line_number":16,"context_line":""},{"line_number":17,"context_line":"deprecations:"},{"line_number":18,"context_line":"  - The ``snmp_security`` parameter of ironic ``snmp`` driver is deprecated"},{"line_number":19,"context_line":"    and it will be removed in future release.\u0027 Please use parameter"},{"line_number":20,"context_line":"    ``snmp_user`` instead."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"df7087c5_8b41e6ab","line":19,"in_reply_to":"df7087c5_fe92279f","updated":"2018-03-15 14:52:38.000000000","message":"Done","commit_id":"939568b4beb15137bde7bd721932c38bbca5ebea"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6802ef70d172183898a84749a472cff494803ec0","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Adds SNMPv3 message authentication and encryption features to ironic"},{"line_number":4,"context_line":"    ``snmp`` driver. To enable these features, the following parameters"},{"line_number":5,"context_line":"    should be used in the node\u0027s ``driver_info```:`"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    -"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"9f6a8fd7_4a29ff87","line":4,"range":{"start_line":4,"start_character":13,"end_line":4,"end_character":19},"updated":"2018-04-19 06:37:39.000000000","message":"s/ driver / hardware type /","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1cc794c5e5a10119a69d2f36f7690d139ba78654","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Adds SNMPv3 message authentication and encryption features to ironic"},{"line_number":4,"context_line":"    ``snmp`` driver. To enable these features, the following parameters"},{"line_number":5,"context_line":"    should be used in the node\u0027s ``driver_info```:`"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    -"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"9f6a8fd7_8df967c9","line":4,"range":{"start_line":4,"start_character":13,"end_line":4,"end_character":19},"in_reply_to":"9f6a8fd7_4a29ff87","updated":"2018-04-19 14:11:52.000000000","message":"Done","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6802ef70d172183898a84749a472cff494803ec0","unresolved":false,"context_lines":[{"line_number":16,"context_line":"      ``snmp_priv_key``"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"  - Adds support for the ``context_engine_id`` and ``context_name``"},{"line_number":19,"context_line":"    parameters of SNMPv3 message at ironic\u0027s ``snmp`` driver. They can be"},{"line_number":20,"context_line":"    configured in the node\u0027s ``driver_info``."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"deprecations:"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"9f6a8fd7_6a51630e","line":19,"range":{"start_line":19,"start_character":54,"end_line":19,"end_character":60},"updated":"2018-04-19 06:37:39.000000000","message":"ditto","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6802ef70d172183898a84749a472cff494803ec0","unresolved":false,"context_lines":[{"line_number":16,"context_line":"      ``snmp_priv_key``"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"  - Adds support for the ``context_engine_id`` and ``context_name``"},{"line_number":19,"context_line":"    parameters of SNMPv3 message at ironic\u0027s ``snmp`` driver. They can be"},{"line_number":20,"context_line":"    configured in the node\u0027s ``driver_info``."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"deprecations:"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"9f6a8fd7_ca418f3b","line":19,"range":{"start_line":19,"start_character":33,"end_line":19,"end_character":35},"updated":"2018-04-19 06:37:39.000000000","message":"s/ at ironic\u0027s  / to ironic /","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1cc794c5e5a10119a69d2f36f7690d139ba78654","unresolved":false,"context_lines":[{"line_number":16,"context_line":"      ``snmp_priv_key``"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"  - Adds support for the ``context_engine_id`` and ``context_name``"},{"line_number":19,"context_line":"    parameters of SNMPv3 message at ironic\u0027s ``snmp`` driver. They can be"},{"line_number":20,"context_line":"    configured in the node\u0027s ``driver_info``."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"deprecations:"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"9f6a8fd7_8d22c751","line":19,"range":{"start_line":19,"start_character":54,"end_line":19,"end_character":60},"in_reply_to":"9f6a8fd7_6a51630e","updated":"2018-04-19 14:11:52.000000000","message":"Done","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1cc794c5e5a10119a69d2f36f7690d139ba78654","unresolved":false,"context_lines":[{"line_number":16,"context_line":"      ``snmp_priv_key``"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"  - Adds support for the ``context_engine_id`` and ``context_name``"},{"line_number":19,"context_line":"    parameters of SNMPv3 message at ironic\u0027s ``snmp`` driver. They can be"},{"line_number":20,"context_line":"    configured in the node\u0027s ``driver_info``."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"deprecations:"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"9f6a8fd7_4d1caf11","line":19,"range":{"start_line":19,"start_character":33,"end_line":19,"end_character":35},"in_reply_to":"9f6a8fd7_ca418f3b","updated":"2018-04-19 14:11:52.000000000","message":"Done","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6802ef70d172183898a84749a472cff494803ec0","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"deprecations:"},{"line_number":23,"context_line":"  - Deprecates the ``snmp_security`` field in ``driver_info`` for ironic"},{"line_number":24,"context_line":"   ``snmp`` driver, it will be removed after release.\u0027 Please use"},{"line_number":25,"context_line":"   ``snmp_user`` field instead."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"9f6a8fd7_0a2307aa","line":24,"range":{"start_line":24,"start_character":39,"end_line":24,"end_character":44},"updated":"2018-04-19 06:37:39.000000000","message":"s/ after / in Stein /","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"6802ef70d172183898a84749a472cff494803ec0","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"deprecations:"},{"line_number":23,"context_line":"  - Deprecates the ``snmp_security`` field in ``driver_info`` for ironic"},{"line_number":24,"context_line":"   ``snmp`` driver, it will be removed after release.\u0027 Please use"},{"line_number":25,"context_line":"   ``snmp_user`` field instead."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"9f6a8fd7_ea37b3e2","line":24,"range":{"start_line":24,"start_character":12,"end_line":24,"end_character":18},"updated":"2018-04-19 06:37:39.000000000","message":"s/ driver / hardware type /","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1cc794c5e5a10119a69d2f36f7690d139ba78654","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"deprecations:"},{"line_number":23,"context_line":"  - Deprecates the ``snmp_security`` field in ``driver_info`` for ironic"},{"line_number":24,"context_line":"   ``snmp`` driver, it will be removed after release.\u0027 Please use"},{"line_number":25,"context_line":"   ``snmp_user`` field instead."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"9f6a8fd7_4df10fcd","line":24,"range":{"start_line":24,"start_character":39,"end_line":24,"end_character":44},"in_reply_to":"9f6a8fd7_0a2307aa","updated":"2018-04-19 14:11:52.000000000","message":"Done","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"1cc794c5e5a10119a69d2f36f7690d139ba78654","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"deprecations:"},{"line_number":23,"context_line":"  - Deprecates the ``snmp_security`` field in ``driver_info`` for ironic"},{"line_number":24,"context_line":"   ``snmp`` driver, it will be removed after release.\u0027 Please use"},{"line_number":25,"context_line":"   ``snmp_user`` field instead."}],"source_content_type":"text/x-yaml","patch_set":8,"id":"9f6a8fd7_0d8b171f","line":24,"range":{"start_line":24,"start_character":12,"end_line":24,"end_character":18},"in_reply_to":"9f6a8fd7_ea37b3e2","updated":"2018-04-19 14:11:52.000000000","message":"Done","commit_id":"cf1e711350a947a1b36a851d782528a3e2d07bb5"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"69034697e970de6050955d7b7599b250df28ef6d","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"deprecations:"},{"line_number":23,"context_line":"  - Deprecates the ``snmp_security`` field in ``driver_info`` for ironic"},{"line_number":24,"context_line":"   ``snmp`` hardware type, it will be removed in Stein release.\u0027 Please use"},{"line_number":25,"context_line":"   ``snmp_user`` field instead."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"9f6a8fd7_4f4d4c98","line":24,"range":{"start_line":24,"start_character":63,"end_line":24,"end_character":64},"updated":"2018-04-23 06:47:25.000000000","message":"s/ \u0027 //","commit_id":"589dda2d139f25014fa9f0a1bec1c2e440b615a2"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"4dfb901c5a2c3cc06671467b32e7ef08726122e9","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"deprecations:"},{"line_number":23,"context_line":"  - Deprecates the ``snmp_security`` field in ``driver_info`` for ironic"},{"line_number":24,"context_line":"   ``snmp`` hardware type, it will be removed in Stein release.\u0027 Please use"},{"line_number":25,"context_line":"   ``snmp_user`` field instead."}],"source_content_type":"text/x-yaml","patch_set":10,"id":"9f6a8fd7_9b439d13","line":24,"range":{"start_line":24,"start_character":63,"end_line":24,"end_character":64},"in_reply_to":"9f6a8fd7_4f4d4c98","updated":"2018-04-23 12:59:56.000000000","message":"Done","commit_id":"589dda2d139f25014fa9f0a1bec1c2e440b615a2"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"dcc2ab719723fa7f02faa2183f22dc168ba6abe1","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    ``snmp`` hardware type. To enable these features, the following"},{"line_number":5,"context_line":"    parameters should be used in the node\u0027s ``driver_info```:`"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    -"},{"line_number":8,"context_line":"      ``snmp_user``"},{"line_number":9,"context_line":"    -"},{"line_number":10,"context_line":"      ``snmp_auth_protocol``"},{"line_number":11,"context_line":"    -"},{"line_number":12,"context_line":"      ``snmp_auth_key``"},{"line_number":13,"context_line":"    -"},{"line_number":14,"context_line":"      ``snmp_priv_protocol``"},{"line_number":15,"context_line":"    -"},{"line_number":16,"context_line":"      ``snmp_priv_key``"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"  - Adds support for the ``context_engine_id`` and ``context_name``"},{"line_number":19,"context_line":"    parameters of SNMPv3 message at ironic ``snmp`` hardware type. They"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"5f7c97a3_5d5c2fec","line":16,"range":{"start_line":7,"start_character":4,"end_line":16,"end_character":23},"updated":"2018-05-11 15:48:20.000000000","message":"This is not rendered properly  http://logs.openstack.org/99/547999/12/check/build-openstack-releasenotes/4fa3937/html/unreleased.html\n\nI think you can list them as:-\n\n* ``snmp_user``\n* ``snmp_auth_protocol``\n* ``snmp_auth_key``\n* ``snmp_priv_protocol``\n* ``snmp_priv_key``","commit_id":"7af9c0960c88ef7416c33771fd190f875599cf48"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"8533df87e774ad67ce40157c1424c7cf564affae","unresolved":false,"context_lines":[{"line_number":4,"context_line":"    ``snmp`` hardware type. To enable these features, the following"},{"line_number":5,"context_line":"    parameters should be used in the node\u0027s ``driver_info```:`"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    -"},{"line_number":8,"context_line":"      ``snmp_user``"},{"line_number":9,"context_line":"    -"},{"line_number":10,"context_line":"      ``snmp_auth_protocol``"},{"line_number":11,"context_line":"    -"},{"line_number":12,"context_line":"      ``snmp_auth_key``"},{"line_number":13,"context_line":"    -"},{"line_number":14,"context_line":"      ``snmp_priv_protocol``"},{"line_number":15,"context_line":"    -"},{"line_number":16,"context_line":"      ``snmp_priv_key``"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"  - Adds support for the ``context_engine_id`` and ``context_name``"},{"line_number":19,"context_line":"    parameters of SNMPv3 message at ironic ``snmp`` hardware type. They"}],"source_content_type":"text/x-yaml","patch_set":12,"id":"5f7c97a3_5d866f15","line":16,"range":{"start_line":7,"start_character":4,"end_line":16,"end_character":23},"in_reply_to":"5f7c97a3_5d5c2fec","updated":"2018-05-11 15:54:00.000000000","message":"Done","commit_id":"7af9c0960c88ef7416c33771fd190f875599cf48"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"dcc2ab719723fa7f02faa2183f22dc168ba6abe1","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    -"},{"line_number":16,"context_line":"      ``snmp_priv_key``"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"  - Adds support for the ``context_engine_id`` and ``context_name``"},{"line_number":19,"context_line":"    parameters of SNMPv3 message at ironic ``snmp`` hardware type. They"},{"line_number":20,"context_line":"    can be configured in the node\u0027s ``driver_info``."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":12,"id":"5f7c97a3_9d6647c1","line":18,"range":{"start_line":18,"start_character":2,"end_line":18,"end_character":3},"updated":"2018-05-11 15:48:20.000000000","message":"Remove this to make whole of the text under \u0027features\u0027 as part of a single bullet point in release notes. \n\ns/\u0027-\u0027//\n\nMay be you can say:-\n  It also adds support for ...","commit_id":"7af9c0960c88ef7416c33771fd190f875599cf48"},{"author":{"_account_id":26340,"name":"Ilya Etingof","email":"etingof@gmail.com","username":"etingof"},"change_message_id":"8533df87e774ad67ce40157c1424c7cf564affae","unresolved":false,"context_lines":[{"line_number":15,"context_line":"    -"},{"line_number":16,"context_line":"      ``snmp_priv_key``"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"  - Adds support for the ``context_engine_id`` and ``context_name``"},{"line_number":19,"context_line":"    parameters of SNMPv3 message at ironic ``snmp`` hardware type. They"},{"line_number":20,"context_line":"    can be configured in the node\u0027s ``driver_info``."},{"line_number":21,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":12,"id":"5f7c97a3_1d7c771d","line":18,"range":{"start_line":18,"start_character":2,"end_line":18,"end_character":3},"in_reply_to":"5f7c97a3_9d6647c1","updated":"2018-05-11 15:54:00.000000000","message":"Done","commit_id":"7af9c0960c88ef7416c33771fd190f875599cf48"},{"author":{"_account_id":11076,"name":"Shivanand Tendulker","email":"stendulker@gmail.com","username":"stendulker"},"change_message_id":"d4771eb35a62f19fdba367832471e6749af050f8","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - Adds SNMPv3 message authentication and encryption features to ironic"},{"line_number":4,"context_line":"    ``snmp`` hardware type. To enable these features, the following"},{"line_number":5,"context_line":"    parameters should be used in the node\u0027s ``driver_info```:`"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"    * ``snmp_user``"},{"line_number":8,"context_line":"    * ``snmp_auth_protocol``"}],"source_content_type":"text/x-yaml","patch_set":13,"id":"5f7c97a3_4f81bafa","line":5,"range":{"start_line":5,"start_character":61,"end_line":5,"end_character":62},"updated":"2018-05-14 14:55:15.000000000","message":"This is still not rendered properly http://logs.openstack.org/99/547999/13/check/build-openstack-releasenotes/f70eac2/html/unreleased.html.\nI think there are some extra quotes here:\n\ns/  ``driver_info```:` /  ``driver_info``:","commit_id":"3acfda02c251192a2f0888406995a247e30c959b"}]}
