Re: [PATCH v2 2/6] ch: pass --event-monitor option to cloud-hypervisor

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 10/1/2024 7:20 AM, Purna Pavan Chandra Aekkaladevi wrote:
The `--event-monitor` option in cloud-hypervisor outputs events to a
specified file. This file can then be used to monitor VM lifecycle,
other vmm events and trigger appropriate actions.

Signed-off-by: Purna Pavan Chandra Aekkaladevi <paekkaladevi@xxxxxxxxxxxxxxxxxxx>
Co-authored-by: Vineeth Pillai <viremana@xxxxxxxxxxxxxxxxxxx>
---
  src/ch/ch_monitor.c | 20 ++++++++++++++++----
  src/ch/ch_monitor.h |  2 ++
  2 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/src/ch/ch_monitor.c b/src/ch/ch_monitor.c
index 3e49902791..8c99fe1019 100644
--- a/src/ch/ch_monitor.c
+++ b/src/ch/ch_monitor.c
@@ -540,7 +540,6 @@ virCHMonitorNew(virDomainObj *vm, virCHDriverConfig *cfg)
  {
      g_autoptr(virCHMonitor) mon = NULL;
      g_autoptr(virCommand) cmd = NULL;
-    const char *socketdir = cfg->stateDir;
      int socket_fd = 0;
if (virCHMonitorInitialize() < 0)
@@ -556,11 +555,13 @@ virCHMonitorNew(virDomainObj *vm, virCHDriverConfig *cfg)
      }
/* prepare to launch Cloud-Hypervisor socket */
-    mon->socketpath = g_strdup_printf("%s/%s-socket", socketdir, vm->def->name);
-    if (g_mkdir_with_parents(socketdir, 0777) < 0) {
+    mon->socketpath = g_strdup_printf("%s/%s-socket", cfg->stateDir, vm->def->name);
+    mon->eventmonitorpath = g_strdup_printf("%s/%s-event-monitor",
+                                            cfg->stateDir, vm->def->name);
+    if (g_mkdir_with_parents(cfg->stateDir, 0777) < 0) {
          virReportSystemError(errno,
                               _("Cannot create socket directory '%1$s'"),
-                             socketdir);
+                             cfg->stateDir);
          return NULL;
      }
@@ -585,6 +586,9 @@ virCHMonitorNew(virDomainObj *vm, virCHDriverConfig *cfg)
      virCommandAddArgFormat(cmd, "fd=%d", socket_fd);
      virCommandPassFD(cmd, socket_fd, VIR_COMMAND_PASS_FD_CLOSE_PARENT);
+ virCommandAddArg(cmd, "--event-monitor");
+    virCommandAddArgFormat(cmd, "path=%s", mon->eventmonitorpath);
+
      /* launch Cloud-Hypervisor socket */
      if (virCommandRunAsync(cmd, &mon->pid) < 0)
          return NULL;
@@ -629,6 +633,14 @@ void virCHMonitorClose(virCHMonitor *mon)
          g_free(mon->socketpath);
      }
+ if (mon->eventmonitorpath) {
did you mean to check if fileExists here?

+        if (virFileRemove(mon->eventmonitorpath, -1, -1) < 0) {
+            VIR_WARN("Unable to remove CH event monitor file '%s'",
+                     mon->eventmonitorpath);
+        }
+        g_free(mon->eventmonitorpath);
+    }
+
      virObjectUnref(mon);
  }
diff --git a/src/ch/ch_monitor.h b/src/ch/ch_monitor.h
index b35f5ea027..2ef8706b99 100644
--- a/src/ch/ch_monitor.h
+++ b/src/ch/ch_monitor.h
@@ -95,6 +95,8 @@ struct _virCHMonitor {
char *socketpath; + char *eventmonitorpath;
+
      pid_t pid;
virDomainObj *vm;

--
Regards,
Praveen K Paladugu



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux