Change in vdsm[master]: netinfo: Introduce linkPool

asegurap at redhat.com asegurap at redhat.com
Wed Dec 4 19:42:44 UTC 2013


Antoni Segura Puimedon has uploaded a new change for review.

Change subject: netinfo: Introduce linkPool
......................................................................

netinfo: Introduce linkPool

linkPool is a dictionary that always contains the device links
present in the system as keys.

The values are initially Link objects but when an event is received
the event is put on place of the link object (this is likely to
change into keeping Link objects, but if it is the case, it will
be in a follow up patch).

This linkPool will be used for various things.
- The sampling thread will always know which devices to report.
- Netinfo object creation will be significantly cheaper if
  it the links are on memory.

Change-Id: I819a4b271955baaf14b3d12883ccfe7fda90b7d1
Signed-off-by: Antoni S. Puimedon <asegurap at redhat.com>
---
M lib/vdsm/netinfo.py
1 file changed, 24 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/57/22057/1

diff --git a/lib/vdsm/netinfo.py b/lib/vdsm/netinfo.py
index edc1c13..0af9b8d 100644
--- a/lib/vdsm/netinfo.py
+++ b/lib/vdsm/netinfo.py
@@ -27,6 +27,7 @@
 import shlex
 import socket
 import struct
+import threading
 from xml.dom import minidom
 
 import ethtool
@@ -35,6 +36,7 @@
 from . import constants
 from .ipwrapper import getLink, getLinks
 from .ipwrapper import IPRoute2Error
+from .ipwrapper import Monitor
 from .ipwrapper import Route
 from .ipwrapper import routeGet
 from .ipwrapper import routeShowAllDefaultGateways
@@ -68,6 +70,28 @@
 
 OPERSTATE_UP = 'up'
 
+linkPool = {}
+
+
+def _linkPoolUpdater():
+    mon = Monitor()
+    mon.start()
+    for event in mon:
+        if event.state == Monitor.LINK_STATE_DELETED:
+            try:
+                del linkPool[event.device]
+            except KeyError:
+                logging.debug('Failed to remove link pool device %s which was '
+                              'not on the pool', event.device)
+        else:
+            linkPool[event.device] = event
+
+
+# netinfo link pool handling
+for link in getLinks():
+    linkPool[link.name] = link
+threading.Thread(target=_linkPoolUpdater, name='linkPool').start()
+
 
 def nics():
     """Returns a list of nics and fake nics devices available (not hidden) to


-- 
To view, visit http://gerrit.ovirt.org/22057
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I819a4b271955baaf14b3d12883ccfe7fda90b7d1
Gerrit-PatchSet: 1
Gerrit-Project: vdsm
Gerrit-Branch: master
Gerrit-Owner: Antoni Segura Puimedon <asegurap at redhat.com>


More information about the vdsm-patches mailing list