[libvirt] [PATCH v2 1/4] virInterface: Expose link state & speed
Daniel P. Berrange
berrange at redhat.com
Wed Jun 11 10:11:24 UTC 2014
On Wed, Jun 11, 2014 at 01:04:02PM +0300, Laine Stump wrote:
> On 06/11/2014 12:28 PM, Daniel P. Berrange wrote:
> > On Wed, Jun 11, 2014 at 11:19:14AM +0200, Michal Privoznik wrote:
> >> On 11.06.2014 03:13, John Ferlan wrote:
> >>>
> >>> On 06/05/2014 11:39 AM, Michal Privoznik wrote:
> >>>> Currently it is not possible to determine the speed of an interface
> >>>> and whether a link is actually detected from the API. Orchestrating
> >>>> platforms want to be able to determine when the link has failed and
> >>>> where multiple speeds may be available which one the interface is
> >>>> actually connected at. This commit introduces an extension to our
> >>>> interface XML (without implementation to interface driver backends):
> >>>>
> >>>> <interface type='ethernet' name='eth0'>
> >>>> <start mode='none'/>
> >>>> <mac address='aa:bb:cc:dd:ee:ff'/>
> >>>> <link speed='1000' state='up'/>
> >>>> <mtu size='1492'/>
> >>>> ...
> >>>> </interface>
> >>>>
> >>>> Where @speed is negotiated link speed in Mbits per second, and state
> >>>> is the current NIC state (can be one of the following: "unknown",
> >>>> "notpresent", "down", "lowerlayerdown","testing", "dormant", "up").
> >>>>
> >>>> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> >>>> ---
> >>>> docs/schemas/basictypes.rng | 25 ++++++++++
> >>>> docs/schemas/interface.rng | 1 +
> >>>> src/conf/device_conf.c | 62 +++++++++++++++++++++++++
> >>>> src/conf/device_conf.h | 27 ++++++++++-
> >>>> src/conf/interface_conf.c | 11 ++++-
> >>>> src/conf/interface_conf.h | 2 +
> >>>> src/libvirt_private.syms | 4 ++
> >>>> tests/interfaceschemadata/bridge-no-address.xml | 1 +
> >>>> tests/interfaceschemadata/bridge.xml | 1 +
> >>>> tests/interfaceschemadata/ethernet-dhcp.xml | 1 +
> >>>> 10 files changed, 133 insertions(+), 2 deletions(-)
> >>>>
> >>> Already been ACK'd, but I will point out the interface.html.in hasn't
> >>> been updated - later you update the nodedev.html.in file - so probably
> >>> reasonable to do so again. While at it the consistency of using "Mbits"
> >>> vs. "Mb" in the comment in device_conf.h
> >> The first issue has simple explanation - there's no interface.html.in yet.
> >> Yes we lack the virInterface XML documentation. The second one I'm fixing
> >> prior to push.
> >>
> >>> Just so I understand - the reality is regardless of what the XML is on
> >>> input - the code will still check/get/set the link state/speed - so this
> >>> is mostly an output thing.
> >> Yes. So far this is only for getting the link speed & state. Which brings up
> >> an interesting question. With recent issue with QoS on bridgeless networks
> >> on mind - should we make virInterface XML parsing actually reject any
> >> <link/> since it's output element only? One could argue that we usually
> >> ignore unknown elements, but then <link/> is not unknown element anymore.
> >> One way or another, it can be done in a separate patch.
> > Apps must always be able to round-trip XML. ie they should be able to
> > do DumpXML and then feed that back into DefineXML and have no functional
> > change. Thus we must not reject <link/> with an error when parsing, we
> > must ignore it or honour it as appropriate for the desired semantics.
>
> I agree that <link> should just be ignored when defining a domain. But
> as a general response to that last paragraph, there are cases where
> doing a virDomainGetXMLDesc() on an active domain (without the INACTIVE
> flag), followed by a virDomainDefine using that output, will *not*
> produce the same domain. The example at the front of my mind is what
> happens with an <interface type='network'>, as related in my RFC email
> yesterday:
>
> https://www.redhat.com/archives/libvir-list/2014-June/msg00416.html
>
> but a more general problem is that if you run virDomainGetXMLDesc() with
> no INACTIVE flag, you will miss any previous edits to the domain
> definition since the last time it was started. This had actually been
> the cause of a long-running bug with "virsh net-edit" as a matter of fact.
>
> I had thought that what was required was the ability to roundtrip the
> *inactive* xml back into a define, not the status XML. If it's really a
> requirement that we be able to feed back the output of the status XML to
> get the exact same domain, then I think I've made a big mistake :-/
Yes, you're right actually. I should have clarified I meant inactive
XML.
Regards,
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the libvir-list
mailing list