)]}'
{"nova/network/neutronv2/api.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"02170c463932737c0a40fb487c158829173c4d83","unresolved":false,"context_lines":[{"line_number":970,"context_line":"                                            updated_port[\u0027id\u0027])"},{"line_number":971,"context_line":"                vifobj.uuid \u003d port_id"},{"line_number":972,"context_line":""},{"line_number":973,"context_line":"                if not created_port_id:"},{"line_number":974,"context_line":"                    # only add if update worked and port create not called"},{"line_number":975,"context_line":"                    preexisting_port_ids.append(port_id)"},{"line_number":976,"context_line":"                    port_details \u003d updated_port.get(\u0027binding:vif_details\u0027, {})"}],"source_content_type":"text/x-python","patch_set":6,"id":"da4df55a_222ffca1","line":973,"updated":"2016-12-29 00:33:34.000000000","message":"I guess the vlan stuff is in this block because this only works for pre-created ports, right?","commit_id":"418dfcbb1dff46a2d97e28487e9288860cd45252"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"02170c463932737c0a40fb487c158829173c4d83","unresolved":false,"context_lines":[{"line_number":974,"context_line":"                    # only add if update worked and port create not called"},{"line_number":975,"context_line":"                    preexisting_port_ids.append(port_id)"},{"line_number":976,"context_line":"                    port_details \u003d updated_port.get(\u0027binding:vif_details\u0027, {})"},{"line_number":977,"context_line":"                    vlan \u003d port_details.get(network_model.VIF_DETAILS_VLAN)"},{"line_number":978,"context_line":"                    if vlan:"},{"line_number":979,"context_line":"                        vifobj.vlans \u003d [vlan]"},{"line_number":980,"context_line":"                vifobj.create()"}],"source_content_type":"text/x-python","patch_set":6,"id":"da4df55a_e20fb434","line":977,"range":{"start_line":977,"start_character":20,"end_line":977,"end_character":24},"updated":"2016-12-29 00:33:34.000000000","message":"This is a single int value? If this is a dict with a single entry, why do we model it in the VirtualInterface object as a list of integers?","commit_id":"418dfcbb1dff46a2d97e28487e9288860cd45252"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"68d79c19208238be16ad8c3507e0755b66743643","unresolved":false,"context_lines":[{"line_number":974,"context_line":"                    # only add if update worked and port create not called"},{"line_number":975,"context_line":"                    preexisting_port_ids.append(port_id)"},{"line_number":976,"context_line":"                    port_details \u003d updated_port.get(\u0027binding:vif_details\u0027, {})"},{"line_number":977,"context_line":"                    vlan \u003d port_details.get(network_model.VIF_DETAILS_VLAN)"},{"line_number":978,"context_line":"                    if vlan:"},{"line_number":979,"context_line":"                        vifobj.vlans \u003d [vlan]"},{"line_number":980,"context_line":"                vifobj.create()"}],"source_content_type":"text/x-python","patch_set":6,"id":"da4df55a_ed3de5c4","line":977,"range":{"start_line":977,"start_character":20,"end_line":977,"end_character":24},"in_reply_to":"da4df55a_e20fb434","updated":"2016-12-29 00:37:46.000000000","message":"Looks like it\u0027s just a single int value:\n\nhttps://github.com/openstack/neutron/blob/63f27ec5c4e8a81860db617e2dc20a553514fcc6/neutron/plugins/ml2/drivers/mech_sriov/mech_driver/mech_driver.py#L164","commit_id":"418dfcbb1dff46a2d97e28487e9288860cd45252"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"390b5754fdba2b8a669c9182a8403784a4f7895f","unresolved":false,"context_lines":[{"line_number":974,"context_line":"                    # only add if update worked and port create not called"},{"line_number":975,"context_line":"                    preexisting_port_ids.append(port_id)"},{"line_number":976,"context_line":"                    port_details \u003d updated_port.get(\u0027binding:vif_details\u0027, {})"},{"line_number":977,"context_line":"                    vlan \u003d port_details.get(network_model.VIF_DETAILS_VLAN)"},{"line_number":978,"context_line":"                    if vlan:"},{"line_number":979,"context_line":"                        vifobj.vlans \u003d [vlan]"},{"line_number":980,"context_line":"                vifobj.create()"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba5201f7_d20dae38","line":977,"in_reply_to":"da4df55a_ed3de5c4","updated":"2017-01-10 09:09:13.000000000","message":"From what I know a vlan should be a number, I do not understand why they cast it :/","commit_id":"418dfcbb1dff46a2d97e28487e9288860cd45252"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"390b5754fdba2b8a669c9182a8403784a4f7895f","unresolved":false,"context_lines":[{"line_number":976,"context_line":"                    port_details \u003d updated_port.get(\u0027binding:vif_details\u0027, {})"},{"line_number":977,"context_line":"                    vlan \u003d port_details.get(network_model.VIF_DETAILS_VLAN)"},{"line_number":978,"context_line":"                    if vlan:"},{"line_number":979,"context_line":"                        vifobj.vlans \u003d [vlan]"},{"line_number":980,"context_line":"                vifobj.create()"},{"line_number":981,"context_line":"                created_vifs.append(vifobj)"},{"line_number":982,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"ba5201f7_b27bca7a","line":979,"updated":"2017-01-10 09:09:13.000000000","message":"Vladik I think to keep a coherence and avoid confusion you should always work with a list even if neutron is returning a single value and based on Matt comment, cast it to a int.\n\nsomething like:\n\n  # Currently neutron only returna sigle value for vlans\n  vlans \u003d [int(port_details.get(network_model.VIF_DETAILS_VLAN)])]","commit_id":"418dfcbb1dff46a2d97e28487e9288860cd45252"}],"nova/objects/fixed_ip.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"02170c463932737c0a40fb487c158829173c4d83","unresolved":false,"context_lines":[{"line_number":102,"context_line":"            db_vif \u003d db_fixedip[\u0027virtual_interface\u0027]"},{"line_number":103,"context_line":"            vif \u003d objects.VirtualInterface._from_db_object("},{"line_number":104,"context_line":"                context,"},{"line_number":105,"context_line":"                objects.VirtualInterface(),"},{"line_number":106,"context_line":"                db_fixedip[\u0027virtual_interface\u0027]) if db_vif else None"},{"line_number":107,"context_line":"            fixedip.virtual_interface \u003d vif"},{"line_number":108,"context_line":"        if \u0027floating_ips\u0027 in expected_attrs:"}],"source_content_type":"text/x-python","patch_set":6,"id":"da4df55a_621bc481","line":105,"updated":"2016-12-29 00:33:34.000000000","message":"Why did this need to be changed?","commit_id":"418dfcbb1dff46a2d97e28487e9288860cd45252"}],"nova/tests/unit/network/test_neutronv2.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"576ad66aae620eece1af9c229185744fa2948ec0","unresolved":false,"context_lines":[{"line_number":5257,"context_line":"        mock_neutron.list_extensions.return_value \u003d {\"extensions\": ["},{"line_number":5258,"context_line":"            {\"name\": \"asdf\"}, {\"name\": constants.PORTBINDING_EXT}]}"},{"line_number":5259,"context_line":"        port1 \u003d {\"port\": {\"id\": uuids.port2, \"mac_address\": \"mac1r\","},{"line_number":5260,"context_line":"                          \"binding:vif_details\": {\"vlan\": 300}}}"},{"line_number":5261,"context_line":"        mock_admin.update_port.side_effect \u003d [port1]"},{"line_number":5262,"context_line":""},{"line_number":5263,"context_line":"        spy_vif_mock \u003d objects.VirtualInterface(self.context)"}],"source_content_type":"text/x-python","patch_set":6,"id":"da4df55a_ad567d03","line":5260,"range":{"start_line":5260,"start_character":58,"end_line":5260,"end_character":61},"updated":"2016-12-29 00:39:21.000000000","message":"Shouldn\u0027t this be a string?\n\nhttps://github.com/openstack/neutron/blob/63f27ec5c4e8a81860db617e2dc20a553514fcc6/neutron/plugins/ml2/drivers/mech_sriov/mech_driver/mech_driver.py#L164","commit_id":"418dfcbb1dff46a2d97e28487e9288860cd45252"}]}
