# sushy.resources.system.storage package

## Submodules

## sushy.resources.system.storage.constants module

class sushy.resources.system.storage.constants.RAIDType(*values)

  Bases: `Enum`

  NONE = 'None'

    A placement policy with no redundancy at the device level.

  RAID0 = 'RAID0'

    A placement policy where consecutive logical blocks of data are uniformly distributed across a set of independent storage devices without offering any form of redundancy.

  RAID00 = 'RAID00'

    A placement policy that creates a RAID 0 stripe set over two or more RAID 0 sets.

  RAID01 = 'RAID01'

    A data placement policy that creates a mirrored device (RAID 1) over a set of striped devices (RAID 0).

  RAID1 = 'RAID1'

    A placement policy where each logical block of data is stored on more than one independent storage device.

  RAID10 = 'RAID10'

    A placement policy that creates a striped device (RAID 0) over a set of mirrored devices (RAID 1).

  RAID10E = 'RAID10E'

    A placement policy that uses a RAID 0 stripe set over two or more RAID 10 sets.

  RAID10_TRIPLE = 'RAID10Triple'

    A placement policy that uses a striped device (RAID 0) over a set of triple mirrored devices (RAID 1Triple).

  RAID1E = 'RAID1E'

    A placement policy that uses a form of mirroring implemented over a set of independent storage devices where logical blocks are duplicated on a pair of independent storage devices so that data is uniformly distributed across the storage devices.

  RAID1_TRIPLE = 'RAID1Triple'

    A placement policy where each logical block of data is mirrored three times across a set of three independent storage devices.

  RAID3 = 'RAID3'

    A placement policy using parity-based protection where logical bytes of data are uniformly distributed across a set of independent storage devices and where the parity is stored on a dedicated independent storage device.

  RAID4 = 'RAID4'

    A placement policy using parity-based protection where logical blocks of data are uniformly distributed across a set of independent storage devices and where the parity is stored on a dedicated independent storage device.

  RAID5 = 'RAID5'

    A placement policy using parity-based protection for storing stripes of ‘n’ logical blocks of data and one logical block of parity across a set of ‘n+1’ independent storage devices where the parity and data blocks are interleaved across the storage devices.

  RAID50 = 'RAID50'

    A placement policy that uses a RAID 0 stripe set over two or more RAID 5 sets of independent storage devices.

  RAID6 = 'RAID6'

    A placement policy using parity-based protection for storing stripes of ‘n’ logical blocks of data and two logical blocks of independent parity across a set of ‘n+2’ independent storage devices where the parity and data blocks are interleaved across the storage devices.

  RAID60 = 'RAID60'

    A placement policy that uses a RAID 0 stripe set over two or more RAID 6 sets of independent storage devices.

  RAID6TP = 'RAID6TP'

    A placement policy that uses parity-based protection for storing stripes of ‘n’ logical blocks of data and three logical blocks of independent parity across a set of ‘n+3’ independent storage devices where the parity and data blocks are interleaved across the storage devices.

class sushy.resources.system.storage.constants.VolumeInitializeType(*values)

  Bases: `Enum`

  FAST = 'Fast'

    The volume is prepared for use quickly, typically by erasing just the beginning and end of the space so that partitioning can be performed.

  SLOW = 'Slow'

    The volume is prepared for use slowly, typically by completely erasing the volume.

class sushy.resources.system.storage.constants.VolumeType(*values)

  Bases: `Enum`

  MIRRORED = 'Mirrored'

    The volume is a mirrored device.

  NON_REDUNDANT = 'NonRedundant'

    The volume is a non-redundant storage device.

  RAW_DEVICE = 'RawDevice'

    The volume is a raw physical device without any RAID or other virtualization applied.

  SPANNED_MIRRORS = 'SpannedMirrors'

    The volume is a spanned set of mirrored devices.

  SPANNED_STRIPES_WITH_PARITY = 'SpannedStripesWithParity'

    The volume is a spanned set of devices which uses parity to retain redundant information.

  STRIPED_WITH_PARITY = 'StripedWithParity'

    The volume is a device which uses parity to retain redundant information.

