)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"cb7940ce621fe8ac666c4f72ac93d577df319706","unresolved":false,"context_lines":[{"line_number":19,"context_line":"Logical_Port table"},{"line_number":20,"context_line":"_uuid                                enabled external_ids             macs                  name                                   options                                              parent_name                            port_security         tag type up"},{"line_number":21,"context_line":"------------------------------------ ------- ------------------------ --------------------- -------------------------------------- ---------------------------------------------------- -------------------------------------- --------------------- --- ---- -----"},{"line_number":22,"context_line":"e151abfa-e637-47e2-a19a-c86951b4cee8 true    {\"neutron:port_name\"\u003d\"\"} [\"fa:16:3e:66:3e:61\"] \"1a1612e1-b48e-447b-b469-ecc9d894a50f\" {vtep_lswitch_name\u003d\"lsw1\", vtep_pswitch_name\u003d\"psw1\"} []                                     [\"fa:16:3e:66:3e:61\"] []  vtep false"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Change-Id: I6b642af74fc693bb92c3475fb862c3bf7477213c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"9a1a9d01_9903a573","line":22,"updated":"2015-09-25 16:01:36.000000000","message":"I think for this type of port we should leave the port security list empty and set macs to [\"unkonwn\"].\n\nAlso, can you line wrap the commit message?","commit_id":"22440f56128bdbfb4877153892eca013cd832cfe"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"de83c8ed30b5feae9bcdff6aeac4b02954f600a2","unresolved":false,"context_lines":[{"line_number":11,"context_line":"details."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"neutron port-create --binding-profile"},{"line_number":14,"context_line":"\u0027{\"vtep_physical_switch\":\"PSW1\",\"vtep_logical_switch\":\"LSW1\"}\u0027 private"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The above command will result in creation of a row in OVN NB Logical"},{"line_number":17,"context_line":"Port table with type column set"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9a1a9d01_0acfeb29","line":14,"updated":"2015-09-28 21:32:42.000000000","message":"Where is the physical mapping of vtep_physical exposed? Do we need to provide a way via the neutron api to know the available inputs there?","commit_id":"43febf8a0512979bbf3ada5fc54deadabe630fe5"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"58124ad9a2d4432c5171c6e1a38349a18e9326c8","unresolved":false,"context_lines":[{"line_number":11,"context_line":"details."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"neutron port-create --binding-profile"},{"line_number":14,"context_line":"\u0027{\"vtep_physical_switch\":\"PSW1\",\"vtep_logical_switch\":\"LSW1\"}\u0027 private"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"The above command will result in creation of a row in OVN NB Logical"},{"line_number":17,"context_line":"Port table with type column set"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9a1a9d01_ea0b9728","line":14,"in_reply_to":"9a1a9d01_0acfeb29","updated":"2015-09-28 21:40:42.000000000","message":"The available inputs aren\u0027t exposed at all.  This is just a short term solution to get the feature exposed.\n\nThis thread covers it in more detail: http://lists.openstack.org/pipermail/openstack-dev/2015-September/075335.html\n\nSpeaking of which, it would probably be good to add a link to the thread to the commit message for reference.","commit_id":"43febf8a0512979bbf3ada5fc54deadabe630fe5"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"de83c8ed30b5feae9bcdff6aeac4b02954f600a2","unresolved":false,"context_lines":[{"line_number":16,"context_line":"The above command will result in creation of a row in OVN NB Logical"},{"line_number":17,"context_line":"Port table with type column set"},{"line_number":18,"context_line":" to \u0027vtep\u0027, the option column set to"},{"line_number":19,"context_line":" \u0027vtep_physical_swoitch:\"PSW1\",vtep_logical_switch:\"LSW1\"\u0027, macs column"},{"line_number":20,"context_line":"  set to [unknown] and port_securtiy column set to []"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"_uuid                                enabled external_ids"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9a1a9d01_6a67874d","line":19,"updated":"2015-09-28 21:32:42.000000000","message":"typo switch?","commit_id":"43febf8a0512979bbf3ada5fc54deadabe630fe5"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"58124ad9a2d4432c5171c6e1a38349a18e9326c8","unresolved":false,"context_lines":[{"line_number":16,"context_line":"The above command will result in creation of a row in OVN NB Logical"},{"line_number":17,"context_line":"Port table with type column set"},{"line_number":18,"context_line":" to \u0027vtep\u0027, the option column set to"},{"line_number":19,"context_line":" \u0027vtep_physical_swoitch:\"PSW1\",vtep_logical_switch:\"LSW1\"\u0027, macs column"},{"line_number":20,"context_line":"  set to [unknown] and port_securtiy column set to []"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"_uuid                                enabled external_ids"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"9a1a9d01_4d017d04","line":19,"in_reply_to":"9a1a9d01_6a67874d","updated":"2015-09-28 21:40:42.000000000","message":"nice catch :)","commit_id":"43febf8a0512979bbf3ada5fc54deadabe630fe5"}],"networking_ovn/common/constants.py":[{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"2ffdc173bb9759b0fe99ab2a872e308367022fc8","unresolved":false,"context_lines":[{"line_number":9,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":10,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from neutron.extensions import portbindings"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"OVN_NETWORK_NAME_EXT_ID_KEY \u003d \u0027neutron:network_name\u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a1a9d01_cff82a4c","side":"PARENT","line":12,"updated":"2015-09-28 19:09:30.000000000","message":"I\u0027d prefer not to remove this line.","commit_id":"24d8b6820201b59c6a9d1cf38424a5b2362eab9b"}],"networking_ovn/plugin.py":[{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"2ffdc173bb9759b0fe99ab2a872e308367022fc8","unresolved":false,"context_lines":[{"line_number":274,"context_line":"                raise n_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":275,"context_line":"            break"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"        if len(param_dict) \u003d\u003d 0:"},{"line_number":278,"context_line":"            return {}"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"        for param_key, param_type in param_set.items():"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a1a9d01_4fbada6f","line":277,"updated":"2015-09-28 19:09:30.000000000","message":"Not that it really matters, but you could also say:\n\n    if not param_dict:","commit_id":"ddb61b6255eeaef92857209edf926b86514d8197"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"2ffdc173bb9759b0fe99ab2a872e308367022fc8","unresolved":false,"context_lines":[{"line_number":299,"context_line":"                msg \u003d _(\u0027Invalid binding:profile. tag \"%s\" must be \u0027"},{"line_number":300,"context_line":"                        \u0027an int between 1 and 4096, inclusive.\u0027) % tag"},{"line_number":301,"context_line":"                raise n_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":302,"context_line":""},{"line_number":303,"context_line":"        return param_dict"},{"line_number":304,"context_line":""},{"line_number":305,"context_line":"    def _get_allowed_mac_addresses_from_port(self, port):"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a1a9d01_8f4eb294","line":302,"updated":"2015-09-28 19:09:30.000000000","message":"Since we\u0027re doing validation in this function, I think we should ensure that either both physical-switch and logical-switch are specified, or neither are specified.  It wouldn\u0027t make sense to only specify one.","commit_id":"ddb61b6255eeaef92857209edf926b86514d8197"},{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"0918ab7317c4933d2bf65b8f69630d509ba3c0be","unresolved":false,"context_lines":[{"line_number":260,"context_line":"                try:"},{"line_number":261,"context_line":"                    param_dict[param_key] \u003d \\"},{"line_number":262,"context_line":"                        port[ovn_const.OVN_PORT_BINDING_PROFILE][param_key]"},{"line_number":263,"context_line":"                except Exception:"},{"line_number":264,"context_line":"                    pass"},{"line_number":265,"context_line":"            if len(param_dict) \u003d\u003d 0:"},{"line_number":266,"context_line":"                continue"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a1a9d01_a7187a76","line":263,"updated":"2015-09-28 20:48:49.000000000","message":"I think you can probably be more specific with KeyError here instead of Exception","commit_id":"f4939e48cce332cc71d6fa4984bf1db812baef4c"},{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"ef77711cbe061fbc0e8dcf30d529725e72f5086a","unresolved":false,"context_lines":[{"line_number":207,"context_line":"                context, port[\u0027port\u0027])"},{"line_number":208,"context_line":"            parent_name \u003d binding_profile.get(\u0027parent_name\u0027, None)"},{"line_number":209,"context_line":"            tag \u003d binding_profile.get(\u0027tag\u0027, None)"},{"line_number":210,"context_line":"            vtep_physical_switch \u003d binding_profile.get(\u0027vtep_physical_switch\u0027)"},{"line_number":211,"context_line":"            vtep_logical_switch \u003d binding_profile.get(\u0027vtep_logical_switch\u0027)"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"            original_port \u003d self._get_port(context, id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a1a9d01_1b5392e3","line":210,"updated":"2015-09-29 18:32:02.000000000","message":"I think you should add a default of \u0027None\u0027 here same as the above (or remove the above as i think .get default is None anyway) \n\nBut its confusing that some have it and some don\u0027t and make the reader try to understand why it was done that way","commit_id":"67d4cb5123c9010f658dd7c7c72af62289f23623"},{"author":{"_account_id":17595,"name":"Amitabha Biswas","email":"azbiswas@gmail.com","username":"azbiswas"},"change_message_id":"4bc3d13a7def6fb95f86a2f5f171ebe2e15d1545","unresolved":false,"context_lines":[{"line_number":207,"context_line":"                context, port[\u0027port\u0027])"},{"line_number":208,"context_line":"            parent_name \u003d binding_profile.get(\u0027parent_name\u0027, None)"},{"line_number":209,"context_line":"            tag \u003d binding_profile.get(\u0027tag\u0027, None)"},{"line_number":210,"context_line":"            vtep_physical_switch \u003d binding_profile.get(\u0027vtep_physical_switch\u0027)"},{"line_number":211,"context_line":"            vtep_logical_switch \u003d binding_profile.get(\u0027vtep_logical_switch\u0027)"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":"            original_port \u003d self._get_port(context, id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a1a9d01_11c61368","line":210,"in_reply_to":"9a1a9d01_1b5392e3","updated":"2015-09-29 18:50:08.000000000","message":"Yes we will fix that.","commit_id":"67d4cb5123c9010f658dd7c7c72af62289f23623"},{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"ef77711cbe061fbc0e8dcf30d529725e72f5086a","unresolved":false,"context_lines":[{"line_number":258,"context_line":"            param_keys \u003d param_set.keys()"},{"line_number":259,"context_line":"            for param_key in param_keys:"},{"line_number":260,"context_line":"                try:"},{"line_number":261,"context_line":"                    param_dict[param_key] \u003d \\"},{"line_number":262,"context_line":"                        port[ovn_const.OVN_PORT_BINDING_PROFILE][param_key]"},{"line_number":263,"context_line":"                except KeyError:"},{"line_number":264,"context_line":"                    pass"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a1a9d01_dbd43a21","line":261,"updated":"2015-09-29 18:32:02.000000000","message":"You can use \"()\" instead of using \"\\\"","commit_id":"67d4cb5123c9010f658dd7c7c72af62289f23623"},{"author":{"_account_id":17595,"name":"Amitabha Biswas","email":"azbiswas@gmail.com","username":"azbiswas"},"change_message_id":"4bc3d13a7def6fb95f86a2f5f171ebe2e15d1545","unresolved":false,"context_lines":[{"line_number":258,"context_line":"            param_keys \u003d param_set.keys()"},{"line_number":259,"context_line":"            for param_key in param_keys:"},{"line_number":260,"context_line":"                try:"},{"line_number":261,"context_line":"                    param_dict[param_key] \u003d \\"},{"line_number":262,"context_line":"                        port[ovn_const.OVN_PORT_BINDING_PROFILE][param_key]"},{"line_number":263,"context_line":"                except KeyError:"},{"line_number":264,"context_line":"                    pass"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a1a9d01_31ec77f2","line":261,"in_reply_to":"9a1a9d01_dbd43a21","updated":"2015-09-29 18:50:08.000000000","message":"Thanks","commit_id":"67d4cb5123c9010f658dd7c7c72af62289f23623"},{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"ef77711cbe061fbc0e8dcf30d529725e72f5086a","unresolved":false,"context_lines":[{"line_number":268,"context_line":"                msg \u003d _(\u0027Invalid binding:profile. %s are all \u0027"},{"line_number":269,"context_line":"                        \u0027required.\u0027) % param_keys"},{"line_number":270,"context_line":"                raise n_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":271,"context_line":"            if (len(port[ovn_const.OVN_PORT_BINDING_PROFILE]) !\u003d len("},{"line_number":272,"context_line":"                    param_keys)):"},{"line_number":273,"context_line":"                msg \u003d _(\u0027Invalid binding:profile. too many parameters\u0027)"},{"line_number":274,"context_line":"                raise n_exc.InvalidInput(error_message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a1a9d01_3b1bf6cb","line":271,"updated":"2015-09-29 18:32:02.000000000","message":"Why do you put this check here?\n\nI think the user can also use binding_profile for other use cases, i don\u0027t see why we need to limit it here as long as all the param_keys were supplied","commit_id":"67d4cb5123c9010f658dd7c7c72af62289f23623"},{"author":{"_account_id":17595,"name":"Amitabha Biswas","email":"azbiswas@gmail.com","username":"azbiswas"},"change_message_id":"4bc3d13a7def6fb95f86a2f5f171ebe2e15d1545","unresolved":false,"context_lines":[{"line_number":268,"context_line":"                msg \u003d _(\u0027Invalid binding:profile. %s are all \u0027"},{"line_number":269,"context_line":"                        \u0027required.\u0027) % param_keys"},{"line_number":270,"context_line":"                raise n_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":271,"context_line":"            if (len(port[ovn_const.OVN_PORT_BINDING_PROFILE]) !\u003d len("},{"line_number":272,"context_line":"                    param_keys)):"},{"line_number":273,"context_line":"                msg \u003d _(\u0027Invalid binding:profile. too many parameters\u0027)"},{"line_number":274,"context_line":"                raise n_exc.InvalidInput(error_message\u003dmsg)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a1a9d01_91da234a","line":271,"in_reply_to":"9a1a9d01_3b1bf6cb","updated":"2015-09-29 18:50:08.000000000","message":"This is making sure that binding profile for different types of binding profiles are not mixed in the same cli command.\nFor example not allow\"parent_name, lswitch_name, pswitch_name\" in the same cli command.","commit_id":"67d4cb5123c9010f658dd7c7c72af62289f23623"},{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"ef77711cbe061fbc0e8dcf30d529725e72f5086a","unresolved":false,"context_lines":[{"line_number":274,"context_line":"                raise n_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":275,"context_line":"            break"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"        if not param_dict:"},{"line_number":278,"context_line":"            return {}"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"        for param_key, param_type in param_set.items():"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a1a9d01_bb9b8665","line":277,"updated":"2015-09-29 18:32:02.000000000","message":"I don\u0027t think its really possible as you defined param_dict before the loop, you can remove this check","commit_id":"67d4cb5123c9010f658dd7c7c72af62289f23623"},{"author":{"_account_id":17595,"name":"Amitabha Biswas","email":"azbiswas@gmail.com","username":"azbiswas"},"change_message_id":"4bc3d13a7def6fb95f86a2f5f171ebe2e15d1545","unresolved":false,"context_lines":[{"line_number":274,"context_line":"                raise n_exc.InvalidInput(error_message\u003dmsg)"},{"line_number":275,"context_line":"            break"},{"line_number":276,"context_line":""},{"line_number":277,"context_line":"        if not param_dict:"},{"line_number":278,"context_line":"            return {}"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"        for param_key, param_type in param_set.items():"}],"source_content_type":"text/x-python","patch_set":6,"id":"9a1a9d01_9179c384","line":277,"in_reply_to":"9a1a9d01_bb9b8665","updated":"2015-09-29 18:50:08.000000000","message":"It same as len(param_dict) \u003d\u003d 0: \u003c-- We need this check","commit_id":"67d4cb5123c9010f658dd7c7c72af62289f23623"},{"author":{"_account_id":11343,"name":"Gal Sagie","email":"gal.sagie@gmail.com","username":"GalSagie"},"change_message_id":"025ed63041f64f29d61fc506ec03b2f802039b62","unresolved":false,"context_lines":[{"line_number":258,"context_line":"            param_keys \u003d param_set.keys()"},{"line_number":259,"context_line":"            for param_key in param_keys:"},{"line_number":260,"context_line":"                try:"},{"line_number":261,"context_line":"                    param_dict[param_key] \u003d \\"},{"line_number":262,"context_line":"                        port[ovn_const.OVN_PORT_BINDING_PROFILE][param_key]"},{"line_number":263,"context_line":"                except KeyError:"},{"line_number":264,"context_line":"                    pass"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a1a9d01_7d59428d","line":261,"updated":"2015-09-30 12:57:22.000000000","message":"You didn\u0027t change this to use \"()\"","commit_id":"806c8a597f984fde8ed37dc1c9b11d12854af027"}]}
