)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"9f88e77a33bbe58257365e80c02717b527a89340","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch introduces the ``port unset`` command to"},{"line_number":10,"context_line":"clear the fixed-ip and binding:profile information"},{"line_number":11,"context_line":"from the ports."},{"line_number":12,"context_line":"Implements: blueprint network-property-unset"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I9dba309234105af477e7618a8a437b7fa3b13cd7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1a122d0e_cd8e5f78","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":11},"updated":"2016-04-20 08:48:41.000000000","message":"Partial-implements:","commit_id":"9eeb8410b72dbdf2c5f6033b7a98a7afeda1c09b"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"c261fb1958776e2511303ee9fba88e5b8bb9d253","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch introduces the ``port unset`` command to"},{"line_number":10,"context_line":"clear the fixed-ip and binding:profile information"},{"line_number":11,"context_line":"from the ports."},{"line_number":12,"context_line":"Implements: blueprint network-property-unset"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I9dba309234105af477e7618a8a437b7fa3b13cd7"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"1a122d0e_1b85facd","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":11},"in_reply_to":"1a122d0e_cd8e5f78","updated":"2016-04-21 01:41:49.000000000","message":"Nope\nThere is no such thing\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages","commit_id":"9eeb8410b72dbdf2c5f6033b7a98a7afeda1c09b"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"4317aeb4f33a1d0335333771b1fcf0bc3a1bbbd0","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Reedip \u003creedip.banerjee@nectechnologies.in\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-06-22 14:42:11 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add option to unset information from ports"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch introduces the ``port unset`` command to"},{"line_number":10,"context_line":"clear the fixed-ip and binding:profile information"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":16,"id":"3aaa91ec_cb540a56","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":42},"updated":"2016-06-22 09:38:42.000000000","message":"The same, not \"Add option\", but \"Add command\".","commit_id":"23d3c5f268c05756e92e1c0df88b3bd8f5aad0c2"}],"doc/source/command-objects/port.rst":[{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"975a5c2e040f9e939decd878b1c5185f8f57e516","unresolved":false,"context_lines":[{"line_number":222,"context_line":""},{"line_number":223,"context_line":".. option:: --binding-profile \u003cbinding-profile\u003e"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    Binding Profile which should be REMOVED from this port"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":".. _port_unset-port:"},{"line_number":228,"context_line":".. describe:: \u003cport\u003e"}],"source_content_type":"text/x-rst","patch_set":11,"id":"bab6814e_72c04d7d","line":225,"range":{"start_line":225,"start_character":4,"end_line":225,"end_character":58},"updated":"2016-05-19 06:36:19.000000000","message":"Not consistent with the msg in source code. Missing \": \u003ckey\u003e\u003d\u003cvalue\u003e\".","commit_id":"a7bb8746d41f758ba89098d9237c651e01fc5c17"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"900bc68769354878b1ee3553bdcb597a58a3e79b","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        [--binding-profile \u003cbinding-profile\u003e]"},{"line_number":216,"context_line":"        \u003cport\u003e"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":".. option:: --fixed-ip subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    Desired IP and/or subnet (name or ID) which should be REMOVED"},{"line_number":221,"context_line":"    from this port: subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e"}],"source_content_type":"text/x-rst","patch_set":14,"id":"bab6814e_f23f6784","line":218,"updated":"2016-05-23 18:54:02.000000000","message":"Please document that this option can be repeated.","commit_id":"e85029c90d4ea0a21f426b4102100decfc5e31dd"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"900bc68769354878b1ee3553bdcb597a58a3e79b","unresolved":false,"context_lines":[{"line_number":217,"context_line":""},{"line_number":218,"context_line":".. option:: --fixed-ip subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    Desired IP and/or subnet (name or ID) which should be REMOVED"},{"line_number":221,"context_line":"    from this port: subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":".. option:: --binding-profile \u003cbinding-profile\u003e"}],"source_content_type":"text/x-rst","patch_set":14,"id":"bab6814e_f2c807aa","line":220,"range":{"start_line":220,"start_character":58,"end_line":220,"end_character":65},"updated":"2016-05-23 18:54:02.000000000","message":"removed","commit_id":"e85029c90d4ea0a21f426b4102100decfc5e31dd"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"900bc68769354878b1ee3553bdcb597a58a3e79b","unresolved":false,"context_lines":[{"line_number":220,"context_line":"    Desired IP and/or subnet (name or ID) which should be REMOVED"},{"line_number":221,"context_line":"    from this port: subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":".. option:: --binding-profile \u003cbinding-profile\u003e"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    Binding Profile which should be REMOVED from this port : \u003ckey\u003e"},{"line_number":226,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"bab6814e_923c1b94","line":223,"updated":"2016-05-23 18:54:02.000000000","message":"Please document that this option can be repeated.","commit_id":"e85029c90d4ea0a21f426b4102100decfc5e31dd"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"900bc68769354878b1ee3553bdcb597a58a3e79b","unresolved":false,"context_lines":[{"line_number":222,"context_line":""},{"line_number":223,"context_line":".. option:: --binding-profile \u003cbinding-profile\u003e"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    Binding Profile which should be REMOVED from this port : \u003ckey\u003e"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":".. _port_unset-port:"},{"line_number":228,"context_line":".. describe:: \u003cport\u003e"}],"source_content_type":"text/x-rst","patch_set":14,"id":"bab6814e_3299efc4","line":225,"range":{"start_line":225,"start_character":12,"end_line":225,"end_character":19},"updated":"2016-05-23 18:54:02.000000000","message":"profile","commit_id":"e85029c90d4ea0a21f426b4102100decfc5e31dd"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"900bc68769354878b1ee3553bdcb597a58a3e79b","unresolved":false,"context_lines":[{"line_number":222,"context_line":""},{"line_number":223,"context_line":".. option:: --binding-profile \u003cbinding-profile\u003e"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    Binding Profile which should be REMOVED from this port : \u003ckey\u003e"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":".. _port_unset-port:"},{"line_number":228,"context_line":".. describe:: \u003cport\u003e"}],"source_content_type":"text/x-rst","patch_set":14,"id":"bab6814e_32e0cf28","line":225,"range":{"start_line":225,"start_character":58,"end_line":225,"end_character":59},"updated":"2016-05-23 18:54:02.000000000","message":"remove extra space","commit_id":"e85029c90d4ea0a21f426b4102100decfc5e31dd"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"900bc68769354878b1ee3553bdcb597a58a3e79b","unresolved":false,"context_lines":[{"line_number":222,"context_line":""},{"line_number":223,"context_line":".. option:: --binding-profile \u003cbinding-profile\u003e"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    Binding Profile which should be REMOVED from this port : \u003ckey\u003e"},{"line_number":226,"context_line":""},{"line_number":227,"context_line":".. _port_unset-port:"},{"line_number":228,"context_line":".. describe:: \u003cport\u003e"}],"source_content_type":"text/x-rst","patch_set":14,"id":"bab6814e_728ff774","line":225,"range":{"start_line":225,"start_character":36,"end_line":225,"end_character":43},"updated":"2016-05-23 18:54:02.000000000","message":"removed","commit_id":"e85029c90d4ea0a21f426b4102100decfc5e31dd"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"f91f1ef93f311c90236d5d76933c43f6fa27ed60","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":".. option:: --binding-profile \u003cbinding-profile\u003e"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    Binding profile which should be removed from this port: \u003ckey\u003e"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":".. _port_unset-port:"},{"line_number":233,"context_line":".. describe:: \u003cport\u003e"}],"source_content_type":"text/x-rst","patch_set":15,"id":"7aa08908_82115c56","line":230,"updated":"2016-06-15 13:04:03.000000000","message":"Please document that this option can be repeated.","commit_id":"59fe5c4d16c3292ef487aacaf0e976f81fb13034"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"4317aeb4f33a1d0335333771b1fcf0bc3a1bbbd0","unresolved":false,"context_lines":[{"line_number":228,"context_line":".. option:: --binding-profile \u003cbinding-profile\u003e"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    Binding profile which should be removed from this port: \u003ckey\u003e"},{"line_number":231,"context_line":"    (repeat option to unset multiple fixed IP addresses)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":".. _port_unset-port:"},{"line_number":234,"context_line":".. describe:: \u003cport\u003e"}],"source_content_type":"text/x-rst","patch_set":16,"id":"3aaa91ec_8be8427e","line":231,"range":{"start_line":231,"start_character":37,"end_line":231,"end_character":55},"updated":"2016-06-22 09:38:42.000000000","message":"typo","commit_id":"23d3c5f268c05756e92e1c0df88b3bd8f5aad0c2"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"2402e79213e534445288ef97c515841805700a92","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":".. option:: --binding-profile \u003cbinding-profile\u003e"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    Binding profile which should be removed from this port: \u003ckey\u003e"},{"line_number":231,"context_line":"    (repeat option to unset multiple binding profiles)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":".. _port_unset-port:"},{"line_number":234,"context_line":".. describe:: \u003cport\u003e"}],"source_content_type":"text/x-rst","patch_set":17,"id":"3aaa91ec_5f6f14c5","line":231,"range":{"start_line":230,"start_character":4,"end_line":231,"end_character":54},"updated":"2016-06-22 17:58:37.000000000","message":"Please make this similar to port set option help.","commit_id":"f3110db5806bdcff58a967aeaacf9217cdcd7216"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"40da72883a8cbb5e405ab4878cf8ac1322b0f9eb","unresolved":false,"context_lines":[{"line_number":227,"context_line":""},{"line_number":228,"context_line":".. option:: --binding-profile \u003cbinding-profile\u003e"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    Binding profile which should be removed from this port: \u003ckey\u003e"},{"line_number":231,"context_line":"    (repeat option to unset multiple binding profiles)"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":".. _port_unset-port:"},{"line_number":234,"context_line":".. describe:: \u003cport\u003e"}],"source_content_type":"text/x-rst","patch_set":17,"id":"3aaa91ec_c74deb73","line":231,"range":{"start_line":230,"start_character":4,"end_line":231,"end_character":54},"in_reply_to":"3aaa91ec_5f6f14c5","updated":"2016-06-23 02:34:12.000000000","message":"Done","commit_id":"f3110db5806bdcff58a967aeaacf9217cdcd7216"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"bef5bd8efc19a6b59fe3d575f56e8f577a23c03f","unresolved":false,"context_lines":[{"line_number":230,"context_line":".. option:: --binding-profile \u003cbinding-profile\u003e"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    Custom data to be passed as binding:profile: \u003ckey\u003e\u003d\u003cvalue\u003e"},{"line_number":233,"context_line":"    (repeat option to set multiple binding:profile data)"},{"line_number":234,"context_line":""},{"line_number":235,"context_line":".. _port_unset-port:"},{"line_number":236,"context_line":".. describe:: \u003cport\u003e"}],"source_content_type":"text/x-rst","patch_set":20,"id":"3aaa91ec_6d8c47da","line":233,"range":{"start_line":233,"start_character":22,"end_line":233,"end_character":25},"updated":"2016-06-27 07:04:41.000000000","message":"nit: set -\u003e unset","commit_id":"974edc4c7852d7d03f2602439694191322081bb3"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"ba4a7d2153737685ad3dfd5c2a1431875dc0f9d7","unresolved":false,"context_lines":[{"line_number":218,"context_line":""},{"line_number":219,"context_line":"    os port unset"},{"line_number":220,"context_line":"        [--fixed-ip subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e]"},{"line_number":221,"context_line":"        [--binding-profile \u003cbinding-profile\u003e]"},{"line_number":222,"context_line":"        \u003cport\u003e"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":".. option:: --fixed-ip subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e"}],"source_content_type":"text/x-rst","patch_set":24,"id":"3aaa91ec_0540ef05","line":221,"updated":"2016-06-27 11:35:49.000000000","message":"nits: please add [...] for these repeatable options.","commit_id":"fb43cba288f16f78383234139f15af02fba24649"}],"openstackclient/network/v2/port.py":[{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"919421df31bd3acf6a052419e4a87a75ebb87185","unresolved":false,"context_lines":[{"line_number":417,"context_line":"        return columns, data"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"class UnsetPort(command.Command):"},{"line_number":421,"context_line":"    \"\"\"Unset port properties\"\"\""},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a061dce_e2afd37a","line":420,"updated":"2016-04-07 12:35:13.000000000","message":"Missing documentation update for this.","commit_id":"9092138faa7db72a22fdf3e3da35e71a007875b6"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"c80aca822dcfc0c238c32c684cc5dcdf54fb3b8f","unresolved":false,"context_lines":[{"line_number":417,"context_line":"        return columns, data"},{"line_number":418,"context_line":""},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"class UnsetPort(command.Command):"},{"line_number":421,"context_line":"    \"\"\"Unset port properties\"\"\""},{"line_number":422,"context_line":""},{"line_number":423,"context_line":"    def get_parser(self, prog_name):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a061dce_e8ccb636","line":420,"in_reply_to":"9a061dce_e2afd37a","updated":"2016-04-07 19:56:23.000000000","message":"Oh yeah, the rst... WIll update it in the forthcoming patch","commit_id":"9092138faa7db72a22fdf3e3da35e71a007875b6"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"919421df31bd3acf6a052419e4a87a75ebb87185","unresolved":false,"context_lines":[{"line_number":423,"context_line":"    def get_parser(self, prog_name):"},{"line_number":424,"context_line":"        parser \u003d super(UnsetPort, self).get_parser(prog_name)"},{"line_number":425,"context_line":"        parser.add_argument("},{"line_number":426,"context_line":"            \u0027--no-fixed-ip\u0027,"},{"line_number":427,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":428,"context_line":"            help\u003d\u0027Clear existing information of fixed-ips\u0027)"},{"line_number":429,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":2,"id":"9a061dce_821897d4","line":426,"updated":"2016-04-07 12:35:13.000000000","message":"The real value of the unset command is to unset a single property value from the list since set can already clear them all.  Please include this support.","commit_id":"9092138faa7db72a22fdf3e3da35e71a007875b6"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"c80aca822dcfc0c238c32c684cc5dcdf54fb3b8f","unresolved":false,"context_lines":[{"line_number":423,"context_line":"    def get_parser(self, prog_name):"},{"line_number":424,"context_line":"        parser \u003d super(UnsetPort, self).get_parser(prog_name)"},{"line_number":425,"context_line":"        parser.add_argument("},{"line_number":426,"context_line":"            \u0027--no-fixed-ip\u0027,"},{"line_number":427,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":428,"context_line":"            help\u003d\u0027Clear existing information of fixed-ips\u0027)"},{"line_number":429,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":2,"id":"9a061dce_a8f63e5a","line":426,"in_reply_to":"9a061dce_821897d4","updated":"2016-04-07 19:56:23.000000000","message":"So you mean, if we have a list of values say \nx \u003d [a,b,c ]  and the user wants to unset \u0027b\u0027 then the CLI\n\n  openstack CLI --unset x b\n\n\nshould change the value of x as\nx \u003d [a,c] right??","commit_id":"9092138faa7db72a22fdf3e3da35e71a007875b6"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"f117ce189800891a74b6a9d19269b22f2cf718aa","unresolved":false,"context_lines":[{"line_number":423,"context_line":"    def get_parser(self, prog_name):"},{"line_number":424,"context_line":"        parser \u003d super(UnsetPort, self).get_parser(prog_name)"},{"line_number":425,"context_line":"        parser.add_argument("},{"line_number":426,"context_line":"            \u0027--no-fixed-ip\u0027,"},{"line_number":427,"context_line":"            action\u003d\u0027store_true\u0027,"},{"line_number":428,"context_line":"            help\u003d\u0027Clear existing information of fixed-ips\u0027)"},{"line_number":429,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":2,"id":"9a061dce_0a5bbe2f","line":426,"in_reply_to":"9a061dce_a8f63e5a","updated":"2016-04-08 11:16:05.000000000","message":"Yes, that\u0027s the idea.","commit_id":"9092138faa7db72a22fdf3e3da35e71a007875b6"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"e7e1db64f5741c553903304290e75ead34cc2630","unresolved":false,"context_lines":[{"line_number":425,"context_line":"        parser.add_argument("},{"line_number":426,"context_line":"            \u0027--fixed-ip\u0027,"},{"line_number":427,"context_line":"            metavar\u003d\u0027subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e\u0027,"},{"line_number":428,"context_line":"            action\u003dparseractions.MultiKeyValueAction,"},{"line_number":429,"context_line":"            optional_keys\u003d[\u0027subnet\u0027, \u0027ip-address\u0027],"},{"line_number":430,"context_line":"            help\u003d\u0027Desired IP and/or subnet (name or ID) which \u0027"},{"line_number":431,"context_line":"                 \u0027should be REMOVED from this port: \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_0254a6fc","line":428,"updated":"2016-04-20 08:09:08.000000000","message":"the option can be repeated to remove multiple value, please describe it in help message and update rst document.","commit_id":"9eeb8410b72dbdf2c5f6033b7a98a7afeda1c09b"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"6065f0e156389baf14c96ff9e5f75e2b2e9883f7","unresolved":false,"context_lines":[{"line_number":425,"context_line":"        parser.add_argument("},{"line_number":426,"context_line":"            \u0027--fixed-ip\u0027,"},{"line_number":427,"context_line":"            metavar\u003d\u0027subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e\u0027,"},{"line_number":428,"context_line":"            action\u003dparseractions.MultiKeyValueAction,"},{"line_number":429,"context_line":"            optional_keys\u003d[\u0027subnet\u0027, \u0027ip-address\u0027],"},{"line_number":430,"context_line":"            help\u003d\u0027Desired IP and/or subnet (name or ID) which \u0027"},{"line_number":431,"context_line":"                 \u0027should be REMOVED from this port: \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_825d5649","line":428,"in_reply_to":"1a122d0e_0254a6fc","updated":"2016-04-20 08:13:45.000000000","message":"I do not want to support multiple removals\nThats why did not mention it in the help\n\nIt will increase the complexity","commit_id":"9eeb8410b72dbdf2c5f6033b7a98a7afeda1c09b"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"9f88e77a33bbe58257365e80c02717b527a89340","unresolved":false,"context_lines":[{"line_number":427,"context_line":"            metavar\u003d\u0027subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e\u0027,"},{"line_number":428,"context_line":"            action\u003dparseractions.MultiKeyValueAction,"},{"line_number":429,"context_line":"            optional_keys\u003d[\u0027subnet\u0027, \u0027ip-address\u0027],"},{"line_number":430,"context_line":"            help\u003d\u0027Desired IP and/or subnet (name or ID) which \u0027"},{"line_number":431,"context_line":"                 \u0027should be REMOVED from this port: \u0027"},{"line_number":432,"context_line":"                 \u0027subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e\u0027)"},{"line_number":433,"context_line":"        parser.add_argument("},{"line_number":434,"context_line":"            \u0027--binding-profile\u0027,"},{"line_number":435,"context_line":"            metavar\u003d\u0027\u003cbinding-profile\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_cd013fb1","line":432,"range":{"start_line":430,"start_character":17,"end_line":432,"end_character":59},"updated":"2016-04-20 08:48:41.000000000","message":"Help message with _() please. And please use \"\" instead of \u0027\u0027.","commit_id":"9eeb8410b72dbdf2c5f6033b7a98a7afeda1c09b"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"c261fb1958776e2511303ee9fba88e5b8bb9d253","unresolved":false,"context_lines":[{"line_number":427,"context_line":"            metavar\u003d\u0027subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e\u0027,"},{"line_number":428,"context_line":"            action\u003dparseractions.MultiKeyValueAction,"},{"line_number":429,"context_line":"            optional_keys\u003d[\u0027subnet\u0027, \u0027ip-address\u0027],"},{"line_number":430,"context_line":"            help\u003d\u0027Desired IP and/or subnet (name or ID) which \u0027"},{"line_number":431,"context_line":"                 \u0027should be REMOVED from this port: \u0027"},{"line_number":432,"context_line":"                 \u0027subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e\u0027)"},{"line_number":433,"context_line":"        parser.add_argument("},{"line_number":434,"context_line":"            \u0027--binding-profile\u0027,"},{"line_number":435,"context_line":"            metavar\u003d\u0027\u003cbinding-profile\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_5b6bf21d","line":432,"range":{"start_line":430,"start_character":17,"end_line":432,"end_character":59},"in_reply_to":"1a122d0e_cd013fb1","updated":"2016-04-21 01:41:49.000000000","message":"Okay!","commit_id":"9eeb8410b72dbdf2c5f6033b7a98a7afeda1c09b"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"e7e1db64f5741c553903304290e75ead34cc2630","unresolved":false,"context_lines":[{"line_number":433,"context_line":"        parser.add_argument("},{"line_number":434,"context_line":"            \u0027--binding-profile\u0027,"},{"line_number":435,"context_line":"            metavar\u003d\u0027\u003cbinding-profile\u003e\u0027,"},{"line_number":436,"context_line":"            action\u003dparseractions.KeyValueAction,"},{"line_number":437,"context_line":"            help\u003d\u0027Binding Profile which should be REMOVED \u0027"},{"line_number":438,"context_line":"                 \u0027from this port: \u003ckey\u003e\u003d\u003cvalue\u003e\u0027)"},{"line_number":439,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_42233ea7","line":436,"updated":"2016-04-20 08:09:08.000000000","message":"ditto","commit_id":"9eeb8410b72dbdf2c5f6033b7a98a7afeda1c09b"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"6065f0e156389baf14c96ff9e5f75e2b2e9883f7","unresolved":false,"context_lines":[{"line_number":433,"context_line":"        parser.add_argument("},{"line_number":434,"context_line":"            \u0027--binding-profile\u0027,"},{"line_number":435,"context_line":"            metavar\u003d\u0027\u003cbinding-profile\u003e\u0027,"},{"line_number":436,"context_line":"            action\u003dparseractions.KeyValueAction,"},{"line_number":437,"context_line":"            help\u003d\u0027Binding Profile which should be REMOVED \u0027"},{"line_number":438,"context_line":"                 \u0027from this port: \u003ckey\u003e\u003d\u003cvalue\u003e\u0027)"},{"line_number":439,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_e256ca28","line":436,"in_reply_to":"1a122d0e_42233ea7","updated":"2016-04-20 08:13:45.000000000","message":"ditto","commit_id":"9eeb8410b72dbdf2c5f6033b7a98a7afeda1c09b"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"9f88e77a33bbe58257365e80c02717b527a89340","unresolved":false,"context_lines":[{"line_number":434,"context_line":"            \u0027--binding-profile\u0027,"},{"line_number":435,"context_line":"            metavar\u003d\u0027\u003cbinding-profile\u003e\u0027,"},{"line_number":436,"context_line":"            action\u003dparseractions.KeyValueAction,"},{"line_number":437,"context_line":"            help\u003d\u0027Binding Profile which should be REMOVED \u0027"},{"line_number":438,"context_line":"                 \u0027from this port: \u003ckey\u003e\u003d\u003cvalue\u003e\u0027)"},{"line_number":439,"context_line":"        parser.add_argument("},{"line_number":440,"context_line":"            \u0027port\u0027,"},{"line_number":441,"context_line":"            metavar\u003d\"\u003cport\u003e\","}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_2d29d337","line":438,"range":{"start_line":437,"start_character":0,"end_line":438,"end_character":48},"updated":"2016-04-20 08:48:41.000000000","message":"_() please","commit_id":"9eeb8410b72dbdf2c5f6033b7a98a7afeda1c09b"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"c261fb1958776e2511303ee9fba88e5b8bb9d253","unresolved":false,"context_lines":[{"line_number":434,"context_line":"            \u0027--binding-profile\u0027,"},{"line_number":435,"context_line":"            metavar\u003d\u0027\u003cbinding-profile\u003e\u0027,"},{"line_number":436,"context_line":"            action\u003dparseractions.KeyValueAction,"},{"line_number":437,"context_line":"            help\u003d\u0027Binding Profile which should be REMOVED \u0027"},{"line_number":438,"context_line":"                 \u0027from this port: \u003ckey\u003e\u003d\u003cvalue\u003e\u0027)"},{"line_number":439,"context_line":"        parser.add_argument("},{"line_number":440,"context_line":"            \u0027port\u0027,"},{"line_number":441,"context_line":"            metavar\u003d\"\u003cport\u003e\","}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_db654245","line":438,"range":{"start_line":437,"start_character":0,"end_line":438,"end_character":48},"in_reply_to":"1a122d0e_2d29d337","updated":"2016-04-21 01:41:49.000000000","message":"Alright alright, I will do it :)","commit_id":"9eeb8410b72dbdf2c5f6033b7a98a7afeda1c09b"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"9f88e77a33bbe58257365e80c02717b527a89340","unresolved":false,"context_lines":[{"line_number":439,"context_line":"        parser.add_argument("},{"line_number":440,"context_line":"            \u0027port\u0027,"},{"line_number":441,"context_line":"            metavar\u003d\"\u003cport\u003e\","},{"line_number":442,"context_line":"            help\u003d(\"Port to modify (name or ID)\")"},{"line_number":443,"context_line":"        )"},{"line_number":444,"context_line":"        return parser"},{"line_number":445,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_0d2e9742","line":442,"range":{"start_line":442,"start_character":12,"end_line":442,"end_character":48},"updated":"2016-04-20 08:48:41.000000000","message":"_() please.","commit_id":"9eeb8410b72dbdf2c5f6033b7a98a7afeda1c09b"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"c261fb1958776e2511303ee9fba88e5b8bb9d253","unresolved":false,"context_lines":[{"line_number":439,"context_line":"        parser.add_argument("},{"line_number":440,"context_line":"            \u0027port\u0027,"},{"line_number":441,"context_line":"            metavar\u003d\"\u003cport\u003e\","},{"line_number":442,"context_line":"            help\u003d(\"Port to modify (name or ID)\")"},{"line_number":443,"context_line":"        )"},{"line_number":444,"context_line":"        return parser"},{"line_number":445,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_3b59d68e","line":442,"range":{"start_line":442,"start_character":12,"end_line":442,"end_character":48},"in_reply_to":"1a122d0e_0d2e9742","updated":"2016-04-21 01:41:49.000000000","message":"I got it.... I will fix it :)","commit_id":"9eeb8410b72dbdf2c5f6033b7a98a7afeda1c09b"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"5d123f2af54f23bbfa2a7c6724b51ef7ff95d388","unresolved":false,"context_lines":[{"line_number":447,"context_line":"        parser.add_argument("},{"line_number":448,"context_line":"            \u0027--fixed-ip\u0027,"},{"line_number":449,"context_line":"            metavar\u003d\u0027subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e\u0027,"},{"line_number":450,"context_line":"            action\u003dparseractions.MultiKeyValueAction,"},{"line_number":451,"context_line":"            optional_keys\u003d[\u0027subnet\u0027, \u0027ip-address\u0027],"},{"line_number":452,"context_line":"            help\u003d_(\"Desired IP and/or subnet (name or ID) which \""},{"line_number":453,"context_line":"                   \"should be REMOVED from this port: \""}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_1493c9fb","line":450,"updated":"2016-04-22 09:29:43.000000000","message":"Although the help message (fixed-ip \u0026 binding-profile) don\u0027t mention the options can be repeated, actually it works and current code can handle repeat options too, I\u0027m not sure that hiding is an effective behavior.\n\nRaise my concern, waiting others\u0027 comments.","commit_id":"4ea33ee274133696a9da9f2f690e1f0eb33e76ee"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"0becd10d25f7e9f3990a5d24e8d942ce8fcff426","unresolved":false,"context_lines":[{"line_number":447,"context_line":"        parser.add_argument("},{"line_number":448,"context_line":"            \u0027--fixed-ip\u0027,"},{"line_number":449,"context_line":"            metavar\u003d\u0027subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e\u0027,"},{"line_number":450,"context_line":"            action\u003dparseractions.MultiKeyValueAction,"},{"line_number":451,"context_line":"            optional_keys\u003d[\u0027subnet\u0027, \u0027ip-address\u0027],"},{"line_number":452,"context_line":"            help\u003d_(\"Desired IP and/or subnet (name or ID) which \""},{"line_number":453,"context_line":"                   \"should be REMOVED from this port: \""}],"source_content_type":"text/x-python","patch_set":9,"id":"dab17558_6e946b36","line":450,"in_reply_to":"1a122d0e_1493c9fb","updated":"2016-05-18 02:07:41.000000000","message":"I do not want it to be repeated actually , because it can lead to pretty confusing CLI for the user. Otherwise there is no concern from my end.","commit_id":"4ea33ee274133696a9da9f2f690e1f0eb33e76ee"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"94b9508fc1d46d9ab377dd1fe0e25b5fdcecf6e0","unresolved":false,"context_lines":[{"line_number":473,"context_line":"        if parsed_args.fixed_ip:"},{"line_number":474,"context_line":"            try:"},{"line_number":475,"context_line":"                for ip in parsed_args.fixed_ip:"},{"line_number":476,"context_line":"                    obj.fixed_ips.remove(ip)"},{"line_number":477,"context_line":"            except ValueError:"},{"line_number":478,"context_line":"                msg \u003d (_(\"Unable to find %s in fixed-ip\") % ip)"},{"line_number":479,"context_line":"                raise exceptions.CommandError(msg)"},{"line_number":480,"context_line":"            attrs[\u0027fixed_ips\u0027] \u003d obj.fixed_ips"},{"line_number":481,"context_line":"        if parsed_args.binding_profile:"},{"line_number":482,"context_line":"            try:"},{"line_number":483,"context_line":"                for key in parsed_args.binding_profile:"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_9c39ae44","line":480,"range":{"start_line":476,"start_character":20,"end_line":480,"end_character":46},"updated":"2016-04-22 14:42:56.000000000","message":"I think this is a bug.  You cannot set both the obj and attrs because the SDK will think nothing changed.","commit_id":"4ea33ee274133696a9da9f2f690e1f0eb33e76ee"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"0becd10d25f7e9f3990a5d24e8d942ce8fcff426","unresolved":false,"context_lines":[{"line_number":473,"context_line":"        if parsed_args.fixed_ip:"},{"line_number":474,"context_line":"            try:"},{"line_number":475,"context_line":"                for ip in parsed_args.fixed_ip:"},{"line_number":476,"context_line":"                    obj.fixed_ips.remove(ip)"},{"line_number":477,"context_line":"            except ValueError:"},{"line_number":478,"context_line":"                msg \u003d (_(\"Unable to find %s in fixed-ip\") % ip)"},{"line_number":479,"context_line":"                raise exceptions.CommandError(msg)"},{"line_number":480,"context_line":"            attrs[\u0027fixed_ips\u0027] \u003d obj.fixed_ips"},{"line_number":481,"context_line":"        if parsed_args.binding_profile:"},{"line_number":482,"context_line":"            try:"},{"line_number":483,"context_line":"                for key in parsed_args.binding_profile:"}],"source_content_type":"text/x-python","patch_set":9,"id":"dab17558_8eb8afc9","line":480,"range":{"start_line":476,"start_character":20,"end_line":480,"end_character":46},"in_reply_to":"1a122d0e_9c39ae44","updated":"2016-05-18 02:07:41.000000000","message":"I am not sure why SDK would assume so?","commit_id":"4ea33ee274133696a9da9f2f690e1f0eb33e76ee"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"94b9508fc1d46d9ab377dd1fe0e25b5fdcecf6e0","unresolved":false,"context_lines":[{"line_number":481,"context_line":"        if parsed_args.binding_profile:"},{"line_number":482,"context_line":"            try:"},{"line_number":483,"context_line":"                for key in parsed_args.binding_profile:"},{"line_number":484,"context_line":"                    del obj.binding_profile[key]"},{"line_number":485,"context_line":"            except KeyError:"},{"line_number":486,"context_line":"                msg \u003d (_(\"Unable to find %s in binding-profile\") % key)"},{"line_number":487,"context_line":"                raise exceptions.CommandError(msg)"},{"line_number":488,"context_line":"            attrs[\u0027binding:profile\u0027] \u003d obj.binding_profile"},{"line_number":489,"context_line":"        if attrs \u003d\u003d {}:"},{"line_number":490,"context_line":"            msg \u003d \"Nothing specified to be unset\""},{"line_number":491,"context_line":"            raise exceptions.CommandError(msg)"}],"source_content_type":"text/x-python","patch_set":9,"id":"1a122d0e_1c463ebf","line":488,"range":{"start_line":484,"start_character":21,"end_line":488,"end_character":58},"updated":"2016-04-22 14:42:56.000000000","message":"I think this is a bug.  You cannot set both the obj and attrs because the SDK will think nothing changed.","commit_id":"4ea33ee274133696a9da9f2f690e1f0eb33e76ee"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"c1449493b8ff42859e6a2e3a4967f956b0143b2e","unresolved":false,"context_lines":[{"line_number":469,"context_line":"    def take_action(self, parsed_args):"},{"line_number":470,"context_line":"        client \u003d self.app.client_manager.network"},{"line_number":471,"context_line":"        obj \u003d client.find_port(parsed_args.port, ignore_missing\u003dFalse)"},{"line_number":472,"context_line":"        tmp_obj \u003d copy.deepcopy(obj)"},{"line_number":473,"context_line":"        _prepare_fixed_ips(self.app.client_manager, parsed_args)"},{"line_number":474,"context_line":"        attrs \u003d {}"},{"line_number":475,"context_line":"        if parsed_args.fixed_ip:"}],"source_content_type":"text/x-python","patch_set":10,"id":"bab6814e_16adbc31","line":472,"updated":"2016-05-18 06:51:03.000000000","message":"please add some notes at here, and avoid others to face same weird issue. In other hand if we can confirm bug exist in openstack-sdk and resolve it, we can drop the logic in the feature.","commit_id":"c1c8b5a6e4e39a1bf2314c736bc0cee27cba94e4"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"975a5c2e040f9e939decd878b1c5185f8f57e516","unresolved":false,"context_lines":[{"line_number":449,"context_line":"            \u0027--fixed-ip\u0027,"},{"line_number":450,"context_line":"            metavar\u003d\u0027subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e\u0027,"},{"line_number":451,"context_line":"            action\u003dparseractions.MultiKeyValueAction,"},{"line_number":452,"context_line":"            optional_keys\u003d[\u0027subnet\u0027, \u0027ip-address\u0027],"},{"line_number":453,"context_line":"            help\u003d_(\"Desired IP and/or subnet (name or ID) which \""},{"line_number":454,"context_line":"                   \"should be REMOVED from this port: \""},{"line_number":455,"context_line":"                   \"subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e\"))"}],"source_content_type":"text/x-python","patch_set":11,"id":"bab6814e_af2b7293","line":452,"range":{"start_line":452,"start_character":12,"end_line":452,"end_character":25},"updated":"2016-05-19 06:36:19.000000000","message":"But, are they optional ? If only one of the subnet and ip-address, I don\u0027t think it will be removed correctly.","commit_id":"a7bb8746d41f758ba89098d9237c651e01fc5c17"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"2f78d7939dcfaf164d12cc6c1a683278260a9588","unresolved":false,"context_lines":[{"line_number":449,"context_line":"            \u0027--fixed-ip\u0027,"},{"line_number":450,"context_line":"            metavar\u003d\u0027subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e\u0027,"},{"line_number":451,"context_line":"            action\u003dparseractions.MultiKeyValueAction,"},{"line_number":452,"context_line":"            optional_keys\u003d[\u0027subnet\u0027, \u0027ip-address\u0027],"},{"line_number":453,"context_line":"            help\u003d_(\"Desired IP and/or subnet (name or ID) which \""},{"line_number":454,"context_line":"                   \"should be REMOVED from this port: \""},{"line_number":455,"context_line":"                   \"subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e\"))"}],"source_content_type":"text/x-python","patch_set":11,"id":"bab6814e_c8350cdb","line":452,"range":{"start_line":452,"start_character":12,"end_line":452,"end_character":25},"in_reply_to":"bab6814e_af2b7293","updated":"2016-05-19 07:33:01.000000000","message":"Yes, absolutely.\nBut it depends on the way the port was created/updated. \nIf the created port does not have subnet, then unset would work","commit_id":"a7bb8746d41f758ba89098d9237c651e01fc5c17"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"975a5c2e040f9e939decd878b1c5185f8f57e516","unresolved":false,"context_lines":[{"line_number":452,"context_line":"            optional_keys\u003d[\u0027subnet\u0027, \u0027ip-address\u0027],"},{"line_number":453,"context_line":"            help\u003d_(\"Desired IP and/or subnet (name or ID) which \""},{"line_number":454,"context_line":"                   \"should be REMOVED from this port: \""},{"line_number":455,"context_line":"                   \"subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e\"))"},{"line_number":456,"context_line":"        parser.add_argument("},{"line_number":457,"context_line":"            \u0027--binding-profile\u0027,"},{"line_number":458,"context_line":"            metavar\u003d\u0027\u003cbinding-profile\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"bab6814e_ef4d7a9a","line":455,"range":{"start_line":455,"start_character":19,"end_line":455,"end_character":60},"updated":"2016-05-19 06:36:19.000000000","message":"This is not necessary, I think.","commit_id":"a7bb8746d41f758ba89098d9237c651e01fc5c17"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"2f78d7939dcfaf164d12cc6c1a683278260a9588","unresolved":false,"context_lines":[{"line_number":452,"context_line":"            optional_keys\u003d[\u0027subnet\u0027, \u0027ip-address\u0027],"},{"line_number":453,"context_line":"            help\u003d_(\"Desired IP and/or subnet (name or ID) which \""},{"line_number":454,"context_line":"                   \"should be REMOVED from this port: \""},{"line_number":455,"context_line":"                   \"subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e\"))"},{"line_number":456,"context_line":"        parser.add_argument("},{"line_number":457,"context_line":"            \u0027--binding-profile\u0027,"},{"line_number":458,"context_line":"            metavar\u003d\u0027\u003cbinding-profile\u003e\u0027,"}],"source_content_type":"text/x-python","patch_set":11,"id":"bab6814e_e850d00c","line":455,"range":{"start_line":455,"start_character":19,"end_line":455,"end_character":60},"in_reply_to":"bab6814e_ef4d7a9a","updated":"2016-05-19 07:33:01.000000000","message":"I think there is no harm in keeping this info","commit_id":"a7bb8746d41f758ba89098d9237c651e01fc5c17"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"975a5c2e040f9e939decd878b1c5185f8f57e516","unresolved":false,"context_lines":[{"line_number":470,"context_line":"        client \u003d self.app.client_manager.network"},{"line_number":471,"context_line":"        obj \u003d client.find_port(parsed_args.port, ignore_missing\u003dFalse)"},{"line_number":472,"context_line":"        tmp_obj \u003d copy.deepcopy(obj)"},{"line_number":473,"context_line":"        # SDK ignores update() if it recieves a modified obj and attrs"},{"line_number":474,"context_line":"        # To handle the same tmp_obj is created in all take_action of"},{"line_number":475,"context_line":"        # Unset* classes"},{"line_number":476,"context_line":"        _prepare_fixed_ips(self.app.client_manager, parsed_args)"},{"line_number":477,"context_line":"        attrs \u003d {}"},{"line_number":478,"context_line":"        if parsed_args.fixed_ip:"}],"source_content_type":"text/x-python","patch_set":11,"id":"bab6814e_ef661a28","line":475,"range":{"start_line":473,"start_character":0,"end_line":475,"end_character":24},"updated":"2016-05-19 06:36:19.000000000","message":"I think this comment should be above \"tmp_obj \u003d copy.deepcopy(obj)\"\n\nAnd good catch. I have never thought about this. :)","commit_id":"a7bb8746d41f758ba89098d9237c651e01fc5c17"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"2f78d7939dcfaf164d12cc6c1a683278260a9588","unresolved":false,"context_lines":[{"line_number":470,"context_line":"        client \u003d self.app.client_manager.network"},{"line_number":471,"context_line":"        obj \u003d client.find_port(parsed_args.port, ignore_missing\u003dFalse)"},{"line_number":472,"context_line":"        tmp_obj \u003d copy.deepcopy(obj)"},{"line_number":473,"context_line":"        # SDK ignores update() if it recieves a modified obj and attrs"},{"line_number":474,"context_line":"        # To handle the same tmp_obj is created in all take_action of"},{"line_number":475,"context_line":"        # Unset* classes"},{"line_number":476,"context_line":"        _prepare_fixed_ips(self.app.client_manager, parsed_args)"},{"line_number":477,"context_line":"        attrs \u003d {}"},{"line_number":478,"context_line":"        if parsed_args.fixed_ip:"}],"source_content_type":"text/x-python","patch_set":11,"id":"bab6814e_683d00bb","line":475,"range":{"start_line":473,"start_character":0,"end_line":475,"end_character":24},"in_reply_to":"bab6814e_ef661a28","updated":"2016-05-19 07:33:01.000000000","message":"Ok, will do .... :)","commit_id":"a7bb8746d41f758ba89098d9237c651e01fc5c17"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"975a5c2e040f9e939decd878b1c5185f8f57e516","unresolved":false,"context_lines":[{"line_number":485,"context_line":"            attrs[\u0027fixed_ips\u0027] \u003d tmp_obj.fixed_ips"},{"line_number":486,"context_line":"        if parsed_args.binding_profile:"},{"line_number":487,"context_line":"            try:"},{"line_number":488,"context_line":"                for key in parsed_args.binding_profile:"},{"line_number":489,"context_line":"                    del tmp_obj.binding_profile[key]"},{"line_number":490,"context_line":"            except KeyError:"},{"line_number":491,"context_line":"                msg \u003d (_(\"Unable to find %s in binding-profile\") % key)"}],"source_content_type":"text/x-python","patch_set":11,"id":"bab6814e_d20499c1","line":488,"range":{"start_line":488,"start_character":20,"end_line":488,"end_character":23},"updated":"2016-05-19 06:36:19.000000000","message":"If we only check key here, I think if the user gives \"key\u003dWRONG_VALUE\", the key value pair will also be removed. So, maybe we should let user only specify the key, not the \"key\u003dvalue\" in the command line.","commit_id":"a7bb8746d41f758ba89098d9237c651e01fc5c17"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"2f78d7939dcfaf164d12cc6c1a683278260a9588","unresolved":false,"context_lines":[{"line_number":485,"context_line":"            attrs[\u0027fixed_ips\u0027] \u003d tmp_obj.fixed_ips"},{"line_number":486,"context_line":"        if parsed_args.binding_profile:"},{"line_number":487,"context_line":"            try:"},{"line_number":488,"context_line":"                for key in parsed_args.binding_profile:"},{"line_number":489,"context_line":"                    del tmp_obj.binding_profile[key]"},{"line_number":490,"context_line":"            except KeyError:"},{"line_number":491,"context_line":"                msg \u003d (_(\"Unable to find %s in binding-profile\") % key)"}],"source_content_type":"text/x-python","patch_set":11,"id":"bab6814e_08839457","line":488,"range":{"start_line":488,"start_character":20,"end_line":488,"end_character":23},"in_reply_to":"bab6814e_d20499c1","updated":"2016-05-19 07:33:01.000000000","message":"Or, we can check the key-value pair... would make the code more robust, aint it?\nI need to make one more change here! :)","commit_id":"a7bb8746d41f758ba89098d9237c651e01fc5c17"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"18bfc4ef493128d9fc1e79247f7f6a20d35c960d","unresolved":false,"context_lines":[{"line_number":481,"context_line":"                    tmp_obj.fixed_ips.remove(ip)"},{"line_number":482,"context_line":"            except ValueError:"},{"line_number":483,"context_line":"                msg \u003d (_(\"Unable to find %s in fixed-ip\") % ip)"},{"line_number":484,"context_line":"                raise exceptions.CommandError(msg)"},{"line_number":485,"context_line":"            attrs[\u0027fixed_ips\u0027] \u003d tmp_obj.fixed_ips"},{"line_number":486,"context_line":"        if parsed_args.binding_profile:"},{"line_number":487,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":13,"id":"bab6814e_1964fdb6","line":484,"range":{"start_line":484,"start_character":16,"end_line":484,"end_character":50},"updated":"2016-05-23 07:06:04.000000000","message":"I think according to Example 1 in doc/source/command-errors.rst, we should ensure as many API calls successful as we can. So if we failed to remove a fixed_ip, we should record the failure here, but not raising the exception here. And then keep going on to unset bindinf_profile. At last, we can raise the exception.","commit_id":"d5eb71e709140627e439c9cfbc28b230c2e578b1"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"900bc68769354878b1ee3553bdcb597a58a3e79b","unresolved":false,"context_lines":[{"line_number":472,"context_line":"        # SDK ignores update() if it recieves a modified obj and attrs"},{"line_number":473,"context_line":"        # To handle the same tmp_obj is created in all take_action of"},{"line_number":474,"context_line":"        # Unset* classes"},{"line_number":475,"context_line":"        tmp_obj \u003d copy.deepcopy(obj)"},{"line_number":476,"context_line":"        _prepare_fixed_ips(self.app.client_manager, parsed_args)"},{"line_number":477,"context_line":"        attrs \u003d {}"},{"line_number":478,"context_line":"        msg \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"bab6814e_32ea8fdb","line":475,"updated":"2016-05-23 18:54:02.000000000","message":"I don\u0027t think the entire object should be deep copied. This *may* not work after the pending SDK refactor. Instead, I suggest that only fixed IPs and binding profile is deep copied.","commit_id":"e85029c90d4ea0a21f426b4102100decfc5e31dd"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"91a2cb181eb49490afad6106b5c562d3363ab51d","unresolved":false,"context_lines":[{"line_number":472,"context_line":"        # SDK ignores update() if it recieves a modified obj and attrs"},{"line_number":473,"context_line":"        # To handle the same tmp_obj is created in all take_action of"},{"line_number":474,"context_line":"        # Unset* classes"},{"line_number":475,"context_line":"        tmp_obj \u003d copy.deepcopy(obj)"},{"line_number":476,"context_line":"        _prepare_fixed_ips(self.app.client_manager, parsed_args)"},{"line_number":477,"context_line":"        attrs \u003d {}"},{"line_number":478,"context_line":"        msg \u003d \u0027\u0027"}],"source_content_type":"text/x-python","patch_set":14,"id":"bab6814e_08b90ded","line":475,"in_reply_to":"bab6814e_32ea8fdb","updated":"2016-06-15 06:45:41.000000000","message":"Didnt have any idea about that","commit_id":"e85029c90d4ea0a21f426b4102100decfc5e31dd"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"900bc68769354878b1ee3553bdcb597a58a3e79b","unresolved":false,"context_lines":[{"line_number":481,"context_line":"                for ip in parsed_args.fixed_ip:"},{"line_number":482,"context_line":"                    tmp_obj.fixed_ips.remove(ip)"},{"line_number":483,"context_line":"            except ValueError:"},{"line_number":484,"context_line":"                msg +\u003d \"Unable to find %s in fixed-ip\" % ip"},{"line_number":485,"context_line":"            attrs[\u0027fixed_ips\u0027] \u003d tmp_obj.fixed_ips"},{"line_number":486,"context_line":"        if parsed_args.binding_profile:"},{"line_number":487,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":14,"id":"bab6814e_d2ace3a0","line":484,"updated":"2016-05-23 18:54:02.000000000","message":"I suggest \"Port does not contain fixed IP %s\"","commit_id":"e85029c90d4ea0a21f426b4102100decfc5e31dd"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"91a2cb181eb49490afad6106b5c562d3363ab51d","unresolved":false,"context_lines":[{"line_number":481,"context_line":"                for ip in parsed_args.fixed_ip:"},{"line_number":482,"context_line":"                    tmp_obj.fixed_ips.remove(ip)"},{"line_number":483,"context_line":"            except ValueError:"},{"line_number":484,"context_line":"                msg +\u003d \"Unable to find %s in fixed-ip\" % ip"},{"line_number":485,"context_line":"            attrs[\u0027fixed_ips\u0027] \u003d tmp_obj.fixed_ips"},{"line_number":486,"context_line":"        if parsed_args.binding_profile:"},{"line_number":487,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":14,"id":"bab6814e_e8bda9d8","line":484,"in_reply_to":"bab6814e_d2ace3a0","updated":"2016-06-15 06:45:41.000000000","message":"Okay","commit_id":"e85029c90d4ea0a21f426b4102100decfc5e31dd"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"900bc68769354878b1ee3553bdcb597a58a3e79b","unresolved":false,"context_lines":[{"line_number":488,"context_line":"                for key in parsed_args.binding_profile:"},{"line_number":489,"context_line":"                    del tmp_obj.binding_profile[key]"},{"line_number":490,"context_line":"            except KeyError:"},{"line_number":491,"context_line":"                msg +\u003d \"Unable to find %s in binding-profile\" % key"},{"line_number":492,"context_line":"            attrs[\u0027binding:profile\u0027] \u003d tmp_obj.binding_profile"},{"line_number":493,"context_line":"        if attrs \u003d\u003d {}:"},{"line_number":494,"context_line":"            msg \u003d \"Nothing specified to be unset\""}],"source_content_type":"text/x-python","patch_set":14,"id":"bab6814e_72c7f763","line":491,"updated":"2016-05-23 18:54:02.000000000","message":"I suggest \"Port does not contain binding profile %s\"","commit_id":"e85029c90d4ea0a21f426b4102100decfc5e31dd"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"91a2cb181eb49490afad6106b5c562d3363ab51d","unresolved":false,"context_lines":[{"line_number":488,"context_line":"                for key in parsed_args.binding_profile:"},{"line_number":489,"context_line":"                    del tmp_obj.binding_profile[key]"},{"line_number":490,"context_line":"            except KeyError:"},{"line_number":491,"context_line":"                msg +\u003d \"Unable to find %s in binding-profile\" % key"},{"line_number":492,"context_line":"            attrs[\u0027binding:profile\u0027] \u003d tmp_obj.binding_profile"},{"line_number":493,"context_line":"        if attrs \u003d\u003d {}:"},{"line_number":494,"context_line":"            msg \u003d \"Nothing specified to be unset\""}],"source_content_type":"text/x-python","patch_set":14,"id":"bab6814e_88cdfd88","line":491,"in_reply_to":"bab6814e_72c7f763","updated":"2016-06-15 06:45:41.000000000","message":"Okay!","commit_id":"e85029c90d4ea0a21f426b4102100decfc5e31dd"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"900bc68769354878b1ee3553bdcb597a58a3e79b","unresolved":false,"context_lines":[{"line_number":491,"context_line":"                msg +\u003d \"Unable to find %s in binding-profile\" % key"},{"line_number":492,"context_line":"            attrs[\u0027binding:profile\u0027] \u003d tmp_obj.binding_profile"},{"line_number":493,"context_line":"        if attrs \u003d\u003d {}:"},{"line_number":494,"context_line":"            msg \u003d \"Nothing specified to be unset\""},{"line_number":495,"context_line":"        if msg:"},{"line_number":496,"context_line":"            raise exceptions.CommandError(msg)"},{"line_number":497,"context_line":"        client.update_port(obj, **attrs)"}],"source_content_type":"text/x-python","patch_set":14,"id":"bab6814e_52ebd3db","line":494,"updated":"2016-05-23 18:54:02.000000000","message":"Please wrap error in _()","commit_id":"e85029c90d4ea0a21f426b4102100decfc5e31dd"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"a3d2d80d894f8e548bdd77ef89fd4f6adcf3e53d","unresolved":false,"context_lines":[{"line_number":492,"context_line":"            attrs[\u0027binding:profile\u0027] \u003d tmp_obj.binding_profile"},{"line_number":493,"context_line":"        if attrs \u003d\u003d {}:"},{"line_number":494,"context_line":"            msg \u003d \"Nothing specified to be unset\""},{"line_number":495,"context_line":"        if msg:"},{"line_number":496,"context_line":"            raise exceptions.CommandError(msg)"},{"line_number":497,"context_line":"        client.update_port(obj, **attrs)"}],"source_content_type":"text/x-python","patch_set":14,"id":"bab6814e_10d94484","line":495,"updated":"2016-05-23 19:02:40.000000000","message":"This is different from the other unset commands...  I think all of the commands should be consistency in how errors are handled.","commit_id":"e85029c90d4ea0a21f426b4102100decfc5e31dd"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"91a2cb181eb49490afad6106b5c562d3363ab51d","unresolved":false,"context_lines":[{"line_number":492,"context_line":"            attrs[\u0027binding:profile\u0027] \u003d tmp_obj.binding_profile"},{"line_number":493,"context_line":"        if attrs \u003d\u003d {}:"},{"line_number":494,"context_line":"            msg \u003d \"Nothing specified to be unset\""},{"line_number":495,"context_line":"        if msg:"},{"line_number":496,"context_line":"            raise exceptions.CommandError(msg)"},{"line_number":497,"context_line":"        client.update_port(obj, **attrs)"}],"source_content_type":"text/x-python","patch_set":14,"id":"bab6814e_48567507","line":495,"in_reply_to":"bab6814e_10d94484","updated":"2016-06-15 06:45:41.000000000","message":"Yeah, let this go ahead once, then I will fix the others","commit_id":"e85029c90d4ea0a21f426b4102100decfc5e31dd"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"f91f1ef93f311c90236d5d76933c43f6fa27ed60","unresolved":false,"context_lines":[{"line_number":461,"context_line":"            metavar\u003d\u0027subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e\u0027,"},{"line_number":462,"context_line":"            action\u003dparseractions.MultiKeyValueAction,"},{"line_number":463,"context_line":"            optional_keys\u003d[\u0027subnet\u0027, \u0027ip-address\u0027],"},{"line_number":464,"context_line":"            help\u003d_(\"Desired IP and/or subnet (name or ID) which \""},{"line_number":465,"context_line":"                   \"should be REMOVED from this port: \""},{"line_number":466,"context_line":"                   \"subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e\"))"},{"line_number":467,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":15,"id":"7aa08908_2244e819","line":464,"updated":"2016-06-15 13:04:03.000000000","message":"Please update the help to match the documentation.","commit_id":"59fe5c4d16c3292ef487aacaf0e976f81fb13034"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"f91f1ef93f311c90236d5d76933c43f6fa27ed60","unresolved":false,"context_lines":[{"line_number":468,"context_line":"            \u0027--binding-profile\u0027,"},{"line_number":469,"context_line":"            metavar\u003d\u0027\u003cbinding-profile\u003e\u0027,"},{"line_number":470,"context_line":"            action\u003dparseractions.KeyValueAction,"},{"line_number":471,"context_line":"            help\u003d_(\"Binding Profile which should be REMOVED \""},{"line_number":472,"context_line":"                   \"from this port: \u003ckey\u003e\"))"},{"line_number":473,"context_line":"        parser.add_argument("},{"line_number":474,"context_line":"            \u0027port\u0027,"}],"source_content_type":"text/x-python","patch_set":15,"id":"7aa08908_e26020a7","line":471,"updated":"2016-06-15 13:04:03.000000000","message":"Please update the help to match the documentation.","commit_id":"59fe5c4d16c3292ef487aacaf0e976f81fb13034"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"4317aeb4f33a1d0335333771b1fcf0bc3a1bbbd0","unresolved":false,"context_lines":[{"line_number":473,"context_line":"            action\u003dparseractions.KeyValueAction,"},{"line_number":474,"context_line":"            help\u003d_(\"Binding Profile which should be REMOVED \""},{"line_number":475,"context_line":"                   \"from this port: \u003ckey\u003e. \""},{"line_number":476,"context_line":"                   \"(repeat option to unset multiple fixed \""},{"line_number":477,"context_line":"                   \"IP addresses)\"))"},{"line_number":478,"context_line":"        parser.add_argument("},{"line_number":479,"context_line":"            \u0027port\u0027,"},{"line_number":480,"context_line":"            metavar\u003d\"\u003cport\u003e\","}],"source_content_type":"text/x-python","patch_set":16,"id":"3aaa91ec_abad3e33","line":477,"range":{"start_line":476,"start_character":54,"end_line":477,"end_character":33},"updated":"2016-06-22 09:38:42.000000000","message":"typo","commit_id":"23d3c5f268c05756e92e1c0df88b3bd8f5aad0c2"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"4317aeb4f33a1d0335333771b1fcf0bc3a1bbbd0","unresolved":false,"context_lines":[{"line_number":498,"context_line":"                for ip in parsed_args.fixed_ip:"},{"line_number":499,"context_line":"                    tmp_fixed_ips.remove(ip)"},{"line_number":500,"context_line":"            except ValueError:"},{"line_number":501,"context_line":"                msg +\u003d _(\"Port does not contain fixed-ip %s\") % ip"},{"line_number":502,"context_line":"            attrs[\u0027fixed_ips\u0027] \u003d tmp_fixed_ips"},{"line_number":503,"context_line":"        if parsed_args.binding_profile:"},{"line_number":504,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":16,"id":"3aaa91ec_6b7236e7","line":501,"range":{"start_line":501,"start_character":16,"end_line":501,"end_character":23},"updated":"2016-06-22 09:38:42.000000000","message":"If you use msg +\u003d, I think a \"\\n\" is necessary in the end of the line.","commit_id":"23d3c5f268c05756e92e1c0df88b3bd8f5aad0c2"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"2402e79213e534445288ef97c515841805700a92","unresolved":false,"context_lines":[{"line_number":461,"context_line":"            metavar\u003d\u0027subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e\u0027,"},{"line_number":462,"context_line":"            action\u003dparseractions.MultiKeyValueAction,"},{"line_number":463,"context_line":"            optional_keys\u003d[\u0027subnet\u0027, \u0027ip-address\u0027],"},{"line_number":464,"context_line":"            help\u003d_(\"Desired IP and/or subnet (name or ID) which \""},{"line_number":465,"context_line":"                   \"should be REMOVED from this port: \""},{"line_number":466,"context_line":"                   \"subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e. \""},{"line_number":467,"context_line":"                   \"(repeat option to unset multiple fixed \""},{"line_number":468,"context_line":"                   \"IP addresses)\"))"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"        parser.add_argument("},{"line_number":471,"context_line":"            \u0027--binding-profile\u0027,"}],"source_content_type":"text/x-python","patch_set":17,"id":"3aaa91ec_bf5ef80f","line":468,"range":{"start_line":464,"start_character":20,"end_line":468,"end_character":33},"updated":"2016-06-22 17:58:37.000000000","message":"This needs to match the documentation.","commit_id":"f3110db5806bdcff58a967aeaacf9217cdcd7216"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"40da72883a8cbb5e405ab4878cf8ac1322b0f9eb","unresolved":false,"context_lines":[{"line_number":461,"context_line":"            metavar\u003d\u0027subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e\u0027,"},{"line_number":462,"context_line":"            action\u003dparseractions.MultiKeyValueAction,"},{"line_number":463,"context_line":"            optional_keys\u003d[\u0027subnet\u0027, \u0027ip-address\u0027],"},{"line_number":464,"context_line":"            help\u003d_(\"Desired IP and/or subnet (name or ID) which \""},{"line_number":465,"context_line":"                   \"should be REMOVED from this port: \""},{"line_number":466,"context_line":"                   \"subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e. \""},{"line_number":467,"context_line":"                   \"(repeat option to unset multiple fixed \""},{"line_number":468,"context_line":"                   \"IP addresses)\"))"},{"line_number":469,"context_line":""},{"line_number":470,"context_line":"        parser.add_argument("},{"line_number":471,"context_line":"            \u0027--binding-profile\u0027,"}],"source_content_type":"text/x-python","patch_set":17,"id":"3aaa91ec_47429b3f","line":468,"range":{"start_line":464,"start_character":20,"end_line":468,"end_character":33},"in_reply_to":"3aaa91ec_bf5ef80f","updated":"2016-06-23 02:34:12.000000000","message":"Done","commit_id":"f3110db5806bdcff58a967aeaacf9217cdcd7216"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"2402e79213e534445288ef97c515841805700a92","unresolved":false,"context_lines":[{"line_number":470,"context_line":"        parser.add_argument("},{"line_number":471,"context_line":"            \u0027--binding-profile\u0027,"},{"line_number":472,"context_line":"            metavar\u003d\u0027\u003cbinding-profile\u003e\u0027,"},{"line_number":473,"context_line":"            action\u003dparseractions.KeyValueAction,"},{"line_number":474,"context_line":"            help\u003d_(\"Binding Profile which should be REMOVED \""},{"line_number":475,"context_line":"                   \"from this port: \u003ckey\u003e. \""},{"line_number":476,"context_line":"                   \"(repeat option to unset multiple binding \""}],"source_content_type":"text/x-python","patch_set":17,"id":"3aaa91ec_df35c4da","line":473,"updated":"2016-06-22 17:58:37.000000000","message":"Only the key is needed.","commit_id":"f3110db5806bdcff58a967aeaacf9217cdcd7216"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"2402e79213e534445288ef97c515841805700a92","unresolved":false,"context_lines":[{"line_number":471,"context_line":"            \u0027--binding-profile\u0027,"},{"line_number":472,"context_line":"            metavar\u003d\u0027\u003cbinding-profile\u003e\u0027,"},{"line_number":473,"context_line":"            action\u003dparseractions.KeyValueAction,"},{"line_number":474,"context_line":"            help\u003d_(\"Binding Profile which should be REMOVED \""},{"line_number":475,"context_line":"                   \"from this port: \u003ckey\u003e. \""},{"line_number":476,"context_line":"                   \"(repeat option to unset multiple binding \""},{"line_number":477,"context_line":"                   \"profiles)\"))"},{"line_number":478,"context_line":"        parser.add_argument("},{"line_number":479,"context_line":"            \u0027port\u0027,"},{"line_number":480,"context_line":"            metavar\u003d\"\u003cport\u003e\","}],"source_content_type":"text/x-python","patch_set":17,"id":"3aaa91ec_df6304db","line":477,"range":{"start_line":474,"start_character":19,"end_line":477,"end_character":30},"updated":"2016-06-22 17:58:37.000000000","message":"This needs to match the documentation.","commit_id":"f3110db5806bdcff58a967aeaacf9217cdcd7216"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"40da72883a8cbb5e405ab4878cf8ac1322b0f9eb","unresolved":false,"context_lines":[{"line_number":471,"context_line":"            \u0027--binding-profile\u0027,"},{"line_number":472,"context_line":"            metavar\u003d\u0027\u003cbinding-profile\u003e\u0027,"},{"line_number":473,"context_line":"            action\u003dparseractions.KeyValueAction,"},{"line_number":474,"context_line":"            help\u003d_(\"Binding Profile which should be REMOVED \""},{"line_number":475,"context_line":"                   \"from this port: \u003ckey\u003e. \""},{"line_number":476,"context_line":"                   \"(repeat option to unset multiple binding \""},{"line_number":477,"context_line":"                   \"profiles)\"))"},{"line_number":478,"context_line":"        parser.add_argument("},{"line_number":479,"context_line":"            \u0027port\u0027,"},{"line_number":480,"context_line":"            metavar\u003d\"\u003cport\u003e\","}],"source_content_type":"text/x-python","patch_set":17,"id":"3aaa91ec_e75aa729","line":477,"range":{"start_line":474,"start_character":19,"end_line":477,"end_character":30},"in_reply_to":"3aaa91ec_df6304db","updated":"2016-06-23 02:34:12.000000000","message":"Done","commit_id":"f3110db5806bdcff58a967aeaacf9217cdcd7216"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"2402e79213e534445288ef97c515841805700a92","unresolved":false,"context_lines":[{"line_number":497,"context_line":"            try:"},{"line_number":498,"context_line":"                for ip in parsed_args.fixed_ip:"},{"line_number":499,"context_line":"                    tmp_fixed_ips.remove(ip)"},{"line_number":500,"context_line":"            except ValueError:"},{"line_number":501,"context_line":"                msg +\u003d _(\"Port does not contain fixed-ip %s.\\n\") % ip"},{"line_number":502,"context_line":"            attrs[\u0027fixed_ips\u0027] \u003d tmp_fixed_ips"},{"line_number":503,"context_line":"        if parsed_args.binding_profile:"},{"line_number":504,"context_line":"            try:"},{"line_number":505,"context_line":"                for key in parsed_args.binding_profile:"},{"line_number":506,"context_line":"                    del tmp_binding_profile[key]"},{"line_number":507,"context_line":"            except KeyError:"},{"line_number":508,"context_line":"                msg +\u003d _(\"Port does not contain binding-profile %s.\\n\") % key"},{"line_number":509,"context_line":"            attrs[\u0027binding:profile\u0027] \u003d tmp_binding_profile"},{"line_number":510,"context_line":"        if msg:"},{"line_number":511,"context_line":"            raise exceptions.CommandError(msg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"3aaa91ec_ffd3605d","line":508,"range":{"start_line":500,"start_character":0,"end_line":508,"end_character":77},"updated":"2016-06-22 17:58:37.000000000","message":"Similar comment on error handling as noted in other patches.","commit_id":"f3110db5806bdcff58a967aeaacf9217cdcd7216"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"40da72883a8cbb5e405ab4878cf8ac1322b0f9eb","unresolved":false,"context_lines":[{"line_number":497,"context_line":"            try:"},{"line_number":498,"context_line":"                for ip in parsed_args.fixed_ip:"},{"line_number":499,"context_line":"                    tmp_fixed_ips.remove(ip)"},{"line_number":500,"context_line":"            except ValueError:"},{"line_number":501,"context_line":"                msg +\u003d _(\"Port does not contain fixed-ip %s.\\n\") % ip"},{"line_number":502,"context_line":"            attrs[\u0027fixed_ips\u0027] \u003d tmp_fixed_ips"},{"line_number":503,"context_line":"        if parsed_args.binding_profile:"},{"line_number":504,"context_line":"            try:"},{"line_number":505,"context_line":"                for key in parsed_args.binding_profile:"},{"line_number":506,"context_line":"                    del tmp_binding_profile[key]"},{"line_number":507,"context_line":"            except KeyError:"},{"line_number":508,"context_line":"                msg +\u003d _(\"Port does not contain binding-profile %s.\\n\") % key"},{"line_number":509,"context_line":"            attrs[\u0027binding:profile\u0027] \u003d tmp_binding_profile"},{"line_number":510,"context_line":"        if msg:"},{"line_number":511,"context_line":"            raise exceptions.CommandError(msg)"}],"source_content_type":"text/x-python","patch_set":17,"id":"3aaa91ec_2764afe3","line":508,"range":{"start_line":500,"start_character":0,"end_line":508,"end_character":77},"in_reply_to":"3aaa91ec_ffd3605d","updated":"2016-06-23 02:34:12.000000000","message":"Done","commit_id":"f3110db5806bdcff58a967aeaacf9217cdcd7216"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"1903d7948eec979b54e54f04ca725d87967610b4","unresolved":false,"context_lines":[{"line_number":469,"context_line":"        parser.add_argument("},{"line_number":470,"context_line":"            \u0027--binding-profile\u0027,"},{"line_number":471,"context_line":"            metavar\u003d\u0027\u003cbinding-profile\u003e\u0027,"},{"line_number":472,"context_line":"            action\u003dparseractions.KeyValueAction,"},{"line_number":473,"context_line":"            help\u003d_(\"Custom data to be passed as binding:profile:\u003ckey\u003e\u003d\u003cvalue\u003e\""},{"line_number":474,"context_line":"                   \"(repeat option to set multiple binding:profile data)\"))"},{"line_number":475,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":18,"id":"3aaa91ec_ba5ff83f","line":472,"updated":"2016-06-23 13:37:52.000000000","message":"Only the key is necessary so the append action can be used instead.","commit_id":"1ce17a0dded53e321b68f396a23543daa7c33656"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"bef5bd8efc19a6b59fe3d575f56e8f577a23c03f","unresolved":false,"context_lines":[{"line_number":486,"context_line":"        parser.add_argument("},{"line_number":487,"context_line":"            \u0027--fixed-ip\u0027,"},{"line_number":488,"context_line":"            metavar\u003d\u0027subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e\u0027,"},{"line_number":489,"context_line":"            action\u003d\u0027append\u0027,"},{"line_number":490,"context_line":"            optional_keys\u003d[\u0027subnet\u0027, \u0027ip-address\u0027],"},{"line_number":491,"context_line":"            help\u003d_(\"Desired IP and/or subnet (name or ID) which should be\""},{"line_number":492,"context_line":"                   \"removed from this port: subnet\u003d\u003csubnet\u003e,\""}],"source_content_type":"text/x-python","patch_set":20,"id":"3aaa91ec_ad610fd5","line":489,"range":{"start_line":489,"start_character":20,"end_line":489,"end_character":26},"updated":"2016-06-27 07:04:41.000000000","message":"parseractions.MultiKeyValueAction ?","commit_id":"974edc4c7852d7d03f2602439694191322081bb3"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"4b26243aede5640bdb592b37de51974cc031134a","unresolved":false,"context_lines":[{"line_number":486,"context_line":"        parser.add_argument("},{"line_number":487,"context_line":"            \u0027--fixed-ip\u0027,"},{"line_number":488,"context_line":"            metavar\u003d\u0027subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e\u0027,"},{"line_number":489,"context_line":"            action\u003d\u0027append\u0027,"},{"line_number":490,"context_line":"            optional_keys\u003d[\u0027subnet\u0027, \u0027ip-address\u0027],"},{"line_number":491,"context_line":"            help\u003d_(\"Desired IP and/or subnet (name or ID) which should be\""},{"line_number":492,"context_line":"                   \"removed from this port: subnet\u003d\u003csubnet\u003e,\""}],"source_content_type":"text/x-python","patch_set":20,"id":"3aaa91ec_53c2c885","line":489,"range":{"start_line":489,"start_character":20,"end_line":489,"end_character":26},"in_reply_to":"3aaa91ec_30c9f2ac","updated":"2016-06-27 07:47:36.000000000","message":"OK","commit_id":"974edc4c7852d7d03f2602439694191322081bb3"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"1262aeac7685a3b7fc91ce1f443fa1fd80adafec","unresolved":false,"context_lines":[{"line_number":486,"context_line":"        parser.add_argument("},{"line_number":487,"context_line":"            \u0027--fixed-ip\u0027,"},{"line_number":488,"context_line":"            metavar\u003d\u0027subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e\u0027,"},{"line_number":489,"context_line":"            action\u003d\u0027append\u0027,"},{"line_number":490,"context_line":"            optional_keys\u003d[\u0027subnet\u0027, \u0027ip-address\u0027],"},{"line_number":491,"context_line":"            help\u003d_(\"Desired IP and/or subnet (name or ID) which should be\""},{"line_number":492,"context_line":"                   \"removed from this port: subnet\u003d\u003csubnet\u003e,\""}],"source_content_type":"text/x-python","patch_set":20,"id":"3aaa91ec_30c9f2ac","line":489,"range":{"start_line":489,"start_character":20,"end_line":489,"end_character":26},"in_reply_to":"3aaa91ec_ad610fd5","updated":"2016-06-27 07:19:49.000000000","message":"As per Richard( PS#18 ) as only Key is needed, so we can use action\u003d\"append\"","commit_id":"974edc4c7852d7d03f2602439694191322081bb3"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"bef5bd8efc19a6b59fe3d575f56e8f577a23c03f","unresolved":false,"context_lines":[{"line_number":487,"context_line":"            \u0027--fixed-ip\u0027,"},{"line_number":488,"context_line":"            metavar\u003d\u0027subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e\u0027,"},{"line_number":489,"context_line":"            action\u003d\u0027append\u0027,"},{"line_number":490,"context_line":"            optional_keys\u003d[\u0027subnet\u0027, \u0027ip-address\u0027],"},{"line_number":491,"context_line":"            help\u003d_(\"Desired IP and/or subnet (name or ID) which should be\""},{"line_number":492,"context_line":"                   \"removed from this port: subnet\u003d\u003csubnet\u003e,\""},{"line_number":493,"context_line":"                   \"ip-address\u003d\u003cip-address\u003e (repeat option to unset multiple\""}],"source_content_type":"text/x-python","patch_set":20,"id":"3aaa91ec_8d5c131a","line":490,"range":{"start_line":490,"start_character":12,"end_line":490,"end_character":25},"updated":"2016-06-27 07:04:41.000000000","message":"required_keys ?","commit_id":"974edc4c7852d7d03f2602439694191322081bb3"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"1262aeac7685a3b7fc91ce1f443fa1fd80adafec","unresolved":false,"context_lines":[{"line_number":487,"context_line":"            \u0027--fixed-ip\u0027,"},{"line_number":488,"context_line":"            metavar\u003d\u0027subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e\u0027,"},{"line_number":489,"context_line":"            action\u003d\u0027append\u0027,"},{"line_number":490,"context_line":"            optional_keys\u003d[\u0027subnet\u0027, \u0027ip-address\u0027],"},{"line_number":491,"context_line":"            help\u003d_(\"Desired IP and/or subnet (name or ID) which should be\""},{"line_number":492,"context_line":"                   \"removed from this port: subnet\u003d\u003csubnet\u003e,\""},{"line_number":493,"context_line":"                   \"ip-address\u003d\u003cip-address\u003e (repeat option to unset multiple\""}],"source_content_type":"text/x-python","patch_set":20,"id":"3aaa91ec_d03cee94","line":490,"range":{"start_line":490,"start_character":12,"end_line":490,"end_character":25},"in_reply_to":"3aaa91ec_8d5c131a","updated":"2016-06-27 07:19:49.000000000","message":"not optional_keys?\nSame as create?","commit_id":"974edc4c7852d7d03f2602439694191322081bb3"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"4b26243aede5640bdb592b37de51974cc031134a","unresolved":false,"context_lines":[{"line_number":487,"context_line":"            \u0027--fixed-ip\u0027,"},{"line_number":488,"context_line":"            metavar\u003d\u0027subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e\u0027,"},{"line_number":489,"context_line":"            action\u003d\u0027append\u0027,"},{"line_number":490,"context_line":"            optional_keys\u003d[\u0027subnet\u0027, \u0027ip-address\u0027],"},{"line_number":491,"context_line":"            help\u003d_(\"Desired IP and/or subnet (name or ID) which should be\""},{"line_number":492,"context_line":"                   \"removed from this port: subnet\u003d\u003csubnet\u003e,\""},{"line_number":493,"context_line":"                   \"ip-address\u003d\u003cip-address\u003e (repeat option to unset multiple\""}],"source_content_type":"text/x-python","patch_set":20,"id":"3aaa91ec_13ccc0b9","line":490,"range":{"start_line":490,"start_character":12,"end_line":490,"end_character":25},"in_reply_to":"3aaa91ec_d03cee94","updated":"2016-06-27 07:47:36.000000000","message":"Well, if action is append, then optional_keys does not make any sense. You can remove this.","commit_id":"974edc4c7852d7d03f2602439694191322081bb3"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"bef5bd8efc19a6b59fe3d575f56e8f577a23c03f","unresolved":false,"context_lines":[{"line_number":498,"context_line":"            metavar\u003d\u0027\u003cbinding-profile\u003e\u0027,"},{"line_number":499,"context_line":"            action\u003dparseractions.KeyValueAction,"},{"line_number":500,"context_line":"            help\u003d_(\"Custom data to be passed as binding:profile:\u003ckey\u003e\u003d\u003cvalue\u003e\""},{"line_number":501,"context_line":"                   \"(repeat option to set multiple binding:profile data)\"))"},{"line_number":502,"context_line":"        parser.add_argument("},{"line_number":503,"context_line":"            \u0027port\u0027,"},{"line_number":504,"context_line":"            metavar\u003d\"\u003cport\u003e\","}],"source_content_type":"text/x-python","patch_set":20,"id":"3aaa91ec_cda0dbf6","line":501,"range":{"start_line":501,"start_character":38,"end_line":501,"end_character":41},"updated":"2016-06-27 07:04:41.000000000","message":"nit: set -\u003e unset","commit_id":"974edc4c7852d7d03f2602439694191322081bb3"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"bef5bd8efc19a6b59fe3d575f56e8f577a23c03f","unresolved":false,"context_lines":[{"line_number":521,"context_line":"                for ip in parsed_args.fixed_ip:"},{"line_number":522,"context_line":"                    tmp_fixed_ips.remove(ip)"},{"line_number":523,"context_line":"            except ValueError:"},{"line_number":524,"context_line":"                msg \u003d _(\"Port does not contain fixed-ip %s.\\n\") % ip"},{"line_number":525,"context_line":"                raise exceptions.CommandError(msg)"},{"line_number":526,"context_line":"            attrs[\u0027fixed_ips\u0027] \u003d tmp_fixed_ips"},{"line_number":527,"context_line":"        if parsed_args.binding_profile:"}],"source_content_type":"text/x-python","patch_set":20,"id":"3aaa91ec_4dd98bf2","line":524,"range":{"start_line":524,"start_character":59,"end_line":524,"end_character":61},"updated":"2016-06-27 07:04:41.000000000","message":"nit: not necessary","commit_id":"974edc4c7852d7d03f2602439694191322081bb3"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"bef5bd8efc19a6b59fe3d575f56e8f577a23c03f","unresolved":false,"context_lines":[{"line_number":527,"context_line":"        if parsed_args.binding_profile:"},{"line_number":528,"context_line":"            try:"},{"line_number":529,"context_line":"                for key in parsed_args.binding_profile:"},{"line_number":530,"context_line":"                    del tmp_binding_profile[key]"},{"line_number":531,"context_line":"            except KeyError:"},{"line_number":532,"context_line":"                msg \u003d _(\"Port does not contain binding-profile %s.\\n\") % key"},{"line_number":533,"context_line":"                raise exceptions.CommandError(msg)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3aaa91ec_cd9a9b13","line":530,"range":{"start_line":530,"start_character":20,"end_line":530,"end_character":23},"updated":"2016-06-27 07:04:41.000000000","message":"Why not use .remove() here ?","commit_id":"974edc4c7852d7d03f2602439694191322081bb3"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"4b26243aede5640bdb592b37de51974cc031134a","unresolved":false,"context_lines":[{"line_number":527,"context_line":"        if parsed_args.binding_profile:"},{"line_number":528,"context_line":"            try:"},{"line_number":529,"context_line":"                for key in parsed_args.binding_profile:"},{"line_number":530,"context_line":"                    del tmp_binding_profile[key]"},{"line_number":531,"context_line":"            except KeyError:"},{"line_number":532,"context_line":"                msg \u003d _(\"Port does not contain binding-profile %s.\\n\") % key"},{"line_number":533,"context_line":"                raise exceptions.CommandError(msg)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3aaa91ec_d04fce8f","line":530,"range":{"start_line":530,"start_character":20,"end_line":530,"end_character":23},"in_reply_to":"3aaa91ec_904f0633","updated":"2016-06-27 07:47:36.000000000","message":"Just for the consistency. :)","commit_id":"974edc4c7852d7d03f2602439694191322081bb3"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"1262aeac7685a3b7fc91ce1f443fa1fd80adafec","unresolved":false,"context_lines":[{"line_number":527,"context_line":"        if parsed_args.binding_profile:"},{"line_number":528,"context_line":"            try:"},{"line_number":529,"context_line":"                for key in parsed_args.binding_profile:"},{"line_number":530,"context_line":"                    del tmp_binding_profile[key]"},{"line_number":531,"context_line":"            except KeyError:"},{"line_number":532,"context_line":"                msg \u003d _(\"Port does not contain binding-profile %s.\\n\") % key"},{"line_number":533,"context_line":"                raise exceptions.CommandError(msg)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3aaa91ec_904f0633","line":530,"range":{"start_line":530,"start_character":20,"end_line":530,"end_character":23},"in_reply_to":"3aaa91ec_cd9a9b13","updated":"2016-06-27 07:19:49.000000000","message":"I dont think this is causing an issue, is it?","commit_id":"974edc4c7852d7d03f2602439694191322081bb3"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"19cc6fdbeacf6b03d0d1ab32acb8bb04077b2dcc","unresolved":false,"context_lines":[{"line_number":527,"context_line":"        if parsed_args.binding_profile:"},{"line_number":528,"context_line":"            try:"},{"line_number":529,"context_line":"                for key in parsed_args.binding_profile:"},{"line_number":530,"context_line":"                    del tmp_binding_profile[key]"},{"line_number":531,"context_line":"            except KeyError:"},{"line_number":532,"context_line":"                msg \u003d _(\"Port does not contain binding-profile %s.\\n\") % key"},{"line_number":533,"context_line":"                raise exceptions.CommandError(msg)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3aaa91ec_391efd0b","line":530,"range":{"start_line":530,"start_character":20,"end_line":530,"end_character":23},"in_reply_to":"3aaa91ec_d04fce8f","updated":"2016-06-27 08:41:40.000000000","message":"I think del is easier to handle in the case of dicts","commit_id":"974edc4c7852d7d03f2602439694191322081bb3"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"bef5bd8efc19a6b59fe3d575f56e8f577a23c03f","unresolved":false,"context_lines":[{"line_number":529,"context_line":"                for key in parsed_args.binding_profile:"},{"line_number":530,"context_line":"                    del tmp_binding_profile[key]"},{"line_number":531,"context_line":"            except KeyError:"},{"line_number":532,"context_line":"                msg \u003d _(\"Port does not contain binding-profile %s.\\n\") % key"},{"line_number":533,"context_line":"                raise exceptions.CommandError(msg)"},{"line_number":534,"context_line":"            attrs[\u0027binding:profile\u0027] \u003d tmp_binding_profile"},{"line_number":535,"context_line":"        client.update_port(obj, **attrs)"}],"source_content_type":"text/x-python","patch_set":20,"id":"3aaa91ec_8ddff3d4","line":532,"range":{"start_line":532,"start_character":66,"end_line":532,"end_character":68},"updated":"2016-06-27 07:04:41.000000000","message":"nit: not necessary","commit_id":"974edc4c7852d7d03f2602439694191322081bb3"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"ba4a7d2153737685ad3dfd5c2a1431875dc0f9d7","unresolved":false,"context_lines":[{"line_number":488,"context_line":"            metavar\u003d\u0027subnet\u003d\u003csubnet\u003e,ip-address\u003d\u003cip-address\u003e\u0027,"},{"line_number":489,"context_line":"            action\u003dparseractions.MultiKeyValueAction,"},{"line_number":490,"context_line":"            optional_keys\u003d[\u0027subnet\u0027, \u0027ip-address\u0027],"},{"line_number":491,"context_line":"            help\u003d_(\"Desired IP and/or subnet (name or ID) which should be\""},{"line_number":492,"context_line":"                   \"removed from this port: subnet\u003d\u003csubnet\u003e,\""},{"line_number":493,"context_line":"                   \"ip-address\u003d\u003cip-address\u003e (repeat option to unset multiple\""},{"line_number":494,"context_line":"                   \"fixed IP addresses)\"))"}],"source_content_type":"text/x-python","patch_set":24,"id":"3aaa91ec_45d15722","line":491,"updated":"2016-06-27 11:35:49.000000000","message":"nits: add the blank space after the last word","commit_id":"fb43cba288f16f78383234139f15af02fba24649"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"ba4a7d2153737685ad3dfd5c2a1431875dc0f9d7","unresolved":false,"context_lines":[{"line_number":490,"context_line":"            optional_keys\u003d[\u0027subnet\u0027, \u0027ip-address\u0027],"},{"line_number":491,"context_line":"            help\u003d_(\"Desired IP and/or subnet (name or ID) which should be\""},{"line_number":492,"context_line":"                   \"removed from this port: subnet\u003d\u003csubnet\u003e,\""},{"line_number":493,"context_line":"                   \"ip-address\u003d\u003cip-address\u003e (repeat option to unset multiple\""},{"line_number":494,"context_line":"                   \"fixed IP addresses)\"))"},{"line_number":495,"context_line":""},{"line_number":496,"context_line":"        parser.add_argument("}],"source_content_type":"text/x-python","patch_set":24,"id":"3aaa91ec_25cc0b88","line":493,"updated":"2016-06-27 11:35:49.000000000","message":"ditto","commit_id":"fb43cba288f16f78383234139f15af02fba24649"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"ba4a7d2153737685ad3dfd5c2a1431875dc0f9d7","unresolved":false,"context_lines":[{"line_number":497,"context_line":"            \u0027--binding-profile\u0027,"},{"line_number":498,"context_line":"            metavar\u003d\u0027\u003cbinding-profile\u003e\u0027,"},{"line_number":499,"context_line":"            action\u003dparseractions.KeyValueAction,"},{"line_number":500,"context_line":"            help\u003d_(\"Custom data to be passed as binding:profile:\u003ckey\u003e\u003d\u003cvalue\u003e\""},{"line_number":501,"context_line":"                   \"(repeat option to unset multiple binding:profile data)\"))"},{"line_number":502,"context_line":"        parser.add_argument("},{"line_number":503,"context_line":"            \u0027port\u0027,"}],"source_content_type":"text/x-python","patch_set":24,"id":"3aaa91ec_65c29354","line":500,"updated":"2016-06-27 11:35:49.000000000","message":"ditto","commit_id":"fb43cba288f16f78383234139f15af02fba24649"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"ba4a7d2153737685ad3dfd5c2a1431875dc0f9d7","unresolved":false,"context_lines":[{"line_number":527,"context_line":"        if parsed_args.binding_profile:"},{"line_number":528,"context_line":"            try:"},{"line_number":529,"context_line":"                for key in parsed_args.binding_profile:"},{"line_number":530,"context_line":"                    del tmp_binding_profile[key]"},{"line_number":531,"context_line":"            except KeyError:"},{"line_number":532,"context_line":"                msg \u003d _(\"Port does not contain binding-profile %s\") % key"},{"line_number":533,"context_line":"                raise exceptions.CommandError(msg)"}],"source_content_type":"text/x-python","patch_set":24,"id":"3aaa91ec_dbffe663","line":530,"updated":"2016-06-27 11:35:49.000000000","message":"only the key is used to unset, I think we might use \"--binding-profile \u003ckey\u003e\" as option name,  the command input is simpler so that users can type less letters. Think about it?","commit_id":"fb43cba288f16f78383234139f15af02fba24649"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"04f5b56d68292defa635d9efc63a9d25eefba7d9","unresolved":false,"context_lines":[{"line_number":527,"context_line":"        if parsed_args.binding_profile:"},{"line_number":528,"context_line":"            try:"},{"line_number":529,"context_line":"                for key in parsed_args.binding_profile:"},{"line_number":530,"context_line":"                    del tmp_binding_profile[key]"},{"line_number":531,"context_line":"            except KeyError:"},{"line_number":532,"context_line":"                msg \u003d _(\"Port does not contain binding-profile %s\") % key"},{"line_number":533,"context_line":"                raise exceptions.CommandError(msg)"}],"source_content_type":"text/x-python","patch_set":24,"id":"3aaa91ec_77c04ce1","line":530,"in_reply_to":"3aaa91ec_5c58d756","updated":"2016-06-28 09:08:41.000000000","message":"I wanted to keep it similar to the other options for binding profile in the other port CLIs ( set, create etc)","commit_id":"fb43cba288f16f78383234139f15af02fba24649"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"81fe5ff6448c2ffd00ec5442b96149fa43f7eb42","unresolved":false,"context_lines":[{"line_number":527,"context_line":"        if parsed_args.binding_profile:"},{"line_number":528,"context_line":"            try:"},{"line_number":529,"context_line":"                for key in parsed_args.binding_profile:"},{"line_number":530,"context_line":"                    del tmp_binding_profile[key]"},{"line_number":531,"context_line":"            except KeyError:"},{"line_number":532,"context_line":"                msg \u003d _(\"Port does not contain binding-profile %s\") % key"},{"line_number":533,"context_line":"                raise exceptions.CommandError(msg)"}],"source_content_type":"text/x-python","patch_set":24,"id":"3aaa91ec_c925285d","line":530,"in_reply_to":"3aaa91ec_77c04ce1","updated":"2016-06-28 09:18:42.000000000","message":"OK, will give a +2 when other core reviewers have no opinion on it. :)","commit_id":"fb43cba288f16f78383234139f15af02fba24649"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"ec67aa0c83b66965ae6a4e6e010108e5538ca53a","unresolved":false,"context_lines":[{"line_number":527,"context_line":"        if parsed_args.binding_profile:"},{"line_number":528,"context_line":"            try:"},{"line_number":529,"context_line":"                for key in parsed_args.binding_profile:"},{"line_number":530,"context_line":"                    del tmp_binding_profile[key]"},{"line_number":531,"context_line":"            except KeyError:"},{"line_number":532,"context_line":"                msg \u003d _(\"Port does not contain binding-profile %s\") % key"},{"line_number":533,"context_line":"                raise exceptions.CommandError(msg)"}],"source_content_type":"text/x-python","patch_set":24,"id":"3aaa91ec_5c58d756","line":530,"in_reply_to":"3aaa91ec_dbffe663","updated":"2016-06-28 08:54:10.000000000","message":"Yeah, I think I would agree with Rui Chen on this point. Maybe just let user input the key only.","commit_id":"fb43cba288f16f78383234139f15af02fba24649"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"4a720431f9837dd0350241e46cee296c9f6ccf0c","unresolved":false,"context_lines":[{"line_number":505,"context_line":""},{"line_number":506,"context_line":"        parser.add_argument("},{"line_number":507,"context_line":"            \u0027--binding-profile\u0027,"},{"line_number":508,"context_line":"            metavar\u003d\u0027\u003cbinding-profile\u003e\u0027,"},{"line_number":509,"context_line":"            action\u003d\u0027append\u0027,"},{"line_number":510,"context_line":"            help\u003d_(\"Custom data to be passed as binding:profile\u003d\u003ckey\u003e \""},{"line_number":511,"context_line":"                   \"(repeat option to unset multiple binding:profile data)\"))"}],"source_content_type":"text/x-python","patch_set":27,"id":"3aaa91ec_d51a60c5","line":508,"range":{"start_line":508,"start_character":22,"end_line":508,"end_character":37},"updated":"2016-06-30 08:46:58.000000000","message":"I would be favor of \u003cbinding-profile-key\u003e","commit_id":"9ab13564278e68dd318b28836d94dc07f8008588"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"4a720431f9837dd0350241e46cee296c9f6ccf0c","unresolved":false,"context_lines":[{"line_number":507,"context_line":"            \u0027--binding-profile\u0027,"},{"line_number":508,"context_line":"            metavar\u003d\u0027\u003cbinding-profile\u003e\u0027,"},{"line_number":509,"context_line":"            action\u003d\u0027append\u0027,"},{"line_number":510,"context_line":"            help\u003d_(\"Custom data to be passed as binding:profile\u003d\u003ckey\u003e \""},{"line_number":511,"context_line":"                   \"(repeat option to unset multiple binding:profile data)\"))"},{"line_number":512,"context_line":"        parser.add_argument("},{"line_number":513,"context_line":"            \u0027port\u0027,"}],"source_content_type":"text/x-python","patch_set":27,"id":"3aaa91ec_d5a4204c","line":510,"range":{"start_line":510,"start_character":20,"end_line":510,"end_character":69},"updated":"2016-06-30 08:46:58.000000000","message":"I think the describe should be updated, \"custom data\" sounds weird in unset command, please sync rst document.","commit_id":"9ab13564278e68dd318b28836d94dc07f8008588"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"73165971c5c9ca72fe570206fc60e084f71fc684","unresolved":false,"context_lines":[{"line_number":505,"context_line":""},{"line_number":506,"context_line":"        parser.add_argument("},{"line_number":507,"context_line":"            \u0027--binding-profile\u0027,"},{"line_number":508,"context_line":"            metavar\u003d\u0027\u003cbinding-profile-key\u003e\u0027,"},{"line_number":509,"context_line":"            action\u003d\u0027append\u0027,"},{"line_number":510,"context_line":"            help\u003d_(\"Desired key which should be removed from binding:profile\""},{"line_number":511,"context_line":"                   \"(repeat option to unset multiple binding:profile data)\"))"}],"source_content_type":"text/x-python","patch_set":28,"id":"1aa78d24_fc3b9e9a","line":508,"range":{"start_line":508,"start_character":22,"end_line":508,"end_character":41},"updated":"2016-07-04 02:09:55.000000000","message":"Glad to see that we agreed on passing the keys only here. :)","commit_id":"230d38fb4ca0235706a9cd7617628b84413075b7"}],"openstackclient/tests/network/v2/test_port.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"b45069aa4270c35833513b4209505851709c8c45","unresolved":false,"context_lines":[{"line_number":404,"context_line":"        # Get the command object to test"},{"line_number":405,"context_line":"        self.cmd \u003d port.UnsetPort(self.app, self.namespace)"},{"line_number":406,"context_line":""},{"line_number":407,"context_line":"    def test_set_this(self):"},{"line_number":408,"context_line":"        arglist \u003d ["},{"line_number":409,"context_line":"            \u0027--fixed-ip\u0027, \u0027ip-address\u003d1.0.0.0\u0027,"},{"line_number":410,"context_line":"            \u0027--binding-profile\u0027, \u0027Superman\u003dLexLuthor\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a122d0e_fa3e7489","line":407,"range":{"start_line":407,"start_character":8,"end_line":407,"end_character":21},"updated":"2016-04-20 05:56:14.000000000","message":"another test_this :)","commit_id":"0f1c33c7171ec67c8acc2b0fd190c732b25fed9c"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"e7e1db64f5741c553903304290e75ead34cc2630","unresolved":false,"context_lines":[{"line_number":398,"context_line":"                           {\u0027ip_address\u0027: \u00271.0.0.0\u0027}],"},{"line_number":399,"context_line":"             \u0027binding:profile\u0027: {\u0027batman\u0027: \u0027Joker\u0027, \u0027Superman\u0027: \u0027LexLuthor\u0027}})"},{"line_number":400,"context_line":"        self.network.find_port \u003d mock.Mock(return_value\u003dself._testport)"},{"line_number":401,"context_line":"        self.fake_subnet \u003d network_fakes.FakeSubnet.create_one_subnet()"},{"line_number":402,"context_line":"        self.network.find_port \u003d mock.Mock(return_value\u003dself._testport)"},{"line_number":403,"context_line":"        self.network.update_port \u003d mock.Mock(return_value\u003dNone)"},{"line_number":404,"context_line":"        # Get the command object to test"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_c2158ee5","line":401,"range":{"start_line":401,"start_character":8,"end_line":401,"end_character":24},"updated":"2016-04-20 08:09:08.000000000","message":"self.fake_subnet looks useless.","commit_id":"9eeb8410b72dbdf2c5f6033b7a98a7afeda1c09b"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"e4181bfd3d2f825bd53caf096e621818ebe560f1","unresolved":false,"context_lines":[{"line_number":398,"context_line":"                           {\u0027ip_address\u0027: \u00271.0.0.0\u0027}],"},{"line_number":399,"context_line":"             \u0027binding:profile\u0027: {\u0027batman\u0027: \u0027Joker\u0027, \u0027Superman\u0027: \u0027LexLuthor\u0027}})"},{"line_number":400,"context_line":"        self.network.find_port \u003d mock.Mock(return_value\u003dself._testport)"},{"line_number":401,"context_line":"        self.fake_subnet \u003d network_fakes.FakeSubnet.create_one_subnet()"},{"line_number":402,"context_line":"        self.network.find_port \u003d mock.Mock(return_value\u003dself._testport)"},{"line_number":403,"context_line":"        self.network.update_port \u003d mock.Mock(return_value\u003dNone)"},{"line_number":404,"context_line":"        # Get the command object to test"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_b10227b2","line":401,"range":{"start_line":401,"start_character":8,"end_line":401,"end_character":24},"in_reply_to":"1a122d0e_ae192624","updated":"2016-04-21 02:47:12.000000000","message":"And I forgot to mock it!","commit_id":"9eeb8410b72dbdf2c5f6033b7a98a7afeda1c09b"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"45976fd7c9b715e2e97295112bc9339630291c5b","unresolved":false,"context_lines":[{"line_number":398,"context_line":"                           {\u0027ip_address\u0027: \u00271.0.0.0\u0027}],"},{"line_number":399,"context_line":"             \u0027binding:profile\u0027: {\u0027batman\u0027: \u0027Joker\u0027, \u0027Superman\u0027: \u0027LexLuthor\u0027}})"},{"line_number":400,"context_line":"        self.network.find_port \u003d mock.Mock(return_value\u003dself._testport)"},{"line_number":401,"context_line":"        self.fake_subnet \u003d network_fakes.FakeSubnet.create_one_subnet()"},{"line_number":402,"context_line":"        self.network.find_port \u003d mock.Mock(return_value\u003dself._testport)"},{"line_number":403,"context_line":"        self.network.update_port \u003d mock.Mock(return_value\u003dNone)"},{"line_number":404,"context_line":"        # Get the command object to test"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_ae192624","line":401,"range":{"start_line":401,"start_character":8,"end_line":401,"end_character":24},"in_reply_to":"1a122d0e_c2158ee5","updated":"2016-04-21 02:02:40.000000000","message":"Actually it isnt:)\n\nport.py uses find_subnet in _prepare_fixed_ips which is used by UnsetPort","commit_id":"9eeb8410b72dbdf2c5f6033b7a98a7afeda1c09b"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"e7e1db64f5741c553903304290e75ead34cc2630","unresolved":false,"context_lines":[{"line_number":399,"context_line":"             \u0027binding:profile\u0027: {\u0027batman\u0027: \u0027Joker\u0027, \u0027Superman\u0027: \u0027LexLuthor\u0027}})"},{"line_number":400,"context_line":"        self.network.find_port \u003d mock.Mock(return_value\u003dself._testport)"},{"line_number":401,"context_line":"        self.fake_subnet \u003d network_fakes.FakeSubnet.create_one_subnet()"},{"line_number":402,"context_line":"        self.network.find_port \u003d mock.Mock(return_value\u003dself._testport)"},{"line_number":403,"context_line":"        self.network.update_port \u003d mock.Mock(return_value\u003dNone)"},{"line_number":404,"context_line":"        # Get the command object to test"},{"line_number":405,"context_line":"        self.cmd \u003d port.UnsetPort(self.app, self.namespace)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_82dc3674","line":402,"range":{"start_line":402,"start_character":8,"end_line":402,"end_character":71},"updated":"2016-04-20 08:09:08.000000000","message":"why mock \"find_port()\" twice?","commit_id":"9eeb8410b72dbdf2c5f6033b7a98a7afeda1c09b"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"c261fb1958776e2511303ee9fba88e5b8bb9d253","unresolved":false,"context_lines":[{"line_number":399,"context_line":"             \u0027binding:profile\u0027: {\u0027batman\u0027: \u0027Joker\u0027, \u0027Superman\u0027: \u0027LexLuthor\u0027}})"},{"line_number":400,"context_line":"        self.network.find_port \u003d mock.Mock(return_value\u003dself._testport)"},{"line_number":401,"context_line":"        self.fake_subnet \u003d network_fakes.FakeSubnet.create_one_subnet()"},{"line_number":402,"context_line":"        self.network.find_port \u003d mock.Mock(return_value\u003dself._testport)"},{"line_number":403,"context_line":"        self.network.update_port \u003d mock.Mock(return_value\u003dNone)"},{"line_number":404,"context_line":"        # Get the command object to test"},{"line_number":405,"context_line":"        self.cmd \u003d port.UnsetPort(self.app, self.namespace)"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_1b5cda7b","line":402,"range":{"start_line":402,"start_character":8,"end_line":402,"end_character":71},"in_reply_to":"1a122d0e_82dc3674","updated":"2016-04-21 01:41:49.000000000","message":"Oops","commit_id":"9eeb8410b72dbdf2c5f6033b7a98a7afeda1c09b"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"e7e1db64f5741c553903304290e75ead34cc2630","unresolved":false,"context_lines":[{"line_number":406,"context_line":""},{"line_number":407,"context_line":"    def test_unset_port_parameters(self):"},{"line_number":408,"context_line":"        arglist \u003d ["},{"line_number":409,"context_line":"            \u0027--fixed-ip\u0027, \u0027ip-address\u003d1.0.0.0\u0027,"},{"line_number":410,"context_line":"            \u0027--binding-profile\u0027, \u0027Superman\u003dLexLuthor\u0027,"},{"line_number":411,"context_line":"            self._testport.name,"},{"line_number":412,"context_line":"        ]"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_020b068f","line":409,"updated":"2016-04-20 08:09:08.000000000","message":"if we can add a test case to cover the usage \"subnet\u003dxxxx,ip-address\u003dx.x.x.x\", the whole logic path would be tested, I think that make sense.","commit_id":"9eeb8410b72dbdf2c5f6033b7a98a7afeda1c09b"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"45976fd7c9b715e2e97295112bc9339630291c5b","unresolved":false,"context_lines":[{"line_number":406,"context_line":""},{"line_number":407,"context_line":"    def test_unset_port_parameters(self):"},{"line_number":408,"context_line":"        arglist \u003d ["},{"line_number":409,"context_line":"            \u0027--fixed-ip\u0027, \u0027ip-address\u003d1.0.0.0\u0027,"},{"line_number":410,"context_line":"            \u0027--binding-profile\u0027, \u0027Superman\u003dLexLuthor\u0027,"},{"line_number":411,"context_line":"            self._testport.name,"},{"line_number":412,"context_line":"        ]"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_8e142ae9","line":409,"in_reply_to":"1a122d0e_020b068f","updated":"2016-04-21 02:02:40.000000000","message":"Yeah, TangChen had a similar comment below, I would take care of this","commit_id":"9eeb8410b72dbdf2c5f6033b7a98a7afeda1c09b"},{"author":{"_account_id":14937,"name":"Tang Chen","email":"imtangchen@163.com","username":"tangchen"},"change_message_id":"9f88e77a33bbe58257365e80c02717b527a89340","unresolved":false,"context_lines":[{"line_number":411,"context_line":"            self._testport.name,"},{"line_number":412,"context_line":"        ]"},{"line_number":413,"context_line":"        verifylist \u003d ["},{"line_number":414,"context_line":"            (\u0027fixed_ip\u0027, [{\u0027ip-address\u0027: \u00271.0.0.0\u0027}]),"},{"line_number":415,"context_line":"            (\u0027binding_profile\u0027, {\u0027Superman\u0027: \u0027LexLuthor\u0027}),"},{"line_number":416,"context_line":"        ]"},{"line_number":417,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_68a2999a","line":414,"range":{"start_line":414,"start_character":14,"end_line":414,"end_character":52},"updated":"2016-04-20 08:48:41.000000000","message":"I have a question here.\n\nIf the original fixed_ip is like this:\n\n[\n    {\n        \u0027subnet\u0027: \u0027xxx\u0027,\n        \u0027ip_address\u0027: \u00270.0.0.1\u0027,\n    }\n]\n\nBut the user only specified --fixed-ip ip-address\u003d0.0.0.1. Will the dict be deleted correctly ?","commit_id":"9eeb8410b72dbdf2c5f6033b7a98a7afeda1c09b"},{"author":{"_account_id":17776,"name":"Reedip","email":"reedip.banerjee@gmail.com","username":"Reedip"},"change_message_id":"c261fb1958776e2511303ee9fba88e5b8bb9d253","unresolved":false,"context_lines":[{"line_number":411,"context_line":"            self._testport.name,"},{"line_number":412,"context_line":"        ]"},{"line_number":413,"context_line":"        verifylist \u003d ["},{"line_number":414,"context_line":"            (\u0027fixed_ip\u0027, [{\u0027ip-address\u0027: \u00271.0.0.0\u0027}]),"},{"line_number":415,"context_line":"            (\u0027binding_profile\u0027, {\u0027Superman\u0027: \u0027LexLuthor\u0027}),"},{"line_number":416,"context_line":"        ]"},{"line_number":417,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"1a122d0e_dbcc2237","line":414,"range":{"start_line":414,"start_character":14,"end_line":414,"end_character":52},"in_reply_to":"1a122d0e_68a2999a","updated":"2016-04-21 01:41:49.000000000","message":"Let me put a test and check it","commit_id":"9eeb8410b72dbdf2c5f6033b7a98a7afeda1c09b"},{"author":{"_account_id":8410,"name":"Richard Theis","email":"rtheis@us.ibm.com","username":"rtheis"},"change_message_id":"900bc68769354878b1ee3553bdcb597a58a3e79b","unresolved":false,"context_lines":[{"line_number":472,"context_line":""},{"line_number":473,"context_line":"    def test_unset_port_binding_profile_not_existent(self):"},{"line_number":474,"context_line":"        arglist \u003d ["},{"line_number":475,"context_line":"            \u0027--fixed-ip\u0027, \u0027ip-address\u003d1.0.0.0\u0027,"},{"line_number":476,"context_line":"            \u0027--binding-profile\u0027, \u0027Neo\u003dAgentSmith\u0027,"},{"line_number":477,"context_line":"            self._testport.name,"},{"line_number":478,"context_line":"        ]"}],"source_content_type":"text/x-python","patch_set":14,"id":"bab6814e_927edbe1","line":475,"range":{"start_line":475,"start_character":12,"end_line":475,"end_character":47},"updated":"2016-05-23 18:54:02.000000000","message":"This should probably match one of the valid fixed IPs","commit_id":"e85029c90d4ea0a21f426b4102100decfc5e31dd"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"4a720431f9837dd0350241e46cee296c9f6ccf0c","unresolved":false,"context_lines":[{"line_number":640,"context_line":"        arglist \u003d ["},{"line_number":641,"context_line":"            \u0027--fixed-ip\u0027,"},{"line_number":642,"context_line":"            \u0027subnet\u003d042eb10a-3a18-4658-ab-cf47c8d03152,ip-address\u003d1.0.0.0\u0027,"},{"line_number":643,"context_line":"            \u0027--binding-profile\u0027, \u0027Superman\u003dLexLuthor\u0027,"},{"line_number":644,"context_line":"            self._testport.name,"},{"line_number":645,"context_line":"        ]"},{"line_number":646,"context_line":"        verifylist \u003d ["}],"source_content_type":"text/x-python","patch_set":27,"id":"3aaa91ec_753e0c8c","line":643,"range":{"start_line":643,"start_character":42,"end_line":643,"end_character":52},"updated":"2016-06-30 08:46:58.000000000","message":"now we only need binding-profile key, please update all the test cases to avoid confusing.","commit_id":"9ab13564278e68dd318b28836d94dc07f8008588"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"4a720431f9837dd0350241e46cee296c9f6ccf0c","unresolved":false,"context_lines":[{"line_number":647,"context_line":"            (\u0027fixed_ip\u0027, [{"},{"line_number":648,"context_line":"                \u0027subnet\u0027: \u0027042eb10a-3a18-4658-ab-cf47c8d03152\u0027,"},{"line_number":649,"context_line":"                \u0027ip-address\u0027: \u00271.0.0.0\u0027}]),"},{"line_number":650,"context_line":"            (\u0027binding_profile\u0027, [\u0027Superman\u0027: \u0027LexLuthor\u0027]),"},{"line_number":651,"context_line":"        ]"},{"line_number":652,"context_line":""},{"line_number":653,"context_line":"        parsed_args \u003d self.check_parser(self.cmd, arglist, verifylist)"}],"source_content_type":"text/x-python","patch_set":27,"id":"3aaa91ec_55f5d0ea","line":650,"range":{"start_line":650,"start_character":43,"end_line":650,"end_character":45},"updated":"2016-06-30 08:46:58.000000000","message":"I don\u0027t think it can pass in Jenkins pep8","commit_id":"9ab13564278e68dd318b28836d94dc07f8008588"}]}
