Source code for pyhpecw7.features.reboot

"""Reboot HPCOM7 devices.
"""
from pyhpecw7.features.errors import RebootDateError, RebootTimeError


[docs]class Reboot(object): """This class is used to reboot a HP COM7 switch. Args: device (HPCOM7): connected instance of a ``pyhpecw7.comware.HPCOM7`` object. Attributes: device (HPCOM7): connected instance of a ``pyhpecw7.comware.HPCOM7`` object. """ def __init__(self, device): self.device = device
[docs] def build(self, stage=False, **reboot): """Build command list to reboot the switch and send to staging Args: stage (bool): whether to stage the commands or execute immediately reboot: see Keyword Args Keyword Args: reboot (bool): REQUIRED - set to True to reboot (safety) time (str): OPTIONAL - must be in HH:MM format date (str): OPTIONAL - must be in MM/DD/YYYY format delay (str): OPTIONAL - number representing delay in minutes Returns: True if stage=True and successfully staged etree.Element XML response if immediate execution """ reb2 = reboot.get('reboot') time = reboot.get('time') delay = reboot.get('delay') date = reboot.get('date') if reb2: if delay: commands = ['scheduler reboot delay {0}'.format(delay)] elif time: if date: commands = ['scheduler reboot at {0} {1}'.format(time, date)] else: commands = ['scheduler reboot at {0}'.format(time)] else: commands = ['reboot force'] # will exit/fail, NETCONF connection will not be closed if stage: return self.device.stage_config(commands, 'cli_display') else: return self.device.cli_display(commands)
[docs] def param_check(self, **reboot): """Param validation for time & date. Args: reboot: see Keyword Args Keyword Args: time (str): OPTIONAL - must be in HH:MM format date (str): OPTIONAL - must be in MM/DD/YYYY format """ time = reboot.get('time') if time: if len(time) != 5 or ':' not in time: raise RebootTimeError time_hh_mm = time.split(':') if len(time_hh_mm) != 2: raise RebootTimeError mm = time_hh_mm[0] hh = time_hh_mm[1] if len(mm) != 2 or len(hh) != 2: raise RebootTimeError date = reboot.get('date') if date: if '/' not in date: raise RebootDateError mm_dd_yyyy = date.split('/') if len(mm_dd_yyyy) != 3: raise RebootDateError mm = mm_dd_yyyy[0] dd = mm_dd_yyyy[1] yyyy = mm_dd_yyyy[2] if len(mm) != 1 and len(mm) != 2: raise RebootDateError if len(dd) != 1 and len(dd) != 2: raise RebootDateError if len(yyyy) != 4: raise RebootDateError