<div dir="ltr"><font color="#000000"><span style="font-family:arial,sans-serif;font-size:13px">Following will be the methods:</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">(i) Querying qemu-guest-agent</span><br style="font-family:arial,sans-serif;font-size:13px">
<span style="font-family:arial,sans-serif;font-size:13px">(ii) Getting info from dnsmasq.leases file</span><br style="font-family:arial,sans-serif;font-size:13px"><span style="font-family:arial,sans-serif;font-size:13px">(iii) Using the nwfilter to snoop the traffic</span><br style="font-family:arial,sans-serif;font-size:13px">
<br></font><div><font color="#000000">Valid values:</font></div><div><font color="#000000"><span style="font-family:arial,sans-serif;font-size:13px"> domifaddr <domain-name> qemu-ga</span><br></font></div><div><font color="#000000"><span style="font-family:arial,sans-serif;font-size:13px"> domifaddr <domain-name> dnsmasq</span><span style="font-family:arial,sans-serif;font-size:13px"><br>
</span></font></div><div><font color="#000000"><span style="font-family:arial,sans-serif;font-size:13px"> domifaddr <domain-name> snoop</span><span style="font-family:arial,sans-serif;font-size:13px"><br></span></font></div>
<div><span style="font-family:arial,sans-serif;font-size:13px"><font color="#000000"><br></font></span></div><div><span style="font-family:arial,sans-serif;font-size:13px"><font color="#000000">Suggestions are welcome for the 'name' of values of the option 'method'.</font></span></div>
<div><span style="font-family:arial,sans-serif;font-size:13px"><font color="#000000"><br></font></span></div><div><font face="arial, sans-serif" color="#000000">The main idea behind using virTypedParameter: It gives us extensibility - as long as we tell the user how many interfaces and how many parameters per interface, then we can add more parameters per interface.</font></div>
<div><font face="arial, sans-serif" color="#000000"><br></font></div><div><font face="arial, sans-serif" color="#000000">If we use structs, then extensibility is lost.</font></div><div><font face="arial, sans-serif" color="#000000"><br>
</font></div><div><font face="arial, sans-serif" color="#000000">If we use XML, then first JSON output is parsed into XML, then XML is parsed. More effort is involved.</font></div><div><font face="arial, sans-serif" color="#000000"><br>
</font></div><div><font color="#000000" face="arial, sans-serif">As I think the previous patches by Michal were not pushed upstream due to lack of extensibility.</font></div><div><font color="#500050" face="arial, sans-serif"><br>
</font></div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Jul 2, 2013 at 4:03 PM, Daniel P. Berrange <span dir="ltr"><<a href="mailto:berrange@redhat.com" target="_blank">berrange@redhat.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On Fri, Jun 28, 2013 at 03:56:10PM +0530, Nehal J. Wani wrote:<br>
> Hello, fellow developers!<br>
>       I am a GSoC candidate this year working for <a href="http://libvirt.org" target="_blank">libvirt.org</a>. My<br>
> project is "Introduce API to query IP addresses for given domain".<br>
> The discussion regarding this feature had started here:<br>
> <a href="http://www.mail-archive.com/libvir-list@redhat.com/msg51857.html" target="_blank">http://www.mail-archive.com/libvir-list@redhat.com/msg51857.html</a> and<br>
> then Michal had sent a patch too (refer:<br>
> <a href="http://www.mail-archive.com/libvir-list@redhat.com/msg57141.html" target="_blank">http://www.mail-archive.com/libvir-list@redhat.com/msg57141.html</a>). But<br>
> it was not pushed upstream due to lack of extensibility.<br>
><br>
> So far I've come up with an API and I want to get your opinion before<br>
> I start writing the rest so I don't follow the wrong direction.<br>
><br>
> Following are the valid commands:<br>
><br>
> domifaddr <domain-name><br>
> domifaddr <domain-name> <interface-name><br>
> domifaddr <domain-name> <interface-name> <method><br>
> domifaddr <domain-name> <method><br>
<br>
</div>What are valid values for '<method>' here ?<br>
<div><div class="h5"><br>
><br>
> methods:<br>
> (i) Querying qemu-guest-agent<br>
> (ii) Getting info from dnsmasq.leases file<br>
> (iii) Using the nwfilter to snoop the traffic<br>
><br>
> If no method is mentioned, qemu-guest-agent will be used.<br>
><br>
> Previous attempts by Michal had used structs and xml. Structs bring in<br>
> restrictions and xml has to be parsed. Hence I am not planning to<br>
> continue with either of these.<br>
><br>
> As a start, I would like to know your comments about my API which<br>
> queries the qemu-guest-agent and returns the results in<br>
> virTypedParameter **params.<br>
><br>
> Format(JSON) in which the qemu guest agent returns info:<br>
><br>
> [{"name":"lo",<br>
>       "ip-addresses":<br>
>               [{"ip-address-type":"ipv4","ip-address":"127.0.0.1","prefix":8},<br>
>               {"ip-address-type":"ipv6","ip-address":"::1","prefix":128}],<br>
>         "hardware-address":"00:00:00:00:00:00"},<br>
> {"name":"eth0",<br>
>       "ip-addresses":<br>
>               [{"ip-address-type":"ipv4","ip-address":"192.168.122.42","prefix":24},<br>
>               {"ip-address-type":"ipv6","ip-address":"fe80::5054:ff:fe09:d240","prefix":64}],<br>
>         "hardware-address":"52:54:00:09:d2:40"}]<br>
><br>
> //Possible 1-D Structure (A little hassle to maintain)<br>
><br>
> params[0] = {"iface-count",int,2}<br>
> params[1] = {"iface-name",string,"lo"}<br>
> params[2] = {"iface-hwaddr",string,"00:00:00:00:00:00"}<br>
> params[3] = {"iface-addr-count",int,2}<br>
> params[4] = {"iface-addr-type",string,"ipv4"}<br>
> params[5] = {"iface-addr",string,"127.0.0.1"}<br>
> params[6] = {"iface-addr-prefix",int,8}<br>
> params[7] = {"iface-addr-type",string,"ipv6"}<br>
> params[8] = {"iface-addr",string,"::1"}<br>
> params[9] = {"iface-addr-prefix",int,128}<br>
> ....<br>
> ....<br>
> ....<br>
><br>
> //2D Structure: (Not very hasslefree, but easier to maintain as one<br>
> interface per row)<br>
><br>
> params[0] = {"iface-name",string,"lo"}{"iface-hwaddr",string,"00:00:00:00:00:00"}{"iface-addr-type",string,"ipv4"}{"iface-addr",string,"127.0.0.1"}{"iface-addr-prefix",int,8}{"iface-addr-type",string,"ipv6"}{"iface-addr",string,"::1"}{"iface-addr-prefix",int,128}<br>

