OVS plugin exception when retrieving vif ports
Bug #859864 reported by
Brad Hall
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
neutron |
Fix Released
|
High
|
Brad Hall | ||
quantum (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Bug Description
(From Salvatore)
However, I noticed something that could be a bug in the OVS plugin.
ovs_quantum_
p = xapi_get_port(name)
xapi_get_ports too is a method of the OVSBridge class. The line should therefore be:
p = self.xapi_
The effect of this apparently is that the OVS plugin agent on the hypervisor crashes, failing to set up VLAN tags on the integration bridge.
Changed in quantum: | |
status: | Fix Committed → Fix Released |
Changed in quantum (Ubuntu): | |
status: | New → Fix Released |
To post a comment you must log in.
(From email thread)
On Mon, Sep 26, 2011 at 10:04 AM, Dan Wendlandt <email address hidden> wrote:
On Mon, Sep 26, 2011 at 9:47 AM, Salvatore Orlando <email address hidden> wrote:
> I’m letting quantum manager plug vifs, and I think I might have spotted the issue.
> Xapi_get_port retrieves xs-vm-uuid from the OVS DB ‘interface’ record, external-ids column, then retrieves the name-label
> for that particular vm, and sets the external id ‘iface-id’ in OVS DB to the name-label for the VM.
yeah, this is the out-of-date behavior that I incorrectly thought we had removed a while back.
> I think iface-id should contain the Quantum interface identifier (at least this is what I gather from daemon_loop). To this aim Nicira- iface-id from the corresponding VIF record.
> iface-Id should be set to the value of Nicira-iface-id which is stored in other-config for the VIF record in xenserver. Therefore
> xapi_get_port should use xs-vif-uuid in external_ids and retrieve other-config:
> Would that work in your opinion?
Actually, OVS takes care of syncing the other_config: nicira- iface-id with the 'iface-id' attribute in the OVSDB, so as I mentioned in my previous mail, I believe the correct behavior is just to get rid of the xenserver-specific branch of the if statement, letting the KVM and XenServer code-path be identical. This is what I thought I did a long while back, but apparently didn't :)
Instead it should just be:
def get_vif_ ports(self) : port_name_ list()
external_ ids = self.db_ get_map( "Interface" , name, "external_ids")
ofport = self.db_ get_val( "Interface" , name, "ofport") ids["iface- id"],
external_ ids["attached- mac"], self)
edge_ ports.append( p)
edge_ports = []
port_names = self.get_
for name in port_names:
if "iface-id" in external_ids and "attached-mac" in external_ids:
p = VifPort(name, ofport, external_
return edge_ports
Since this is the only place that calls xapi_get_ports, that entire function can be removed as well.
Dan