Skip to content

Commit

Permalink
Version 4.5.0.0
Browse files Browse the repository at this point in the history
  • Loading branch information
rajeevkallur committed Sep 13, 2023
1 parent 3aad340 commit 2b690f6
Show file tree
Hide file tree
Showing 16 changed files with 436 additions and 870 deletions.
3 changes: 2 additions & 1 deletion src/redfish/__init__.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
""" Redfish restful library """

__all__ = ["rest", "ris", "hpilo"]
__version__ = "4.3.0.0"
__version__ = "4.5.0.0"

import logging

from redfish.rest.v1 import AuthMethod, LegacyRestClient, RedfishClient


Expand Down
141 changes: 42 additions & 99 deletions src/redfish/hpilo/risblobstore2.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,26 +19,29 @@

# ---------Imports---------

import logging
import os
import sys
import struct
import random
import string
import logging

import struct
import sys
from ctypes import (
POINTER,
c_char_p,
c_ubyte,
c_uint,
cdll,
POINTER,
create_string_buffer,
c_ushort,
c_void_p,
cdll,
create_string_buffer,
)

from redfish.hpilo.rishpilo import HpIlo, HpIloInitialError, HpIloChifPacketExchangeError
from redfish.hpilo.rishpilo import BlobReturnCodes as hpiloreturncodes
from redfish.hpilo.rishpilo import (
HpIlo,
HpIloChifPacketExchangeError,
HpIloInitialError,
)

if os.name == "nt":
from ctypes import windll
Expand Down Expand Up @@ -202,10 +205,7 @@ def create(self, key, namespace):
resp = self._send_receive_raw(data)

errorcode = struct.unpack("<I", bytes(resp[8:12]))[0]
if not (
errorcode == BlobReturnCodes.SUCCESS
or errorcode == BlobReturnCodes.NOTMODIFIED
):
if not (errorcode == BlobReturnCodes.SUCCESS or errorcode == BlobReturnCodes.NOTMODIFIED):
raise HpIloError(errorcode)

self.unloadchifhandle(lib)
Expand Down Expand Up @@ -243,10 +243,7 @@ def get_info(self, key, namespace, retries=0):
elif errorcode == BlobReturnCodes.NOTFOUND:
raise BlobNotFoundError(key, namespace)

if not (
errorcode == BlobReturnCodes.SUCCESS
or errorcode == BlobReturnCodes.NOTMODIFIED
):
if not (errorcode == BlobReturnCodes.SUCCESS or errorcode == BlobReturnCodes.NOTMODIFIED):
raise HpIloError(errorcode)

response = resp[lib.size_of_responseHeaderBlob() :]
Expand Down Expand Up @@ -406,10 +403,7 @@ def write_fragment(self, key, namespace, data=None, offset=0, count=1):
resp = self._send_receive_raw(dataarr)

errorcode = struct.unpack("<I", bytes(resp[8:12]))[0]
if not (
errorcode == BlobReturnCodes.SUCCESS
or errorcode == BlobReturnCodes.NOTMODIFIED
):
if not (errorcode == BlobReturnCodes.SUCCESS or errorcode == BlobReturnCodes.NOTMODIFIED):
raise HpIloError(errorcode)

self.unloadchifhandle(lib)
Expand Down Expand Up @@ -444,10 +438,7 @@ def delete(self, key, namespace, retries=0):
self.delete(key=key, namespace=namespace, retries=retries + 1)
else:
raise Blob2OverrideError(errorcode)
elif not (
errorcode == BlobReturnCodes.SUCCESS
or errorcode == BlobReturnCodes.NOTMODIFIED
):
elif not (errorcode == BlobReturnCodes.SUCCESS or errorcode == BlobReturnCodes.NOTMODIFIED):
raise HpIloError(errorcode)

self.unloadchifhandle(lib)
Expand All @@ -474,10 +465,7 @@ def list(self, namespace):
resp = self._send_receive_raw(data)

errorcode = struct.unpack("<I", bytes(resp[8:12]))[0]
if not (
errorcode == BlobReturnCodes.SUCCESS
or errorcode == BlobReturnCodes.NOTMODIFIED
):
if not (errorcode == BlobReturnCodes.SUCCESS or errorcode == BlobReturnCodes.NOTMODIFIED):
raise HpIloError(errorcode)

resp = resp + b"\0" * (lib.size_of_listResponse() - len(resp))
Expand Down Expand Up @@ -509,10 +497,7 @@ def finalize(self, key, namespace):
resp = self._send_receive_raw(data)

errorcode = struct.unpack("<I", bytes(resp[8:12]))[0]
if not (
errorcode == BlobReturnCodes.SUCCESS
or errorcode == BlobReturnCodes.NOTMODIFIED
):
if not (errorcode == BlobReturnCodes.SUCCESS or errorcode == BlobReturnCodes.NOTMODIFIED):
raise HpIloError(errorcode)

