)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"b42b10be1c62d6dc59f7b704350bb3e89cd6525a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"1ac06dbe_37b8d774","updated":"2016-08-24 07:09:39.000000000","message":"I think this is related to the BP below:\nhttps://blueprints.launchpad.net/python-openstackclient/+spec/network-commands-options\n\nPlease link it in commit msg.","commit_id":"885e6a134736cf1f7fb5de495eecf1820ea9bba6"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"7f3f9c2cbf18cac01df1c013706d1f3c15279237","unresolved":false,"context_lines":[{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Partial-Bug: #1612136"},{"line_number":13,"context_line":"Partially-Implements: blueprint network-commands-options"},{"line_number":14,"context_line":"Depends-On:I412b2aabf9f1eeabfc0ef19f23cc17ba22c71ad7"},{"line_number":15,"context_line":"Implements: blueprint allow-overwrite-set-options"},{"line_number":16,"context_line":"Co-Authored-By: Reedip Banerjee \u003creedip14@gmail.com\u003e"},{"line_number":17,"context_line":"Change-Id: I21f0bdc71217757e8995504b91149c51222663eb"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":40,"id":"ff82abbf_643242f4","line":14,"range":{"start_line":14,"start_character":0,"end_line":14,"end_character":52},"updated":"2017-11-21 06:13:10.000000000","message":"Please remove it. Because you already Abandoned it.","commit_id":"0134e90bf556cf7cc162fbf4d2ffda8d1c3c44b5"}],"doc/source/cli/command-objects/port.rst":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1e621cfc806666b5a1027f834e3e52699ccd85ec","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        [--project \u003cproject\u003e [--project-domain \u003cproject-domain\u003e]]"},{"line_number":35,"context_line":"        [--enable-port-security | --disable-port-security]"},{"line_number":36,"context_line":"        [--tag \u003ctag\u003e | --no-tag]"},{"line_number":37,"context_line":"        [--dhcp-option \u003cdhcp-option\u003e [,\u003cdhcp-option\u003e]]"},{"line_number":38,"context_line":"        \u003cname\u003e"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":".. option:: --network \u003cnetwork\u003e"}],"source_content_type":"text/x-rst","patch_set":40,"id":"3f79a3b5_a1a5a04b","line":37,"range":{"start_line":37,"start_character":36,"end_line":37,"end_character":37},"updated":"2018-11-30 13:37:58.000000000","message":"Can there be a space between options?\n\nAlso, the tests are using \u0027--dhcp-option ... --dhcp-option ...\u0027 so which is the correct syntax?","commit_id":"0134e90bf556cf7cc162fbf4d2ffda8d1c3c44b5"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1e621cfc806666b5a1027f834e3e52699ccd85ec","unresolved":false,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":".. option:: --dhcp-option \u003cdhcp-option\u003e"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    Extra DHCP option to be assigned to this port: name\u003d\u003cdhcp-option-name\u003e,"},{"line_number":146,"context_line":"    value\u003d\u003cvalue\u003e,ip-version\u003d{4,6} default 4"},{"line_number":147,"context_line":"    (repeat option to set multiple extra DHCP options)"},{"line_number":148,"context_line":""}],"source_content_type":"text/x-rst","patch_set":40,"id":"3f79a3b5_015a545c","line":145,"range":{"start_line":145,"start_character":57,"end_line":145,"end_character":73},"updated":"2018-11-30 13:37:58.000000000","message":"Does it have to be a name or can it be a number?  I know sometimes the driver (dnsmasq) can use either.","commit_id":"0134e90bf556cf7cc162fbf4d2ffda8d1c3c44b5"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1e621cfc806666b5a1027f834e3e52699ccd85ec","unresolved":false,"context_lines":[{"line_number":272,"context_line":"        [--no-allowed-address]"},{"line_number":273,"context_line":"        [--data-plane-status \u003cstatus\u003e]"},{"line_number":274,"context_line":"        [--tag \u003ctag\u003e] [--no-tag]"},{"line_number":275,"context_line":"        [--dhcp-option \u003cdhcp-option\u003e [,\u003cdhcp-option\u003e]]"},{"line_number":276,"context_line":"        [--no-dhcp-option]"},{"line_number":277,"context_line":"        \u003cport\u003e"},{"line_number":278,"context_line":""}],"source_content_type":"text/x-rst","patch_set":40,"id":"3f79a3b5_41db6cea","line":275,"range":{"start_line":275,"start_character":36,"end_line":275,"end_character":37},"updated":"2018-11-30 13:37:58.000000000","message":"Same","commit_id":"0134e90bf556cf7cc162fbf4d2ffda8d1c3c44b5"}],"doc/source/command-objects/port.rst":[{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"a76162941898306b277fe14035f5ba593a67c192","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        [--host \u003chost-id\u003e]"},{"line_number":27,"context_line":"        [--enable | --disable]"},{"line_number":28,"context_line":"        [--mac-address \u003cmac-address\u003e]"},{"line_number":29,"context_line":"        [--extra-dhcp-opt \u003cextra-dhcp\u003e]"},{"line_number":30,"context_line":"        [--project \u003cproject\u003e [--project-domain \u003cproject-domain\u003e]]"},{"line_number":31,"context_line":"        \u003cname\u003e"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a98d1f4_438826e8","line":29,"updated":"2016-09-28 17:52:06.000000000","message":"I think we should simplify this option from what neutronclient has.  How about \"--dhcp-options \u003cdhcp-options\u003e\"?","commit_id":"8baee11b6b48f7deebb3b5c14f013d645d8f2cd4"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"26245bd7c85dc885e7577d4af2eb13e8bd84e493","unresolved":false,"context_lines":[{"line_number":26,"context_line":"        [--host \u003chost-id\u003e]"},{"line_number":27,"context_line":"        [--enable | --disable]"},{"line_number":28,"context_line":"        [--mac-address \u003cmac-address\u003e]"},{"line_number":29,"context_line":"        [--extra-dhcp-opt \u003cextra-dhcp\u003e]"},{"line_number":30,"context_line":"        [--project \u003cproject\u003e [--project-domain \u003cproject-domain\u003e]]"},{"line_number":31,"context_line":"        \u003cname\u003e"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a98d1f4_5f93394f","line":29,"in_reply_to":"3a98d1f4_438826e8","updated":"2016-09-30 08:38:41.000000000","message":"Done! Thanks for your suggestion.","commit_id":"8baee11b6b48f7deebb3b5c14f013d645d8f2cd4"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"a76162941898306b277fe14035f5ba593a67c192","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":".. option:: --extra-dhcp-opt \u003cextra-dhcp-opt\u003e"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    Extra dhcp options to be assigned to this port: opt_name\u003d\u003cdhcp_option_name\u003e,"},{"line_number":86,"context_line":"    opt_value\u003d\u003cvalue\u003e,ip_version\u003d{4,6}. (You can repeat this option)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":".. option:: --project-domain \u003cproject-domain\u003e"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a98d1f4_e35f7273","line":85,"range":{"start_line":85,"start_character":10,"end_line":85,"end_character":14},"updated":"2016-09-28 17:52:06.000000000","message":"DHCP","commit_id":"8baee11b6b48f7deebb3b5c14f013d645d8f2cd4"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"a76162941898306b277fe14035f5ba593a67c192","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":".. option:: --extra-dhcp-opt \u003cextra-dhcp-opt\u003e"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    Extra dhcp options to be assigned to this port: opt_name\u003d\u003cdhcp_option_name\u003e,"},{"line_number":86,"context_line":"    opt_value\u003d\u003cvalue\u003e,ip_version\u003d{4,6}. (You can repeat this option)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":".. option:: --project-domain \u003cproject-domain\u003e"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a98d1f4_235a3a84","line":85,"range":{"start_line":85,"start_character":52,"end_line":85,"end_character":60},"updated":"2016-09-28 17:52:06.000000000","message":"name","commit_id":"8baee11b6b48f7deebb3b5c14f013d645d8f2cd4"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"26245bd7c85dc885e7577d4af2eb13e8bd84e493","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":".. option:: --extra-dhcp-opt \u003cextra-dhcp-opt\u003e"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    Extra dhcp options to be assigned to this port: opt_name\u003d\u003cdhcp_option_name\u003e,"},{"line_number":86,"context_line":"    opt_value\u003d\u003cvalue\u003e,ip_version\u003d{4,6}. (You can repeat this option)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":".. option:: --project-domain \u003cproject-domain\u003e"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a98d1f4_bfa43da6","line":85,"range":{"start_line":85,"start_character":52,"end_line":85,"end_character":60},"in_reply_to":"3a98d1f4_235a3a84","updated":"2016-09-30 08:38:41.000000000","message":"Done","commit_id":"8baee11b6b48f7deebb3b5c14f013d645d8f2cd4"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"26245bd7c85dc885e7577d4af2eb13e8bd84e493","unresolved":false,"context_lines":[{"line_number":82,"context_line":""},{"line_number":83,"context_line":".. option:: --extra-dhcp-opt \u003cextra-dhcp-opt\u003e"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    Extra dhcp options to be assigned to this port: opt_name\u003d\u003cdhcp_option_name\u003e,"},{"line_number":86,"context_line":"    opt_value\u003d\u003cvalue\u003e,ip_version\u003d{4,6}. (You can repeat this option)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":".. option:: --project-domain \u003cproject-domain\u003e"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a98d1f4_ffaec583","line":85,"range":{"start_line":85,"start_character":10,"end_line":85,"end_character":14},"in_reply_to":"3a98d1f4_e35f7273","updated":"2016-09-30 08:38:41.000000000","message":"Done","commit_id":"8baee11b6b48f7deebb3b5c14f013d645d8f2cd4"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"a76162941898306b277fe14035f5ba593a67c192","unresolved":false,"context_lines":[{"line_number":83,"context_line":".. option:: --extra-dhcp-opt \u003cextra-dhcp-opt\u003e"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    Extra dhcp options to be assigned to this port: opt_name\u003d\u003cdhcp_option_name\u003e,"},{"line_number":86,"context_line":"    opt_value\u003d\u003cvalue\u003e,ip_version\u003d{4,6}. (You can repeat this option)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":".. option:: --project-domain \u003cproject-domain\u003e"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a98d1f4_83d86ef1","line":86,"range":{"start_line":86,"start_character":40,"end_line":86,"end_character":68},"updated":"2016-09-28 17:52:06.000000000","message":"(repeat option to set multiple extra DHCP options)","commit_id":"8baee11b6b48f7deebb3b5c14f013d645d8f2cd4"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"a76162941898306b277fe14035f5ba593a67c192","unresolved":false,"context_lines":[{"line_number":83,"context_line":".. option:: --extra-dhcp-opt \u003cextra-dhcp-opt\u003e"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    Extra dhcp options to be assigned to this port: opt_name\u003d\u003cdhcp_option_name\u003e,"},{"line_number":86,"context_line":"    opt_value\u003d\u003cvalue\u003e,ip_version\u003d{4,6}. (You can repeat this option)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":".. option:: --project-domain \u003cproject-domain\u003e"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a98d1f4_435f4672","line":86,"range":{"start_line":86,"start_character":4,"end_line":86,"end_character":13},"updated":"2016-09-28 17:52:06.000000000","message":"value","commit_id":"8baee11b6b48f7deebb3b5c14f013d645d8f2cd4"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"26245bd7c85dc885e7577d4af2eb13e8bd84e493","unresolved":false,"context_lines":[{"line_number":83,"context_line":".. option:: --extra-dhcp-opt \u003cextra-dhcp-opt\u003e"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    Extra dhcp options to be assigned to this port: opt_name\u003d\u003cdhcp_option_name\u003e,"},{"line_number":86,"context_line":"    opt_value\u003d\u003cvalue\u003e,ip_version\u003d{4,6}. (You can repeat this option)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":".. option:: --project-domain \u003cproject-domain\u003e"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a98d1f4_1faa9170","line":86,"range":{"start_line":86,"start_character":4,"end_line":86,"end_character":13},"in_reply_to":"3a98d1f4_435f4672","updated":"2016-09-30 08:38:41.000000000","message":"Done","commit_id":"8baee11b6b48f7deebb3b5c14f013d645d8f2cd4"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"26245bd7c85dc885e7577d4af2eb13e8bd84e493","unresolved":false,"context_lines":[{"line_number":83,"context_line":".. option:: --extra-dhcp-opt \u003cextra-dhcp-opt\u003e"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    Extra dhcp options to be assigned to this port: opt_name\u003d\u003cdhcp_option_name\u003e,"},{"line_number":86,"context_line":"    opt_value\u003d\u003cvalue\u003e,ip_version\u003d{4,6}. (You can repeat this option)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":".. option:: --project-domain \u003cproject-domain\u003e"},{"line_number":89,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a98d1f4_3fb74dd9","line":86,"range":{"start_line":86,"start_character":40,"end_line":86,"end_character":68},"in_reply_to":"3a98d1f4_83d86ef1","updated":"2016-09-30 08:38:41.000000000","message":"Done","commit_id":"8baee11b6b48f7deebb3b5c14f013d645d8f2cd4"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"a76162941898306b277fe14035f5ba593a67c192","unresolved":false,"context_lines":[{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    Port to display (name or ID)"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"port unset"},{"line_number":236,"context_line":"----------"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"Unset port properties"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a98d1f4_e3edb28f","line":235,"updated":"2016-09-28 17:52:06.000000000","message":"Why no unset support?","commit_id":"8baee11b6b48f7deebb3b5c14f013d645d8f2cd4"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"26245bd7c85dc885e7577d4af2eb13e8bd84e493","unresolved":false,"context_lines":[{"line_number":232,"context_line":""},{"line_number":233,"context_line":"    Port to display (name or ID)"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":"port unset"},{"line_number":236,"context_line":"----------"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"Unset port properties"}],"source_content_type":"text/x-rst","patch_set":3,"id":"3a98d1f4_5fba59c1","line":235,"in_reply_to":"3a98d1f4_e3edb28f","updated":"2016-09-30 08:38:41.000000000","message":"Done","commit_id":"8baee11b6b48f7deebb3b5c14f013d645d8f2cd4"},{"author":{"_account_id":22218,"name":"Sindhu Devale","email":"sindhu.devale@intel.com","username":"sindhudevale"},"change_message_id":"607f1d4da75f50455cc13e3c7e8e051b988ada5d","unresolved":false,"context_lines":[{"line_number":253,"context_line":""},{"line_number":254,"context_line":".. option:: --no-dhcp-options"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    Clear existing extra DHCP options associated with this port"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":".. _port_set-port:"},{"line_number":259,"context_line":".. describe:: \u003cport\u003e"}],"source_content_type":"text/x-rst","patch_set":7,"id":"ba5da102_e1eb6776","line":256,"updated":"2016-11-01 22:45:11.000000000","message":"Why do we need this option in \"set\" command, doesn\u0027t \"unset\" do the same job of removing the DHCP option associated with a port?","commit_id":"f8abc113600b0e3dbc852f5410d6e3f94670f829"},{"author":{"_account_id":7018,"name":"Abhishek Raut","email":"rauta@vmware.com","username":"abhiraut"},"change_message_id":"cae478feb87ffbb3a7dee2ee40222c4884ba25bf","unresolved":false,"context_lines":[{"line_number":253,"context_line":""},{"line_number":254,"context_line":".. option:: --no-dhcp-options"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"    Clear existing extra DHCP options associated with this port"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":".. _port_set-port:"},{"line_number":259,"context_line":".. describe:: \u003cport\u003e"}],"source_content_type":"text/x-rst","patch_set":7,"id":"5a3905b3_053c4ae1","line":256,"in_reply_to":"ba5da102_e1eb6776","updated":"2017-01-20 00:37:26.000000000","message":"I think in unset you will remove one dhcp option, while here it will clear all options.\nAlternately you could also add --all-dhcp-options in unset command to unset all options\n\nSee http://docs.openstack.org/developer/python-openstackclient/command-options.html#options-with-multiple-values","commit_id":"f8abc113600b0e3dbc852f5410d6e3f94670f829"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"52c09603d5bfa527e7f1737e4d72c6daa2f10692","unresolved":false,"context_lines":[{"line_number":355,"context_line":".. option:: --dhcp-options \u003cdhcp-options\u003e"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"    Extra DHCP options which should be removed from this port:"},{"line_number":358,"context_line":"    name\u003d\u003cdhcp-option-name\u003e, value\u003d\u003cvalue\u003e,ip-version\u003d{4,6}"},{"line_number":359,"context_line":"    (repeat option to unset multiple extra DHCP options)"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":".. _port_unset-port:"}],"source_content_type":"text/x-rst","patch_set":13,"id":"3a461143_7e1dcf0e","line":358,"updated":"2017-01-25 18:30:12.000000000","message":"is value and ip-version required to remove an option?  That implies that option names are not unique?","commit_id":"251f98682ca993c0e587235bc1e8b7baac27cb2e"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"8a770729540cf3ebfa84e6710998b17f34d0b342","unresolved":false,"context_lines":[{"line_number":355,"context_line":".. option:: --dhcp-options \u003cdhcp-options\u003e"},{"line_number":356,"context_line":""},{"line_number":357,"context_line":"    Extra DHCP options which should be removed from this port:"},{"line_number":358,"context_line":"    name\u003d\u003cdhcp-option-name\u003e, value\u003d\u003cvalue\u003e,ip-version\u003d{4,6}"},{"line_number":359,"context_line":"    (repeat option to unset multiple extra DHCP options)"},{"line_number":360,"context_line":""},{"line_number":361,"context_line":".. _port_unset-port:"}],"source_content_type":"text/x-rst","patch_set":13,"id":"3a461143_3f124fb5","line":358,"in_reply_to":"3a461143_7e1dcf0e","updated":"2017-01-26 03:34:32.000000000","message":"user can create similar dhcp option name with different values ( and or IP version ), so it would be required","commit_id":"251f98682ca993c0e587235bc1e8b7baac27cb2e"},{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"0efe1ba98168ccfa0214ffd74acb8521d3b65743","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":".. option:: --dhcp-options \u003cdhcp-options\u003e"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    Extra DHCP options to be assigned to this port: name\u003d\u003cdhcp-option-name\u003e,"},{"line_number":128,"context_line":"    value\u003d\u003cvalue\u003e,ip-version\u003d{4,6} default 4"},{"line_number":129,"context_line":"    (repeat option to set multiple extra DHCP options)"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"dfeb2761_f26cb209","line":127,"updated":"2017-03-31 15:44:21.000000000","message":"This reads a bit confusing. Perhaps change the option to look a bit more like the --nic option in server create.","commit_id":"20792c9ccfe89b3e14693f539f337e791a6dc28d"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"ae4caa55dcfd7b250814caabbcd58ef158bc2910","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":".. option:: --dhcp-options \u003cdhcp-options\u003e"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"    Extra DHCP options to be assigned to this port: name\u003d\u003cdhcp-option-name\u003e,"},{"line_number":128,"context_line":"    value\u003d\u003cvalue\u003e,ip-version\u003d{4,6} default 4"},{"line_number":129,"context_line":"    (repeat option to set multiple extra DHCP options)"},{"line_number":130,"context_line":""}],"source_content_type":"text/x-rst","patch_set":20,"id":"dfeb2761_a22237a3","line":127,"in_reply_to":"dfeb2761_f26cb209","updated":"2017-04-03 00:59:09.000000000","message":"Whats confusing you ?? :)","commit_id":"20792c9ccfe89b3e14693f539f337e791a6dc28d"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"8e2c44c5a068d86545bc7f69d1d71265b4edf61a","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        [--allowed-address ip-address\u003d\u003cip-address\u003e[,mac-address\u003d\u003cmac-address\u003e]]"},{"line_number":33,"context_line":"        [--project \u003cproject\u003e [--project-domain \u003cproject-domain\u003e]]"},{"line_number":34,"context_line":"        [--enable-port-security | --disable-port-security]"},{"line_number":35,"context_line":"        [--dhcp-options \u003cdhcp-options\u003e]"},{"line_number":36,"context_line":"        \u003cname\u003e"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":".. option:: --network \u003cnetwork\u003e"}],"source_content_type":"text/x-rst","patch_set":25,"id":"bff0334d_c73934a4","line":35,"range":{"start_line":35,"start_character":16,"end_line":35,"end_character":23},"updated":"2017-04-12 10:14:28.000000000","message":"correct me if i\u0027m wrong.\n\nThe option can be repeat to set multiple dhcp options for a port, so each one should be a dhcp option with \"name\u003dxxx,value\u003dxxx,ip-version\u003d{4,6}\", so I think odd word should be more exact and less confusion, compare the following option name, which one you feel nature?\n\n    --dhcp-option name\u003dxx,value\u003dxx --dhcp-option name\u003dyy,value\u003dyy\n\n    --dhcp-options name\u003dxx,value\u003dxx --dhcp-options name\u003dyy,value\u003dyy","commit_id":"195d4b197524211804b083daf7830177917aeb52"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"8e2c44c5a068d86545bc7f69d1d71265b4edf61a","unresolved":false,"context_lines":[{"line_number":32,"context_line":"        [--allowed-address ip-address\u003d\u003cip-address\u003e[,mac-address\u003d\u003cmac-address\u003e]]"},{"line_number":33,"context_line":"        [--project \u003cproject\u003e [--project-domain \u003cproject-domain\u003e]]"},{"line_number":34,"context_line":"        [--enable-port-security | --disable-port-security]"},{"line_number":35,"context_line":"        [--dhcp-options \u003cdhcp-options\u003e]"},{"line_number":36,"context_line":"        \u003cname\u003e"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":".. option:: --network \u003cnetwork\u003e"}],"source_content_type":"text/x-rst","patch_set":25,"id":"bff0334d_e7df9863","line":35,"range":{"start_line":35,"start_character":8,"end_line":35,"end_character":39},"updated":"2017-04-12 10:14:28.000000000","message":"it can be repeated, so document should be:\n\n    [--dhcp-options \u003cdhcp-options\u003e [...]]","commit_id":"195d4b197524211804b083daf7830177917aeb52"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"8e2c44c5a068d86545bc7f69d1d71265b4edf61a","unresolved":false,"context_lines":[{"line_number":233,"context_line":"        [--dns-name \u003cdns-name\u003e]"},{"line_number":234,"context_line":"        [--allowed-address ip-address\u003d\u003cip-address\u003e[,mac-address\u003d\u003cmac-address\u003e]]"},{"line_number":235,"context_line":"        [--no-allowed-address]"},{"line_number":236,"context_line":"        [--dhcp-options \u003cdhcp-options\u003e]"},{"line_number":237,"context_line":"        [--no-dhcp-options]"},{"line_number":238,"context_line":"        \u003cport\u003e"},{"line_number":239,"context_line":""}],"source_content_type":"text/x-rst","patch_set":25,"id":"bff0334d_67cdc8b5","line":236,"range":{"start_line":236,"start_character":8,"end_line":236,"end_character":39},"updated":"2017-04-12 10:14:28.000000000","message":"it can be repeated, so document should be:\n\n    [--dhcp-options \u003cdhcp-options\u003e [...]]","commit_id":"195d4b197524211804b083daf7830177917aeb52"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"dc004fded2e40bebd68abca9fc7fb5ffb9964a70","unresolved":false,"context_lines":[{"line_number":33,"context_line":"        [--qos-policy \u003cqos-policy\u003e]"},{"line_number":34,"context_line":"        [--project \u003cproject\u003e [--project-domain \u003cproject-domain\u003e]]"},{"line_number":35,"context_line":"        [--enable-port-security | --disable-port-security]"},{"line_number":36,"context_line":"        [--dhcp-option \u003cdhcp-options\u003e [ ,\u003cdhcp-options\u003e]]"},{"line_number":37,"context_line":"        \u003cname\u003e"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":".. option:: --network \u003cnetwork\u003e"}],"source_content_type":"text/x-rst","patch_set":34,"id":"7f231b9d_f9196c21","line":36,"range":{"start_line":36,"start_character":37,"end_line":36,"end_character":41},"updated":"2017-06-19 05:13:03.000000000","message":"No spaces are allowed inside the argument value.","commit_id":"d7fd29382a753ec1e547ab007fd579b6de6e8d64"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"dc004fded2e40bebd68abca9fc7fb5ffb9964a70","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    Disable port security for this port"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":".. option:: --dhcp-option \u003cdhcp-options\u003e"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    Extra DHCP options to be assigned to this port: name\u003d\u003cdhcp-option-name\u003e,"},{"line_number":133,"context_line":"    value\u003d\u003cvalue\u003e,ip-version\u003d{4,6} default 4"}],"source_content_type":"text/x-rst","patch_set":34,"id":"7f231b9d_d91470eb","line":130,"range":{"start_line":130,"start_character":32,"end_line":130,"end_character":39},"updated":"2017-06-19 05:13:03.000000000","message":"-\u003e option","commit_id":"d7fd29382a753ec1e547ab007fd579b6de6e8d64"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"dc004fded2e40bebd68abca9fc7fb5ffb9964a70","unresolved":false,"context_lines":[{"line_number":129,"context_line":""},{"line_number":130,"context_line":".. option:: --dhcp-option \u003cdhcp-options\u003e"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    Extra DHCP options to be assigned to this port: name\u003d\u003cdhcp-option-name\u003e,"},{"line_number":133,"context_line":"    value\u003d\u003cvalue\u003e,ip-version\u003d{4,6} default 4"},{"line_number":134,"context_line":"    (repeat option to set multiple extra DHCP options)"},{"line_number":135,"context_line":""}],"source_content_type":"text/x-rst","patch_set":34,"id":"7f231b9d_b9d5341e","line":132,"range":{"start_line":132,"start_character":15,"end_line":132,"end_character":22},"updated":"2017-06-19 05:13:03.000000000","message":"-\u003e option","commit_id":"d7fd29382a753ec1e547ab007fd579b6de6e8d64"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"dc004fded2e40bebd68abca9fc7fb5ffb9964a70","unresolved":false,"context_lines":[{"line_number":239,"context_line":"        [--dns-name \u003cdns-name\u003e]"},{"line_number":240,"context_line":"        [--allowed-address ip-address\u003d\u003cip-address\u003e[,mac-address\u003d\u003cmac-address\u003e]]"},{"line_number":241,"context_line":"        [--no-allowed-address]"},{"line_number":242,"context_line":"        [--dhcp-option \u003cdhcp-options\u003e [ ,\u003cdhcp-options\u003e]]"},{"line_number":243,"context_line":"        [--no-dhcp-options]"},{"line_number":244,"context_line":"        \u003cport\u003e"},{"line_number":245,"context_line":""}],"source_content_type":"text/x-rst","patch_set":34,"id":"7f231b9d_d9e910e3","line":242,"range":{"start_line":242,"start_character":23,"end_line":242,"end_character":56},"updated":"2017-06-19 05:13:03.000000000","message":"no spaces are allowed inside the argument value.","commit_id":"d7fd29382a753ec1e547ab007fd579b6de6e8d64"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"dc004fded2e40bebd68abca9fc7fb5ffb9964a70","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        [--allowed-address ip-address\u003d\u003cip-address\u003e[,mac-address\u003d\u003cmac-address\u003e]]"},{"line_number":241,"context_line":"        [--no-allowed-address]"},{"line_number":242,"context_line":"        [--dhcp-option \u003cdhcp-options\u003e [ ,\u003cdhcp-options\u003e]]"},{"line_number":243,"context_line":"        [--no-dhcp-options]"},{"line_number":244,"context_line":"        \u003cport\u003e"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":".. option:: --description \u003cdescription\u003e"}],"source_content_type":"text/x-rst","patch_set":34,"id":"7f231b9d_79db1c4e","line":243,"range":{"start_line":243,"start_character":19,"end_line":243,"end_character":26},"updated":"2017-06-19 05:13:03.000000000","message":"-\u003e option","commit_id":"d7fd29382a753ec1e547ab007fd579b6de6e8d64"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"dc004fded2e40bebd68abca9fc7fb5ffb9964a70","unresolved":false,"context_lines":[{"line_number":344,"context_line":"    (Specify both --allowed-address and --no-allowed-address"},{"line_number":345,"context_line":"    to overwrite the current allowed-address pairs)"},{"line_number":346,"context_line":""},{"line_number":347,"context_line":".. option:: --dhcp-option \u003cdhcp-options\u003e"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    Extra DHCP options to be assigned to this port: name\u003d\u003cdhcp-option-name\u003e,"},{"line_number":350,"context_line":"    value\u003d\u003cvalue\u003e,ip-version\u003d{4,6} default 4"}],"source_content_type":"text/x-rst","patch_set":34,"id":"7f231b9d_b9be54d2","line":347,"range":{"start_line":347,"start_character":27,"end_line":347,"end_character":39},"updated":"2017-06-19 05:13:03.000000000","message":"-\u003e dhcp-option","commit_id":"d7fd29382a753ec1e547ab007fd579b6de6e8d64"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"dc004fded2e40bebd68abca9fc7fb5ffb9964a70","unresolved":false,"context_lines":[{"line_number":346,"context_line":""},{"line_number":347,"context_line":".. option:: --dhcp-option \u003cdhcp-options\u003e"},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"    Extra DHCP options to be assigned to this port: name\u003d\u003cdhcp-option-name\u003e,"},{"line_number":350,"context_line":"    value\u003d\u003cvalue\u003e,ip-version\u003d{4,6} default 4"},{"line_number":351,"context_line":"    (repeat option to set multiple extra DHCP options)"},{"line_number":352,"context_line":""}],"source_content_type":"text/x-rst","patch_set":34,"id":"7f231b9d_79b43cf2","line":349,"range":{"start_line":349,"start_character":15,"end_line":349,"end_character":22},"updated":"2017-06-19 05:13:03.000000000","message":"-\u003e option","commit_id":"d7fd29382a753ec1e547ab007fd579b6de6e8d64"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"dc004fded2e40bebd68abca9fc7fb5ffb9964a70","unresolved":false,"context_lines":[{"line_number":350,"context_line":"    value\u003d\u003cvalue\u003e,ip-version\u003d{4,6} default 4"},{"line_number":351,"context_line":"    (repeat option to set multiple extra DHCP options)"},{"line_number":352,"context_line":""},{"line_number":353,"context_line":".. option:: --no-dhcp-options"},{"line_number":354,"context_line":""},{"line_number":355,"context_line":"    Clear existing extra DHCP options associated with this port"},{"line_number":356,"context_line":""}],"source_content_type":"text/x-rst","patch_set":34,"id":"7f231b9d_59b740f6","line":353,"range":{"start_line":353,"start_character":12,"end_line":353,"end_character":29},"updated":"2017-06-19 05:13:03.000000000","message":"--no-dhcp-option","commit_id":"d7fd29382a753ec1e547ab007fd579b6de6e8d64"}],"openstackclient/network/v2/port.py":[{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"b42b10be1c62d6dc59f7b704350bb3e89cd6525a","unresolved":false,"context_lines":[{"line_number":233,"context_line":"        action\u003dparseractions.MultiKeyValueAction,"},{"line_number":234,"context_line":"        dest\u003d\u0027extra_dhcp_opts\u0027,"},{"line_number":235,"context_line":"        required_keys\u003d[\u0027opt_name\u0027],"},{"line_number":236,"context_line":"        optional_keys\u003d[\u0027opt_value\u0027, \u0027ip_version\u0027],"},{"line_number":237,"context_line":"        help\u003d_(\u0027Extra dhcp options to be assigned to this port: \u0027"},{"line_number":238,"context_line":"               \u0027opt_name\u003d\u003cdhcp_option_name\u003e,opt_value\u003d\u003cvalue\u003e,\u0027"},{"line_number":239,"context_line":"               \u0027ip_version\u003d{4,6}. (You can repeat this option.)\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ac06dbe_d2f19196","line":236,"range":{"start_line":236,"start_character":24,"end_line":236,"end_character":33},"updated":"2016-08-24 07:09:39.000000000","message":"Is this optional ?  You said name and value should come in pairs.","commit_id":"885e6a134736cf1f7fb5de495eecf1820ea9bba6"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"e3bc969768fefa1bb859bdb39572f368324db941","unresolved":false,"context_lines":[{"line_number":233,"context_line":"        action\u003dparseractions.MultiKeyValueAction,"},{"line_number":234,"context_line":"        dest\u003d\u0027extra_dhcp_opts\u0027,"},{"line_number":235,"context_line":"        required_keys\u003d[\u0027opt_name\u0027],"},{"line_number":236,"context_line":"        optional_keys\u003d[\u0027opt_value\u0027, \u0027ip_version\u0027],"},{"line_number":237,"context_line":"        help\u003d_(\u0027Extra dhcp options to be assigned to this port: \u0027"},{"line_number":238,"context_line":"               \u0027opt_name\u003d\u003cdhcp_option_name\u003e,opt_value\u003d\u003cvalue\u003e,\u0027"},{"line_number":239,"context_line":"               \u0027ip_version\u003d{4,6}. (You can repeat this option.)\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ac06dbe_e5691f27","line":236,"range":{"start_line":236,"start_character":24,"end_line":236,"end_character":33},"in_reply_to":"1ac06dbe_d2f19196","updated":"2016-08-25 06:14:16.000000000","message":"Yes, in my understanding, it\u0027s optional key. If \u0027opt_value\u0027 doesn\u0027t specific on arguments of \u0027port create\u0027 or \u0027port set\u0027 command, then value of \u0027opt_value\u0027 is set None.","commit_id":"885e6a134736cf1f7fb5de495eecf1820ea9bba6"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"b42b10be1c62d6dc59f7b704350bb3e89cd6525a","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        required_keys\u003d[\u0027opt_name\u0027],"},{"line_number":236,"context_line":"        optional_keys\u003d[\u0027opt_value\u0027, \u0027ip_version\u0027],"},{"line_number":237,"context_line":"        help\u003d_(\u0027Extra dhcp options to be assigned to this port: \u0027"},{"line_number":238,"context_line":"               \u0027opt_name\u003d\u003cdhcp_option_name\u003e,opt_value\u003d\u003cvalue\u003e,\u0027"},{"line_number":239,"context_line":"               \u0027ip_version\u003d{4,6}. (You can repeat this option.)\u0027))"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"def _get_extradhcp_attr(parsed_args, attrs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ac06dbe_92571957","line":239,"range":{"start_line":238,"start_character":15,"end_line":239,"end_character":32},"updated":"2016-08-24 07:09:39.000000000","message":"Actually I have been thinking that users may not know what exactly options they can specify. Can we list up all options here in the help message ?\n\nI think there are similar problems in OSC. For example, in many \"xxx set\" commands, we can set property. But we don\u0027t list up all properties in help message.","commit_id":"885e6a134736cf1f7fb5de495eecf1820ea9bba6"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"e3bc969768fefa1bb859bdb39572f368324db941","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        required_keys\u003d[\u0027opt_name\u0027],"},{"line_number":236,"context_line":"        optional_keys\u003d[\u0027opt_value\u0027, \u0027ip_version\u0027],"},{"line_number":237,"context_line":"        help\u003d_(\u0027Extra dhcp options to be assigned to this port: \u0027"},{"line_number":238,"context_line":"               \u0027opt_name\u003d\u003cdhcp_option_name\u003e,opt_value\u003d\u003cvalue\u003e,\u0027"},{"line_number":239,"context_line":"               \u0027ip_version\u003d{4,6}. (You can repeat this option.)\u0027))"},{"line_number":240,"context_line":""},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"def _get_extradhcp_attr(parsed_args, attrs):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ac06dbe_b108052a","line":239,"range":{"start_line":238,"start_character":15,"end_line":239,"end_character":32},"in_reply_to":"1ac06dbe_92571957","updated":"2016-08-25 06:14:16.000000000","message":"\u003e Actually I have been thinking that users may not know what exactly options they can specify. Can we list up all options here in the help message ?\n\nThis idea is great. However, in this case we are not sure \"how many options\". So i think we should keep this message.","commit_id":"885e6a134736cf1f7fb5de495eecf1820ea9bba6"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"b42b10be1c62d6dc59f7b704350bb3e89cd6525a","unresolved":false,"context_lines":[{"line_number":249,"context_line":"        opt_ele \u003d {}"},{"line_number":250,"context_line":"        edo_err_msg \u003d _(\"Invalid --extra-dhcp-opt option, can only be: \""},{"line_number":251,"context_line":"                        \"opt_name\u003d\u003cdhcp_option_name\u003e,opt_value\u003d\u003cvalue\u003e,\""},{"line_number":252,"context_line":"                        \"ip_version\u003d{4,6}. \""},{"line_number":253,"context_line":"                        \"(You can repeat this option.)\")"},{"line_number":254,"context_line":"        for opt in parsed_args.extra_dhcp_opts:"},{"line_number":255,"context_line":"            opt_ele.update(opt)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ac06dbe_52b5a17b","line":252,"range":{"start_line":252,"start_character":24,"end_line":252,"end_character":35},"updated":"2016-08-24 07:09:39.000000000","message":"If ip_version is optional, it must have a default value, 4 I think. So please also doc this in help and error msg.","commit_id":"885e6a134736cf1f7fb5de495eecf1820ea9bba6"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"e3bc969768fefa1bb859bdb39572f368324db941","unresolved":false,"context_lines":[{"line_number":249,"context_line":"        opt_ele \u003d {}"},{"line_number":250,"context_line":"        edo_err_msg \u003d _(\"Invalid --extra-dhcp-opt option, can only be: \""},{"line_number":251,"context_line":"                        \"opt_name\u003d\u003cdhcp_option_name\u003e,opt_value\u003d\u003cvalue\u003e,\""},{"line_number":252,"context_line":"                        \"ip_version\u003d{4,6}. \""},{"line_number":253,"context_line":"                        \"(You can repeat this option.)\")"},{"line_number":254,"context_line":"        for opt in parsed_args.extra_dhcp_opts:"},{"line_number":255,"context_line":"            opt_ele.update(opt)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ac06dbe_d1d94185","line":252,"range":{"start_line":252,"start_character":24,"end_line":252,"end_character":35},"in_reply_to":"1ac06dbe_52b5a17b","updated":"2016-08-25 06:14:16.000000000","message":"Although ip_version is optional, \u0027ip_version\u0027 attribute doesn\u0027t specify default value [1].  \nhttps://github.com/openstack/neutron/blob/master/neutron/extensions/extra_dhcp_opt.py#L46.","commit_id":"885e6a134736cf1f7fb5de495eecf1820ea9bba6"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"b42b10be1c62d6dc59f7b704350bb3e89cd6525a","unresolved":false,"context_lines":[{"line_number":253,"context_line":"                        \"(You can repeat this option.)\")"},{"line_number":254,"context_line":"        for opt in parsed_args.extra_dhcp_opts:"},{"line_number":255,"context_line":"            opt_ele.update(opt)"},{"line_number":256,"context_line":"            if (\u0027opt_name\u0027 in opt_ele and"},{"line_number":257,"context_line":"                    (\u0027opt_value\u0027 in opt_ele or \u0027ip_version\u0027 in opt_ele)):"},{"line_number":258,"context_line":"                if not opt_ele.get(\u0027opt_value\u0027, None):"},{"line_number":259,"context_line":"                    opt_ele[\u0027opt_value\u0027] \u003d None"},{"line_number":260,"context_line":"                ops.append(opt_ele)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ac06dbe_6d3f20b4","line":257,"range":{"start_line":256,"start_character":17,"end_line":257,"end_character":71},"updated":"2016-08-24 07:09:39.000000000","message":"Do we need this check ?  parseractions.MultiKeyValueAction has already checked it for us, right ?","commit_id":"885e6a134736cf1f7fb5de495eecf1820ea9bba6"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"e3bc969768fefa1bb859bdb39572f368324db941","unresolved":false,"context_lines":[{"line_number":253,"context_line":"                        \"(You can repeat this option.)\")"},{"line_number":254,"context_line":"        for opt in parsed_args.extra_dhcp_opts:"},{"line_number":255,"context_line":"            opt_ele.update(opt)"},{"line_number":256,"context_line":"            if (\u0027opt_name\u0027 in opt_ele and"},{"line_number":257,"context_line":"                    (\u0027opt_value\u0027 in opt_ele or \u0027ip_version\u0027 in opt_ele)):"},{"line_number":258,"context_line":"                if not opt_ele.get(\u0027opt_value\u0027, None):"},{"line_number":259,"context_line":"                    opt_ele[\u0027opt_value\u0027] \u003d None"},{"line_number":260,"context_line":"                ops.append(opt_ele)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ac06dbe_d164a1e6","line":257,"range":{"start_line":256,"start_character":17,"end_line":257,"end_character":71},"in_reply_to":"1ac06dbe_6d3f20b4","updated":"2016-08-25 06:14:16.000000000","message":"Actually, I\u0027m not sure that parseractions.MultiKeyValueAction will check it for us. Do you suggest some sample cases.","commit_id":"885e6a134736cf1f7fb5de495eecf1820ea9bba6"},{"author":{"_account_id":19554,"name":"Nam","email":"namnh68@fsoft.com.vn","username":"namnh"},"change_message_id":"f7b8e74e1dfde43f06c27aafd801d8ffcc1eea30","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        )"},{"line_number":327,"context_line":"        # TODO(singhj): Add support for extended options:"},{"line_number":328,"context_line":"        # qos,security groups,dhcp, address pairs"},{"line_number":329,"context_line":"        _add_extradhcp_option(parser)"},{"line_number":330,"context_line":"        return parser"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3ac371cc_4a6a6cef","line":329,"range":{"start_line":329,"start_character":8,"end_line":329,"end_character":37},"updated":"2016-08-17 07:19:02.000000000","message":"IMO, we don\u0027t really need to create a new function and call the function. But this is not a problem. It depend on the core-reviews. Thanks for your effor. Good for you.","commit_id":"885e6a134736cf1f7fb5de495eecf1820ea9bba6"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"e3bc969768fefa1bb859bdb39572f368324db941","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        )"},{"line_number":327,"context_line":"        # TODO(singhj): Add support for extended options:"},{"line_number":328,"context_line":"        # qos,security groups,dhcp, address pairs"},{"line_number":329,"context_line":"        _add_extradhcp_option(parser)"},{"line_number":330,"context_line":"        return parser"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ac06dbe_f62433c7","line":329,"range":{"start_line":329,"start_character":8,"end_line":329,"end_character":37},"in_reply_to":"1ac06dbe_d2b8712c","updated":"2016-08-25 06:14:16.000000000","message":"I want to reuse code for port create and port set. So I make this as a function. How do you think?","commit_id":"885e6a134736cf1f7fb5de495eecf1820ea9bba6"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"b42b10be1c62d6dc59f7b704350bb3e89cd6525a","unresolved":false,"context_lines":[{"line_number":326,"context_line":"        )"},{"line_number":327,"context_line":"        # TODO(singhj): Add support for extended options:"},{"line_number":328,"context_line":"        # qos,security groups,dhcp, address pairs"},{"line_number":329,"context_line":"        _add_extradhcp_option(parser)"},{"line_number":330,"context_line":"        return parser"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ac06dbe_d2b8712c","line":329,"range":{"start_line":329,"start_character":8,"end_line":329,"end_character":37},"in_reply_to":"3ac371cc_4a6a6cef","updated":"2016-08-24 07:09:39.000000000","message":"Well, +1. I don\u0027t think we need this function either. :)","commit_id":"885e6a134736cf1f7fb5de495eecf1820ea9bba6"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"a76162941898306b277fe14035f5ba593a67c192","unresolved":false,"context_lines":[{"line_number":229,"context_line":"    extra_dhcp \u003d parser.add_mutually_exclusive_group()"},{"line_number":230,"context_line":"    extra_dhcp.add_argument("},{"line_number":231,"context_line":"        \u0027--extra-dhcp-opt\u0027,"},{"line_number":232,"context_line":"        default\u003d[],"},{"line_number":233,"context_line":"        action\u003dparseractions.MultiKeyValueAction,"},{"line_number":234,"context_line":"        dest\u003d\u0027extra_dhcp_opts\u0027,"},{"line_number":235,"context_line":"        required_keys\u003d[\u0027opt_name\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a98d1f4_83ff8e33","line":232,"updated":"2016-09-28 17:52:06.000000000","message":"Is a default really necessary?","commit_id":"8baee11b6b48f7deebb3b5c14f013d645d8f2cd4"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"26245bd7c85dc885e7577d4af2eb13e8bd84e493","unresolved":false,"context_lines":[{"line_number":229,"context_line":"    extra_dhcp \u003d parser.add_mutually_exclusive_group()"},{"line_number":230,"context_line":"    extra_dhcp.add_argument("},{"line_number":231,"context_line":"        \u0027--extra-dhcp-opt\u0027,"},{"line_number":232,"context_line":"        default\u003d[],"},{"line_number":233,"context_line":"        action\u003dparseractions.MultiKeyValueAction,"},{"line_number":234,"context_line":"        dest\u003d\u0027extra_dhcp_opts\u0027,"},{"line_number":235,"context_line":"        required_keys\u003d[\u0027opt_name\u0027],"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a98d1f4_df3bc936","line":232,"in_reply_to":"3a98d1f4_83ff8e33","updated":"2016-09-30 08:38:41.000000000","message":"Actually, It\u0027s not necessary. Thanks!","commit_id":"8baee11b6b48f7deebb3b5c14f013d645d8f2cd4"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"a76162941898306b277fe14035f5ba593a67c192","unresolved":false,"context_lines":[{"line_number":324,"context_line":"            help\u003d_(\"Name of this port\")"},{"line_number":325,"context_line":"        )"},{"line_number":326,"context_line":"        # TODO(singhj): Add support for extended options:"},{"line_number":327,"context_line":"        # qos,security groups,dhcp, address pairs"},{"line_number":328,"context_line":"        _add_extradhcp_option(parser)"},{"line_number":329,"context_line":"        return parser"},{"line_number":330,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a98d1f4_03e29ed5","line":327,"range":{"start_line":327,"start_character":30,"end_line":327,"end_character":34},"updated":"2016-09-28 17:52:06.000000000","message":"You can remove this TODO.","commit_id":"8baee11b6b48f7deebb3b5c14f013d645d8f2cd4"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"26245bd7c85dc885e7577d4af2eb13e8bd84e493","unresolved":false,"context_lines":[{"line_number":324,"context_line":"            help\u003d_(\"Name of this port\")"},{"line_number":325,"context_line":"        )"},{"line_number":326,"context_line":"        # TODO(singhj): Add support for extended options:"},{"line_number":327,"context_line":"        # qos,security groups,dhcp, address pairs"},{"line_number":328,"context_line":"        _add_extradhcp_option(parser)"},{"line_number":329,"context_line":"        return parser"},{"line_number":330,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3a98d1f4_1f4611bf","line":327,"range":{"start_line":327,"start_character":30,"end_line":327,"end_character":34},"in_reply_to":"3a98d1f4_03e29ed5","updated":"2016-09-30 08:38:41.000000000","message":"Done","commit_id":"8baee11b6b48f7deebb3b5c14f013d645d8f2cd4"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"a76162941898306b277fe14035f5ba593a67c192","unresolved":false,"context_lines":[{"line_number":498,"context_line":"            metavar\u003d\"\u003cport\u003e\","},{"line_number":499,"context_line":"            help\u003d_(\"Port to modify (name or ID)\")"},{"line_number":500,"context_line":"        )"},{"line_number":501,"context_line":"        _add_extradhcp_option(parser)"},{"line_number":502,"context_line":"        return parser"},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a98d1f4_e3493290","line":501,"updated":"2016-09-28 17:52:06.000000000","message":"Please support --no-dhcp-option to allow all existing information to be cleared.","commit_id":"8baee11b6b48f7deebb3b5c14f013d645d8f2cd4"},{"author":{"_account_id":15471,"name":"Nguyen Phuong An","email":"annp.cs51@gmail.com","username":"An-FVL"},"change_message_id":"26245bd7c85dc885e7577d4af2eb13e8bd84e493","unresolved":false,"context_lines":[{"line_number":498,"context_line":"            metavar\u003d\"\u003cport\u003e\","},{"line_number":499,"context_line":"            help\u003d_(\"Port to modify (name or ID)\")"},{"line_number":500,"context_line":"        )"},{"line_number":501,"context_line":"        _add_extradhcp_option(parser)"},{"line_number":502,"context_line":"        return parser"},{"line_number":503,"context_line":""},{"line_number":504,"context_line":"    def take_action(self, parsed_args):"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a98d1f4_5f16d9a7","line":501,"in_reply_to":"3a98d1f4_e3493290","updated":"2016-09-30 08:38:41.000000000","message":"Done","commit_id":"8baee11b6b48f7deebb3b5c14f013d645d8f2cd4"},{"author":{"_account_id":17734,"name":"Shih-Hao Li","email":"shihli@vmware.com","username":"shli"},"change_message_id":"eb865b6df01a18474809f6c6dd9ea4cab5ebcb25","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        super(KeywithMultiValuedValueAction, self).__init__("},{"line_number":108,"context_line":"           option_strings,dest,nargs,required_keys,"},{"line_number":109,"context_line":"           optional_keys)"},{"line_number":110,"context_line":"            "},{"line_number":111,"context_line":"    def __call__(self, parser, namespace, values, option_string\u003dNone):"},{"line_number":112,"context_line":"        \"\"\" Overwrite the __call__ function of MultiKeyValueAction"},{"line_number":113,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"5a3905b3_53164156","line":110,"updated":"2017-01-25 06:57:54.000000000","message":"extra spaces","commit_id":"71245f9c08238a3b5b6e561bc6309910300e3e29"},{"author":{"_account_id":17734,"name":"Shih-Hao Li","email":"shihli@vmware.com","username":"shli"},"change_message_id":"eb865b6df01a18474809f6c6dd9ea4cab5ebcb25","unresolved":false,"context_lines":[{"line_number":119,"context_line":"            setattr(namespace, self.dest, [])"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        params \u003d {}"},{"line_number":122,"context_line":"        key_list \u003d \u0027\u0027"},{"line_number":123,"context_line":"        for kv in values.split(\u0027,\u0027):"},{"line_number":124,"context_line":"            # Add value if an assignment else raise ArgumentTypeError"},{"line_number":125,"context_line":"            if \u0027\u003d\u0027 in kv:"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a3905b3_5302c170","line":122,"updated":"2017-01-25 06:57:54.000000000","message":"\u0027key_list\u0027 sounds confusing. In your code, it is not a list of keys, but a single key.","commit_id":"71245f9c08238a3b5b6e561bc6309910300e3e29"},{"author":{"_account_id":17734,"name":"Shih-Hao Li","email":"shihli@vmware.com","username":"shli"},"change_message_id":"eb865b6df01a18474809f6c6dd9ea4cab5ebcb25","unresolved":false,"context_lines":[{"line_number":135,"context_line":"            # If the \u0027,\u0027 split does not have key\u003dvalue pair, then it means the"},{"line_number":136,"context_line":"            # current value is a part of the previous key\u003dvalue pair, so append"},{"line_number":137,"context_line":"            # it."},{"line_number":138,"context_line":"               params[key_list] \u003d \"%s,%s\" % (params[key_list], kv)"},{"line_number":139,"context_line":"        # Check key validation"},{"line_number":140,"context_line":"        valid_keys \u003d self.required_keys | self.optional_keys"},{"line_number":141,"context_line":"        if valid_keys:"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a3905b3_f393adfe","line":138,"updated":"2017-01-25 06:57:54.000000000","message":"I think you should check if key_list is empty (such as missing value).\nEven though it will be detected as an invalid key,\nbut empty string can not be seen in the error message.","commit_id":"71245f9c08238a3b5b6e561bc6309910300e3e29"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"0b01908bac598c6c1180dfe8de1338bffe3ddd59","unresolved":false,"context_lines":[{"line_number":135,"context_line":"            # If the \u0027,\u0027 split does not have key\u003dvalue pair, then it means the"},{"line_number":136,"context_line":"            # current value is a part of the previous key\u003dvalue pair, so append"},{"line_number":137,"context_line":"            # it."},{"line_number":138,"context_line":"               params[key_list] \u003d \"%s,%s\" % (params[key_list], kv)"},{"line_number":139,"context_line":"        # Check key validation"},{"line_number":140,"context_line":"        valid_keys \u003d self.required_keys | self.optional_keys"},{"line_number":141,"context_line":"        if valid_keys:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a461143_ab588933","line":138,"in_reply_to":"3a461143_864b1eb0","updated":"2017-01-27 07:18:49.000000000","message":"Fixed in latest version","commit_id":"71245f9c08238a3b5b6e561bc6309910300e3e29"},{"author":{"_account_id":17734,"name":"Shih-Hao Li","email":"shihli@vmware.com","username":"shli"},"change_message_id":"0a68babfcfe86c6e6c6f18e968cf873faf685d11","unresolved":false,"context_lines":[{"line_number":135,"context_line":"            # If the \u0027,\u0027 split does not have key\u003dvalue pair, then it means the"},{"line_number":136,"context_line":"            # current value is a part of the previous key\u003dvalue pair, so append"},{"line_number":137,"context_line":"            # it."},{"line_number":138,"context_line":"               params[key_list] \u003d \"%s,%s\" % (params[key_list], kv)"},{"line_number":139,"context_line":"        # Check key validation"},{"line_number":140,"context_line":"        valid_keys \u003d self.required_keys | self.optional_keys"},{"line_number":141,"context_line":"        if valid_keys:"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a3905b3_6e4a7029","line":138,"in_reply_to":"5a3905b3_6e40b036","updated":"2017-01-25 07:13:14.000000000","message":"key_list could be empty if users misspell \"aa123,bb\u003d456\" for \"aa\u003d123,bb\u003d456\".","commit_id":"71245f9c08238a3b5b6e561bc6309910300e3e29"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"746eb6e4f1405a570f4614b24e6de32c9353052e","unresolved":false,"context_lines":[{"line_number":135,"context_line":"            # If the \u0027,\u0027 split does not have key\u003dvalue pair, then it means the"},{"line_number":136,"context_line":"            # current value is a part of the previous key\u003dvalue pair, so append"},{"line_number":137,"context_line":"            # it."},{"line_number":138,"context_line":"               params[key_list] \u003d \"%s,%s\" % (params[key_list], kv)"},{"line_number":139,"context_line":"        # Check key validation"},{"line_number":140,"context_line":"        valid_keys \u003d self.required_keys | self.optional_keys"},{"line_number":141,"context_line":"        if valid_keys:"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a3905b3_d79f784e","line":138,"in_reply_to":"5a3905b3_6e4a7029","updated":"2017-01-25 09:08:10.000000000","message":"Interesting use case, but in that scenario, isnt that a user misoperation ?","commit_id":"71245f9c08238a3b5b6e561bc6309910300e3e29"},{"author":{"_account_id":17734,"name":"Shih-Hao Li","email":"shihli@vmware.com","username":"shli"},"change_message_id":"0d188b3107727de5651605b010bf97b4aa4cf6aa","unresolved":false,"context_lines":[{"line_number":135,"context_line":"            # If the \u0027,\u0027 split does not have key\u003dvalue pair, then it means the"},{"line_number":136,"context_line":"            # current value is a part of the previous key\u003dvalue pair, so append"},{"line_number":137,"context_line":"            # it."},{"line_number":138,"context_line":"               params[key_list] \u003d \"%s,%s\" % (params[key_list], kv)"},{"line_number":139,"context_line":"        # Check key validation"},{"line_number":140,"context_line":"        valid_keys \u003d self.required_keys | self.optional_keys"},{"line_number":141,"context_line":"        if valid_keys:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a461143_864b1eb0","line":138,"in_reply_to":"5a3905b3_d79f784e","updated":"2017-01-25 15:09:10.000000000","message":"Yes, it is a user error. The code should be able to handle negative cases and report appropriate messages, right?","commit_id":"71245f9c08238a3b5b6e561bc6309910300e3e29"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"8ed0192cb2fb8eab5e2ac55a386d5e080882ebfa","unresolved":false,"context_lines":[{"line_number":135,"context_line":"            # If the \u0027,\u0027 split does not have key\u003dvalue pair, then it means the"},{"line_number":136,"context_line":"            # current value is a part of the previous key\u003dvalue pair, so append"},{"line_number":137,"context_line":"            # it."},{"line_number":138,"context_line":"               params[key_list] \u003d \"%s,%s\" % (params[key_list], kv)"},{"line_number":139,"context_line":"        # Check key validation"},{"line_number":140,"context_line":"        valid_keys \u003d self.required_keys | self.optional_keys"},{"line_number":141,"context_line":"        if valid_keys:"}],"source_content_type":"text/x-python","patch_set":10,"id":"5a3905b3_6e40b036","line":138,"in_reply_to":"5a3905b3_f393adfe","updated":"2017-01-25 06:59:33.000000000","message":"Can key_list be empty?\nKey_list id kv_list[0]\nAnd if kv_list[0] is \u0027\u0027 , then ArgumentTypeError is reported in Line 130 :)","commit_id":"71245f9c08238a3b5b6e561bc6309910300e3e29"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"52c09603d5bfa527e7f1737e4d72c6daa2f10692","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                raise argparse.ArgumentTypeError(msg)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"class KeywithMultiValuedValueAction(parseractions.MultiKeyValueAction):"},{"line_number":100,"context_line":"    \"\"\"Custom action to parse arguments from a set of key\u003dvalue pair"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    Ensures that ``dest`` is a dict"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a461143_fea53fb5","line":99,"updated":"2017-01-25 18:30:12.000000000","message":"This should go into osc-lib once it is finalized.  Also the name could be more descriptive, maybe MultiKeyValueCommaAction to remind us that it handles commas differently.","commit_id":"251f98682ca993c0e587235bc1e8b7baac27cb2e"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"8a770729540cf3ebfa84e6710998b17f34d0b342","unresolved":false,"context_lines":[{"line_number":96,"context_line":"                raise argparse.ArgumentTypeError(msg)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"class KeywithMultiValuedValueAction(parseractions.MultiKeyValueAction):"},{"line_number":100,"context_line":"    \"\"\"Custom action to parse arguments from a set of key\u003dvalue pair"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    Ensures that ``dest`` is a dict"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a461143_9fb503cf","line":99,"in_reply_to":"3a461143_fea53fb5","updated":"2017-01-26 03:34:32.000000000","message":"Ok, sure. \nI will put up a patch for osc-lib , and it can be merged once the freeze opens up :)\nI will change the name as well","commit_id":"251f98682ca993c0e587235bc1e8b7baac27cb2e"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"52c09603d5bfa527e7f1737e4d72c6daa2f10692","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                 required_keys\u003dNone, optional_keys\u003dNone, **kwargs):"},{"line_number":107,"context_line":"        super(KeywithMultiValuedValueAction, self).__init__("},{"line_number":108,"context_line":"            option_strings, dest,nargs, required_keys,"},{"line_number":109,"context_line":"            optional_keys)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def __call__(self, parser, namespace, values, option_string\u003dNone):"},{"line_number":112,"context_line":"        \"\"\"Overwrite the __call__ function of MultiKeyValueAction"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a461143_fe08df93","line":109,"updated":"2017-01-25 18:30:12.000000000","message":"I\u0027m not sure why __init__() exists here, it appears that kwargs is being kep from being passed to the superclass?","commit_id":"251f98682ca993c0e587235bc1e8b7baac27cb2e"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"30370a48dbbb5637625e1aefebc333cf3782ce89","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                 required_keys\u003dNone, optional_keys\u003dNone, **kwargs):"},{"line_number":107,"context_line":"        super(KeywithMultiValuedValueAction, self).__init__("},{"line_number":108,"context_line":"            option_strings, dest,nargs, required_keys,"},{"line_number":109,"context_line":"            optional_keys)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def __call__(self, parser, namespace, values, option_string\u003dNone):"},{"line_number":112,"context_line":"        \"\"\"Overwrite the __call__ function of MultiKeyValueAction"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a461143_4bb6453e","line":109,"in_reply_to":"3a461143_5f09db94","updated":"2018-01-10 05:20:38.000000000","message":"Done","commit_id":"251f98682ca993c0e587235bc1e8b7baac27cb2e"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"8a770729540cf3ebfa84e6710998b17f34d0b342","unresolved":false,"context_lines":[{"line_number":106,"context_line":"                 required_keys\u003dNone, optional_keys\u003dNone, **kwargs):"},{"line_number":107,"context_line":"        super(KeywithMultiValuedValueAction, self).__init__("},{"line_number":108,"context_line":"            option_strings, dest,nargs, required_keys,"},{"line_number":109,"context_line":"            optional_keys)"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def __call__(self, parser, namespace, values, option_string\u003dNone):"},{"line_number":112,"context_line":"        \"\"\"Overwrite the __call__ function of MultiKeyValueAction"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a461143_5f09db94","line":109,"in_reply_to":"3a461143_fe08df93","updated":"2017-01-26 03:34:32.000000000","message":"I think we can skip the init here, as the derived class should call the base class\u0027s __init__","commit_id":"251f98682ca993c0e587235bc1e8b7baac27cb2e"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"52c09603d5bfa527e7f1737e4d72c6daa2f10692","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                # If the \u0027,\u0027 split does not have key\u003dvalue pair, then it means the"},{"line_number":136,"context_line":"                # current value is a part of the previous key\u003dvalue pair, so append"},{"line_number":137,"context_line":"                # it."},{"line_number":138,"context_line":"                params[key] \u003d \"%s,%s\" % (params[key], kv)"},{"line_number":139,"context_line":"        # Check key validation"},{"line_number":140,"context_line":"        valid_keys \u003d self.required_keys | self.optional_keys"},{"line_number":141,"context_line":"        if valid_keys:"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a461143_bee2d79d","line":138,"updated":"2017-01-25 18:30:12.000000000","message":"make sure to have a test that covers the case of input like \"arg1,value\u003darg2,arg3,extra\u003dfoo\"  where the first split(\u0027,\u0027) return is not a k\u003dv argument.","commit_id":"251f98682ca993c0e587235bc1e8b7baac27cb2e"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"8a770729540cf3ebfa84e6710998b17f34d0b342","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                # If the \u0027,\u0027 split does not have key\u003dvalue pair, then it means the"},{"line_number":136,"context_line":"                # current value is a part of the previous key\u003dvalue pair, so append"},{"line_number":137,"context_line":"                # it."},{"line_number":138,"context_line":"                params[key] \u003d \"%s,%s\" % (params[key], kv)"},{"line_number":139,"context_line":"        # Check key validation"},{"line_number":140,"context_line":"        valid_keys \u003d self.required_keys | self.optional_keys"},{"line_number":141,"context_line":"        if valid_keys:"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a461143_bff8ff7d","line":138,"in_reply_to":"3a461143_bee2d79d","updated":"2017-01-26 03:34:32.000000000","message":"ok, will look into it","commit_id":"251f98682ca993c0e587235bc1e8b7baac27cb2e"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"30370a48dbbb5637625e1aefebc333cf3782ce89","unresolved":false,"context_lines":[{"line_number":135,"context_line":"                # If the \u0027,\u0027 split does not have key\u003dvalue pair, then it means the"},{"line_number":136,"context_line":"                # current value is a part of the previous key\u003dvalue pair, so append"},{"line_number":137,"context_line":"                # it."},{"line_number":138,"context_line":"                params[key] \u003d \"%s,%s\" % (params[key], kv)"},{"line_number":139,"context_line":"        # Check key validation"},{"line_number":140,"context_line":"        valid_keys \u003d self.required_keys | self.optional_keys"},{"line_number":141,"context_line":"        if valid_keys:"}],"source_content_type":"text/x-python","patch_set":13,"id":"3a461143_6b830157","line":138,"in_reply_to":"3a461143_bff8ff7d","updated":"2018-01-10 05:20:38.000000000","message":"Done","commit_id":"251f98682ca993c0e587235bc1e8b7baac27cb2e"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"8e2c44c5a068d86545bc7f69d1d71265b4edf61a","unresolved":false,"context_lines":[{"line_number":282,"context_line":"        if not opt.get(\u0027ip-version\u0027, None):"},{"line_number":283,"context_line":"            opt_ele[\u0027ip_version\u0027] \u003d 4"},{"line_number":284,"context_line":"        else:"},{"line_number":285,"context_line":"            opt_ele[\u0027ip_version\u0027] \u003d int(opt[\u0027ip-version\u0027])"},{"line_number":286,"context_line":"        ops.append(opt_ele)"},{"line_number":287,"context_line":"    return ops"},{"line_number":288,"context_line":""}],"source_content_type":"text/x-python","patch_set":25,"id":"bff0334d_67a02843","line":285,"range":{"start_line":285,"start_character":36,"end_line":285,"end_character":39},"updated":"2017-04-12 10:14:28.000000000","message":"We should check the input is in [\u00274\u0027, \u00276\u0027], avoid the other input trigger the ValueError in runtime, like opt[\u0027ip-version\u0027] \u003d \u0027xx\u0027","commit_id":"195d4b197524211804b083daf7830177917aeb52"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"8e2c44c5a068d86545bc7f69d1d71265b4edf61a","unresolved":false,"context_lines":[{"line_number":397,"context_line":"            metavar\u003d\u0027\u003cdhcp-options\u003e\u0027,"},{"line_number":398,"context_line":"            action\u003dparseractions.MultiKeyValueCommaAction,"},{"line_number":399,"context_line":"            required_keys\u003d[\u0027name\u0027],"},{"line_number":400,"context_line":"            optional_keys\u003d[\u0027value\u0027, \u0027ip-version\u0027],"},{"line_number":401,"context_line":"            help\u003d_(\u0027Extra DHCP options to be assigned to this port: \u0027"},{"line_number":402,"context_line":"                   \u0027name\u003d\u003cdhcp-option-name\u003e,value\u003d\u003cvalue\u003e,ip-version\u003d{4,6} \u0027"},{"line_number":403,"context_line":"                   \u0027defualt 4 (repeat option to set multiple extra \u0027"}],"source_content_type":"text/x-python","patch_set":25,"id":"bff0334d_c78c9437","line":400,"range":{"start_line":400,"start_character":27,"end_line":400,"end_character":34},"updated":"2017-04-12 10:14:28.000000000","message":"Do we have some dhcp options that only need name, but no value?","commit_id":"195d4b197524211804b083daf7830177917aeb52"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"30370a48dbbb5637625e1aefebc333cf3782ce89","unresolved":false,"context_lines":[{"line_number":397,"context_line":"            metavar\u003d\u0027\u003cdhcp-options\u003e\u0027,"},{"line_number":398,"context_line":"            action\u003dparseractions.MultiKeyValueCommaAction,"},{"line_number":399,"context_line":"            required_keys\u003d[\u0027name\u0027],"},{"line_number":400,"context_line":"            optional_keys\u003d[\u0027value\u0027, \u0027ip-version\u0027],"},{"line_number":401,"context_line":"            help\u003d_(\u0027Extra DHCP options to be assigned to this port: \u0027"},{"line_number":402,"context_line":"                   \u0027name\u003d\u003cdhcp-option-name\u003e,value\u003d\u003cvalue\u003e,ip-version\u003d{4,6} \u0027"},{"line_number":403,"context_line":"                   \u0027defualt 4 (repeat option to set multiple extra \u0027"}],"source_content_type":"text/x-python","patch_set":25,"id":"9ff52f3f_34ab3cd7","line":400,"range":{"start_line":400,"start_character":27,"end_line":400,"end_character":34},"in_reply_to":"bff0334d_c78c9437","updated":"2018-01-10 05:20:38.000000000","message":"value can be default :)","commit_id":"195d4b197524211804b083daf7830177917aeb52"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"8e2c44c5a068d86545bc7f69d1d71265b4edf61a","unresolved":false,"context_lines":[{"line_number":840,"context_line":"            optional_keys\u003d[\u0027value\u0027, \u0027ip-version\u0027],"},{"line_number":841,"context_line":"            help\u003d_(\u0027Extra DHCP options which should be removed from this \u0027"},{"line_number":842,"context_line":"                   \u0027port: name\u003d\u003cdhcp-option-name\u003e,value\u003d\u003cvalue\u003e,ip-version\u003d\u0027"},{"line_number":843,"context_line":"                   \u0027{4,6} (repeat option to set multiple extra DHCP options)\u0027))"},{"line_number":844,"context_line":""},{"line_number":845,"context_line":"        parser.add_argument("},{"line_number":846,"context_line":"            \u0027port\u0027,"}],"source_content_type":"text/x-python","patch_set":25,"id":"bff0334d_b3d8ae52","line":843,"updated":"2017-04-12 10:14:28.000000000","message":"we can add \"--all-dhcp-option\" to unset command, it\u0027s a convenient way to clean all dhcp options with one option, it\u0027s recommend, but not required.","commit_id":"195d4b197524211804b083daf7830177917aeb52"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"8e2c44c5a068d86545bc7f69d1d71265b4edf61a","unresolved":false,"context_lines":[{"line_number":913,"context_line":"        if parsed_args.dhcp_options:"},{"line_number":914,"context_line":"            try:"},{"line_number":915,"context_line":"                for dhcp_opt in _convert_dhcp_options(parsed_args):"},{"line_number":916,"context_line":"                    tmp_dhcpoptions.remove(dhcp_opt)"},{"line_number":917,"context_line":"            except ValueError:"},{"line_number":918,"context_line":"                msg \u003d _("},{"line_number":919,"context_line":"                    \"Port does not contain dhcp \""}],"source_content_type":"text/x-python","patch_set":25,"id":"bff0334d_aa8f1728","line":916,"range":{"start_line":916,"start_character":36,"end_line":916,"end_character":42},"updated":"2017-04-12 10:14:28.000000000","message":"dhcp options that return from neutron side always contain \"opt_name\", \"opt_value\" and \"ip_version\" in each item of tmp_dhcpoptions?\n\nIf \"opt_value\" and \"ip_version\" are optional, we will set the default value for them in _convert_dhcp_options(). I want to make sure the neutron server side do the same thing with osc client side, because list.remove() would failed when there are items like:\n\n[{\u0027opt_name\u0027: \u0027xxx\u0027}].remove({\u0027opt_name\u0027: \u0027xxx\u0027, \u0027opt_value\u0027: None, \u0027ip-version\u0027: 4})","commit_id":"195d4b197524211804b083daf7830177917aeb52"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"9c6c71a3da6aeae87f7ea3c4302a7df2924a925b","unresolved":false,"context_lines":[{"line_number":406,"context_line":"                   \"(repeat option to set multiple allowed-address pairs)\")"},{"line_number":407,"context_line":"        )"},{"line_number":408,"context_line":"        parser.add_argument("},{"line_number":409,"context_line":"            \u0027--dhcp-options\u0027,"},{"line_number":410,"context_line":"            metavar\u003d\u0027\u003cdhcp-options\u003e\u0027,"},{"line_number":411,"context_line":"            action\u003dparseractions.MultiKeyValueCommaAction,"},{"line_number":412,"context_line":"            required_keys\u003d[\u0027name\u0027],"}],"source_content_type":"text/x-python","patch_set":29,"id":"5ff73747_fa1a5715","line":409,"range":{"start_line":409,"start_character":20,"end_line":409,"end_character":27},"updated":"2017-04-24 09:05:42.000000000","message":"I still think the option name should be \"--dhcp-option\", not \"--dhcp-options\". Please see my comments in PS25.","commit_id":"2635eac9f698d12e8c0bab3f8ebfb647039468d5"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"15b73a20521fa32520b1211a86ec39eb174b9c6d","unresolved":false,"context_lines":[{"line_number":367,"context_line":"            metavar\u003d\u0027\u003cname\u003e\u0027,"},{"line_number":368,"context_line":"            help\u003d_(\"Name of this port\")"},{"line_number":369,"context_line":"        )"},{"line_number":370,"context_line":"        # TODO(singhj): Add support for extended options:"},{"line_number":371,"context_line":"        secgroups \u003d parser.add_mutually_exclusive_group()"},{"line_number":372,"context_line":"        secgroups.add_argument("},{"line_number":373,"context_line":"            \u0027--security-group\u0027,"}],"source_content_type":"text/x-python","patch_set":39,"id":"3f4b6375_92d532e8","line":370,"range":{"start_line":370,"start_character":8,"end_line":370,"end_character":57},"updated":"2017-10-20 19:37:50.000000000","message":"This line can go now too if you re-spin this review for other reasons","commit_id":"c5667620d5efe007bae48c62b89730e502a322f6"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1e621cfc806666b5a1027f834e3e52699ccd85ec","unresolved":false,"context_lines":[{"line_number":888,"context_line":"            optional_keys\u003d[\u0027value\u0027, \u0027ip-version\u0027],"},{"line_number":889,"context_line":"            help\u003d_(\u0027Extra DHCP options which should be removed from this \u0027"},{"line_number":890,"context_line":"                   \u0027port: name\u003d\u003cdhcp-option-name\u003e,value\u003d\u003cvalue\u003e,ip-version\u003d\u0027"},{"line_number":891,"context_line":"                   \u0027{4,6} (repeat option to set multiple extra DHCP options)\u0027)"},{"line_number":892,"context_line":"        )"},{"line_number":893,"context_line":"        parser.add_argument("},{"line_number":894,"context_line":"            \u0027port\u0027,"}],"source_content_type":"text/x-python","patch_set":40,"id":"3f79a3b5_a1f7e05b","line":891,"range":{"start_line":891,"start_character":44,"end_line":891,"end_character":47},"updated":"2018-11-30 13:37:58.000000000","message":"s/unset or remove?","commit_id":"0134e90bf556cf7cc162fbf4d2ffda8d1c3c44b5"}],"openstackclient/tests/functional/network/v2/test_port.py":[{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"8e2c44c5a068d86545bc7f69d1d71265b4edf61a","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            \"port create -f json \" +"},{"line_number":241,"context_line":"            \"--network \" + self.NETWORK_NAME +"},{"line_number":242,"context_line":"            \" --description dhcp \" +"},{"line_number":243,"context_line":"            \"--dhcp-option name\u003dtest,value\u003d\u002710.0.1.1/24\u0027 \" +"},{"line_number":244,"context_line":"            name"},{"line_number":245,"context_line":"        ))"},{"line_number":246,"context_line":"        id1 \u003d json_output.get(\u0027id\u0027)"}],"source_content_type":"text/x-python","patch_set":25,"id":"bff0334d_07495c5e","line":243,"range":{"start_line":243,"start_character":20,"end_line":243,"end_character":26},"updated":"2017-04-12 10:14:28.000000000","message":"options or option?\n\nThe option name is different in unit test and functional test.","commit_id":"195d4b197524211804b083daf7830177917aeb52"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"dc004fded2e40bebd68abca9fc7fb5ffb9964a70","unresolved":false,"context_lines":[{"line_number":250,"context_line":"    def test_port_dhcp_set(self):"},{"line_number":251,"context_line":"        name \u003d uuid.uuid4().hex"},{"line_number":252,"context_line":"        json_output \u003d json.loads(self.openstack("},{"line_number":253,"context_line":"            \"port create -f json \" +"},{"line_number":254,"context_line":"            \"--network \" + self.NETWORK_NAME +"},{"line_number":255,"context_line":"            \" --description dhcp \" +"},{"line_number":256,"context_line":"            \"--dhcp-option name\u003dtest,value\u003d\u002710.0.1.1/24\u0027 \" +"},{"line_number":257,"context_line":"            name"},{"line_number":258,"context_line":"        ))"},{"line_number":259,"context_line":"        id1 \u003d json_output.get(\u0027id\u0027)"}],"source_content_type":"text/x-python","patch_set":34,"id":"7f231b9d_f9c72c63","line":256,"range":{"start_line":253,"start_character":12,"end_line":256,"end_character":60},"updated":"2017-06-19 05:13:03.000000000","message":"Some lines contain a space at the end of line and some contain a space at the beginning of line.","commit_id":"d7fd29382a753ec1e547ab007fd579b6de6e8d64"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"dc004fded2e40bebd68abca9fc7fb5ffb9964a70","unresolved":false,"context_lines":[{"line_number":253,"context_line":"            \"port create -f json \" +"},{"line_number":254,"context_line":"            \"--network \" + self.NETWORK_NAME +"},{"line_number":255,"context_line":"            \" --description dhcp \" +"},{"line_number":256,"context_line":"            \"--dhcp-option name\u003dtest,value\u003d\u002710.0.1.1/24\u0027 \" +"},{"line_number":257,"context_line":"            name"},{"line_number":258,"context_line":"        ))"},{"line_number":259,"context_line":"        id1 \u003d json_output.get(\u0027id\u0027)"}],"source_content_type":"text/x-python","patch_set":34,"id":"7f231b9d_d9c23053","line":256,"range":{"start_line":256,"start_character":37,"end_line":256,"end_character":56},"updated":"2017-06-19 05:13:03.000000000","message":"Why is 10.0.1.1./24 in \"value\u003d\u002710.0.1.1/24\u0027\" wrapped with quotes? Looks unnecessary.","commit_id":"d7fd29382a753ec1e547ab007fd579b6de6e8d64"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1e621cfc806666b5a1027f834e3e52699ccd85ec","unresolved":false,"context_lines":[{"line_number":262,"context_line":"            .format(self.base_command, self.NETWORK_NAME, args, name)"},{"line_number":263,"context_line":"        ))"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"    def test_port_dhcp_set(self):"},{"line_number":266,"context_line":"        name \u003d uuid.uuid4().hex"},{"line_number":267,"context_line":"        json_output \u003d json.loads(self.openstack("},{"line_number":268,"context_line":"            \"port create -f json \" +"}],"source_content_type":"text/x-python","patch_set":40,"id":"3f79a3b5_6186a8ba","line":265,"updated":"2018-11-30 13:37:58.000000000","message":"Can set also take multiple options?","commit_id":"0134e90bf556cf7cc162fbf4d2ffda8d1c3c44b5"}],"openstackclient/tests/unit/network/v2/test_port.py":[{"author":{"_account_id":18332,"name":"Ankur","email":"ankur.gupta@intel.com","username":"ankur-gupta-f"},"change_message_id":"0efe1ba98168ccfa0214ffd74acb8521d3b65743","unresolved":false,"context_lines":[{"line_number":521,"context_line":"                          self.cmd,"},{"line_number":522,"context_line":"                          arglist,"},{"line_number":523,"context_line":"                          None)"},{"line_number":524,"context_line":" "},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"    def test_create_port_with_extradhcp_opts_ip_version(self):"},{"line_number":527,"context_line":"        dhcp_opts \u003d [{\u0027name\u0027: \u0027bootfile-name\u0027,"}],"source_content_type":"text/x-python","patch_set":20,"id":"dfeb2761_927326e8","line":524,"updated":"2017-03-31 15:44:21.000000000","message":"nit","commit_id":"20792c9ccfe89b3e14693f539f337e791a6dc28d"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"8e2c44c5a068d86545bc7f69d1d71265b4edf61a","unresolved":false,"context_lines":[{"line_number":477,"context_line":"                      \u0027value\u0027: \"169.254.169.254/32,40.40.40.5\"}]"},{"line_number":478,"context_line":"        arglist \u003d ["},{"line_number":479,"context_line":"            \u0027--network\u0027, self._port.network_id,"},{"line_number":480,"context_line":"            \u0027--dhcp-options\u0027,"},{"line_number":481,"context_line":"            \u0027name\u003dserver-ip-addr,value\u003d123.123.123.45\u0027,"},{"line_number":482,"context_line":"            \u0027--dhcp-options\u0027,"},{"line_number":483,"context_line":"            \u0027name\u003dclassless-static-route,value\u003d169.254.169.254/32,40.40.40.5\u0027,"}],"source_content_type":"text/x-python","patch_set":25,"id":"bff0334d_67582830","line":480,"range":{"start_line":480,"start_character":20,"end_line":480,"end_character":27},"updated":"2017-04-12 10:14:28.000000000","message":"options or option?\n\nThe option name is different in unit test and functional test.","commit_id":"195d4b197524211804b083daf7830177917aeb52"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"8e2c44c5a068d86545bc7f69d1d71265b4edf61a","unresolved":false,"context_lines":[{"line_number":480,"context_line":"            \u0027--dhcp-options\u0027,"},{"line_number":481,"context_line":"            \u0027name\u003dserver-ip-addr,value\u003d123.123.123.45\u0027,"},{"line_number":482,"context_line":"            \u0027--dhcp-options\u0027,"},{"line_number":483,"context_line":"            \u0027name\u003dclassless-static-route,value\u003d169.254.169.254/32,40.40.40.5\u0027,"},{"line_number":484,"context_line":"            \u0027test-port\u0027,"},{"line_number":485,"context_line":"        ]"},{"line_number":486,"context_line":"        verifylist \u003d ["}],"source_content_type":"text/x-python","patch_set":25,"id":"bff0334d_730a2620","line":483,"range":{"start_line":483,"start_character":47,"end_line":483,"end_character":76},"updated":"2017-04-12 10:14:28.000000000","message":"Good example, I got the scenario, thank you :-)","commit_id":"195d4b197524211804b083daf7830177917aeb52"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"8e2c44c5a068d86545bc7f69d1d71265b4edf61a","unresolved":false,"context_lines":[{"line_number":491,"context_line":"        ]"},{"line_number":492,"context_line":"        parsed_args \u003d self.check_parser(self.cmd, arglist, verifylist)"},{"line_number":493,"context_line":""},{"line_number":494,"context_line":"        columns, data \u003d (self.cmd.take_action(parsed_args))"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"        extra_dhcp_opts \u003d [{\u0027opt_name\u0027: \u0027server-ip-addr\u0027,"},{"line_number":497,"context_line":"                            \u0027opt_value\u0027: \u0027123.123.123.45\u0027,"}],"source_content_type":"text/x-python","patch_set":25,"id":"bff0334d_73a6a611","line":494,"range":{"start_line":494,"start_character":8,"end_line":494,"end_character":21},"updated":"2017-04-12 10:14:28.000000000","message":"If we don\u0027t assert the return value, please remove these, isn\u0027t used in any place.","commit_id":"195d4b197524211804b083daf7830177917aeb52"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"8e2c44c5a068d86545bc7f69d1d71265b4edf61a","unresolved":false,"context_lines":[{"line_number":549,"context_line":"        ]"},{"line_number":550,"context_line":"        parsed_args \u003d self.check_parser(self.cmd, arglist, verifylist)"},{"line_number":551,"context_line":""},{"line_number":552,"context_line":"        columns, data \u003d (self.cmd.take_action(parsed_args))"},{"line_number":553,"context_line":""},{"line_number":554,"context_line":"        extra_dhcp_opts \u003d [{\u0027opt_name\u0027: \u0027bootfile-name\u0027,"},{"line_number":555,"context_line":"                            \u0027opt_value\u0027: \u0027pxelinux.0\u0027,"}],"source_content_type":"text/x-python","patch_set":25,"id":"bff0334d_b389ce75","line":552,"range":{"start_line":552,"start_character":7,"end_line":552,"end_character":21},"updated":"2017-04-12 10:14:28.000000000","message":"ditto","commit_id":"195d4b197524211804b083daf7830177917aeb52"}],"releasenotes/notes/bug-1612136-a1e714c826eef040.yaml":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"dc004fded2e40bebd68abca9fc7fb5ffb9964a70","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add ``--dhcp-option`` and ``--no-dhcp-options`` to ``port create``,"},{"line_number":5,"context_line":"    and ``port set`` command."},{"line_number":6,"context_line":"    [Bug `1612136 \u003chttps://bugs.launchpad.net/python-openstackclient/+bug/1612136\u003e`_]"}],"source_content_type":"text/x-yaml","patch_set":34,"id":"7f231b9d_993398ab","line":4,"range":{"start_line":4,"start_character":42,"end_line":4,"end_character":49},"updated":"2017-06-19 05:13:03.000000000","message":"-\u003e --no-dhcp-option","commit_id":"d7fd29382a753ec1e547ab007fd579b6de6e8d64"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"1e621cfc806666b5a1027f834e3e52699ccd85ec","unresolved":false,"context_lines":[{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Add ``--dhcp-option`` and ``--no-dhcp-option`` to ``port create``,"},{"line_number":5,"context_line":"    ``port set`` and ``port unset`` command."},{"line_number":6,"context_line":"    [Bug `1612136 \u003chttps://bugs.launchpad.net/python-openstackclient/+bug/1612136\u003e`_]"}],"source_content_type":"text/x-yaml","patch_set":40,"id":"3f79a3b5_215f504d","line":5,"range":{"start_line":5,"start_character":36,"end_line":5,"end_character":43},"updated":"2018-11-30 13:37:58.000000000","message":"s/commands","commit_id":"0134e90bf556cf7cc162fbf4d2ffda8d1c3c44b5"}]}
