[libvirt-users] Problem with net-define using Open vSwitch bridge

Will Dennis wdennis at nec-labs.com
Tue Apr 9 17:52:53 UTC 2013


(Replies inlined as requested...)

> libvirtd is running as root, so that should be plenty of permissions.
I assume you can run /usr/local/bin/ovs-vsctl from a root shell,
correct?

Yes.

> Does your system have AppArmor or SELinux installed? Anything in their
logs that could indicate the reason for the denial? Anybody else have an
idea?

Have AppArmor, no SELinux. I did a status on the AppArmor, and I see
that libvirtd was in 'enforce' mode:

# apparmor_status
apparmor module is loaded.
6 profiles are loaded.
6 profiles are in enforce mode.
   /sbin/dhclient
   /usr/lib/NetworkManager/nm-dhcp-client.action
   /usr/lib/connman/scripts/dhclient-script
   /usr/lib/libvirt/virt-aa-helper
   /usr/sbin/libvirtd
   /usr/sbin/tcpdump
0 profiles are in complain mode.
1 processes have profiles defined.
1 processes are in enforce mode.
   /usr/sbin/libvirtd (6941)
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.

So I changed the mode across the board to 'complain':

# aa-complain /etc/apparmor.d/*
Setting /etc/apparmor.d/sbin.dhclient to complain mode.
Setting /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper to complain mode.
Setting /etc/apparmor.d/usr.sbin.libvirtd to complain mode.
Setting /etc/apparmor.d/usr.sbin.rsyslogd to complain mode.
Setting /etc/apparmor.d/usr.sbin.tcpdump to complain mode.

# apparmor_status
apparmor module is loaded.
7 profiles are loaded.
0 profiles are in enforce mode.
7 profiles are in complain mode.
   /sbin/dhclient
   /usr/lib/NetworkManager/nm-dhcp-client.action
   /usr/lib/connman/scripts/dhclient-script
   /usr/lib/libvirt/virt-aa-helper
   /usr/sbin/libvirtd
   /usr/sbin/rsyslogd
   /usr/sbin/tcpdump
2 processes have profiles defined.
0 processes are in enforce mode.
1 processes are in complain mode.
   /usr/sbin/libvirtd (6941)
1 processes are unconfined but have a profile defined.
   /usr/sbin/rsyslogd (815)

And then virt-manager could indeed attach the VM nic to the defined
network! (used "10-net" on this one, which corresponds to the
"vl10-ovsbr0" fake bridge):

# /usr/local/bin/ovs-vsctl show
3e0d861b-efb7-46b1-af1b-4a76cd833558
    Bridge "ovsbr0"
        Controller "tcp:127.0.0.1:6633"
            is_connected: true
        Port "ovsbr0"
            Interface "ovsbr0"
                type: internal
        Port "vnet0"	<<<<<<<<<<<
            tag: 10		<<<<<<<<<<<
            Interface "vnet0"
        Port "vl10-ovsbr0"
            tag: 10
            Interface "vl10-ovsbr0"
                type: internal
        Port "vl20-ovsbr0"
            tag: 20
            Interface "vl20-ovsbr0"
                type: internal

Yay.

>> The reason I want to use OVS "fake bridges" is to keep it simple for 
>> the team that will be using this virtualization server. If they just 
>> select the correct libvirt network (which is tied to the OVS "fake 
>> bridge") then the ports will be automatically tagged with the correct

>> VLAN. (I think of OVS fake bridges as something akin to VMware "Port 
>> Groups" on an OVS level.)  I have defined libvirt networks as
detailed 
>> in Kyle's blogpost you referenced, but there does not seem to be a
way 
>> in the virt-manager UI to select the desired portgroup as defined in 
>> the network XML. (Yes, you can edit the VM's XML config and hack the 
>> portgroup into there, but that's not what I want these users to have 
>> to do...)
>
> Sigh.
>
> Yes, setting up a portgroup in the network definition for each vlan,
then telling the users to select the proper portgroup would be the right
way to do what you want, 
> but unfortunately there has been little active development to support
new libvirt features in virt-manager for "awhile" now, and the addition
of portgroups to libvirt 
> has happened in the meantime.
>
> If you're familiar with python and would like to add support for that,
I'm sure virt-manager would *gladly* accept a patch. Otherwise,
hopefully there will be some new 
> blood in virt-manager, and they'll think this is a good request to
take on.

Sadly I have (very) little python-fu, so no doubt am unqualified to try
to patch virt-manager at this point... (Hopefully someday when I have
more time to dive into Python!)
It would be a great thing to add to the virt-manager UI, IMHO... Is
there a separate list for virt-manager (or is virt-manager, virt-viewer,
etc. devel discussed here?)

Thanks again for your guidance, Laine - community rocks!

Best,
Will




More information about the libvirt-users mailing list