]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
ch: Pass net ids explicitly during vm creation
authorPurna Pavan Chandra <paekkaladevi@linux.microsoft.com>
Mon, 5 Aug 2024 14:40:54 +0000 (14:40 +0000)
committerMichal Privoznik <mprivozn@redhat.com>
Fri, 9 Aug 2024 13:03:07 +0000 (15:03 +0200)
Pass "net_<index>" as net id to CH. This is to have better control over
the network configs. This id can be further used in performing
operations like restore etc.

Signed-off-by: Purna Pavan Chandra <paekkaladevi@linux.microsoft.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/ch/ch_monitor.c
src/ch/ch_monitor.h
src/ch/ch_process.c

index 7b6b77de1cb1e472df2a6198a633dbe794bba869..619a417d61fce66650ec30c528e68032d20c457a 100644 (file)
@@ -278,18 +278,25 @@ virCHMonitorBuildDisksJson(virJSONValue *content, virDomainDef *vmdef)
 /**
  * virCHMonitorBuildNetJson:
  * @net: pointer to a guest network definition
+ * @netindex: index of the guest network definition
  * @jsonstr: returned network json
  *
  * Build net json to send to CH
  * Returns 0 on success or -1 in case of error
  */
 int
-virCHMonitorBuildNetJson(virDomainNetDef *net, char **jsonstr)
+virCHMonitorBuildNetJson(virDomainNetDef *net,
+                         int netindex,
+                         char **jsonstr)
 {
     char macaddr[VIR_MAC_STRING_BUFLEN];
     g_autoptr(virJSONValue) net_json = virJSONValueNewObject();
     virDomainNetType actualType = virDomainNetGetActualType(net);
 
+    g_autofree char *id = g_strdup_printf("%s_%d", CH_NET_ID_PREFIX, netindex);
+    if (virJSONValueObjectAppendString(net_json, "id", id) < 0)
+        return -1;
+
     if (actualType == VIR_DOMAIN_NET_TYPE_ETHERNET &&
         net->guestIP.nips == 1) {
         const virNetDevIPAddr *ip;
index ea6b2a771bbc2366ac7664b9fb7789446f7f3d2b..b20f28c3d7e5e6ab2b9b5f533352d683074dcb35 100644 (file)
@@ -42,6 +42,8 @@
 
 #define VIRCH_THREAD_NAME_LEN   16
 
+#define CH_NET_ID_PREFIX "net"
+
 typedef enum {
     virCHThreadTypeEmulator,
     virCHThreadTypeVcpu,
@@ -125,4 +127,6 @@ size_t virCHMonitorGetThreadInfo(virCHMonitor *mon, bool refresh,
 int virCHMonitorGetIOThreads(virCHMonitor *mon,
                              virDomainIOThreadInfo ***iothreads);
 int
-virCHMonitorBuildNetJson(virDomainNetDef *netdef, char **jsonstr);
+virCHMonitorBuildNetJson(virDomainNetDef *netdef,
+                         int netindex,
+                         char **jsonstr);
index 6f99fec900140513c2300b74eb067380833bc656..5907a6e81f69daaa0ef448964b43b347f7b8dcd0 100644 (file)
@@ -621,7 +621,7 @@ chProcessAddNetworkDevices(virCHDriver *driver,
                                          nicindexes, nnicindexes) < 0)
             return -1;
 
-        if (virCHMonitorBuildNetJson(vmdef->nets[i], &payload) < 0) {
+        if (virCHMonitorBuildNetJson(vmdef->nets[i], i, &payload) < 0) {
             virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                            _("Failed to build net json"));
             return -1;