Re: [libvirt] [PATCH] Attach vm-uuid to Open vSwitch interfaces.

2012-03-02 Thread Kyle Mestery (kmestery)
On Mar 1, 2012, at 11:51 PM, Ansis Atteka wrote:
 This patch will allow OpenFlow controllers to identify which interface
 belongs to a particular VM by using the Domain UUID.
 
 ovs-vsctl get Interface vnet0 external_ids
 {attached-mac=52:54:00:8C:55:2C, 
 iface-id=83ce45d6-3639-096e-ab3c-21f66a05f7fa, iface-status=active, 
 vm-uuid=142a90a7-0acc-ab92-511c-586f12da8851}


This patch looks good to me Ansis, and it will be handy to have the VM UUID 
available in the OVS DB for connected ports. Nice work!

Thanks,
Kyle

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


[libvirt] [PATCH] Attach vm-uuid to Open vSwitch interfaces.

2012-03-01 Thread Ansis Atteka
This patch will allow OpenFlow controllers to identify which interface
belongs to a particular VM by using the Domain UUID.

ovs-vsctl get Interface vnet0 external_ids
{attached-mac=52:54:00:8C:55:2C, 
iface-id=83ce45d6-3639-096e-ab3c-21f66a05f7fa, iface-status=active, 
vm-uuid=142a90a7-0acc-ab92-511c-586f12da8851}
---
 src/lxc/lxc_driver.c|3 ++-
 src/network/bridge_driver.c |2 +-
 src/qemu/qemu_command.c |3 ++-
 src/uml/uml_conf.c  |3 ++-
 src/util/virnetdevopenvswitch.c |   10 ++
 src/util/virnetdevopenvswitch.h |1 +
 src/util/virnetdevtap.c |3 ++-
 src/util/virnetdevtap.h |1 +
 8 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/src/lxc/lxc_driver.c b/src/lxc/lxc_driver.c
index d9cbd9e..3a55983 100644
--- a/src/lxc/lxc_driver.c
+++ b/src/lxc/lxc_driver.c
@@ -1197,7 +1197,8 @@ static int lxcSetupInterfaceBridged(virConnectPtr conn,
 goto cleanup;
 
 if (vport  vport-virtPortType == VIR_NETDEV_VPORT_PROFILE_OPENVSWITCH)
-ret = virNetDevOpenvswitchAddPort(brname, parentVeth, net-mac, vport);
+ret = virNetDevOpenvswitchAddPort(brname, parentVeth, net-mac,
+  vm-uuid, vport);
 else
 ret = virNetDevBridgeAddPort(brname, parentVeth);
 if (ret  0)
diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
index cf75d26..d82212f 100644
--- a/src/network/bridge_driver.c
+++ b/src/network/bridge_driver.c
@@ -1766,7 +1766,7 @@ networkStartNetworkVirtual(struct network_driver *driver,
 }
 if (virNetDevTapCreateInBridgePort(network-def-bridge,
macTapIfName, network-def-mac,
-   NULL, NULL,
+   NULL, NULL, NULL,

VIR_NETDEV_TAP_CREATE_USE_MAC_FOR_BRIDGE)  0) {
 VIR_FREE(macTapIfName);
 goto err0;
diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c
index acfd38c..5cd70f2 100644
--- a/src/qemu/qemu_command.c
+++ b/src/qemu/qemu_command.c
@@ -244,7 +244,8 @@ qemuNetworkIfaceConnect(virDomainDefPtr def,
 tap_create_flags |= VIR_NETDEV_TAP_CREATE_VNET_HDR;
 }
 
-err = virNetDevTapCreateInBridgePort(brname, net-ifname, net-mac, 
tapfd,
+err = virNetDevTapCreateInBridgePort(brname, net-ifname, net-mac,
+ def-uuid, tapfd,
  
virDomainNetGetActualVirtPortProfile(net),
  tap_create_flags);
 virDomainAuditNetDevice(def, net, /dev/net/tun, tapfd = 0);
diff --git a/src/uml/uml_conf.c b/src/uml/uml_conf.c
index 89fdd9f..18836f5 100644
--- a/src/uml/uml_conf.c
+++ b/src/uml/uml_conf.c
@@ -138,7 +138,8 @@ umlConnectTapDevice(virConnectPtr conn,
 template_ifname = true;
 }
 
-if (virNetDevTapCreateInBridgePort(bridge, net-ifname, net-mac, NULL,
+if (virNetDevTapCreateInBridgePort(bridge, net-ifname, net-mac,
+   vm-uuid, NULL,

virDomainNetGetActualVirtPortProfile(net),
VIR_NETDEV_TAP_CREATE_IFUP)  0) {
 if (template_ifname)
diff --git a/src/util/virnetdevopenvswitch.c b/src/util/virnetdevopenvswitch.c
index e427c94..5e40d26 100644
--- a/src/util/virnetdevopenvswitch.c
+++ b/src/util/virnetdevopenvswitch.c
@@ -44,18 +44,22 @@
  */
 int virNetDevOpenvswitchAddPort(const char *brname, const char *ifname,
const unsigned char *macaddr,
+   const unsigned char *vmuuid,
virNetDevVPortProfilePtr ovsport)
 {
 int ret = -1;
 virCommandPtr cmd = NULL;
 char macaddrstr[VIR_MAC_STRING_BUFLEN];
 char uuidstr[VIR_UUID_STRING_BUFLEN];
+char vmuuidstr[VIR_UUID_STRING_BUFLEN];
 char *attachedmac_ex_id = NULL;
 char *ifaceid_ex_id = NULL;
 char *profile_ex_id = NULL;
+char *vmuuid_ex_id = NULL;
 
 virMacAddrFormat(macaddr, macaddrstr);
 virUUIDFormat(ovsport-u.openvswitch.interfaceID, uuidstr);
+virUUIDFormat(vmuuid, vmuuidstr);
 
 if (virAsprintf(attachedmac_ex_id, external-ids:attached-mac=\%s\,
 macaddrstr)  0)
@@ -63,6 +67,9 @@ int virNetDevOpenvswitchAddPort(const char *brname, const 
char *ifname,
 if (virAsprintf(ifaceid_ex_id, external-ids:iface-id=\%s\,
 uuidstr)  0)
 goto cleanup;
+if (virAsprintf(vmuuid_ex_id, external-ids:vm-uuid=\%s\,
+vmuuidstr)  0)
+goto cleanup;
 if (ovsport-u.openvswitch.profileID[0] != '\0') {
 if (virAsprintf(profile_ex_id, external-ids:port-profile=\%s\,
 ovsport-u.openvswitch.profileID)  0)
@@ -75,6 +82,7 @@ int virNetDevOpenvswitchAddPort(const char