2
0
mirror of https://opendev.org/x/pyghmi synced 2025-08-01 17:07:37 +00:00

Add NTP support to TSMA

The TSMA code for SR635/SR655 now supports
manipulating NTP configuration.

Change-Id: I75885b6a1ea8ed7e751143fc7827b59d53101c12
This commit is contained in:
Jarrod Johnson
2021-01-21 15:14:41 -05:00
parent dc7e23d324
commit d99e29cd57
2 changed files with 61 additions and 0 deletions

View File

@@ -292,6 +292,8 @@ class OEMHandler(generic.OEMHandler):
return ntpres['data'][0] == '\x01'
elif self.is_fpc:
return self.smmhandler.get_ntp_enabled(self._fpc_variant)
elif self.has_tsma:
return self.tsmahandler.get_ntp_enabled()
return None
def get_ntp_servers(self):
@@ -303,6 +305,8 @@ class OEMHandler(generic.OEMHandler):
return srvs
if self.is_fpc:
return self.smmhandler.get_ntp_servers()
if self.has_tsma:
return self.tsmahandler.get_ntp_servers()
return None
def set_ntp_enabled(self, enabled):
@@ -317,6 +321,8 @@ class OEMHandler(generic.OEMHandler):
if self.is_fpc:
self.smmhandler.set_ntp_enabled(enabled)
return True
if self.has_tsma:
self.tsmahandler.set_ntp_enabled(enabled)
return None
def set_ntp_server(self, server, index=0):
@@ -333,6 +339,10 @@ class OEMHandler(generic.OEMHandler):
'SMM supports indexes 0 through 2')
self.smmhandler.set_ntp_server(server, index)
return True
elif self.has_tsma:
if not (0 <= index <= 1):
raise pygexc.InvalidParameterValue("Index must be 0 or 1")
return self.tsmahandler.set_ntp_server(server, index)
return None
def set_user_access(self, uid, channel, callback, link_auth, ipmi_msg,

View File

@@ -143,6 +143,57 @@ class TsmHandler(generic.OEMHandler):
self.tsm, self.username, self.password,
verifycallback=self._certverify)
def get_ntp_enabled(self):
wc = self.wc
rsp, status = wc.grab_json_response_with_status(
'/api/settings/date-time')
if status != 200:
raise Exception(repr(rsp))
return rsp.get('ntp_auto_date', 0) > 0
def set_ntp_enabled(self, enabled):
wc = self.wc
rsp, status = wc.grab_json_response_with_status(
'/api/settings/date-time')
if status != 200:
raise Exception(repr(rsp))
rsp['ntp_auto_date'] = 1 if enabled else 0
rsp, status = wc.grab_json_response_with_status(
'/api/settings/date-time', rsp, method='PUT')
if status != 200:
raise Exception(repr(rsp))
def get_ntp_servers(self):
wc = self.wc
rsp, status = wc.grab_json_response_with_status(
'/api/settings/date-time')
if status != 200:
raise Exception(repr(rsp))
srvs = []
pntp = rsp.get('primary_ntp', None)
if pntp:
srvs.append(pntp)
pntp = rsp.get('secondary_ntp', None)
if pntp:
srvs.append(pntp)
return srvs
def set_ntp_server(self, server, index=0):
wc = self.wc
rsp, status = wc.grab_json_response_with_status(
'/api/settings/date-time')
if status != 200:
raise Exception(repr(rsp))
if index == 0:
rsp['primary_ntp'] = server
elif index == 1:
rsp['secondary_ntp'] = server
rsp['ntp_auto_date'] = 1
rsp, status = wc.grab_json_response_with_status(
'/api/settings/date-time', rsp, method='PUT')
if status != 200:
raise Exception(repr(rsp))
def get_firmware_inventory(self, components, raisebypass=True):
wc = self.wc
fwinf, status = wc.grab_json_response_with_status(