2
0
mirror of https://opendev.org/x/pyghmi synced 2025-10-26 17:05:30 +00:00

Add support for deleting licenses from XCC

Complete the XCC license management capabilities by
adding deletion of licenses.

Change-Id: I4c023858263934e63c73b81af13713aad4b066aa
This commit is contained in:
Jarrod Johnson
2019-06-19 16:09:23 -04:00
parent 575663e638
commit 8257aa0279
7 changed files with 36 additions and 0 deletions

View File

@@ -1999,6 +1999,10 @@ class Command(object):
self.oem_init()
return self._oem.get_licenses()
def delete_license(self, name):
self.oem_init()
return self._oem.delete_license(name)
def save_licenses(self, directory):
self.oem_init()
return self._oem.save_licenses(directory)

View File

@@ -356,6 +356,9 @@ class OEMHandler(object):
def get_licenses(self):
raise exc.UnsupportedFunctionality()
def delete_license(self, name):
raise exc.UnsupportedFunctionality()
def save_licenses(self, directory):
raise exc.UnsupportedFunctionality()

View File

@@ -980,6 +980,11 @@ class OEMHandler(generic.OEMHandler):
if self.has_xcc:
return self.immhandler.get_licenses()
return super(OEMHandler, self).get_licenses()
def delete_license(self, name):
if self.has_xcc:
return self.immhandler.delete_license(name)
return super(OEMHandler, self).delete_license(name)
def save_licenses(self, directory):
if self.has_xcc:

View File

@@ -1815,6 +1815,15 @@ class XCCClient(IMMClient):
self._refresh_token()
yield savefile
def delete_license(self, name):
licdata = self.wc.grab_json_response('/api/providers/imm_fod')
for lic in licdata.get('items', [{}])[0].get('keys', []):
if lic.get('feature', None) == name:
licid = ','.join((str(lic['type']), str(lic['id'])))
self.wc.grab_json_response(
'/api/providers/imm_fod', {'FOD_LicenseKeyDelete': licid})
break
def apply_license(self, filename, progress=None):
uploadthread = webclient.FileUploader(self.wc, '/upload', filename)
uploadthread.start()

View File

@@ -1426,6 +1426,9 @@ class Command(object):
def get_licenses(self):
return self.oem.get_licenses()
def delete_license(self, name):
return self.oem.delete_license(name)
def save_licenses(self, directory):
return self.oem.save_licenses(directory)

View File

@@ -92,6 +92,9 @@ class OEMHandler(object):
def get_licenses(self):
raise exc.UnsupportedFunctionality()
def delete_license(self, name):
raise exc.UnsupportedFunctionality()
def save_licenses(self, directory):
raise exc.UnsupportedFunctionality()

View File

@@ -710,6 +710,15 @@ class OEMHandler(generic.OEMHandler):
if lic['status'] == 0:
yield {'name': lic['feature']}
def delete_license(self, name):
licdata = self.wc.grab_json_response('/api/providers/imm_fod')
for lic in licdata.get('items', [{}])[0].get('keys', []):
if lic.get('feature', None) == name:
licid = ','.join((str(lic['type']), str(lic['id'])))
self.wc.grab_json_response(
'/api/providers/imm_fod', {'FOD_LicenseKeyDelete': licid})
break
def save_licenses(self, directory):
licdata = self.wc.grab_json_response('/api/providers/imm_fod')
for lic in licdata.get('items', [{}])[0].get('keys', []):