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