sushy.resources package

Subpackages

Submodules

sushy.resources.base module

class sushy.resources.base.AbstractDataReader

Bases: object

abstract get_data()

Based on data source get data and parse to JSON

set_connection(connector, path)

Sets mandatory connection parameters

Parameters
  • connector – A Connector instance

  • path – path of the resource

class sushy.resources.base.CompositeField(*args, **kwargs)

Bases: collections.abc.Mapping, sushy.resources.base.Field

Base class for fields consisting of several sub-fields.

class sushy.resources.base.DictionaryField(*args, **kwargs)

Bases: sushy.resources.base.Field

Base class for fields consisting of dictionary of several sub-fields.

class sushy.resources.base.Field(path, required=False, default=None, adapter=<function Field.<lambda>>)

Bases: object

Definition for fields fetched from JSON.

class sushy.resources.base.FieldData(status_code, headers, json_doc)

Bases: object

Contains data to be used when constructing Fields

property headers

The headers

property json_doc

The parsed JSON body

property status_code

The status code

class sushy.resources.base.JsonArchiveReader(archive_file)

Bases: sushy.resources.base.AbstractDataReader

Gets the data from JSON file in archive

get_data()

Gets JSON file from archive. Currently supporting ZIP only

class sushy.resources.base.JsonDataReader

Bases: sushy.resources.base.AbstractDataReader

Gets the data from HTTP response given by path

get_data()

Gets JSON file from URI directly

class sushy.resources.base.JsonPackagedFileReader(resource_package_name)

Bases: sushy.resources.base.AbstractDataReader

Gets the data from packaged file given by path

get_data()

Gets JSON file from packaged file denoted by path

class sushy.resources.base.JsonPublicFileReader

Bases: sushy.resources.base.AbstractDataReader

Loads the data from the Internet

get_data()

Get JSON file from full URI

class sushy.resources.base.LinksField(*args, **kwargs)

Bases: sushy.resources.base.CompositeField

Reference to linked resources.

oem_vendors = <sushy.resources.base.Field object>
class sushy.resources.base.ListField(*args, **kwargs)

Bases: sushy.resources.base.Field

Base class for fields consisting of a list of several sub-fields.

class sushy.resources.base.MappedField(field, mapping, required=False, default=None)

Bases: sushy.resources.base.Field

Field taking real value from a mapping.

class sushy.resources.base.MappedListField(field, mapping, required=False, default=None)

Bases: sushy.resources.base.Field

Field taking a list of values with a mapping for the values

Given JSON {‘field’:[‘xxx’, ‘yyy’]}, a sushy resource definition and mapping {‘xxx’:’a’, ‘yyy’:’b’}, the sushy object to come out will be like resource.field = [‘a’, ‘b’]

class sushy.resources.base.MessageListField(*args, **kwargs)

Bases: sushy.resources.base.ListField

List of messages with details of settings update status

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

Human readable message, if provided

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

List of message substitution arguments for the message referenced by message_id from the message registry

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

The key for this message which can be used to look up the message in a message registry

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

Used to provide suggestions on how to resolve the situation that caused the error

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

Severity of the error

class sushy.resources.base.MutableResourceCollectionBase(connector, path, redfish_version=None, registries=None, root=None)

Bases: sushy.resources.base.ResourceCollectionBase

delete_member(identity)

Delete the given member of the collection.

class sushy.resources.base.ResourceBase(connector, path='', redfish_version=None, registries=None, reader=None, json_doc=None, root=None)

Bases: object

clone_resource(new_resource, path='')

Instantiate given resource using existing BMC connection context

get_oem_extension(vendor)

Get the OEM extension instance for this resource by OEM vendor

Parameters

vendor – the OEM vendor string which is the vendor-specific extensibility identifier. Examples are ‘Contoso’, ‘Hpe’. Possible value can be got from oem_vendors attribute.

Returns

the Redfish resource OEM extension instance.

Raises

OEMExtensionNotFoundError

invalidate(force_refresh=False)

Mark the resource as stale, prompting refresh() before getting used.

If force_refresh is set to True, then it invokes refresh() on the resource.

Parameters

force_refresh – will invoke refresh on the resource, if set to True.

Raises

ResourceNotFoundError

Raises

ConnectionError

Raises

HTTPError

property json
property oem_vendors
property path
redfish_version = None

The Redfish version

refresh(force=True, json_doc=None)

Refresh the resource

Freshly retrieves/fetches the resource attributes and invokes _parse_attributes() method on successful retrieval. It is recommended not to override this method in concrete ResourceBase classes. Resource classes can place their refresh specific operations in _do_refresh() method, if needed. This method represents the template method in the paradigm of Template design pattern.

