[netcf-devel] [libvirt] [RFC] Reporting host interface status/statistics via netcf/libvirt, and listing active vs. inactive interfaces
Daniel P. Berrange
berrange at redhat.com
Fri Jun 19 17:16:20 UTC 2009
On Fri, Jun 19, 2009 at 07:05:23PM +0200, Daniel Veillard wrote:
> On Fri, Jun 19, 2009 at 05:39:57PM +0100, Daniel P. Berrange wrote:
> > On Thu, Jun 18, 2009 at 05:53:59PM +0000, David Lutterkort wrote:
> >
> > So the possible configs would appear as XML like
> >
> > 1. Physical NIC
> >
> > <interface type='ethernet'>
> > <name>eth0</name>
> > </interface>
> >
> > 2. Physical NIC + bridge
> >
> > <interface type="bridge">
> > <name>br0</name>
> > <bridge>
> > <interface type='ethernet'>
> > <name>eth0</name>
> > </interface>
> > </bridge>
> > </interface>
> >
> > 3. Physical NIC + bond
> >
> > <interface type="bond">
> > <name>bond0</name>
> > <bond>
> > <interface type='ethernet'>
> > <name>eth0</name>
> > </interface>
> > <interface type='ethernet'>
> > <name>eth1</name>
> > </interface>
> > </bond>
> > </interface>
> >
> > 4. Physical NIC + bond + bridge
> >
> > <interface type="bridge">
> > <name>br0</name>
> > <bridge>
> > <interface type="bond">
> > <name>bond0</name>
> > <bond>
> > <interface type='ethernet'>
> > <name>eth0</name>
> > </interface>
> > <interface type='ethernet'>
> > <name>eth1</name>
> > </interface>
> > </bond>
> > </interface>
> > </bridge>
> > </interface>
> >
> > 5. Physical NIC + 2 * vlan
> >
> > <interface type="ethernet">
> > <name>eth0</name>
> > </interface>
> >
> > <interface type="vlan">
> > <name>vlan42</name>
> > <vlan tag='42'>
> > <interface type='ethernet'>
> > <name>eth0</name>
> > </inteface>
> > </vlan>
> > </inteface>
> >
> > <interface type="vlan">
> > <name>vlan48</name>
> > <vlan tag='48'>
> > <interface type='ethernet'>
> > <name>eth0</name>
> > </inteface>
> > </vlan>
> > </inteface>
> >
> >
> > 6. Physical NIC + 2 * vlan + bridge
> >
> > <interface type="ethernet">
> > <name>eth0</name>
> > </interface>
> >
> > <interface type='bridge'>
> > <name>br42</name>
> > <bridge>
> > <interface type="vlan">
> > <name>vlan42</name>
> > <vlan tag='42'>
> > <interface type='ethernet'>
> > <name>eth0</name>
> > </inteface>
> > </vlan>
> > </inteface>
> > </bridge>
> > </interface>
> >
> > <interface type='bridge'>
> > <name>br42</name>
> > <bridge>
> > <interface type="vlan">
> > <name>vlan42</name>
> > <vlan tag='42'>
> > <interface type='ethernet'>
> > <name>eth0</name>
> > </inteface>
> > </vlan>
> > </inteface>
> > </bridge>
> > </interface>
> >
> >
> > 7. Physical NIC + bond + 2 * vlan
> >
> > <interface type="bond">
> > <name>bond0</name>
> > <bond>
> > <interface type='ethernet'>
> > <name>eth0</name>
> > </interface>
> > <interface type='ethernet'>
> > <name>eth1</name>
> > </interface>
> > </bond>
> > </interface>
> >
> > <interface type="vlan">
> > <name>vlan42</name>
> > <vlan tag='42'>
> > <interface type='bond'>
> > <name>bond0</name>
> > </inteface>
> > </vlan>
> > </inteface>
> >
> > <interface type="vlan">
> > <name>vlan48</name>
> > <vlan tag='48'>
> > <interface type='bond'>
> > <name>bond0</name>
> > </inteface>
> > </vlan>
> > </inteface>
> >
> > 8. Physical NIC + bond + 2 * vlan + bridge
> >
> >
> > <interface type="bond">
> > <name>bond0</name>
> > <bond>
> > <interface type='ethernet'>
> > <name>eth0</name>
> > </interface>
> > <interface type='ethernet'>
> > <name>eth1</name>
> > </interface>
> > </bond>
> > </interface>
> >
> > <interface type='bridge'>
> > <name>br42</name>
> > <bridge>
> > <interface type="vlan">
> > <name>vlan42</name>
> > <vlan tag='42'>
> > <interface type='bond'>
> > <name>bond0</name>
> > </inteface>
> > </vlan>
> > </inteface>
> > </bridge>
> > </interface>
> >
> > <interface type='bridge'>
> > <name>br42</name>
> > <bridge>
> > <interface type="vlan">
> > <name>vlan42</name>
> > <vlan tag='42'>
> > <interface type='bond'>
> > <name>bond0</name>
> > </inteface>
> > </vlan>
> > </inteface>
> > </bridge>
> > </interface>
> >
> >
> >
> > Of course, you could actually have a hybrid of 7/8, where some vlans
> > where bridged, and others direct endpoints. That's trivally handled
> > there of course.
>
> Hum, since an XML can only have one single root, I suggest to put a
> wrapper around multiple definitions and if you call it <interfaces>
> that looks a bit like my own proposal but more recursive.
Sorry, I didn't explain this bit enough. In the last 4 cases where
there are multiple <inteface> end-points, each of those example docs
would correspond to a separate virInterfacePtr object. so there is
no need for a <intefaces> wrapper around them all. eg in
example 8, you would do
import libvirt
bondxml="<interface type='bond'>
<name>bond0</name>
<bond>
<interface type='ethernet'>
<name>eth0</name>
</interface>
<interface type='ethernet'>
<name>eth1</name>
</interface>
</bond>
</interface>"
vlan1xml="<interface type='bridge'>
<name>br42</name>
<bridge>
<interface type='vlan'>
<name>vlan42</name>
<vlan tag='42'>
<interface type='bond'>
<name>bond0</name>
</inteface>
</vlan>
</inteface>
</bridge>
</interface>"
vlan2xml="<interface type='bridge'>
<name>br42</name>
<bridge>
<interface type='vlan'>
<name>vlan42</name>
<vlan tag='42'>
<interface type='bond'>
<name>bond0</name>
</inteface>
</vlan>
</inteface>
</bridge>
</interface>"
conn = libvirt.open("xen:///")
bond = conn.defineInterface(bondxml)
vlan1 = conn.defineInterface(vlan1xml)
vlan2 = conn.defineInterface(vlan2xml)
There is no need to define all 3 at once, since it is fine for 'bond'
to exist at any time before vlan1/vlan2 come along. In fact it is critical,
since you will likely add/remove vlans on the fly at any time
Regards,
Daniel
--
|: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
More information about the libvir-list
mailing list