[libvirt] problem trying to use net-update

Gene Czarcinski gene at czarc.net
Mon Oct 29 18:24:54 UTC 2012


On 10/24/2012 01:31 PM, Laine Stump wrote:
> Well, you could indirectly trigger it by adding (and then removing) a
> dhcp <range> element with virsh net-update.
>
>> >
>> >Is there some way (some command) that will cause dnsmasq to be
>> >restarted (possibly with new parameters as it re-does its
>> >configuration).  If this was done, then little, except some cached
>> >names, would be lost).  If there is not, maybe there should be.
>> >However, there are likely limits such as not changing the gateway
>> >addresses on the interface.
> I recently made a patch to check for a running dnsmasq anytime libvirt
> is restarted. If it's not running, it will be restarted. If it is
> running, a SIGHUP will be sent.
>
> Aside from that, the (newly created) accepted way to change a network's
> config while the network is up is to use the virNetworkUpdate API
> (available via virsh net-update). It permits you to add/delete/modify
> certain parts of the network config and have those changes take effect
> immediately if desired. the bridge_driver backend of virNetworkUpdate
> decides when it is necessary to either SIGHUP or restart dnsmasq
> according to what parts of the network definition have changed.
>
> A "live" change of the entire network definition (i.e. with
> virNetworkDefine() isn't supported, and won't be - anything that you
> want to be able to change while the network is up should be added to the
> "sections" modifiable by virNetworkUpdate. This will permit us to easily
> figure out what re-initialization is needed for a particular change
> without needing to just redo everything (for example, if a dhcp static
> host is added, we just need to SIGHUP dnsmasq, but if a dynamic range is
> added/deleted, we need to restart dnsmasq. If an IP address is
> added/removed from the bridge, we should be able to write code to simply
> redo the IP addresses on the existing bridge, rather than tear it down
> and build a new bridge (although that one isn't implemented yet).
I finally got around to testing this .... how is this suppose to work?  
Is this a "work in progress?"

I did not try this first but it is what seemed to work ...

I edited a network definition so that it space for a dhcp-range 
addition.  Then, with the network not started, i used net-update to add 
a ip-dhcp-range and it worked (the file was updated).  Edit the xml 
again to remove the added range, and start the network.  Do the same 
thing again with net-update ... the file was updated and dnsmasq was 
restarted.

What I started out to do and what did not work was to add a dns-host 
definition to a network.  This should not require a restart but result a 
[Refresh] SIGHUP of the dnsmasq process.

1. Using net-edit to add the dns-host definition [resulted in 
networkCreate() being executed] and then issuing SIGHUP to the process 
and the addnhosts file was read and things worked as I wanted them to.

2.  Trying to get the same thing accomplished using net-update 
[dns-host] was a failure.  The only thing that happened was to get the 
following error message: "this function is not supported by the 
connection driver: can't update 'dns host' section of network 
'default'"  where I tried a bunch of different networks.  Some of them 
already had a dns-host definition and some did not.

Should I expect this to work?  Is this a bug?

Gene




More information about the libvir-list mailing list