Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 28 additions & 5 deletions ucsmsdk_samples/firmware/ucsfirmware.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,11 @@
from ucsmsdk.mometa.firmware.FirmwareCatalogue import FirmwareCatalogue
from ucsmsdk.mometa.firmware.FirmwareDownloader import FirmwareDownloader
from ucsmsdk.mometa.firmware.FirmwareDownloader import FirmwareDownloaderConsts
from ucsmsdk.mometa.firmware.FirmwareDistributable import FirmwareDistributableConsts
from ucsmsdk.mometa.firmware.FirmwareAck import FirmwareAckConsts

from ucsmsdk.ucsexception import UcsOperationError

log = logging.getLogger('ucs')


Expand Down Expand Up @@ -350,21 +353,35 @@ def firmware_add_remote(handle, file_name, remote_path, protocol, server,
FirmwareDownloader: Managed Object

Raises:
ValueError if image not available or incorrect credential
ValueError if incorrect credential
IOError if file fails to download

Example:
firmware_add_remote(handle,
file_name="ucs-k9-bundle-c-series.2.2.5b.C.bin",
remote_path="/home/imagedir",
protocol="nfs",
server="10.65.1.2,
server="10.65.1.2",
user="user", pwd="pwd")
"""

file_path = os.path.join(remote_path, file_name)
def return_download_state(handle, file_name):
'''
Returns Transfer State of FirmwareDownloader object for a single download.

if not os.path.exists(file_path):
raise IOError("Image does not exist")
Args:
handle (UcsHandle)
file_name (string): firmware image name

Example:
return_download_state(handle, 'ucs-k9-bundle-infra.2.2.5b.A.bin')
'''
download = handle.query_dn(dn='sys/fw-catalogue/dnld-%s' % file_name)
if download is None:
raise UcsOperationError("Query FirmwareDownloader", "None returned")

download_state = download.transfer_state
return download_state

if protocol is not FirmwareDownloaderConsts.PROTOCOL_TFTP:
if not user:
Expand All @@ -388,6 +405,12 @@ def firmware_add_remote(handle, file_name, remote_path, protocol, server,
handle.add_mo(firmware_downloader)
# handle.set_dump_xml()
handle.commit()

time.sleep(10)
if return_download_state(handle, file_name) == \
FirmwareDistributableConsts.TRANSFER_STATE_FAILED:
raise IOError("File failed to download")

return firmware_downloader


Expand Down