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

Khramov Anton anton at endocode.com
Wed Jul 13 11:06:05 UTC 2016


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;
-- 
1.9.1




More information about the libvir-list mailing list