self.unloadchifhandle(lib)
Expand All @@ -538,12 +523,8 @@ def rest_immediate(
:type rsp_namespace: str.
"""
rqt_key = "".join(
random.choice(string.ascii_letters + string.digits) for _ in range(10)
)
rsp_key = "".join(
random.choice(string.ascii_letters + string.digits) for _ in range(10)
)
rqt_key = "".join(random.choice(string.ascii_letters + string.digits) for _ in range(10))
rsp_key = "".join(random.choice(string.ascii_letters + string.digits) for _ in range(10))

lib = self.gethprestchifhandle()

Expand Down Expand Up @@ -613,9 +594,9 @@ def rest_immediate(
else:
try:
self.delete(rsp_key, rsp_namespace)
except Blob2OverrideError as excp:
except Blob2OverrideError:
pass
except HpIloChifPacketExchangeError as excp:
except HpIloChifPacketExchangeError:
pass
except Exception as excp:
raise excp
Expand All @@ -635,10 +616,7 @@ def get_security_state(self):
resp = self._send_receive_raw(data)

errorcode = struct.unpack("<I", bytes(resp[8:12]))[0]
if not (
errorcode == BlobReturnCodes.SUCCESS
or errorcode == BlobReturnCodes.NOTMODIFIED
):
if not (errorcode == BlobReturnCodes.SUCCESS or errorcode == BlobReturnCodes.NOTMODIFIED):
raise HpIloError(errorcode)

try:
Expand All @@ -663,10 +641,7 @@ def mount_blackbox(self):
resp = self._send_receive_raw(data)

errorcode = resp[12]
if not (
errorcode == BlobReturnCodes.SUCCESS
or errorcode == BlobReturnCodes.NOTMODIFIED
):
if not (errorcode == BlobReturnCodes.SUCCESS or errorcode == BlobReturnCodes.NOTMODIFIED):
raise HpIloError(errorcode)

self.unloadchifhandle(lib)
Expand All @@ -686,10 +661,7 @@ def absaroka_media_mount(self):
resp = self._send_receive_raw(data)

errorcode = resp[12]
if not (
errorcode == BlobReturnCodes.SUCCESS
or errorcode == BlobReturnCodes.NOTMODIFIED
):
if not (errorcode == BlobReturnCodes.SUCCESS or errorcode == BlobReturnCodes.NOTMODIFIED):
raise HpIloError(errorcode)

self.unloadchifhandle(lib)
Expand All @@ -709,10 +681,7 @@ def gaius_media_mount(self):
resp = self._send_receive_raw(data)

errorcode = resp[12]
if not (
errorcode == BlobReturnCodes.SUCCESS
or errorcode == BlobReturnCodes.NOTMODIFIED
):
if not (errorcode == BlobReturnCodes.SUCCESS or errorcode == BlobReturnCodes.NOTMODIFIED):
raise HpIloError(errorcode)

self.unloadchifhandle(lib)
Expand All @@ -732,10 +701,7 @@ def vid_media_mount(self):
resp = self._send_receive_raw(data)

errorcode = resp[12]
if not (
errorcode == BlobReturnCodes.SUCCESS
or errorcode == BlobReturnCodes.NOTMODIFIED
):
if not (errorcode == BlobReturnCodes.SUCCESS or errorcode == BlobReturnCodes.NOTMODIFIED):
raise HpIloError(errorcode)

self.unloadchifhandle(lib)
Expand All @@ -755,10 +721,7 @@ def mountflat(self):
resp = self._send_receive_raw(data)

errorcode = resp[12]
if not (
errorcode == BlobReturnCodes.SUCCESS
or errorcode == BlobReturnCodes.NOTMODIFIED
):
if not (errorcode == BlobReturnCodes.SUCCESS or errorcode == BlobReturnCodes.NOTMODIFIED):
raise HpIloError(errorcode)

self.unloadchifhandle(lib)
Expand All @@ -778,10 +741,7 @@ def media_unmount(self):
resp = self._send_receive_raw(data)

errorcode = resp[12]
if not (
errorcode == BlobReturnCodes.SUCCESS
or errorcode == BlobReturnCodes.NOTMODIFIED
):
if not (errorcode == BlobReturnCodes.SUCCESS or errorcode == BlobReturnCodes.NOTMODIFIED):
raise HpIloError(errorcode)

self.unloadchifhandle(lib)
Expand All @@ -801,10 +761,7 @@ def bb_media_unmount(self):
resp = self._send_receive_raw(data)

errorcode = resp[12]
if not (
errorcode == BlobReturnCodes.SUCCESS
or errorcode == BlobReturnCodes.NOTMODIFIED
):
if not (errorcode == BlobReturnCodes.SUCCESS or errorcode == BlobReturnCodes.NOTMODIFIED):
raise HpIloError(errorcode)

self.unloadchifhandle(lib)
Expand All @@ -824,10 +781,7 @@ def vid_media_unmount(self):
resp = self._send_receive_raw(data)

errorcode = resp[12]
if not (
errorcode == BlobReturnCodes.SUCCESS
or errorcode == BlobReturnCodes.NOTMODIFIED
):
if not (errorcode == BlobReturnCodes.SUCCESS or errorcode == BlobReturnCodes.NOTMODIFIED):
raise HpIloError(errorcode)

self.unloadchifhandle(lib)
Expand All @@ -847,10 +801,7 @@ def gaius_media_unmount(self):
resp = self._send_receive_raw(data)

errorcode = resp[12]
if not (
errorcode == BlobReturnCodes.SUCCESS
or errorcode == BlobReturnCodes.NOTMODIFIED
):
if not (errorcode == BlobReturnCodes.SUCCESS or errorcode == BlobReturnCodes.NOTMODIFIED):
raise HpIloError(errorcode)

self.unloadchifhandle(lib)
Expand All @@ -870,10 +821,7 @@ def absr_media_unmount(self):
resp = self._send_receive_raw(data)

errorcode = resp[12]
if not (
errorcode == BlobReturnCodes.SUCCESS
or errorcode == BlobReturnCodes.NOTMODIFIED
):
if not (errorcode == BlobReturnCodes.SUCCESS or errorcode == BlobReturnCodes.NOTMODIFIED):
raise HpIloError(errorcode)

self.unloadchifhandle(lib)
Expand Down Expand Up @@ -914,7 +862,7 @@ def gethprestchifhandle():
excp = None
libhandle = None
if os.name != "nt":
libpath = '/opt/ilorest/lib64/libilorestchif.so'
libpath = "/opt/ilorest/lib64/libilorestchif.so"
if os.path.isfile(libpath):
libhandle = cdll.LoadLibrary(libpath)
if not libhandle:
Expand All @@ -929,10 +877,10 @@ def gethprestchifhandle():
for libname in libnames:
try:
libpath = BlobStore2.checkincurrdirectory(libname)
#LOGGER.debug("Loading Library %s for libhpsrv", libpath)
# LOGGER.debug("Loading Library %s for libhpsrv", libpath)
libhandle = cdll.LoadLibrary(libpath)
if libhandle:
#LOGGER.debug("Got Libhandle %s for libhpsrv", libhandle)
# LOGGER.debug("Got Libhandle %s for libhpsrv", libhandle)
break
except Exception as exp:
excp = exp
Expand Down Expand Up @@ -964,7 +912,7 @@ def initializecreds(username=None, password=None):
dll = BlobStore2.gethprestchifhandle()
if LOGGER.isEnabledFor(logging.DEBUG):
dll.enabledebugoutput()
#LOGGER.debug("Calling ChifInitialize...")
# LOGGER.debug("Calling ChifInitialize...")
dll.ChifInitialize(None)
if username:
if not password:
Expand All @@ -976,27 +924,26 @@ def initializecreds(username=None, password=None):
usernew = create_string_buffer(username.encode("utf-8"))
passnew = create_string_buffer(password.encode("utf-8"))

#LOGGER.debug("Calling initiate_credentials...")
# LOGGER.debug("Calling initiate_credentials...")
dll.initiate_credentials(usernew, passnew)
#LOGGER.debug("Calling ChifVerifyCredentials...")
# LOGGER.debug("Calling ChifVerifyCredentials...")
credreturn = dll.ChifVerifyCredentials()
if not credreturn == BlobReturnCodes.SUCCESS:
if credreturn == hpiloreturncodes.CHIFERR_AccessDenied:
raise Blob2SecurityError()
else:
raise HpIloInitialError(
"Error %s occurred while trying "
"to open a channel to iLO" % credreturn
"Error %s occurred while trying " "to open a channel to iLO" % credreturn
)
else:
dll.ChifDisableSecurity()
else:
# if high security return False
#LOGGER.debug("Calling ChifIsSecurityRequired...")
# LOGGER.debug("Calling ChifIsSecurityRequired...")
if dll.ChifIsSecurityRequired() > 0:
return False
else:
#LOGGER.debug("Calling ChifDisableSecurity...")
# LOGGER.debug("Calling ChifDisableSecurity...")
dll.ChifDisableSecurity()

BlobStore2.unloadchifhandle(dll)
Expand All @@ -1016,11 +963,7 @@ def checkincurrdirectory(libname):
libpath = os.path.join(os.getcwd(), libpath)
elif os.environ.get("LD_LIBRARY_PATH"):
paths = os.getenv("LD_LIBRARY_PATH", libpath).split(";")
libpath = [
os.path.join(pat, libname)
for pat in paths
if os.path.isfile(os.path.join(pat, libname))
]
libpath = [os.path.join(pat, libname) for pat in paths if os.path.isfile(os.path.join(pat, libname))]
libpath = libpath[0] if libpath else libname

return libpath
Expand Down
Loading

0 comments on commit 2b690f6

Please sign in to comment.