## sushy.resources.system.storage.controller module

class sushy.resources.system.storage.controller.ControllerCollection(connector, path, redfish_version=None, registries=None, root=None)

  Bases: `ResourceCollectionBase`

  property summary

    Summary of storage controllers

    Returns:

      dictionary of controller id-s and their status in format

        {'RAID.Integrated.1-1': {'Health': sushy.Health.OK,
                                 'State': sushy.State.ENABLED}}

class sushy.resources.system.storage.controller.StorageController(connector, path='', redfish_version=None, registries=None, reader=None, json_doc=None, root=None)

  Bases: `ResourceBase`

  Storage controller

  controller_protocols = <sushy.resources.base.MappedListField object>

    The protocols by which this storage controller can be communicated to

  device_protocols = <sushy.resources.base.MappedListField object>

    The protocols that can be used to communicate with attached devices

  identifiers = <sushy.resources.common.IdentifiersListField object>

    The Durable names for the storage controller.

  identity = <sushy.resources.base.Field object>

    The storage controller identity

  name = <sushy.resources.base.Field object>

    The name of the storage controller

  property pending_settings

    Pending Storage Controller settings resource

  raid_types = <sushy.resources.base.MappedListField object>

    The set of RAID types supported by the storage controller.

  speed_gbps = <sushy.resources.base.Field object>

    The maximum speed of the storage controller’s device interface.

  status = <sushy.resources.common.StatusField object>

    Describes the status and health of the resource and its children.

  property supported_apply_times

    List of supported BIOS update apply times

    Returns:

      List of supported update apply time names

  update(payload, apply_time=None, maint_window_start_time=None, maint_window_duration=None)

    Updates writable properties

    Supports updating properties that require reboot.

    Parameters:

      - payload – dictionary with properties to update

      - apply_time – When to update the attributes. Optional. A `sushy.ApplyTime` value.

      - maint_window_start_time – The start time of a maintenance window, datetime. Required when updating during maintenance window and default maintenance window not set by the system.

      - maint_window_duration – Duration of maintenance time since maintenance window start time in seconds. Required when updating during maintenance window and default maintenance window not set by the system.

    Returns:

      TaskMonitor if async task or None

## sushy.resources.system.storage.drive module

class sushy.resources.system.storage.drive.Drive(connector, path='', redfish_version=None, registries=None, reader=None, json_doc=None, root=None)

  Bases: `ResourceBase`

  This class represents a disk drive or other physical storage medium.

  block_size_bytes = <sushy.resources.base.Field object>

    The size of the smallest addressable unit of this drive in bytes

  capacity_bytes = <sushy.resources.base.Field object>

    The size in bytes of this Drive

  identifiers = <sushy.resources.common.IdentifiersListField object>

    The Durable names for the drive

  identity = <sushy.resources.base.Field object>

    The Drive identity string

  indicator_led = <sushy.resources.base.MappedField object>

    Whether the indicator LED is lit or off

  manufacturer = <sushy.resources.base.Field object>

    This is the manufacturer of this drive

  media_type = <sushy.resources.base.Field object>

    The type of media contained in this drive

  model = <sushy.resources.base.Field object>

    This is the model number for the drive

  name = <sushy.resources.base.Field object>

    The name of the resource

  part_number = <sushy.resources.base.Field object>

    The part number for this drive

  protocol = <sushy.resources.base.MappedField object>

    Protocol this drive is using to communicate to the storage controller

  revision = <sushy.resources.base.Field object>

    The firmware/hardware version of the drive.

  serial_number = <sushy.resources.base.Field object>

    The serial number for this drive

  set_indicator_led(state)

    Set IndicatorLED to the given state.

    Parameters:

      state – Desired LED state, an IndicatorLED value.

    Raises:

      InvalidParameterValueError, if any information passed is invalid.

  status = <sushy.resources.common.StatusField object>

    This type describes the status and health of the drive

  property volumes

    A list of volumes that this drive is part of.

    Volumes that this drive either wholly or only partially contains.

    Raises:

      MissingAttributeError if ‘@odata.id’ field is missing.

    Returns:

      A list of Volume instances

