def main(): parser = argparse.ArgumentParser( prog='pypmb', description='Python Intelligent Platform Management Bridge', conflict_handler='resolve') parser.add_argument('--port', dest='port', type=int, default=623, help='Port to listen on; defaults to 623') args = parser.parse_args() # logging level = logging.INFO # logging.DEBUG # logging.basicConfig( level=level, format='%(relativeCreated)6d %(threadName)s %(levelname)s:%(message)s') mypmb = PyPmb({"admin": "changeme"}, name="pmb", port=args.port, loop=asyncio.get_event_loop()) loop = None #mypmb.loop # add target BMCs mypmb.add_target(1, fakebmc.FakeBmc(mypmb.authdata, port=None)) #mypmb.add_target(2, Esp8266Bmc(mypmb.authdata, {}, {}, {'host':'192.168.1.11'}, {'host':'192.168.1.11'}, {'baud_rate':'38400'}, name="cloud1", port=None, loop=loop)) #mypmb.add_target(3, Esp8266WakeOnLanBmc(mypmb.authdata, {}, {}, {'host':'192.168.11.12'}, {'host':'192.168.1.12'}, {'baud_rate':'38400'}, {'mac':'AA:BB:CC:DD:EE:FF', 'ip':'192.168.1.255'}, name="cloud1", port=None, loop=loop)) # setup asyncbmc.wait_for_sync(mypmb.setup(), loop=mypmb.loop) mypmb.listen()
def power_cycle(self): logging.info('power cycle, using power cycle off press duration: ' '{}, wait duration: {}, on press duration {}'.format( self.power_cycle_off_press_duration, self.power_cycle_wait_duration, self.power_cycle_on_press_duration)) return asyncbmc.wait_for_sync(self.async_power_cycle(), loop=self.loop)
def power_shutdown(self): logging.info('politely shut down the system, ' 'using power shutdown press duration: ' '{} and polite wait duration: {}'.format( self.power_shutdown_press_duration, self.power_shutdown_wait_duration)) return asyncbmc.wait_for_sync(self.async_power_shutdown(), loop=self.loop)
async def setup(self): # setup bmcs for mybmc in self.targetbmcs.values(): if isinstance(mybmc, asyncbmc.AsyncBmc): asyncbmc.wait_for_sync(mybmc.setup(), loop=mybmc.loop)
def power_reset(self): logging.info( 'power reset, using power reset press duration: {}'.format( self.power_reset_press_duration)) return asyncbmc.wait_for_sync(self.async_power_reset(), loop=self.loop)
def power_off(self): logging.info('abruptly remove power, ' 'using power off press duration: {}'.format( self.power_off_press_duration)) # this should power down without waiting for clean shutdown return asyncbmc.wait_for_sync(self.async_power_off(), loop=self.loop)