The two following patches are alternate approaches that each have a slightly different commandline syntax. In V1 of the net-update patch, I tried having a single string option that could contain either an xml string, or the name of a file containing an xml string, then two options that would be used to make the decision of file vs. xml: net-update netname add ip-dhcp-host --xml "<host mac='xx..' .../>" net-update netname add ip-dhcp-host /tmp/myfile.xml (or 'net-update netname add ip-dhcp-host --file /tmp/myfile.xml') (the trick here is that "--xml" is a boolean option, *not* a string option that gets set to "<host...", and the string itself goes into a generic, usually unnamed option called xmldata. Likewise, the filename is being put into xmldata, and if the "--xml" boolean option isn't given on the commandline, it's assumed that it is a file. The ability to specifically say it is a file was just added for completeness, but really is semantically useless.) The problem with this is that someone looking at the syntax in the help might come up with a confusing commandline like this: net-update netname add --xmldata /tmp/myfile.xml --file \ --section ip-dhcp-host --live or net-update netname add --xmldata "<host mac='x:x...'/>" --xml \ --section ip-dhcp-host --live or even worse, they would specify "--xmldata", but leave out --xml, and virsh would attempt to interpret the text as a filename. On the other hand, if I named the string option "file" and the boolean option --xmldata, that would make things confusing even in the case that the command was *correct*: net-update netname add --file "<host mac='x:x...'/>" --xmldata \ --section ip-dhcp-host --live Of course, in any of those cases, if the user followed the "normal" command specification, it would look just fine, but it seems like there is a lot of room to cause confusion. So, for V2, I'm trying two different approaches: PATCHv2 1/2: Have a single required "xml" arg, and "auto-detect" whether it is xml text or a filename by looking at the first character - if the first character is "<", interpret it as an xml element. If not, interpret it as a filename. This leads to the simplest commandlines, since you *never* need to specify "--file" or "--xml" (unless you really want to): net-update netname add ip-dhcp-host "<host mac='xx..' .../>" net-update netname add ip-dhcp-host /tmp/myfile.xml (The ambiguous case of a filename starting with "<" can be avoided by specifying the filename as "./<....") There may be some circumstance I'm not aware of where a fully formed XML element doesn't necessarily start with a "<" though, or someone may be 100% against auto-disambiguating the string type, so I'm also sending a different version: PATCHv2 2/2: Have two separate optional string args, "file" and "xml". Manually check in the code that only one of them has been specified. Since both are optional, you must *always* provide the option name on the commandline ("--file" or "--xml"). In this case, the commandlines look like this: net-update netname add ip-dhcp-host --xml "<host mac='xx..' .../>" net-update netname add ip-dhcp-host --file /tmp/myfile.xml I'm (as usual) completely undecided about which of these versions to go with (including the first, which should still be considered, although I don't really like the possibility of creating confusing commandlines that it creates), so all votes/opinions/etc are welcome! -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list