diff --git a/pyghmi/ipmi/command.py b/pyghmi/ipmi/command.py index 7e58e4d4..9bc00f42 100644 --- a/pyghmi/ipmi/command.py +++ b/pyghmi/ipmi/command.py @@ -2028,7 +2028,7 @@ class Command(object): self.oem_init() return self._oem.detach_remote_media() - def upload_media(self, filename, progress=None): + def upload_media(self, filename, progress=None, data=None): """Upload a file to be hosted on the target BMC This will upload the specified data to @@ -2040,7 +2040,7 @@ class Command(object): :param progress: Optional callback for progress updates """ self.oem_init() - return self._oem.upload_media(filename, progress) + return self._oem.upload_media(filename, progress, data) def list_media(self): """List attached remote media diff --git a/pyghmi/ipmi/oem/generic.py b/pyghmi/ipmi/oem/generic.py index c13ab595..ba71b761 100644 --- a/pyghmi/ipmi/oem/generic.py +++ b/pyghmi/ipmi/oem/generic.py @@ -277,7 +277,7 @@ class OEMHandler(object): def attach_remote_media(self, imagename, username, password): raise exc.UnsupportedFunctionality() - def upload_media(self, filename, progress): + def upload_media(self, filename, progress, data): raise exc.UnsupportedFunctionality() def list_media(self): diff --git a/pyghmi/ipmi/oem/lenovo/handler.py b/pyghmi/ipmi/oem/lenovo/handler.py index 29bbc11d..840b2fb6 100755 --- a/pyghmi/ipmi/oem/lenovo/handler.py +++ b/pyghmi/ipmi/oem/lenovo/handler.py @@ -1048,10 +1048,10 @@ class OEMHandler(generic.OEMHandler): netfn=0x32, command=0x9f, data=(8, 10, 0, 0)) self.ipmicmd.xraw_command(netfn=0x32, command=0x9f, data=(8, 11)) - def upload_media(self, filename, progress): + def upload_media(self, filename, progress, data): if self.has_xcc or self.has_imm: - return self.immhandler.upload_media(filename, progress) - return super(OEMHandler, self).upload_media(filename, progress) + return self.immhandler.upload_media(filename, progress, data) + return super(OEMHandler, self).upload_media(filename, progress, data) def list_media(self): if self.has_xcc or self.has_imm: diff --git a/pyghmi/ipmi/oem/lenovo/imm.py b/pyghmi/ipmi/oem/lenovo/imm.py index a39c1e46..18be585e 100644 --- a/pyghmi/ipmi/oem/lenovo/imm.py +++ b/pyghmi/ipmi/oem/lenovo/imm.py @@ -425,7 +425,7 @@ class IMMClient(object): except KeyError: return None - def upload_media(self, filename, progress=None): + def upload_media(self, filename, progress=None, data=None): xid = random.randint(0, 1000000000) alloc = self.wc.grab_json_response( '/data/set', @@ -439,7 +439,7 @@ class IMMClient(object): uploadfields['available'] = alloc['available'] uploadfields['checksum'] = xid ut = webclient.FileUploader( - self.wc, '/designs/imm/upload/rp_image_upload.esp', filename, + self.wc, '/designs/imm/upload/rp_image_upload.esp', filename, data, otherfields=uploadfields) ut.start() while ut.isAlive(): @@ -1684,11 +1684,11 @@ class XCCClient(IMMClient): yield media.Media(mt['filename']) self.weblogout() - def upload_media(self, filename, progress=None): + def upload_media(self, filename, progress=None, data=None): xid = random.randint(0, 1000000000) self._refresh_token() uploadthread = webclient.FileUploader( - self.wc, '/upload?X-Progress-ID={0}'.format(xid), filename, None) + self.wc, '/upload?X-Progress-ID={0}'.format(xid), filename, data) uploadthread.start() while uploadthread.isAlive(): uploadthread.join(3) diff --git a/pyghmi/redfish/command.py b/pyghmi/redfish/command.py index f4f2b968..6801720c 100644 --- a/pyghmi/redfish/command.py +++ b/pyghmi/redfish/command.py @@ -1463,7 +1463,7 @@ class Command(object): 'Inserted': False}, method='PATCH') - def upload_media(self, filename, progress=None): + def upload_media(self, filename, progress=None, data=None): """Upload a file to be hosted on the target BMC This will upload the specified data to @@ -1474,7 +1474,7 @@ class Command(object): will be given to the bmc. :param progress: Optional callback for progress updates """ - return self.oem.upload_media(filename, progress) + return self.oem.upload_media(filename, progress, data) def update_firmware(self, file, data=None, progress=None, bank=None): """Send file to BMC to perform firmware update diff --git a/pyghmi/redfish/oem/generic.py b/pyghmi/redfish/oem/generic.py index e741a954..cbfacd5d 100644 --- a/pyghmi/redfish/oem/generic.py +++ b/pyghmi/redfish/oem/generic.py @@ -324,7 +324,7 @@ class OEMHandler(object): raise exc.UnsupportedFunctionality( 'Remote storage configuration not supported on this platform') - def upload_media(self, filename, progress=None): + def upload_media(self, filename, progress=None, data=None): raise exc.UnsupportedFunctionality( 'Remote media upload not supported on this platform') diff --git a/pyghmi/redfish/oem/lenovo/xcc.py b/pyghmi/redfish/oem/lenovo/xcc.py index 96ba42b7..19be1e8d 100644 --- a/pyghmi/redfish/oem/lenovo/xcc.py +++ b/pyghmi/redfish/oem/lenovo/xcc.py @@ -656,11 +656,11 @@ class OEMHandler(generic.OEMHandler): raise pygexc.InvalidParameterValue( 'XCC does not have required license for operation') - def upload_media(self, filename, progress=None): + def upload_media(self, filename, progress=None, data=None): xid = random.randint(0, 1000000000) self._refresh_token() uploadthread = webclient.FileUploader( - self.wc, '/upload?X-Progress-ID={0}'.format(xid), filename, None) + self.wc, '/upload?X-Progress-ID={0}'.format(xid), filename, data) uploadthread.start() while uploadthread.isAlive(): uploadthread.join(3)