)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cafdfe156cb876fcaed193e7d6ad0356cd7dd5f8","unresolved":false,"context_lines":[{"line_number":5,"context_line":"CommitDate: 2018-04-03 12:24:16 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"add mtu to libvirt xml for ethernet and bridge types"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- This change adds the mtu element to libvirt guest"},{"line_number":10,"context_line":"  interface xml for vifs of type ethernet and bridge."},{"line_number":11,"context_line":"- This change adds a libvirt version check"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9f6a8fd7_ae8ee175","line":8,"updated":"2018-04-17 13:45:58.000000000","message":"The commit message could really benefit from some of the details in the bug report about why these are a special case that aren\u0027t handled in os-vif and needed to be handled here specifically.","commit_id":"52d727db6c6995d9de43de8b2b398fd712bc1d53"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"78afef4c44b87a7c4c9df484b4da5ceca18dfaf0","unresolved":false,"context_lines":[{"line_number":7,"context_line":"add mtu to libvirt xml for ethernet and bridge types"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- This change adds the mtu element to libvirt guest"},{"line_number":10,"context_line":"  interface xml for vifs of type ethernet and bridge."},{"line_number":11,"context_line":"- This change adds a libvirt version check"},{"line_number":12,"context_line":"  to enable setting the interface mtu on hosts with"},{"line_number":13,"context_line":"  libvirt 3.3.0+"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"bf659307_051ed16f","line":10,"range":{"start_line":10,"start_character":32,"end_line":10,"end_character":53},"updated":"2018-04-06 13:44:08.000000000","message":"Another question: any reason not to do this for other interfaces? From what I can tell, this libvirt feature means the _guest_ will be aware of the MTU of the interface.","commit_id":"52d727db6c6995d9de43de8b2b398fd712bc1d53"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"ad661322cd9ab8de987ff400895f8c3b07da8ba6","unresolved":false,"context_lines":[{"line_number":7,"context_line":"add mtu to libvirt xml for ethernet and bridge types"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"- This change adds the mtu element to libvirt guest"},{"line_number":10,"context_line":"  interface xml for vifs of type ethernet and bridge."},{"line_number":11,"context_line":"- This change adds a libvirt version check"},{"line_number":12,"context_line":"  to enable setting the interface mtu on hosts with"},{"line_number":13,"context_line":"  libvirt 3.3.0+"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"bf659307_a4d45dea","line":10,"range":{"start_line":10,"start_character":32,"end_line":10,"end_character":53},"in_reply_to":"bf659307_051ed16f","updated":"2018-04-11 16:18:50.000000000","message":"What are the other interface type you are thinking about?","commit_id":"52d727db6c6995d9de43de8b2b398fd712bc1d53"}],"nova/tests/unit/virt/libvirt/test_vif.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cafdfe156cb876fcaed193e7d6ad0356cd7dd5f8","unresolved":false,"context_lines":[{"line_number":1554,"context_line":"    def test_osvif_unplug_fail(self):"},{"line_number":1555,"context_line":"        self._test_osvif_unplug(True)"},{"line_number":1556,"context_line":""},{"line_number":1557,"context_line":"    @mock.patch.object(host.Host, \"has_min_version\", return_value\u003dTrue)"},{"line_number":1558,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_instance\")"},{"line_number":1559,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_vif\")"},{"line_number":1560,"context_line":"    def test_config_os_vif_bridge(self, mock_convert_vif,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_2eb091f4","line":1557,"range":{"start_line":1557,"start_character":4,"end_line":1557,"end_character":71},"updated":"2018-04-17 13:45:58.000000000","message":"I\u0027ve experienced issues when trying to add new unit tests to the libvirt code paths because of globally mocking the host.Host.has_min_version method, and it\u0027s extremely hard to track down when one test fails because another test in the same worker has mocked out that same method.\n\nCan we add a method to LibvirtGenericVIFDriver which does the version check for MTU capability and then mock that instead?","commit_id":"52d727db6c6995d9de43de8b2b398fd712bc1d53"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cafdfe156cb876fcaed193e7d6ad0356cd7dd5f8","unresolved":false,"context_lines":[{"line_number":1580,"context_line":"                \u003ctarget dev\u003d\"nicdc065497-3c\"/\u003e"},{"line_number":1581,"context_line":"                \u003cfilterref"},{"line_number":1582,"context_line":"                 filter\u003d\"nova-instance-instance-00000001-22522562e2aa\"/\u003e"},{"line_number":1583,"context_line":"                \u003cmtu  size\u003d\"9000\"/\u003e"},{"line_number":1584,"context_line":"            \u003c/interface\u003e\"\"\", cfg.to_xml())"},{"line_number":1585,"context_line":""},{"line_number":1586,"context_line":"    @mock.patch.object(host.Host, \"has_min_version\", return_value\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_4ed2a55e","line":1583,"range":{"start_line":1583,"start_character":20,"end_line":1583,"end_character":22},"updated":"2018-04-17 13:45:58.000000000","message":"I\u0027m surprised the extra space doesn\u0027t make this fail.","commit_id":"52d727db6c6995d9de43de8b2b398fd712bc1d53"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1c40505dc2d7f6fc7d8d477c7f5b1df91e01fca1","unresolved":false,"context_lines":[{"line_number":1556,"context_line":"    def test_osvif_unplug_fail(self):"},{"line_number":1557,"context_line":"        self._test_osvif_unplug(True)"},{"line_number":1558,"context_line":""},{"line_number":1559,"context_line":"    @mock.patch.object(vif.LibvirtGenericVIFDriver, \"_has_min_version_for_mtu\","},{"line_number":1560,"context_line":"                       return_value\u003dTrue)"},{"line_number":1561,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_instance\")"},{"line_number":1562,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_vif\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_ed70d60a","line":1559,"updated":"2018-04-23 20:00:00.000000000","message":"nit: I\u0027d prefer that this mock goes on the \"d\" variable within the test rather than globally here. It\u0027s not a blocker for me though.","commit_id":"1ae1189eacc5202862794269296a995d7b300418"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e17e333ebaa7c23ff4f706519674f90d504a01ad","unresolved":false,"context_lines":[{"line_number":1556,"context_line":"    def test_osvif_unplug_fail(self):"},{"line_number":1557,"context_line":"        self._test_osvif_unplug(True)"},{"line_number":1558,"context_line":""},{"line_number":1559,"context_line":"    @mock.patch.object(vif.LibvirtGenericVIFDriver, \"_has_min_version_for_mtu\","},{"line_number":1560,"context_line":"                       return_value\u003dTrue)"},{"line_number":1561,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_instance\")"},{"line_number":1562,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_vif\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"5f7c97a3_6c399bf0","line":1559,"in_reply_to":"9f6a8fd7_b7bac9de","updated":"2018-06-06 13:22:19.000000000","message":"The problem is you\u0027re mocking essentially a global, and I\u0027ve seen issues with that when multiple tests are mocking/using the same thing at the same time.","commit_id":"1ae1189eacc5202862794269296a995d7b300418"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"25da9a7fb278c0352f0a656f989544399372eacb","unresolved":false,"context_lines":[{"line_number":1556,"context_line":"    def test_osvif_unplug_fail(self):"},{"line_number":1557,"context_line":"        self._test_osvif_unplug(True)"},{"line_number":1558,"context_line":""},{"line_number":1559,"context_line":"    @mock.patch.object(vif.LibvirtGenericVIFDriver, \"_has_min_version_for_mtu\","},{"line_number":1560,"context_line":"                       return_value\u003dTrue)"},{"line_number":1561,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_instance\")"},{"line_number":1562,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_vif\")"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_b7bac9de","line":1559,"in_reply_to":"9f6a8fd7_ed70d60a","updated":"2018-04-27 14:39:26.000000000","message":"i can convert i to use a context manager but i generally try to avoid useing mock directly out side of a decorator.","commit_id":"1ae1189eacc5202862794269296a995d7b300418"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e17e333ebaa7c23ff4f706519674f90d504a01ad","unresolved":false,"context_lines":[{"line_number":1430,"context_line":"        hostimpl \u003d host.Host(\"qemu:///system\")"},{"line_number":1431,"context_line":"        flavor \u003d objects.Flavor(name\u003d\u0027m1.small\u0027)"},{"line_number":1432,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict({})"},{"line_number":1433,"context_line":"        with mock.patch.object(vif.LibvirtGenericVIFDriver,"},{"line_number":1434,"context_line":"            \"_has_min_version_for_mtu\","},{"line_number":1435,"context_line":"            return_value\u003dTrue):"},{"line_number":1436,"context_line":"            d \u003d vif.LibvirtGenericVIFDriver()"},{"line_number":1437,"context_line":"            cfg \u003d d.get_config(self.instance, self.vif_bridge,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_4c1e1f75","line":1434,"range":{"start_line":1433,"start_character":31,"end_line":1434,"end_character":39},"updated":"2018-06-06 13:22:19.000000000","message":"Mock this on the d variable, not the global class reference.","commit_id":"c3c97a6a23d6a1b2624d67e0fbc7c8dc1b856381"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e17e333ebaa7c23ff4f706519674f90d504a01ad","unresolved":false,"context_lines":[{"line_number":1460,"context_line":"        hostimpl \u003d host.Host(\"qemu:///system\")"},{"line_number":1461,"context_line":"        flavor \u003d objects.Flavor(name\u003d\u0027m1.small\u0027)"},{"line_number":1462,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict({})"},{"line_number":1463,"context_line":"        with mock.patch.object(vif.LibvirtGenericVIFDriver,"},{"line_number":1464,"context_line":"            \"_has_min_version_for_mtu\","},{"line_number":1465,"context_line":"            return_value\u003dFalse):"},{"line_number":1466,"context_line":"            d \u003d vif.LibvirtGenericVIFDriver()"},{"line_number":1467,"context_line":"            cfg \u003d d.get_config(self.instance, self.vif_bridge,"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_0c282795","line":1464,"range":{"start_line":1463,"start_character":8,"end_line":1464,"end_character":39},"updated":"2018-06-06 13:22:19.000000000","message":"same","commit_id":"c3c97a6a23d6a1b2624d67e0fbc7c8dc1b856381"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e17e333ebaa7c23ff4f706519674f90d504a01ad","unresolved":false,"context_lines":[{"line_number":1491,"context_line":"        hostimpl \u003d host.Host(\"qemu:///system\")"},{"line_number":1492,"context_line":"        flavor \u003d objects.Flavor(name\u003d\u0027m1.small\u0027)"},{"line_number":1493,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict({})"},{"line_number":1494,"context_line":"        with mock.patch.object(vif.LibvirtGenericVIFDriver,"},{"line_number":1495,"context_line":"            \"_has_min_version_for_mtu\","},{"line_number":1496,"context_line":"            return_value\u003dTrue):"},{"line_number":1497,"context_line":"            d \u003d vif.LibvirtGenericVIFDriver()"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_cc1b0f7e","line":1494,"updated":"2018-06-06 13:22:19.000000000","message":"same","commit_id":"c3c97a6a23d6a1b2624d67e0fbc7c8dc1b856381"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e17e333ebaa7c23ff4f706519674f90d504a01ad","unresolved":false,"context_lines":[{"line_number":1521,"context_line":"        hostimpl \u003d host.Host(\"qemu:///system\")"},{"line_number":1522,"context_line":"        flavor \u003d objects.Flavor(name\u003d\u0027m1.small\u0027)"},{"line_number":1523,"context_line":"        image_meta \u003d objects.ImageMeta.from_dict({})"},{"line_number":1524,"context_line":"        with mock.patch.object(vif.LibvirtGenericVIFDriver,"},{"line_number":1525,"context_line":"            \"_has_min_version_for_mtu\","},{"line_number":1526,"context_line":"            return_value\u003dFalse):"},{"line_number":1527,"context_line":"            d \u003d vif.LibvirtGenericVIFDriver()"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_6c12fb64","line":1524,"updated":"2018-06-06 13:22:19.000000000","message":"and here and below","commit_id":"c3c97a6a23d6a1b2624d67e0fbc7c8dc1b856381"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4c2579003d9abbde0da5dea39f156190ecfbeee3","unresolved":false,"context_lines":[{"line_number":1422,"context_line":""},{"line_number":1423,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_instance\")"},{"line_number":1424,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_vif\")"},{"line_number":1425,"context_line":"    def test_config_os_vif_bridge(self, mock_convert_vif,"},{"line_number":1426,"context_line":"                                  mock_convert_inst):"},{"line_number":1427,"context_line":"        mock_convert_vif.return_value \u003d self.os_vif_bridge"},{"line_number":1428,"context_line":"        mock_convert_inst.return_value \u003d self.os_vif_inst_info"},{"line_number":1429,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_97ebe476","line":1426,"range":{"start_line":1425,"start_character":57,"end_line":1426,"end_character":34},"updated":"2018-06-06 13:51:12.000000000","message":"unnecessary change","commit_id":"f02b3800051234ecc14f3117d5987b1a8ef75877"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cdcae87287e6b4ebd6087167ff4f5a5b66e998e9","unresolved":false,"context_lines":[{"line_number":1422,"context_line":""},{"line_number":1423,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_instance\")"},{"line_number":1424,"context_line":"    @mock.patch(\"nova.network.os_vif_util.nova_to_osvif_vif\")"},{"line_number":1425,"context_line":"    def test_config_os_vif_bridge(self, mock_convert_vif,"},{"line_number":1426,"context_line":"                                  mock_convert_inst):"},{"line_number":1427,"context_line":"        mock_convert_vif.return_value \u003d self.os_vif_bridge"},{"line_number":1428,"context_line":"        mock_convert_inst.return_value \u003d self.os_vif_inst_info"},{"line_number":1429,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_cab0b38e","line":1426,"range":{"start_line":1425,"start_character":57,"end_line":1426,"end_character":34},"in_reply_to":"5f7c97a3_97ebe476","updated":"2018-06-07 13:02:34.000000000","message":"Oops, that would have been my fault.","commit_id":"f02b3800051234ecc14f3117d5987b1a8ef75877"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"4c2579003d9abbde0da5dea39f156190ecfbeee3","unresolved":false,"context_lines":[{"line_number":1434,"context_line":"        with mock.patch.object(d, \"_has_min_version_for_mtu\","},{"line_number":1435,"context_line":"                               return_value\u003dTrue):"},{"line_number":1436,"context_line":"            cfg \u003d d.get_config(self.instance, self.vif_bridge,"},{"line_number":1437,"context_line":"                            image_meta, flavor,"},{"line_number":1438,"context_line":"                            CONF.libvirt.virt_type,"},{"line_number":1439,"context_line":"                            hostimpl)"},{"line_number":1440,"context_line":""},{"line_number":1441,"context_line":"            self._assertXmlEqual(\"\"\""},{"line_number":1442,"context_line":"                \u003cinterface type\u003d\"bridge\"\u003e"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_37021040","line":1439,"range":{"start_line":1437,"start_character":0,"end_line":1439,"end_character":37},"updated":"2018-06-06 13:51:12.000000000","message":"nit: alignment way off here now","commit_id":"f02b3800051234ecc14f3117d5987b1a8ef75877"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cdcae87287e6b4ebd6087167ff4f5a5b66e998e9","unresolved":false,"context_lines":[{"line_number":1434,"context_line":"        with mock.patch.object(d, \"_has_min_version_for_mtu\","},{"line_number":1435,"context_line":"                               return_value\u003dTrue):"},{"line_number":1436,"context_line":"            cfg \u003d d.get_config(self.instance, self.vif_bridge,"},{"line_number":1437,"context_line":"                            image_meta, flavor,"},{"line_number":1438,"context_line":"                            CONF.libvirt.virt_type,"},{"line_number":1439,"context_line":"                            hostimpl)"},{"line_number":1440,"context_line":""},{"line_number":1441,"context_line":"            self._assertXmlEqual(\"\"\""},{"line_number":1442,"context_line":"                \u003cinterface type\u003d\"bridge\"\u003e"}],"source_content_type":"text/x-python","patch_set":8,"id":"5f7c97a3_aaa53749","line":1439,"range":{"start_line":1437,"start_character":0,"end_line":1439,"end_character":37},"in_reply_to":"5f7c97a3_37021040","updated":"2018-06-07 13:02:34.000000000","message":"And here as well - and below.","commit_id":"f02b3800051234ecc14f3117d5987b1a8ef75877"}],"nova/virt/libvirt/config.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cafdfe156cb876fcaed193e7d6ad0356cd7dd5f8","unresolved":false,"context_lines":[{"line_number":1420,"context_line":"                bandwidth.append(vif_outbound)"},{"line_number":1421,"context_line":"            dev.append(bandwidth)"},{"line_number":1422,"context_line":""},{"line_number":1423,"context_line":"        if self.mtu is not None and self.net_type in (\"ethernet\", \"bridge\"):"},{"line_number":1424,"context_line":"            dev.append(etree.Element(\"mtu\", size\u003dstr(self.mtu)))"},{"line_number":1425,"context_line":""},{"line_number":1426,"context_line":"        return dev"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_ee705975","line":1423,"updated":"2018-04-17 13:45:58.000000000","message":"nit: this could be handled in the \u0027ethernet\u0027 and \u0027bridge\u0027 conditional blocks above similar to how they are already handling self.script.","commit_id":"52d727db6c6995d9de43de8b2b398fd712bc1d53"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cafdfe156cb876fcaed193e7d6ad0356cd7dd5f8","unresolved":false,"context_lines":[{"line_number":1505,"context_line":"            elif c.tag \u003d\u003d \u0027address\u0027:"},{"line_number":1506,"context_line":"                obj \u003d LibvirtConfigGuestDeviceAddress.parse_dom(c)"},{"line_number":1507,"context_line":"                self.device_addr \u003d obj"},{"line_number":1508,"context_line":""},{"line_number":1509,"context_line":"            elif c.tag \u003d\u003d \u0027mtu\u0027:"},{"line_number":1510,"context_line":"                self.mtu \u003d int(c.get(\u0027size\u0027))"},{"line_number":1511,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_0e0fcde1","line":1508,"updated":"2018-04-17 13:45:58.000000000","message":"nit: nix the blank line here","commit_id":"52d727db6c6995d9de43de8b2b398fd712bc1d53"}],"nova/virt/libvirt/designer.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"68e90906766db1639c421744155d5e1feb7a804b","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    conf.vhostuser_path \u003d path"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"def set_vif_mtu_config(conf, mtu\u003d1500):"},{"line_number":162,"context_line":"    \"\"\"Populate a LibvirtConfigGuestInterface instance"},{"line_number":163,"context_line":"    with network mtu."},{"line_number":164,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_37eabd0e","line":161,"updated":"2018-04-11 16:39:04.000000000","message":"Why isn\u0027t this done via os-vif? If there is a good reason, can you explain that in the commit message?","commit_id":"52d727db6c6995d9de43de8b2b398fd712bc1d53"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"1fd09943b506fa5f673c151ce23f4ff3c1d4dbc7","unresolved":false,"context_lines":[{"line_number":158,"context_line":"    conf.vhostuser_path \u003d path"},{"line_number":159,"context_line":""},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"def set_vif_mtu_config(conf, mtu\u003d1500):"},{"line_number":162,"context_line":"    \"\"\"Populate a LibvirtConfigGuestInterface instance"},{"line_number":163,"context_line":"    with network mtu."},{"line_number":164,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_1aef8e1d","line":161,"in_reply_to":"bf659307_37eabd0e","updated":"2018-04-12 07:49:26.000000000","message":"The context is where libvirt is creating the tap device e.g:  OVS bridge (hybrid\u003dFalse). ovs-vif will just ensure that the OVS bridge exists.\n\nWe want libvirt to create the tap, configure the MTU and then plug the tap into the right bridge.","commit_id":"52d727db6c6995d9de43de8b2b398fd712bc1d53"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"8f890b47ac47ad61578e584959d27c975cf8847b","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    \"\"\"Populate a LibvirtConfigGuestInterface instance"},{"line_number":163,"context_line":"    with network mtu."},{"line_number":164,"context_line":"    \"\"\""},{"line_number":165,"context_line":"    conf.mtu \u003d mtu if mtu \u003e 0 else 1500"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"def set_vif_bandwidth_config(conf, inst_type):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_12ed00b6","line":165,"range":{"start_line":165,"start_character":0,"end_line":165,"end_character":39},"updated":"2018-04-03 15:16:21.000000000","message":"I guess there\u0027s no use in raising something here given that neutron provided this to us. A log might be helpful though?","commit_id":"52d727db6c6995d9de43de8b2b398fd712bc1d53"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"dd6a22536de86edff04fdcaaaeeefce77b6f67db","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    \"\"\"Populate a LibvirtConfigGuestInterface instance"},{"line_number":163,"context_line":"    with network mtu."},{"line_number":164,"context_line":"    \"\"\""},{"line_number":165,"context_line":"    conf.mtu \u003d mtu if mtu \u003e 0 else 1500"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"def set_vif_bandwidth_config(conf, inst_type):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_0a3095e7","line":165,"range":{"start_line":165,"start_character":0,"end_line":165,"end_character":39},"in_reply_to":"9f6a8fd7_aeffc1a8","updated":"2018-04-23 15:39:58.000000000","message":"Thinking again I don\u0027t think we should enforce anything here like we should not have mtu\u003d1500 in the arguments of the function.","commit_id":"52d727db6c6995d9de43de8b2b398fd712bc1d53"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"197b575a72ab10a6dc2f2f49e050c4e498c8d839","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    \"\"\"Populate a LibvirtConfigGuestInterface instance"},{"line_number":163,"context_line":"    with network mtu."},{"line_number":164,"context_line":"    \"\"\""},{"line_number":165,"context_line":"    conf.mtu \u003d mtu if mtu \u003e 0 else 1500"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"def set_vif_bandwidth_config(conf, inst_type):"}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_347fb766","line":165,"range":{"start_line":165,"start_character":0,"end_line":165,"end_character":39},"in_reply_to":"bf659307_12ed00b6","updated":"2018-04-04 14:32:53.000000000","message":"i believe neutron should be doing validation of its mtus\nhowever i could not find any code in the db/api or config parsing to validate this as a result i added this for pices of mind.\nwe could add a log for this but its really a neutron config error so its a little weired for it to show up in nova.","commit_id":"52d727db6c6995d9de43de8b2b398fd712bc1d53"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"cafdfe156cb876fcaed193e7d6ad0356cd7dd5f8","unresolved":false,"context_lines":[{"line_number":162,"context_line":"    \"\"\"Populate a LibvirtConfigGuestInterface instance"},{"line_number":163,"context_line":"    with network mtu."},{"line_number":164,"context_line":"    \"\"\""},{"line_number":165,"context_line":"    conf.mtu \u003d mtu if mtu \u003e 0 else 1500"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"def set_vif_bandwidth_config(conf, inst_type):"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f6a8fd7_aeffc1a8","line":165,"range":{"start_line":165,"start_character":0,"end_line":165,"end_character":39},"in_reply_to":"bf659307_347fb766","updated":"2018-04-17 13:45:58.000000000","message":"How about at least adding a comment in here.","commit_id":"52d727db6c6995d9de43de8b2b398fd712bc1d53"}],"nova/virt/libvirt/vif.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"68e90906766db1639c421744155d5e1feb7a804b","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            conf.filtername \u003d name"},{"line_number":241,"context_line":"        designer.set_vif_bandwidth_config(conf, inst_type)"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        network \u003d vif.get(\u0027network\u0027)"},{"line_number":244,"context_line":"        if (network and network.get_meta(\"mtu\") and"},{"line_number":245,"context_line":"            host.has_min_version(MIN_LIBVIRT_INTERFACE_MTU)):"},{"line_number":246,"context_line":"            designer.set_vif_mtu_config(conf, network.get_meta(\"mtu\"))"},{"line_number":247,"context_line":""},{"line_number":248,"context_line":"        return conf"},{"line_number":249,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"bf659307_d7c34188","line":246,"range":{"start_line":243,"start_character":8,"end_line":246,"end_character":70},"updated":"2018-04-11 16:39:04.000000000","message":"Seems this could be moved into a helper method since it\u0027s replayed in 3 places.","commit_id":"52d727db6c6995d9de43de8b2b398fd712bc1d53"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1c40505dc2d7f6fc7d8d477c7f5b1df91e01fca1","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        return prefix + devname[3:]"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def get_base_config(self, instance, mac, image_meta,"},{"line_number":109,"context_line":"                        inst_type, virt_type, vnic_type, host):"},{"line_number":110,"context_line":"        conf \u003d vconfig.LibvirtConfigGuestInterface()"},{"line_number":111,"context_line":"        # Default to letting libvirt / the hypervisor choose the model"},{"line_number":112,"context_line":"        model \u003d None"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_6d5e0677","line":109,"range":{"start_line":109,"start_character":57,"end_line":109,"end_character":61},"updated":"2018-04-23 20:00:00.000000000","message":"This isn\u0027t used.","commit_id":"1ae1189eacc5202862794269296a995d7b300418"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"25da9a7fb278c0352f0a656f989544399372eacb","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        return prefix + devname[3:]"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":"    def get_base_config(self, instance, mac, image_meta,"},{"line_number":109,"context_line":"                        inst_type, virt_type, vnic_type, host):"},{"line_number":110,"context_line":"        conf \u003d vconfig.LibvirtConfigGuestInterface()"},{"line_number":111,"context_line":"        # Default to letting libvirt / the hypervisor choose the model"},{"line_number":112,"context_line":"        model \u003d None"}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_3793195f","line":109,"range":{"start_line":109,"start_character":57,"end_line":109,"end_character":61},"in_reply_to":"9f6a8fd7_6d5e0677","updated":"2018-04-27 14:39:26.000000000","message":"that is unrelated?","commit_id":"1ae1189eacc5202862794269296a995d7b300418"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1c40505dc2d7f6fc7d8d477c7f5b1df91e01fca1","unresolved":false,"context_lines":[{"line_number":241,"context_line":"            conf.filtername \u003d name"},{"line_number":242,"context_line":"        designer.set_vif_bandwidth_config(conf, inst_type)"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"        network \u003d vif.get(\u0027network\u0027)"},{"line_number":245,"context_line":"        if (network and network.get_meta(\"mtu\") and"},{"line_number":246,"context_line":"            self._has_min_version_for_mtu(host)):"},{"line_number":247,"context_line":"            designer.set_vif_mtu_config(conf, network.get_meta(\"mtu\"))"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"        return conf"},{"line_number":250,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_ed49b6b6","line":247,"range":{"start_line":244,"start_character":8,"end_line":247,"end_character":70},"updated":"2018-04-23 20:00:00.000000000","message":"Couldn\u0027t this whole block go into a _set_mtu_config(vif, conf, host) method? Then we don\u0027t need to repeat the conditionals in the other methods.","commit_id":"1ae1189eacc5202862794269296a995d7b300418"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"25da9a7fb278c0352f0a656f989544399372eacb","unresolved":false,"context_lines":[{"line_number":241,"context_line":"            conf.filtername \u003d name"},{"line_number":242,"context_line":"        designer.set_vif_bandwidth_config(conf, inst_type)"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":"        network \u003d vif.get(\u0027network\u0027)"},{"line_number":245,"context_line":"        if (network and network.get_meta(\"mtu\") and"},{"line_number":246,"context_line":"            self._has_min_version_for_mtu(host)):"},{"line_number":247,"context_line":"            designer.set_vif_mtu_config(conf, network.get_meta(\"mtu\"))"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"        return conf"},{"line_number":250,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_57f56d82","line":247,"range":{"start_line":244,"start_character":8,"end_line":247,"end_character":70},"in_reply_to":"9f6a8fd7_ed49b6b6","updated":"2018-04-27 14:39:26.000000000","message":"am proably ill respin and","commit_id":"1ae1189eacc5202862794269296a995d7b300418"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1c40505dc2d7f6fc7d8d477c7f5b1df91e01fca1","unresolved":false,"context_lines":[{"line_number":424,"context_line":"        dev \u003d self.get_vif_devname(vif)"},{"line_number":425,"context_line":"        designer.set_vif_host_backend_ethernet_config(conf, dev, host)"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"        network \u003d vif.get(\u0027network\u0027)"},{"line_number":428,"context_line":"        if (network and network.get_meta(\"mtu\") and"},{"line_number":429,"context_line":"            self._has_min_version_for_mtu(host)):"},{"line_number":430,"context_line":"            designer.set_vif_mtu_config(conf, network.get_meta(\"mtu\"))"},{"line_number":431,"context_line":""},{"line_number":432,"context_line":"        return conf"},{"line_number":433,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_cde1529d","line":430,"range":{"start_line":427,"start_character":8,"end_line":430,"end_character":70},"updated":"2018-04-23 20:00:00.000000000","message":"same, _set_mtu_config.","commit_id":"1ae1189eacc5202862794269296a995d7b300418"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1c40505dc2d7f6fc7d8d477c7f5b1df91e01fca1","unresolved":false,"context_lines":[{"line_number":558,"context_line":"        func(instance, vif, conf, host)"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"        designer.set_vif_bandwidth_config(conf, inst_type)"},{"line_number":561,"context_line":"        if (vif.network.mtu and"},{"line_number":562,"context_line":"            self._has_min_version_for_mtu(host)):"},{"line_number":563,"context_line":"            designer.set_vif_mtu_config(conf, vif.network.mtu)"},{"line_number":564,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_4de782ad","line":561,"range":{"start_line":561,"start_character":12,"end_line":561,"end_character":23},"updated":"2018-04-23 20:00:00.000000000","message":"why don\u0027t we have the same conditional for vif.get(\u0027network\u0027)?","commit_id":"1ae1189eacc5202862794269296a995d7b300418"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"25da9a7fb278c0352f0a656f989544399372eacb","unresolved":false,"context_lines":[{"line_number":558,"context_line":"        func(instance, vif, conf, host)"},{"line_number":559,"context_line":""},{"line_number":560,"context_line":"        designer.set_vif_bandwidth_config(conf, inst_type)"},{"line_number":561,"context_line":"        if (vif.network.mtu and"},{"line_number":562,"context_line":"            self._has_min_version_for_mtu(host)):"},{"line_number":563,"context_line":"            designer.set_vif_mtu_config(conf, vif.network.mtu)"},{"line_number":564,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9f6a8fd7_b7040980","line":561,"range":{"start_line":561,"start_character":12,"end_line":561,"end_character":23},"in_reply_to":"9f6a8fd7_4de782ad","updated":"2018-04-27 14:39:26.000000000","message":"i will have to double chack but i belive this is an os-vif vif object and else where we are dealing with nova network model vif objecs e.g. https://github.com/openstack/os-vif/blob/master/os_vif/objects/vif.py#L22 vs https://github.com/openstack/nova/blob/master/nova/network/model.py#L378\n\ni think that was the reason but ill see if i can use the same logic or leave a comment if not.","commit_id":"1ae1189eacc5202862794269296a995d7b300418"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e17e333ebaa7c23ff4f706519674f90d504a01ad","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        return conf"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"    def _set_mtu_config(self, vif, host, conf):"},{"line_number":271,"context_line":"        \"\"\":param vif: nova.network.modle.vif"},{"line_number":272,"context_line":"           :param host: nova.virt.libvirt.host.Host"},{"line_number":273,"context_line":"           :param conf: nova.virt.libvirt.config.LibvirtConfigGuestInterface"},{"line_number":274,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_2c0c0341","line":271,"range":{"start_line":271,"start_character":36,"end_line":271,"end_character":41},"updated":"2018-06-06 13:22:19.000000000","message":"model.VIF","commit_id":"c3c97a6a23d6a1b2624d67e0fbc7c8dc1b856381"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e17e333ebaa7c23ff4f706519674f90d504a01ad","unresolved":false,"context_lines":[{"line_number":274,"context_line":"        \"\"\""},{"line_number":275,"context_line":"        network \u003d vif.get(\u0027network\u0027)"},{"line_number":276,"context_line":"        if (network and network.get_meta(\"mtu\") and"},{"line_number":277,"context_line":"            self._has_min_version_for_mtu(host)):"},{"line_number":278,"context_line":"            designer.set_vif_mtu_config(conf, network.get_meta(\"mtu\"))"},{"line_number":279,"context_line":""},{"line_number":280,"context_line":"    def _has_min_version_for_mtu(self, host):"}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_7707281a","line":277,"updated":"2018-06-06 13:22:19.000000000","message":"nit: indent this line","commit_id":"c3c97a6a23d6a1b2624d67e0fbc7c8dc1b856381"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e17e333ebaa7c23ff4f706519674f90d504a01ad","unresolved":false,"context_lines":[{"line_number":593,"context_line":"        func(instance, vif, conf, host)"},{"line_number":594,"context_line":""},{"line_number":595,"context_line":"        designer.set_vif_bandwidth_config(conf, inst_type)"},{"line_number":596,"context_line":"        if (vif.network.mtu and"},{"line_number":597,"context_line":"            self._has_min_version_for_mtu(host)):"},{"line_number":598,"context_line":"            designer.set_vif_mtu_config(conf, vif.network.mtu)"},{"line_number":599,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"5f7c97a3_373f70b6","line":596,"updated":"2018-06-06 13:22:19.000000000","message":"In PS5 I asked:\n\n\"why don\u0027t we have the same conditional for vif.get(\u0027network\u0027)?\"\n\nAnd the response was:\n\n\"i will have to double chack but i belive this is an os-vif vif object and else where we are dealing with nova network model vif objecs e.g. https://github.com/openstack/os-vif/blob/master/os_vif/objects/vif.py#L22 vs https://github.com/openstack/nova/blob/master/nova/network/model.py#L378\n\ni think that was the reason but ill see if i can use the same logic or leave a comment if not.\"\n\n--\n\nBut then it seems we should have:\n\nif (\u0027network\u0027 in vif and \u0027mtu\u0027 in vif.network and\n        self._has_min_version_for_mtu(host)):\n    designer.set_vif_mtu_config(conf, vif.network.mtu)","commit_id":"c3c97a6a23d6a1b2624d67e0fbc7c8dc1b856381"}]}