Parameters
  • force – if set to False, will only refresh if the resource is marked as stale, otherwise neither it nor its subresources will be refreshed.

  • json_doc – parsed JSON document in form of Python types.

Raises

ResourceNotFoundError

Raises

ConnectionError

Raises

HTTPError

property registries
property resource_name
property root
class sushy.resources.base.ResourceCollectionBase(connector, path, redfish_version=None, registries=None, root=None)

Bases: sushy.resources.base.ResourceLinksBase

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

A tuple with the members identities

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

The name of the collection

class sushy.resources.base.ResourceLinksBase(connector, path, redfish_version=None, registries=None, root=None)

Bases: sushy.resources.base.ResourceBase

get_member(identity)

Given the identity return a _resource_type object

Parameters

identity – The identity of the _resource_type

Returns

The _resource_type object

Raises

ResourceNotFoundError

get_members()

Return a list of _resource_type objects present in collection

Returns

A list of _resource_type objects

abstract property members_identities

A sequence with members identities

sushy.resources.base.get_reader(connector, path, reader=None)

Create and configure the reader.

Parameters
  • connector – A Connector instance

  • path – sub-URI path to the resource.

  • reader – Reader to use to fetch JSON data.

Returns

the reader

sushy.resources.common module

class sushy.resources.common.ActionField(*args, **kwargs)

Bases: sushy.resources.base.CompositeField

operation_apply_time_support = <sushy.resources.common.OperationApplyTimeSupportField object>
target_uri = <sushy.resources.base.Field object>
class sushy.resources.common.IdRefField(*args, **kwargs)

Bases: sushy.resources.base.CompositeField

Reference to the resource odata identity field.

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

The unique identifier for a resource

class sushy.resources.common.IdentifiersListField(*args, **kwargs)

Bases: sushy.resources.base.ListField

This type describes any additional identifiers for a resource.

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

This indicates the world wide, persistent name of the resource.

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

This represents the format of the DurableName property.

class sushy.resources.common.InitializeActionField(*args, **kwargs)

Bases: sushy.resources.common.ActionField

allowed_values = <sushy.resources.base.Field object>
class sushy.resources.common.OperationApplyTimeSupportField

Bases: sushy.resources.base.CompositeField

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

The expiry time of maintenance window in seconds

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

The start time of a maintenance window

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

The types of apply times that the client is allowed request when performing a create, delete, or action operation returned as a mapped list

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

The types of apply times that the client is allowed request when performing a create, delete, or action operation returned as an unmapped list

Deprecated: Use mapped_supported_values.

class sushy.resources.common.ResetActionField(*args, **kwargs)

Bases: sushy.resources.common.ActionField

allowed_values = <sushy.resources.base.Field object>
class sushy.resources.common.StatusField(*args, **kwargs)

Bases: sushy.resources.base.CompositeField

This Field describes the status of a resource and its children.

This field shall contain any state or health properties of a resource.

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

Represents health of resource w/o considering its dependent resources

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

Represents health state of resource and its dependent resources

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

Indicates the known state of the resource, such as if it is enabled.

sushy.resources.constants module

class sushy.resources.constants.ApplyTime(value)

Bases: enum.Enum

Apply time constants

AT_MAINTENANCE_WINDOW_START = 'AtMaintenanceWindowStart'

Apply during a maintenance window as specified by an administrator.

IMMEDIATE = 'Immediate'

Apply immediately.

IN_MAINTENANCE_WINDOW_ON_RESET = 'InMaintenanceWindowOnReset'

Apply after a reset but within maintenance window as specified by an administrator.

ON_RESET = 'OnReset'

Apply on a reset.

class sushy.resources.constants.DurableNameFormat(value)

Bases: enum.Enum

Durable name format constants

EUI = 'EUI'

The IEEE-defined 64-bit Extended Unique Identifier (EUI).

FC_WWN = 'FC_WWN'

The Fibre Channel (FC) World Wide Name (WWN).

NAA = 'NAA'

The Name Address Authority (NAA) format.

NGUID = 'NGUID'

The Namespace Globally Unique Identifier (NGUID).

NQN = 'NQN'

The NVMe Qualified Name (NQN).

NSID = 'NSID'

The NVM Namespace Identifier (NSID).

UUID = 'UUID'

The Universally Unique Identifier (UUID).

iQN = 'iQN'

The iSCSI Qualified Name (iQN).

class sushy.resources.constants.Health(value)

Bases: enum.Enum

Health related constants.

CRITICAL = 'Critical'

A critical condition requires immediate attention.

OK = 'OK'

Normal.

WARNING = 'Warning'

A condition requires attention.

class sushy.resources.constants.IndicatorLED(value)

Bases: enum.Enum

Indicator LED Constants

BLINKING = 'Blinking'

The Indicator LED is blinking

LIT = 'Lit'

