def power(self): if 'read' == self.op: power = self.ipmicmd.get_power() self.output.put(msg.PowerState(node=self.node, state=power['powerstate'])) return elif 'update' == self.op: powerstate = self.inputdata.powerstate(self.node) oldpower = None if powerstate == 'boot': oldpower = self.ipmicmd.get_power() if 'powerstate' in oldpower: oldpower = oldpower['powerstate'] self.ipmicmd.set_power(powerstate, wait=30) if powerstate == 'boot' and oldpower == 'on': power = {'powerstate': 'reset'} else: power = self.ipmicmd.get_power() if powerstate == 'reset' and power['powerstate'] == 'on': power['powerstate'] = 'reset' self.output.put(msg.PowerState(node=self.node, state=power['powerstate'], oldstate=oldpower)) return
def power(self): if 'read' == self.op: power = self.ipmicmd.get_power() self.output.put(msg.PowerState(node=self.node, state=power['powerstate'])) return elif 'update' == self.op: powerstate = self.inputdata.powerstate(self.node) self.ipmicmd.set_power(powerstate, wait=30) power = self.ipmicmd.get_power() self.output.put(msg.PowerState(node=self.node, state=power['powerstate'])) return
def retrieve(nodes, element, configmanager, inputdata): results = queue.LightQueue() workers = set([]) if element == ['power', 'state']: for node in nodes: yield msg.PowerState(node=node, state='on') return elif element == ['health', 'hardware']: _run_method(retrieve_health, workers, results, configmanager, nodes, element) elif element[:3] == ['inventory', 'hardware', 'all']: _run_method(retrieve_inventory, workers, results, configmanager, nodes, element) elif element[:3] == ['inventory', 'firmware', 'all']: _run_method(retrieve_firmware, workers, results, configmanager, nodes, element) elif element == ['sensors', 'hardware', 'all']: _run_method(list_sensors, workers, results, configmanager, nodes, element) elif element[:3] == ['sensors', 'hardware', 'all']: _run_method(retrieve_sensors, workers, results, configmanager, nodes, element) else: for node in nodes: yield msg.ConfluentNodeError(node, 'Not Implemented') return while workers: try: datum = results.get(10) while datum: if datum: yield datum datum = results.get_nowait() except queue.Empty: pass eventlet.sleep(0.001) for t in list(workers): if t.dead: workers.discard(t) try: while True: datum = results.get_nowait() if datum: yield datum except queue.Empty: pass
def retrieve(nodes, element, configmanager, inputdata): results = queue.LightQueue() workers = set([]) if element == ['power', 'state']: for node in nodes: yield msg.PowerState(node=node, state='on') return elif element == ['health', 'hardware']: creds = configmanager.get_node_attributes(nodes, [ 'secret.hardwaremanagementuser', 'secret.hardwaremanagementpassword' ], decrypt=True) for node in nodes: workers.add( eventlet.spawn(retrieve_health, configmanager, creds, node, results)) else: for node in nodes: yield msg.ConfluentNodeError(node, 'Not Implemented') return currtimeout = 10 while workers: try: datum = results.get(10) while datum: if datum: yield datum datum = results.get_nowait() except queue.Empty: pass eventlet.sleep(0.001) for t in list(workers): if t.dead: workers.discard(t) try: while True: datum = results.get_nowait() if datum: yield datum except queue.Empty: pass