From 17603a59fdc90ab5591cb660038683078acfe781 Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Sun, 13 Oct 2013 19:59:30 -0400 Subject: [PATCH] Revert the strategy to manually track sessions for pyghmi Since pyghmi now handles this automatically and in fact removes the facility used to manually track this and it is much more robust than this strategy. --- plugins/ipmi.py | 32 +++++++++----------------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/plugins/ipmi.py b/plugins/ipmi.py index eedcc31e..290b4b1f 100644 --- a/plugins/ipmi.py +++ b/plugins/ipmi.py @@ -1,6 +1,8 @@ import collections import eventlet import eventlet.event +import eventlet.greenpool as greenpool +import eventlet.queue import os import pyghmi.ipmi.console as console import pyghmi.ipmi.command as ipmicommand @@ -13,7 +15,6 @@ chainpulled = False tmptimeout = None ipmiq = collections.deque([]) ipmiwaiters = collections.deque([]) -ipmisessions = {} def wait_on_ipmi(): @@ -108,12 +109,7 @@ class Console(object): def connect(self,callback): global _ipmithread global pullchain - global ipmisessions global chainpulled - try: - ipmisession = ipmisessions[(self.bmc, self.port)] - except KeyError: - ipmisession = None if _ipmithread is None: pullchain = os.pipe() _ipmithread = eventlet.spawn(_ipmi_evtloop) @@ -124,16 +120,12 @@ class Console(object): 'password': self.password, 'kg': self.kg, 'force': True, - 'ipmisession': ipmisession, 'iohandler': callback}, self.got_consobject)) if not chainpulled: chainpulled = True os.write(pullchain[1],'1') while self.solconnection is None: wait_on_ipmi() - if ipmisession is None: - ipmisessions[(self.bmc, self.port)] = \ - self.solconnection.ipmi_session def got_consobject(self, solconnection): self.solconnection = solconnection @@ -183,16 +175,19 @@ class IpmiIterator(object): 'hardwaremanagement.manager']) cfg.decrypt = crypt for node in nodes: - IpmiHandler(operator, node, element, configdata).handle_request() + print IpmiHandler(operator, node, element, configdata).handle_request() + #eventlet.spawn(perform_request, + # (operator, node, element, configdata, self.resultqueue)) def __iter__(self): return self def next(self): pass - +def perform_request(operator, node, element, configdata, queue): + IpmiHandler(operator, node, element, configdata).handle_request() class IpmiHandler(object): @@ -202,7 +197,6 @@ class IpmiHandler(object): def __init__(self, operation, node, element, cfd): global chainpulled global _ipmithread - global ipmisessions global pullchain if _ipmithread is None: pullchain = os.pipe() @@ -215,25 +209,18 @@ class IpmiHandler(object): self.op = operation connparams = get_conn_params(node, self.cfg) self.ipmicmd = None - try: - ipmisession = ipmisessions[(connparams['bmc'], connparams['port'])] - except KeyError: - ipmisession = None ipmiq.append((ipmicommand.Command,{'bmc': connparams['bmc'], 'userid': connparams['username'], 'password': connparams['passphrase'], 'kg': connparams['kg'], 'port': connparams['port'], - 'onlogon': self.logged, - 'ipmisession': ipmisession}, + 'onlogon': self.logged}, self.got_ipmicmd)) if not chainpulled: chainpulled = True os.write(pullchain[1],'1') while self.ipmicmd == None: wait_on_ipmi() - if ipmisession is None: - ipmisessions[(connparams['bmc'], connparams['port'])] = self.ipmicmd.ipmi_session def got_ipmicmd(self, ipmicmd): self.ipmicmd = ipmicmd @@ -262,8 +249,7 @@ class IpmiHandler(object): wait_on_ipmi() if self.element == 'power/state': if 'read' == self.op: - rsp = self.call_ipmicmd(self.ipmicmd.get_power) - print(rsp) + return self.call_ipmicmd(self.ipmicmd.get_power) def create(nodes, element, configmanager): if element == '_console/session':