mirror of
https://opendev.org/x/pyghmi
synced 2026-03-29 06:13:30 +00:00
Implement NTP support for Lenovo Thinkserver
Provide a framework for augmenting configuration with NTP data and implement it for Lenovo thinkservers Change-Id: I87dc79549619b8d912425a26d56d73f515630981
This commit is contained in:
@@ -547,6 +547,22 @@ class Command(object):
|
||||
self.oem_init()
|
||||
return self._oem.get_leds()
|
||||
|
||||
def get_ntp_enabled(self):
|
||||
self.oem_init()
|
||||
return self._oem.get_ntp_enabled()
|
||||
|
||||
def set_ntp_enabled(self, enable):
|
||||
self.oem_init()
|
||||
return self._oem.set_ntp_enabled(enable)
|
||||
|
||||
def get_ntp_servers(self):
|
||||
self.oem_init()
|
||||
return self._oem.get_ntp_servers()
|
||||
|
||||
def set_ntp_server(self, server, index=0):
|
||||
self.oem_init()
|
||||
return self._oem.set_ntp_server(server, index)
|
||||
|
||||
def get_health(self):
|
||||
"""Summarize health of managed system
|
||||
|
||||
|
||||
@@ -105,6 +105,37 @@ class OEMHandler(object):
|
||||
"""
|
||||
return ()
|
||||
|
||||
def get_ntp_enabled(self):
|
||||
"""Get whether ntp is enabled or not
|
||||
|
||||
:returns: True if enabled, False if disabled, None if unsupported
|
||||
"""
|
||||
return None
|
||||
|
||||
def set_ntp_enabled(self, enabled):
|
||||
"""Set whether NTP should be enabled
|
||||
|
||||
:returns: True on success
|
||||
"""
|
||||
return None
|
||||
|
||||
def get_ntp_servers(self):
|
||||
"""Get current set of configured NTP servers
|
||||
|
||||
:returns iterable of configured NTP servers:
|
||||
"""
|
||||
return ()
|
||||
|
||||
def set_ntp_server(self, server, index=0):
|
||||
"""Set an ntp server
|
||||
|
||||
:param server: Destination address of server to reach
|
||||
:param index: Index of server to configure, primary assumed if not
|
||||
specified
|
||||
:returns: True if success
|
||||
"""
|
||||
return None
|
||||
|
||||
def process_fru(self, fru):
|
||||
"""Modify a fru entry with OEM understanding.
|
||||
|
||||
|
||||
@@ -189,6 +189,42 @@ class OEMHandler(generic.OEMHandler):
|
||||
event['component_type_id'] == 13):
|
||||
event['component'] += ' {0}'.format(evdata[1] & 0b11111)
|
||||
|
||||
def get_ntp_enabled(self):
|
||||
if self.has_tsm:
|
||||
ntpres = self.ipmicmd.xraw_command(netfn=0x32, command=0xa7)
|
||||
return ntpres['data'][0] == '\x01'
|
||||
return None
|
||||
|
||||
def get_ntp_servers(self):
|
||||
if self.has_tsm:
|
||||
srvs = []
|
||||
ntpres = self.ipmicmd.xraw_command(netfn=0x32, command=0xa7)
|
||||
srvs.append(ntpres['data'][1:129].rstrip('\x00'))
|
||||
srvs.append(ntpres['data'][129:257].rstrip('\x00'))
|
||||
return srvs
|
||||
return None
|
||||
|
||||
def set_ntp_enabled(self, enabled):
|
||||
if self.has_tsm:
|
||||
if enabled:
|
||||
self.ipmicmd.xraw_command(
|
||||
netfn=0x32, command=0xa8, data=(3, 1))
|
||||
else:
|
||||
self.ipmicmd.xraw_command(
|
||||
netfn=0x32, command=0xa8, data=(3, 0))
|
||||
return True
|
||||
return None
|
||||
|
||||
def set_ntp_server(self, server, index=0):
|
||||
if self.has_tsm:
|
||||
if not (0 <= index <= 1):
|
||||
raise pygexc.InvalidParameterValue("Index must be 0 or 1")
|
||||
cmddata = bytearray((1 + index, ))
|
||||
cmddata += server.ljust(128, '\x00')
|
||||
self.ipmicmd.xraw_command(netfn=0x32, command=0xa8, data=cmddata)
|
||||
return True
|
||||
return None
|
||||
|
||||
@property
|
||||
def has_tsm(self):
|
||||
"""True if this particular server have a TSM based service processor
|
||||
|
||||
Reference in New Issue
Block a user