The Indicator LED is lit

OFF = 'Off'

The Indicator LED is off

UNKNOWN = 'Unknown'

The state of the Indicator LED cannot be determine

class sushy.resources.constants.PowerState(value)

Bases: enum.Enum

System PowerState constants

OFF = 'Off'

The resource is powered off, although some components may continue to have AUX power such as management controller

ON = 'On'

The resource is powered on

PAUSED = 'Paused'

The resource is paused.

POWERING_OFF = 'PoweringOff'

A temporary state between On and Off. The power off action can take time while the OS is in the shutdown process

POWERING_ON = 'PoweringOn'

A temporary state between Off and On. This temporary state can be very short

class sushy.resources.constants.Protocol(value)

Bases: enum.Enum

Protocol type constants

AHCI = 'AHCI'

Advanced Host Controller Interface (AHCI).

DISPLAY_PORT = 'DisplayPort'

DisplayPort.

DVI = 'DVI'
ETHERNET = 'Ethernet'

Ethernet.

FC = 'FC'

Fibre Channel.

FCP = 'FCP'

Fibre Channel Protocol for SCSI.

FCoE = 'FCoE'

Fibre Channel over Ethernet (FCoE).

FICON = 'FICON'

FIbre CONnection (FICON).

FTP = 'FTP'

File Transfer Protocol (FTP).

GEN_Z = 'GenZ'

GenZ.

HDMI = 'HDMI'

HDMI.

HTTP = 'HTTP'

Hypertext Transport Protocol (HTTP).

HTTPS = 'HTTPS'

Hypertext Transfer Protocol Secure (HTTPS).

I2C = 'I2C'

Inter-Integrated Circuit Bus.

INFINI_BAND = 'InfiniBand'

InfiniBand.

MULTI_PROTOCOL = 'MultiProtocol'

Multiple Protocols.

NFSv3 = 'NFSv3'

Network File System (NFS) version 3.

NFSv4 = 'NFSv4'

Network File System (NFS) version 4.

NVLink.

NVMe = 'NVMe'

Non-Volatile Memory Express (NVMe).

NVMe_OVER_FABRICS = 'NVMeOverFabrics'

NVMe over Fabrics.

OEM = 'OEM'

OEM-specific.

PCIe = 'PCIe'

PCI Express.

RoCE = 'RoCE'

RDMA over Converged Ethernet Protocol.

RoCEv2 = 'RoCEv2'

RDMA over Converged Ethernet Protocol Version 2.

SAS = 'SAS'

Serial Attached SCSI.

SATA = 'SATA'

Serial AT Attachment.

SFTP = 'SFTP'

SSH File Transfer Protocol (SFTP).

SMB = 'SMB'

Server Message Block (SMB). Also known as the Common Internet File System (CIFS).

TCP = 'TCP'

Transmission Control Protocol (TCP).

TFTP = 'TFTP'

Trivial File Transfer Protocol (TFTP).

UDP = 'UDP'

User Datagram Protocol (UDP).

UHCI = 'UHCI'

Universal Host Controller Interface (UHCI).

USB = 'USB'

Universal Serial Bus (USB).

VGA = 'VGA'

VGA.

iSCSI = 'iSCSI'

Internet SCSI.

iWARP = 'iWARP'

Internet Wide Area RDMA Protocol (iWARP).

class sushy.resources.constants.ResetType(value)

Bases: enum.Enum

Reset action constants

FORCE_OFF = 'ForceOff'

Turn off the unit immediately (non-graceful shutdown).

FORCE_ON = 'ForceOn'

Turn on the unit immediately.

FORCE_RESTART = 'ForceRestart'

Shut down immediately and non-gracefully and restart the system.

GRACEFUL_RESTART = 'GracefulRestart'

Shut down gracefully and restart the system.

GRACEFUL_SHUTDOWN = 'GracefulShutdown'

Shut down gracefully and power off.

NMI = 'Nmi'

Generate a diagnostic interrupt, which is usually an NMI on x86 systems, to stop normal operations, complete diagnostic actions, and, typically, halt the system.

ON = 'On'

Turn on the unit.

PAUSE = 'Pause'

Pause execution on the unit but do not remove power. This is typically a feature of virtual machine hypervisors.

POWER_CYCLE = 'PowerCycle'

Power cycle the unit. Behaves like a full power removal, followed by a power restore to the resource.

PUSH_POWER_BUTTON = 'PushPowerButton'

Simulate the pressing of the physical power button on this unit.

RESUME = 'Resume'

Resume execution on the paused unit. This is typically a feature of virtual machine hypervisors.

SUSPEND = 'Suspend'

Write the state of the unit to disk before powering off. This allows for the state to be restored when powered back on.

sushy.resources.constants.Severity

alias of sushy.resources.constants.Health

