Earlier  
Posted Nick Remark
#openstack-nova - 2020-08-18
13:14:31 stephenfin setattr
13:14:35 stephenfin gfdi
13:15:02 stephenfin sean-k-mooney++ Thanks. Try as I may, I couldn't find that /o\
13:15:03 sean-k-mooney three are only 4 fileds you could replace that with 4 lines
13:15:30 stephenfin I think I might. setattr kills discoverability
13:16:24 sean-k-mooney if there were more filed i might argue for settattr but its just vnic_type, vif_type, profile and details
13:17:04 sean-k-mooney thats not going to change without a neutron api change and a new microversion which will require a nova code change to use anyway
13:20:11 sean-k-mooney stephenfin: if your going to refactor it might be nice to drop this too https://github.com/openstack/nova/blob/d4c857dfcb1ccfa5410de55671e69c722bbc990e/nova/conductor/tasks/live_migrate.py#L372-L379
13:20:25 stephenfin agreed
13:26:18 sean-k-mooney lyarwood: sorry you pinged me eairlier but i didnt have irc up on my monitor this morning. did you figure it out?
13:26:53 sean-k-mooney oh im not connected downstream either i must not have connect to the vpn
13:41:28 sean-k-mooney stephenfin: https://review.opendev.org/#/c/728037/6 is in merge conflict so ill adress your nit and ping you to re review once done.
13:42:07 sean-k-mooney if im rebasing i might as well fix them now
13:44:24 stephenfin sean-k-mooney: cool
13:45:19 stephenfin sean-k-mooney: another question for you. The NeutronFixture isn't returning a vif_type key in the response to 'POST /v2.0/ports/{port_id}/bindings'
13:45:48 stephenfin Is that neutron's responsibility? Feel free to tell me to RTFM (I don't have an SR-IOV deployment to hand to experiment :()
13:46:20 sean-k-mooney yes the vif type can technicaly change on a migration but the vif type is set by the ml2 driver when it binds the port
13:46:37 sean-k-mooney stephenfin: can you show me the line
13:47:00 stephenfin This piece you linked earlier https://github.com/openstack/nova/blob/d4c857dfcb1ccfa5410de55671e69c722bbc990e/nova/conductor/tasks/live_migrate.py#L433-L436
13:47:13 sean-k-mooney i ment the line in the fixture
13:47:22 sean-k-mooney i wanted to see what you have acess too
13:47:28 stephenfin Ohh
13:47:42 stephenfin Sec while I figure that out
13:47:55 sean-k-mooney you could copy it form the soruce vif
13:48:01 sean-k-mooney in the migrate vif objects
13:48:25 sean-k-mooney it can change but only if your migrating from like linux bridge hosts to ovs
13:48:47 sean-k-mooney for sriov it should not change although its techincially possible
13:48:52 stephenfin sean-k-mooney: https://github.com/openstack/nova/blob/master/nova/tests/fixtures.py#L1659-L1676
13:49:01 stephenfin That's what the fixture is doing. It's rather dumb
13:49:06 sean-k-mooney if you went from say a hardware offloaded ovs to sriov host
13:49:24 stephenfin Okay, I have the port_id so I can use the stored details
13:49:26 sean-k-mooney ya it does jus tthe minium it needed too
13:49:38 stephenfin with a big note saying that stub doesn't allow you to switch backends
13:49:47 stephenfin if that sounds reasonable
13:49:56 sean-k-mooney self._port_bindings[port_id][host]
13:50:22 sean-k-mooney so you you likely can just look it up assuming [host] also has another entry for the souce node
13:51:01 sean-k-mooney so loop over self._port_bindings[port_id] and fine the one where the key is not euqal to host
13:51:18 sean-k-mooney then grab the info from that
13:51:38 stephenfin Good call
13:53:22 sean-k-mooney that wont always work but it should work in the migration case
13:54:25 sean-k-mooney so you will need to guard it with an if and only do it if the vif_type is not in the binding data i guess
13:56:22 sean-k-mooney actully it might work because reasons.
13:56:40 sean-k-mooney https://github.com/openstack/nova/blob/master/nova/tests/fixtures.py#L1573 that is where the vif_type is currently coming form in the fixture
13:57:29 sean-k-mooney well i guess htere are other places too
13:57:43 sean-k-mooney like here https://github.com/openstack/nova/blob/master/nova/tests/fixtures.py#L1357
13:58:21 sean-k-mooney we build new ports form port 2 ^ https://github.com/openstack/nova/blob/master/nova/tests/fixtures.py#L1836-L1837
13:59:36 sean-k-mooney the current sriov_port does not have the vif_type set
13:59:39 sean-k-mooney https://github.com/openstack/nova/blob/master/nova/tests/fixtures.py#L1448-L1469
14:02:02 stephenfin turns out we don't currently set that self._port_bindings field for the first binding
14:02:06 stephenfin big TODOs from gibi
14:03:27 sean-k-mooney actully looking at the neutron code the VIF_TYPE for sriov depned on the vnic_type
14:03:28 sean-k-mooney https://github.com/openstack/neutron/blob/master/neutron/plugins/ml2/drivers/mech_sriov/mech_driver/mech_driver.py#L81-L85
14:03:51 luyao stephenfin: I split the vpmem enhencement patch to three and polish them with Alex's help, I'll appreciate that you review it again if you have time, thanks. https://review.opendev.org/#/c/714653/
14:04:14 stephenfin luyao: Thanks for the reminder. I'll try get to that this evening or tomorrow :)
14:04:34 luyao stephenfin: Thank you in advance. :)
14:04:44 sean-k-mooney stephenfin: so its "hostdev_physical" for PFs and "hw_veb" for everyting else
14:05:15 sean-k-mooney VIF_TYPE_MACVTAP = 'macvtap' is not used for sriov its for the macvtap backend
14:05:34 sean-k-mooney so you can ignore that
14:13:33 openstackgerrit sean mooney proposed openstack/os-vif master: update tox envs and support pdf docs https://review.opendev.org/728037
14:35:00 iurygregory hey nova folks =) in ironic we are trying to create specific flavors (according to the boot_option that is set on capabilities) and I'm facing some problems with No valid host since nova filters doesn't match https://zuul.opendev.org/t/openstack/build/65e4cb538b7149d48f0942e8639b9bb3/log/controller/logs/screen-n-sch.txt#864 any ideas on how I can solve this? =)
14:35:44 iurygregory I have the feeling I need to do something on tempest to make it work, https://review.opendev.org/741445 this is the patch I have
14:36:06 iurygregory and this one https://review.opendev.org/741886 tests the changes from tempest
14:39:13 stephenfin sean-k-mooney: that's correct XML for an SR-IOV VIF, right? http://paste.openstack.org/show/796916/
14:46:34 sean-k-mooney stephenfin: for vnic_type=direct yes that is the minimal xml although for a flat network
14:47:21 sean-k-mooney stephenfin: you can just create an instance of the config object and get it to render the xml if you want
14:48:56 stephenfin So how is this supposed to work? https://github.com/openstack/nova/blob/master/nova/virt/libvirt/migration.py#L378
14:49:21 stephenfin interface_dev is the lxml.etree representation of http://paste.openstack.org/show/796916/
14:50:10 stephenfin so '.find('address') should read '.find('source/address')' (or whatever the correct incantation is), no?
14:50:44 sean-k-mooney stephenfin: let me check the libvirt docs
14:51:34 sean-k-mooney <interface type='bridge'>
14:51:36 sean-k-mooney <source bridge='br1'/>
14:51:38 sean-k-mooney <target dev='vnet7'/>
14:51:40 sean-k-mooney <mac address="00:11:22:33:44:55"/>
14:51:42 sean-k-mooney </interface>
14:51:44 sean-k-mooney addrss is in the mac eleemnt for linux bridge too
14:53:31 sean-k-mooney oh that is proably looking up the device by pci adress?
14:53:40 stephenfin yeah, this is PCI address
14:53:49 sean-k-mooney the target pci adress?
14:54:00 sean-k-mooney something like this <address type='pci' domain='0' bus='0' slot='4' function='0' multifunction='on'/>
14:54:06 stephenfin yup
14:54:25 stephenfin The comment says "Save off the hw address and MTU presented to the guest since that can't change during live migration."
14:54:35 stephenfin but the place it's getting the hw address from seems wrong :-\
14:54:54 sean-k-mooney the hardware adress normaly means mac address
14:55:17 sean-k-mooney interface_nodes = xml_doc.findall('./devices/interface')
14:55:28 sean-k-mooney so ya that looking for an address element in the interface
14:55:39 sean-k-mooney but they could be saving the guest pci address
14:55:53 sean-k-mooney this is populated by libvirt
14:56:00 sean-k-mooney let me check a vm quickly
14:56:13 stephenfin ah, so there are multiple address. Okay, that makes sense.
14:56:19 stephenfin *address elements
14:56:35 sean-k-mooney yes there is a top level one for the target adress to present the device in the guest
14:56:47 sean-k-mooney and then a sub elemen inside the source element which is the host address
14:57:02 stephenfin and parsing code for it here https://github.com/openstack/nova/blob/master/nova/virt/libvirt/config.py#L1891-L1893
14:57:08 stephenfin so bad mocks again
14:57:39 sean-k-mooney http://paste.openstack.org/show/796917/
14:57:45 sean-k-mooney that is what an ovs interface looks like
14:58:05 sean-k-mooney if needed i can stack my sriov host but it will looke more or less the same
14:58:36 sean-k-mooney its getting the element as line 11
14:59:30 stephenfin sean-k-mooney++ ta
14:59:36 stephenfin definitely bad mocks so

Earlier   Later