> params[1] = {"iface-name",string,"eth0"}{"iface-hwaddr",string,"52:54:00:09:d2:40"}{"iface-addr-type",string,"ipv4"}{"iface-addr",string,"192.168.122.42"}{"iface-addr-prefix",int,8}{"iface-addr-type",string,"ipv6"}{"iface-addr",string,"fe80::5054:ff:fe09:d240"}{"iface-addr-prefix",int,64}<br>

<br>
</div></div>IMHO both of these approaches to encoding the data in virTypedParameter<br>
are seriously unpleasant for an app to deal with. Now this is a true for<br>
virTypedParameter in general, but I think that the need to deal with a<br>
list of objects here, each containing a list of typed parameters makes<br>
it even worse than normal. I wouldn't really like this as an application<br>
developer.<br>
<br>
Looking at this possible approach of virTypedParameter, I'm think I am<br>
preferring either the XML or fixed struct approach to this API as was<br>
proposed in the past, with a bias towards a fixed struct for simplicity<br>
of use by app developers.<br>
<br>
Regards,<br>
Danuiel<br>
<span class="HOEnZb"><font color="#888888">--<br>
|: <a href="http://berrange.com" target="_blank">http://berrange.com</a>      -o-    <a href="http://www.flickr.com/photos/dberrange/" target="_blank">http://www.flickr.com/photos/dberrange/</a> :|<br>
|: <a href="http://libvirt.org" target="_blank">http://libvirt.org</a>              -o-             <a href="http://virt-manager.org" target="_blank">http://virt-manager.org</a> :|<br>
|: <a href="http://autobuild.org" target="_blank">http://autobuild.org</a>       -o-         <a href="http://search.cpan.org/~danberr/" target="_blank">http://search.cpan.org/~danberr/</a> :|<br>
|: <a href="http://entangle-photo.org" target="_blank">http://entangle-photo.org</a>       -o-       <a href="http://live.gnome.org/gtk-vnc" target="_blank">http://live.gnome.org/gtk-vnc</a> :|<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr">Nehal J. Wani<br>
UG2, BTech CS+MS(CL)<br>
IIIT-Hyderabad<div><a href="http://commanlinewani.blogspot.com" target="_blank">http://commanlinewani.blogspot.com</a></div></div>
</div>