## sushy.resources.system.storage.storage module

class sushy.resources.system.storage.storage.Storage(connector, path='', redfish_version=None, registries=None, reader=None, json_doc=None, root=None)

  Bases: `ResourceBase`

  This class represents the storage subsystem resources.

  A storage subsystem represents a set of storage controllers (physical or virtual) and the resources such as drives and volumes that can be accessed from that subsystem.

  property controllers

    The storage controllers allocated to this storage subsystem.

    Replaces storage_controllers since Redfish v1.9 to allow storage controllers be their own resource.

  property drives

    Return a list of Drive objects present in the storage resource.

    It is set once when the first time it is queried. On subsequent invocations, it returns a cached list of Drives objects until it is marked stale.

    Returns:

      A list of Drive objects

    Raises:

      ResourceNotFoundError

  drives_identities = <sushy.resources.base.Field object>

    A tuple with the drive identities

  property drives_max_size_bytes

    Max size available in bytes among all Drives of this collection.

  property drives_sizes_bytes

    Sizes of all Drives in bytes in Storage resource.

    Returns the list of cached values until it (or its parent resource) is refreshed.

  get_drive(drive_identity)

    Given the drive identity return a `Drive` object

    Parameters:

      drive_identity – The identity of the `Drive`

    Returns:

      The `Drive` object

    Raises:

      ResourceNotFoundError

  identity = <sushy.resources.base.Field object>

    The Storage identity string

  name = <sushy.resources.base.Field object>

    The name of the resource

  status = <sushy.resources.common.StatusField object>

    Describes the status and health of the resource and its children.

  storage_controllers = <sushy.resources.system.storage.storage.StorageControllersListField object>

    The storage devices associated with this resource.

    Deprecated since Redfish v1.13 to allow storage controllers be their own resource. Use controllers where available.

  property volumes

    Property to reference VolumeCollection instance

    It is set once when the first time it is queried. On refresh, this property is marked as stale (greedy-refresh not done at that point). Here only the actual refresh of the sub-resource happens, if resource is stale.

class sushy.resources.system.storage.storage.StorageCollection(connector, path, redfish_version=None, registries=None, root=None)

  Bases: `ResourceCollectionBase`

  This class represents the collection of Storage resources

  property drives_sizes_bytes

    Sizes of each Drive in bytes in Storage collection resource.

    Returns the list of cached values until it (or its parent resource) is refreshed.

  get_members()

    Return Storage objects with expanded JSON data when available.

  property max_drive_size_bytes

    Max size available (in bytes) among all Drive resources.

    Returns the cached value until it (or its parent resource) is refreshed.

  property max_volume_size_bytes

    Max size available (in bytes) among all Volume resources.

    Returns the cached value until it (or its parent resource) is refreshed.

  property volumes_sizes_bytes

    Sizes of each Volume in bytes in Storage collection resource.

    Returns the list of cached values until it (or its parent resource) is refreshed.

class sushy.resources.system.storage.storage.StorageControllersListField(*args, **kwargs)

  Bases: `ListField`

  The set of storage controllers represented by this resource.

  controller_protocols = <sushy.resources.base.MappedListField object>

    The protocols by which this storage controller can be communicated to

  device_protocols = <sushy.resources.base.MappedListField object>

    The protocols which the controller can use tocommunicate with devices

  identifiers = <sushy.resources.common.IdentifiersListField object>

    The Durable names for the storage controller.

  member_id = <sushy.resources.base.Field object>

    Uniquely identifies the member within the collection.

  name = <sushy.resources.base.Field object>

    The name of the storage controller

  raid_types = <sushy.resources.base.MappedListField object>

    The set of RAID types supported by the storage controller.

  speed_gbps = <sushy.resources.base.Field object>

    The maximum speed of the storage controller’s device interface.

  status = <sushy.resources.common.StatusField object>

    Describes the status and health of the resource and its children.

