diff --git a/confluent_server/confluent/messages.py b/confluent_server/confluent/messages.py index 726a1427..b330ef04 100644 --- a/confluent_server/confluent/messages.py +++ b/confluent_server/confluent/messages.py @@ -144,10 +144,9 @@ class ConfluentMessage(object): class ConfluentNodeError(object): - def __init__(self, node): + def __init__(self, node, errorstr): self.node = node - self.error = None - raise NotImplementedError # this is an abstract base class + self.error = errorstr def raw(self): return {self.node: {'error': self.error}} @@ -158,7 +157,7 @@ class ConfluentNodeError(object): def strip_node(self, node): #NOTE(jbjohnso): For single node errors, raise exception to #trigger what a developer of that medium would expect - raise NotImplementedError + raise Exception(self.error) class ConfluentTargetTimeout(ConfluentNodeError): diff --git a/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py b/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py index 751187d7..e09274ac 100644 --- a/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py +++ b/confluent_server/confluent/plugins/hardwaremanagement/ipmi.py @@ -222,11 +222,10 @@ def perform_request(operator, node, element, if excmsg == 'Session no longer connected': results.put(msg.ConfluentTargetTimeout(node)) else: - raise + results.put(msg.ConfluentNodeError(node, excmsg)) finally: results.put('Done') - persistent_ipmicmds = {} @@ -427,8 +426,7 @@ class IpmiHandler(object): state=power['powerstate'])) elif 'update' == self.op: powerstate = self.inputdata.powerstate(self.node) - # TODO: call with wait argument - self.ipmicmd.set_power(powerstate) + self.ipmicmd.set_power(powerstate, wait=30) power = self.ipmicmd.get_power() self.output.put(msg.PowerState(node=self.node, state=power['powerstate']))