class sushy.resources.constants.State(value)

Bases: enum.Enum

State related constants.

ABSENT = 'Absent'

This function or resource is either not present or detected.

DEFERRING = 'Deferring'

The element does not process any commands but queues new requests.

DISABLED = 'Disabled'

This function or resource is disabled.

ENABLED = 'Enabled'

This function or resource is enabled.

IN_TEST = 'InTest'

This function or resource is undergoing testing, or is in the process of capturing information for debugging.

QUALIFIED = 'Qualified'

The element quality is within the acceptable range of operation.

QUIESCED = 'Quiesced'

The element is enabled but only processes a restricted set of commands.

STANDBY_OFFLINE = 'StandbyOffline'

This function or resource is enabled but awaits an external action to activate it.

STANDBY_SPARE = 'StandbySpare'

This function or resource is part of a redundancy set and awaits a failover or other external action to activate it.

STARTING = 'Starting'

This function or resource is starting.

UNAVAILABLE_OFFLINE = 'UnavailableOffline'

This function or resource is present but cannot be used.

UPDATING = 'Updating'

The element is updating and might be unavailable or degraded.

sushy.resources.ipaddresses module

class sushy.resources.ipaddresses.AddressState(value)

Bases: enum.Enum

An enumeration.

DEPRECATED = 'Deprecated'

This address is currently within its valid lifetime but is now outside its RFC4862-defined preferred lifetime.

FAILED = 'Failed'

This address has failed Duplicate Address Detection (DAD) testing, as defined in RFC4862, section 5.4, and is not currently in use.

PREFERRED = 'Preferred'

This address is currently within both its RFC4862-defined valid and preferred lifetimes.

TENTATIVE = 'Tentative'

This address is currently undergoing Duplicate Address Detection (DAD) testing, as defined in RFC4862, section 5.4.

class sushy.resources.ipaddresses.IPv4AddressOrigin(value)

Bases: enum.Enum

An enumeration.

BOOTP = 'BOOTP'

A BOOTP service-provided address.

DHCP = 'DHCP'

A DHCPv4 service-provided address.

The address is valid for only this network segment, or link.

STATIC = 'Static'

A user-configured static address.

class sushy.resources.ipaddresses.IPv6AddressOrigin(value)

Bases: enum.Enum

An enumeration.

DHCP = 'DHCPv6'

A DHCPv6 service-provided address.

The address is valid for only this network segment, or link.

SLAAC = 'SLAAC'

A stateless autoconfiguration (SLAAC) service-provided address.

STATIC = 'Static'

A static user-configured address.

sushy.resources.settings module

class sushy.resources.settings.MaintenanceWindowField(*args, **kwargs)

Bases: sushy.resources.base.CompositeField

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

The expiry time of maintenance window in seconds

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

The start time of a maintenance window

sushy.resources.settings.NO_UPDATES = 4

No updates made

class sushy.resources.settings.SettingsApplyTimeField

Bases: sushy.resources.base.CompositeField

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

When the future configuration should be applied

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

The list of allowable ApplyTime values

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

The expiry time of maintenance window in seconds

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

The start time of a maintenance window

class sushy.resources.settings.SettingsField

Bases: sushy.resources.base.CompositeField

The settings of a resource

Represents the future state and configuration of the resource. The field is added to resources that support future state and configuration.

This field includes several properties to help clients monitor when the resource is consumed by the service and determine the results of applying the values, which may or may not have been successful.

commit(connector, value)

Commits new settings values

The new values will be applied when the system or a service restarts.

Parameters
  • connector – A Connector instance

  • value – Value representing JSON whose structure is specific to each resource and the caller must format it correctly

get_status(registries)

Determines the status of last update based

Uses message id-s and severity to determine the status.

Parameters

registries – registries to use to parse message

Returns

SettingsUpdate object containing status and any messages

property maintenance_window

MaintenanceWindow field

Indicates if a given resource has a maintenance window assignment for applying settings or operations

messages = <sushy.resources.base.MessageListField object>

Represents the results of the last time the values of the Settings resource were applied to the server

property operation_apply_time_support

OperationApplyTimeSupport field

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 resource_uri
time = <sushy.resources.base.Field object>

Indicates the time the settings were applied to the server

class sushy.resources.settings.SettingsUpdate(status, messages)

Bases: object

Contains Settings update status and details of the update

property messages

List of MessageListField with messages from the update

property status

The status of the update

sushy.resources.settings.UPDATE_FAILURE = 2

Update encountered errors

sushy.resources.settings.UPDATE_PENDING = 3

Update waiting for being applied

sushy.resources.settings.UPDATE_SUCCESS = 1

Update was successful

sushy.resources.settings.UPDATE_UNKNOWN = 0

Update status unknown

Module contents