## sushy.resources.system.storage.volume module

class sushy.resources.system.storage.volume.ActionsField(*args, **kwargs)

  Bases: `CompositeField`

  initialize = <sushy.resources.common.InitializeActionField object>

class sushy.resources.system.storage.volume.Volume(connector, path='', redfish_version=None, registries=None, reader=None, json_doc=None, root=None)

  Bases: `ResourceBase`

  This class adds the Storage Volume resource

  block_size_bytes = <sushy.resources.base.Field object>

    The size of the smallest addressable unit of this volume in bytes.

  capacity_bytes = <sushy.resources.base.Field object>

    The size in bytes of this Volume.

  delete(payload=None, apply_time=None, timeout=500)

    Delete the volume.

    Parameters:

      - payload – May contain @Redfish.OperationApplyTime property

      - apply_time – When to update the attributes. Optional. An `sushy.ApplyTime` value.

      - timeout – Max time in seconds to wait for blocking async call.

    Raises:

      ConnectionError

    Raises:

      HTTPError

    Returns:

      TaskMonitor if async task or None if successful deletion

  encrypted = <sushy.resources.base.Field object>

    Is this Volume encrypted.

  get_allowed_initialize_volume_values()

    Get the allowed values for initializing the volume.

    Returns:

      A set with the allowed values.

  identifiers = <sushy.resources.common.IdentifiersListField object>

    The Durable names for the volume.

  identity = <sushy.resources.base.Field object>

    The Volume identity string

  initialize(value=VolumeInitializeType.FAST, apply_time=None, timeout=500)

    Initialize the volume.

    Parameters:

      - value – The InitializeType value.

      - apply_time – When to update the attributes. Optional. An `sushy.ApplyTime` value.

      - timeout – Max time in seconds to wait for blocking async call.

    Raises:

      InvalidParameterValueError, if the target value is not allowed.

    Raises:

      ConnectionError

    Raises:

      HTTPError

    Returns:

      TaskMonitor if async task or None if successful init

  name = <sushy.resources.base.Field object>

    The name of the resource

  operation_apply_time_support = <sushy.resources.common.OperationApplyTimeSupportField object>

    Indicates if a client is allowed to request for a specific apply time of a create, delete, or action operation of a given resource

  raid_type = <sushy.resources.base.MappedField object>

    The RAID type of this volume.

  volume_type = <sushy.resources.base.MappedField object>

    The type of this volume.

class sushy.resources.system.storage.volume.VolumeCollection(connector, path, redfish_version=None, registries=None, root=None)

  Bases: `ResourceCollectionBase`

  This class represents the Storage Volume collection

  create(payload, apply_time=None, timeout=500)

    Create a volume.

    Parameters:

      - payload – The payload representing the new volume to create.

      - apply_time – When to update the attributes. Optional. An `sushy.ApplyTime` value.

      - timeout – Max time in seconds to wait for blocking async call.

    Raises:

      ConnectionError

    Raises:

      HTTPError

    Returns:

      Newly created Volume resource or TaskMonitor if async task

  property max_size_bytes

    Max size available (in bytes) among all Volume resources.

    Returns the cached value until it (or its parent resource) is refreshed.

  property max_volume_size_bytes

    Max size available (in bytes) among all Volume resources.

    Returns the cached value until it (or its parent resource) is refreshed.

  operation_apply_time_support = <sushy.resources.common.OperationApplyTimeSupportField object>

    Indicates if a client is allowed to request for a specific apply time of a create, delete, or action operation of a given resource

  property volumes_sizes_bytes

    Sizes of all Volumes in bytes in VolumeCollection resource.

    Returns the list of cached values until it (or its parent resource) is refreshed.

## Module contents

this page last updated: 2026-08-20 00:30:00

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.