mirror of
https://opendev.org/x/pyghmi
synced 2025-02-20 12:30:48 +00:00
Offer save_licenses to backup license
Lenovo XCC offers ability to save off license keys. Expose API for it. Change-Id: If6c1311f4801c9dde4aebb0d9480eb3eaa4b04fe
This commit is contained in:
parent
131030a823
commit
575663e638
@ -1999,6 +1999,10 @@ class Command(object):
|
||||
self.oem_init()
|
||||
return self._oem.get_licenses()
|
||||
|
||||
def save_licenses(self, directory):
|
||||
self.oem_init()
|
||||
return self._oem.save_licenses(directory)
|
||||
|
||||
def apply_license(self, filename, progress=None):
|
||||
self.oem_init()
|
||||
return self._oem.apply_license(filename, progress)
|
||||
|
@ -356,5 +356,8 @@ class OEMHandler(object):
|
||||
def get_licenses(self):
|
||||
raise exc.UnsupportedFunctionality()
|
||||
|
||||
def save_licenses(self, directory):
|
||||
raise exc.UnsupportedFunctionality()
|
||||
|
||||
def apply_license(self, filename, progress=None):
|
||||
raise exc.UnsupportedFunctionality()
|
||||
|
@ -981,6 +981,11 @@ class OEMHandler(generic.OEMHandler):
|
||||
return self.immhandler.get_licenses()
|
||||
return super(OEMHandler, self).get_licenses()
|
||||
|
||||
def save_licenses(self, directory):
|
||||
if self.has_xcc:
|
||||
return self.immhandler.save_licenses(directory)
|
||||
return super(OEMHandler, self).save_licenses(directory)
|
||||
|
||||
def apply_license(self, filename, progress=None):
|
||||
if self.has_xcc:
|
||||
return self.immhandler.apply_license(filename, progress)
|
||||
|
@ -1798,6 +1798,23 @@ class XCCClient(IMMClient):
|
||||
if lic['status'] == 0:
|
||||
yield {'name': lic['feature']}
|
||||
|
||||
def save_licenses(self, directory):
|
||||
licdata = self.wc.grab_json_response('/api/providers/imm_fod')
|
||||
for lic in licdata.get('items', [{}])[0].get('keys', []):
|
||||
licid = ','.join((str(lic['type']), str(lic['id'])))
|
||||
rsp = self.wc.grab_json_response(
|
||||
'/api/providers/imm_fod', {'FOD_LicenseKeyExport': licid})
|
||||
filename = rsp.get('FileName', None)
|
||||
if filename:
|
||||
url = '/download/' + filename
|
||||
savefile = os.path.join(directory, filename)
|
||||
fd = webclient.FileDownloader(self.wc, url, savefile)
|
||||
fd.start()
|
||||
while fd.isAlive():
|
||||
fd.join(1)
|
||||
self._refresh_token()
|
||||
yield savefile
|
||||
|
||||
def apply_license(self, filename, progress=None):
|
||||
uploadthread = webclient.FileUploader(self.wc, '/upload', filename)
|
||||
uploadthread.start()
|
||||
|
@ -1426,6 +1426,9 @@ class Command(object):
|
||||
def get_licenses(self):
|
||||
return self.oem.get_licenses()
|
||||
|
||||
def save_licenses(self, directory):
|
||||
return self.oem.save_licenses(directory)
|
||||
|
||||
def apply_license(self, filename, progress=None):
|
||||
return self.oem.apply_license(filename, progress)
|
||||
|
||||
|
@ -92,5 +92,8 @@ class OEMHandler(object):
|
||||
def get_licenses(self):
|
||||
raise exc.UnsupportedFunctionality()
|
||||
|
||||
def save_licenses(self, directory):
|
||||
raise exc.UnsupportedFunctionality()
|
||||
|
||||
def apply_license(self, filename, progress=None):
|
||||
raise exc.UnsupportedFunctionality()
|
||||
|
@ -710,6 +710,23 @@ class OEMHandler(generic.OEMHandler):
|
||||
if lic['status'] == 0:
|
||||
yield {'name': lic['feature']}
|
||||
|
||||
def save_licenses(self, directory):
|
||||
licdata = self.wc.grab_json_response('/api/providers/imm_fod')
|
||||
for lic in licdata.get('items', [{}])[0].get('keys', []):
|
||||
licid = ','.join((str(lic['type']), str(lic['id'])))
|
||||
rsp = self.wc.grab_json_response(
|
||||
'/api/providers/imm_fod', {'FOD_LicenseKeyExport': licid})
|
||||
filename = rsp.get('FileName', None)
|
||||
if filename:
|
||||
url = '/download/' + filename
|
||||
savefile = os.path.join(directory, filename)
|
||||
fd = webclient.FileDownloader(self.wc, url, savefile)
|
||||
fd.start()
|
||||
while fd.isAlive():
|
||||
fd.join(1)
|
||||
self._refresh_token()
|
||||
yield savefile
|
||||
|
||||
def apply_license(self, filename, progress=None):
|
||||
uploadthread = webclient.FileUploader(self.wc, '/upload', filename)
|
||||
uploadthread.start()
|
||||
|
Loading…
x
Reference in New Issue
Block a user