[libvirt] [PATCH] network: Added hook for network modification event

Cole Robinson crobinso at redhat.com
Mon Jul 18 21:46:54 UTC 2016


On 07/13/2016 07:06 AM, Khramov Anton wrote:
> From: Anton Khramov <anton at endocode.com>
> 
> Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1181539
> ---
>  docs/hooks.html.in          | 2 ++
>  src/network/bridge_driver.c | 6 ++++++
>  src/util/virhook.c          | 3 ++-
>  src/util/virhook.h          | 1 +
>  4 files changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/docs/hooks.html.in b/docs/hooks.html.in
> index 1aae00c..d4f4ac3 100644
> --- a/docs/hooks.html.in
> +++ b/docs/hooks.html.in
> @@ -250,6 +250,8 @@
>            <pre>/etc/libvirt/hooks/network network_name plugged begin -</pre>
>          Please note, that in this case, the script is passed both network and
>          domain XMLs on its stdin.</li>
> +      <li>When network is updated, the hook script is called as:<br/>
> +          <pre>/etc/libvirt/hooks/network network_name updated begin -</pre></li>
>        <li>When the domain from previous case is shutting down, the interface
>          is unplugged. This leads to another script invocation:<br/>
>            <pre>/etc/libvirt/hooks/network network_name unplugged begin -</pre>
> diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
> index 0fd2095..61ab17b 100644
> --- a/src/network/bridge_driver.c
> +++ b/src/network/bridge_driver.c
> @@ -3460,6 +3460,12 @@ networkUpdate(virNetworkPtr net,
>              goto cleanup;
>          }
>      }
> +
> +    /* call the 'updated' network hook script */
> +    if (networkRunHook(network, NULL, NULL, VIR_HOOK_NETWORK_OP_UPDATED,
> +                       VIR_HOOK_SUBOP_BEGIN) < 0)
> +        goto cleanup;
> +
>      ret = 0;
>   cleanup:
>      virNetworkObjEndAPI(&network);
> diff --git a/src/util/virhook.c b/src/util/virhook.c
> index d37d6da..a8422a2 100644
> --- a/src/util/virhook.c
> +++ b/src/util/virhook.c
> @@ -93,7 +93,8 @@ VIR_ENUM_IMPL(virHookNetworkOp, VIR_HOOK_NETWORK_OP_LAST,
>                "started",
>                "stopped",
>                "plugged",
> -              "unplugged")
> +              "unplugged",
> +              "updated")
>  
>  static int virHooksFound = -1;
>  
> diff --git a/src/util/virhook.h b/src/util/virhook.h
> index 550ef84..4015426 100644
> --- a/src/util/virhook.h
> +++ b/src/util/virhook.h
> @@ -82,6 +82,7 @@ typedef enum {
>      VIR_HOOK_NETWORK_OP_STOPPED,        /* network has stopped */
>      VIR_HOOK_NETWORK_OP_IFACE_PLUGGED,  /* an interface has been plugged into the network */
>      VIR_HOOK_NETWORK_OP_IFACE_UNPLUGGED,    /* an interface was unplugged from the network */
> +    VIR_HOOK_NETWORK_OP_UPDATED,        /* network has been updated */
>  
>      VIR_HOOK_NETWORK_OP_LAST,
>  } virHookNetworkOpType;
> 

ACK this looks good to me. CCing laine to see if he wants to ACK when he's
back online, if not I'll push it in a week.

Thanks,
Cole




More information about the libvir-list mailing list