)]}'
{"nova/tests/unit/virt/libvirt/test_driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1fbc0cc1280670fa45c461dd8a950a6c1a400eaa","unresolved":false,"context_lines":[{"line_number":1585,"context_line":"        network_info \u003d _fake_network_info(self, 4)"},{"line_number":1586,"context_line":"        network_info[0][\u0027vnic_type\u0027] \u003d network_model.VNIC_TYPE_DIRECT_PHYSICAL"},{"line_number":1587,"context_line":"        network_info[0][\u0027address\u0027] \u003d \"51:5a:2c:a4:5e:1b\""},{"line_number":1588,"context_line":"        network_info[0][\u0027details\u0027] \u003d dict(vlan\u003d\"2145\")"},{"line_number":1589,"context_line":"        instance_ref.info_cache \u003d objects.InstanceInfoCache("},{"line_number":1590,"context_line":"            network_info\u003dnetwork_info)"},{"line_number":1591,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3a461143_3f9221a0","line":1588,"range":{"start_line":1588,"start_character":42,"end_line":1588,"end_character":53},"updated":"2017-01-26 21:47:28.000000000","message":"We never cast this to an int so I\u0027m not sure how this doesn\u0027t blow up when we try to set it on the NetworkInterfaceMetadata.vlan field which is an int.","commit_id":"2bd21505262a448a240b94fbebf0299ae6f06f8a"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"757a84944cd7e49e9cd7ff5cb224c98b37d07ea7","unresolved":false,"context_lines":[{"line_number":1585,"context_line":"        network_info \u003d _fake_network_info(self, 4)"},{"line_number":1586,"context_line":"        network_info[0][\u0027vnic_type\u0027] \u003d network_model.VNIC_TYPE_DIRECT_PHYSICAL"},{"line_number":1587,"context_line":"        network_info[0][\u0027address\u0027] \u003d \"51:5a:2c:a4:5e:1b\""},{"line_number":1588,"context_line":"        network_info[0][\u0027details\u0027] \u003d dict(vlan\u003d\"2145\")"},{"line_number":1589,"context_line":"        instance_ref.info_cache \u003d objects.InstanceInfoCache("},{"line_number":1590,"context_line":"            network_info\u003dnetwork_info)"},{"line_number":1591,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3a461143_1f55654f","line":1588,"range":{"start_line":1588,"start_character":42,"end_line":1588,"end_character":53},"in_reply_to":"3a461143_3f9221a0","updated":"2017-01-26 21:58:36.000000000","message":"Done","commit_id":"2bd21505262a448a240b94fbebf0299ae6f06f8a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bb5fa4c8563977ac4d8f61f067be3745ba0e3ce5","unresolved":false,"context_lines":[{"line_number":1585,"context_line":"        network_info \u003d _fake_network_info(self, 4)"},{"line_number":1586,"context_line":"        network_info[0][\u0027vnic_type\u0027] \u003d network_model.VNIC_TYPE_DIRECT_PHYSICAL"},{"line_number":1587,"context_line":"        network_info[0][\u0027address\u0027] \u003d \"51:5a:2c:a4:5e:1b\""},{"line_number":1588,"context_line":"        network_info[0][\u0027details\u0027] \u003d dict(vlan\u003d2145)"},{"line_number":1589,"context_line":"        instance_ref.info_cache \u003d objects.InstanceInfoCache("},{"line_number":1590,"context_line":"            network_info\u003dnetwork_info)"},{"line_number":1591,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"3a461143_65c09a2b","line":1588,"range":{"start_line":1588,"start_character":47,"end_line":1588,"end_character":51},"updated":"2017-01-26 22:33:38.000000000","message":"this would be a str","commit_id":"18a23b747b410c81ff222cc552943326aacbb179"}],"nova/tests/unit/virt/test_netutils.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"efcfbad595ba9575861f341b0fd35fde9a8fcc3a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"5a3905b3_5abd9200","updated":"2017-01-24 16:51:07.000000000","message":"Aye, these are very helpful indeed","commit_id":"4753f5dffe374da9daa060a2b7822f7634c7fe79"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"46e3811925a441e9ec19c053fc7fd1b21bc3936d","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        network_info[1][\u0027details\u0027] \u003d dict(vlan\u003d\"2145\")"},{"line_number":42,"context_line":"        expected \u003d {\u0027fa:16:3e:d1:28:e4\u0027: \u00272145\u0027}"},{"line_number":43,"context_line":"        self.assertEqual(expected,"},{"line_number":44,"context_line":"                        netutils.get_cached_vifs_with_vlan(network_info))"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a461143_bec0e12b","line":44,"updated":"2017-01-26 17:25:46.000000000","message":"nit on the alignment here","commit_id":"4753f5dffe374da9daa060a2b7822f7634c7fe79"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1fbc0cc1280670fa45c461dd8a950a6c1a400eaa","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        network_info[1][\u0027vnic_type\u0027] \u003d network_model.VNIC_TYPE_DIRECT_PHYSICAL"},{"line_number":40,"context_line":"        network_info[1][\u0027address\u0027] \u003d \"fa:16:3e:d1:28:e4\""},{"line_number":41,"context_line":"        network_info[1][\u0027details\u0027] \u003d dict(vlan\u003d\"2145\")"},{"line_number":42,"context_line":"        expected \u003d {\u0027fa:16:3e:d1:28:e4\u0027: \u00272145\u0027}"},{"line_number":43,"context_line":"        self.assertEqual(expected,"},{"line_number":44,"context_line":"                        netutils.get_cached_vifs_with_vlan(network_info))"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a461143_5ce61bb5","line":41,"range":{"start_line":41,"start_character":42,"end_line":41,"end_character":53},"updated":"2017-01-26 21:47:28.000000000","message":"Shouldn\u0027t this be an int? If not, the libvirt driver is going to blow up when it tries to store a str in an IntegerField on the NetworkInterfaceMetadata object.\n\nhttp://git.openstack.org/cgit/openstack/neutron/tree/neutron/plugins/ml2/drivers/mech_sriov/mech_driver/mech_driver.py#n164","commit_id":"2bd21505262a448a240b94fbebf0299ae6f06f8a"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"757a84944cd7e49e9cd7ff5cb224c98b37d07ea7","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        network_info[1][\u0027vnic_type\u0027] \u003d network_model.VNIC_TYPE_DIRECT_PHYSICAL"},{"line_number":40,"context_line":"        network_info[1][\u0027address\u0027] \u003d \"fa:16:3e:d1:28:e4\""},{"line_number":41,"context_line":"        network_info[1][\u0027details\u0027] \u003d dict(vlan\u003d\"2145\")"},{"line_number":42,"context_line":"        expected \u003d {\u0027fa:16:3e:d1:28:e4\u0027: \u00272145\u0027}"},{"line_number":43,"context_line":"        self.assertEqual(expected,"},{"line_number":44,"context_line":"                        netutils.get_cached_vifs_with_vlan(network_info))"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a461143_9f607537","line":41,"range":{"start_line":41,"start_character":42,"end_line":41,"end_character":53},"in_reply_to":"3a461143_5ce61bb5","updated":"2017-01-26 21:58:36.000000000","message":"Done","commit_id":"2bd21505262a448a240b94fbebf0299ae6f06f8a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bb5fa4c8563977ac4d8f61f067be3745ba0e3ce5","unresolved":false,"context_lines":[{"line_number":38,"context_line":""},{"line_number":39,"context_line":"        network_info[1][\u0027vnic_type\u0027] \u003d network_model.VNIC_TYPE_DIRECT_PHYSICAL"},{"line_number":40,"context_line":"        network_info[1][\u0027address\u0027] \u003d \"fa:16:3e:d1:28:e4\""},{"line_number":41,"context_line":"        network_info[1][\u0027details\u0027] \u003d dict(vlan\u003d2145)"},{"line_number":42,"context_line":"        expected \u003d {\u0027fa:16:3e:d1:28:e4\u0027: 2145}"},{"line_number":43,"context_line":"        self.assertEqual(expected,"},{"line_number":44,"context_line":"                         netutils.get_cached_vifs_with_vlan(network_info))"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a461143_e5b3aae7","line":41,"range":{"start_line":41,"start_character":47,"end_line":41,"end_character":51},"updated":"2017-01-26 22:33:38.000000000","message":"heh sorry, this would actually be a str, but could clean that up later.","commit_id":"18a23b747b410c81ff222cc552943326aacbb179"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"efcfbad595ba9575861f341b0fd35fde9a8fcc3a","unresolved":false,"context_lines":[{"line_number":7678,"context_line":"        vlans_by_mac \u003d netutils.get_cached_vifs_with_vlan(network_info)"},{"line_number":7679,"context_line":"        vifs \u003d objects.VirtualInterfaceList.get_by_instance_uuid(context,"},{"line_number":7680,"context_line":"                                                                 instance.uuid)"},{"line_number":7681,"context_line":"        vifs_to_expose \u003d {vif.address: vif for vif in vifs"},{"line_number":7682,"context_line":"                          if (\u0027tag\u0027 in vif and vif.tag) or"},{"line_number":7683,"context_line":"                             vlans_by_mac.get(vif.address)}"},{"line_number":7684,"context_line":"        # TODO(mriedem): We should be able to avoid the DB query here by using"}],"source_content_type":"text/x-python","patch_set":9,"id":"5a3905b3_ff6e30fe","line":7681,"range":{"start_line":7681,"start_character":8,"end_line":7681,"end_character":22},"updated":"2017-01-24 16:51:07.000000000","message":"nit: exposed_vifs?","commit_id":"4753f5dffe374da9daa060a2b7822f7634c7fe79"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"46e3811925a441e9ec19c053fc7fd1b21bc3936d","unresolved":false,"context_lines":[{"line_number":7702,"context_line":"                if not vif:"},{"line_number":7703,"context_line":"                    continue"},{"line_number":7704,"context_line":"                bus \u003d self._prepare_device_bus(dev)"},{"line_number":7705,"context_line":"                device \u003d objects.NetworkInterfaceMetadata(mac\u003dvif.address)"},{"line_number":7706,"context_line":"                if \u0027tag\u0027 in vif and vif.tag:"},{"line_number":7707,"context_line":"                    device.tags \u003d [vif.tag]"},{"line_number":7708,"context_line":"                if bus:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a461143_1e83b505","line":7705,"range":{"start_line":7705,"start_character":33,"end_line":7705,"end_character":57},"updated":"2017-01-26 17:25:46.000000000","message":"We don\u0027t need to store the vlan (if there is one) on this?","commit_id":"4753f5dffe374da9daa060a2b7822f7634c7fe79"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"f31d751168ddf917d0938e510666e1f606cca292","unresolved":false,"context_lines":[{"line_number":7702,"context_line":"                if not vif:"},{"line_number":7703,"context_line":"                    continue"},{"line_number":7704,"context_line":"                bus \u003d self._prepare_device_bus(dev)"},{"line_number":7705,"context_line":"                device \u003d objects.NetworkInterfaceMetadata(mac\u003dvif.address)"},{"line_number":7706,"context_line":"                if \u0027tag\u0027 in vif and vif.tag:"},{"line_number":7707,"context_line":"                    device.tags \u003d [vif.tag]"},{"line_number":7708,"context_line":"                if bus:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3a461143_903dc9bd","line":7705,"range":{"start_line":7705,"start_character":33,"end_line":7705,"end_character":57},"in_reply_to":"3a461143_1e83b505","updated":"2017-01-26 20:19:30.000000000","message":"Done","commit_id":"4753f5dffe374da9daa060a2b7822f7634c7fe79"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1fbc0cc1280670fa45c461dd8a950a6c1a400eaa","unresolved":false,"context_lines":[{"line_number":7679,"context_line":"        vifs \u003d objects.VirtualInterfaceList.get_by_instance_uuid(context,"},{"line_number":7680,"context_line":"                                                                 instance.uuid)"},{"line_number":7681,"context_line":"        vifs_to_expose \u003d {vif.address: vif for vif in vifs"},{"line_number":7682,"context_line":"                          if (\u0027tag\u0027 in vif and vif.tag) or"},{"line_number":7683,"context_line":"                             vlans_by_mac.get(vif.address)}"},{"line_number":7684,"context_line":"        # TODO(mriedem): We should be able to avoid the DB query here by using"},{"line_number":7685,"context_line":"        # block_device_info[\u0027block_device_mapping\u0027] which is passed into most"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a461143_fc7fc763","line":7682,"range":{"start_line":7682,"start_character":30,"end_line":7682,"end_character":42},"updated":"2017-01-26 21:47:28.000000000","message":"For some reason we didn\u0027t care about this before, I can\u0027t remember why, but I know the hyper-v driver checks it like this so we don\u0027t blow up with a lazy-load issue, so this is fine to be extra safe.","commit_id":"2bd21505262a448a240b94fbebf0299ae6f06f8a"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1fbc0cc1280670fa45c461dd8a950a6c1a400eaa","unresolved":false,"context_lines":[{"line_number":7709,"context_line":"                    device.bus \u003d bus"},{"line_number":7710,"context_line":"                vlan \u003d vlans_by_mac.get(vif.address)"},{"line_number":7711,"context_line":"                if vlan:"},{"line_number":7712,"context_line":"                    device.vlan \u003d vlan"},{"line_number":7713,"context_line":"                devices.append(device)"},{"line_number":7714,"context_line":""},{"line_number":7715,"context_line":"            # Build disks related metadata"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a461143_9c1243b3","line":7712,"range":{"start_line":7712,"start_character":34,"end_line":7712,"end_character":38},"updated":"2017-01-26 21:47:28.000000000","message":"Are we sure this is an int when we get it from neutron? Or could it be a str and we need to cast to int() to be safe?\n\nhttp://git.openstack.org/cgit/openstack/neutron/tree/neutron/plugins/ml2/drivers/mech_sriov/mech_driver/mech_driver.py#n164","commit_id":"2bd21505262a448a240b94fbebf0299ae6f06f8a"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"757a84944cd7e49e9cd7ff5cb224c98b37d07ea7","unresolved":false,"context_lines":[{"line_number":7709,"context_line":"                    device.bus \u003d bus"},{"line_number":7710,"context_line":"                vlan \u003d vlans_by_mac.get(vif.address)"},{"line_number":7711,"context_line":"                if vlan:"},{"line_number":7712,"context_line":"                    device.vlan \u003d vlan"},{"line_number":7713,"context_line":"                devices.append(device)"},{"line_number":7714,"context_line":""},{"line_number":7715,"context_line":"            # Build disks related metadata"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a461143_1f272513","line":7712,"range":{"start_line":7712,"start_character":34,"end_line":7712,"end_character":38},"in_reply_to":"3a461143_9c1243b3","updated":"2017-01-26 21:58:36.000000000","message":"OK, will do. Relying on a test it seems to work without the case, but sure, I\u0027ll cast it.","commit_id":"2bd21505262a448a240b94fbebf0299ae6f06f8a"}],"nova/virt/netutils.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1cf76b260e7fd07c7eed6d951fd2e039c451c94c","unresolved":false,"context_lines":[{"line_number":346,"context_line":"            for ip in subnet[\u0027dns\u0027]]"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"def get_cached_vifs_with_vlan(network_info):"},{"line_number":350,"context_line":"    \"\"\"Generates a dict from a list of VIFs that has a vlan tag, with"},{"line_number":351,"context_line":"    MAC, VLAN as a key, value."},{"line_number":352,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"5a3905b3_9ab995ec","line":349,"updated":"2017-01-19 14:58:41.000000000","message":"Can we have a set of unit tests just for this change in a new nova.tests.unit.virt.test_netutils module? I don\u0027t like have to dig into the libvirt driver\u0027s unit tests to see where this code is tested, and it makes it hard to know if we lose coverage at some point if the bigger test in the libvirt driver is removed or refactored for whatever reason.\n\nI\u0027d expect at least 3 tests for this:\n\n1. network_info is None\n2. a single vif with an address but no details\n3. two vifs, one with details and a vlan, the other with details but without a vlan in those details.","commit_id":"d0fbcb53be40d0ac79d7d91d1631ff1cfc49ea5b"},{"author":{"_account_id":8802,"name":"Vladik Romanovsky","email":"vromanso@redhat.com","username":"vladikr"},"change_message_id":"142aa42f01d0b1f91a7caf67ccfab082d4f408a2","unresolved":false,"context_lines":[{"line_number":346,"context_line":"            for ip in subnet[\u0027dns\u0027]]"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":""},{"line_number":349,"context_line":"def get_cached_vifs_with_vlan(network_info):"},{"line_number":350,"context_line":"    \"\"\"Generates a dict from a list of VIFs that has a vlan tag, with"},{"line_number":351,"context_line":"    MAC, VLAN as a key, value."},{"line_number":352,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":8,"id":"5a3905b3_7fd3ed38","line":349,"in_reply_to":"5a3905b3_9ab995ec","updated":"2017-01-19 18:14:38.000000000","message":"Done","commit_id":"d0fbcb53be40d0ac79d7d91d1631ff1cfc49ea5b"}]}
