Current Series Release Notes

1.2.0-1

New Features

  • Support for domains utilizing firmware auto-selection has been added to the libvirt driver.

1.1.0

New Features

  • Adds support to handle HttpBootUri being posted to the node, which maps to the virtual media functionality, because there is not a direct analog setting when interacting with libvirt.

  • Adds basic functionality for HttpBootUri to be passed through to the libvirt driver, enabling boot operations utilizing supplied media. This does not influence the default URL to boot from due to a lack of capability in libvirt, but instead treats it similar to virtual media. In this case, an override boot target of UefiHttp is also re-mapped to Cd to facilitate testing.

  • Adds new ironic driver to provide a limited emulated redfish API to ironic nodes. This would be needed in cases where a redfish compatible endpoint is needed but but don’t have direct access to the BMC (you only have access via Ironic) or the BMC doesn’t support redfish.

  • Add a configuration options SUSHY_EMULATOR_FEATURE_SET to define which resources should be available. See the documentation for more details.

  • Exposes the VirtualMedia resource directly on Systems, not just Managers.

1.0.0

New Features

  • It is now possible to enable and disable UEFI Secure Boot mode via Redfish requests for the libvirt driver. This is possible by configuring domains to use a secure boot capable firmware loader, and setting configuration values SUSHY_EMULATOR_SECURE_BOOT_ENABLED_NVRAM and SUSHY_EMULATOR_SECURE_BOOT_DISABLED_NVRAM to nvram template paths which enable or disable secure boot.

    The fake driver supports getting and setting secure boot, the nova driver only supports getting.

Bug Fixes

  • Fixes libvirtError: operation forbidden when setting boot mode

0.21.1

Security Issues

  • Secure information in the Libvirt domain XML document is now preserved. For more information, please see story 2010382.

Bug Fixes

  • Fixes an issue where secure fields were accidentally lost in the Libvirt domain XML document.

0.20.0

Upgrade Notes

  • Sushy-tools does not support Python 3.6 and 3.7 anymore, please use version 3.8 or higher.

0.19.0

New Features

  • Adds basic support for custom TLS certificates with virtual media.

  • Adds a fake system driver (activated using the --fake argument) that does not have an actual backend and works by storing all values in the cache.

    It is currently functional enough for the Ironic’s ramdisk deploy (and undeploy) to finish successfully.

Bug Fixes

  • Allow non-string types to be configured for BIOS settings.

0.18.2

Bug Fixes

  • Fixes configuring the emulator via environment parameters when main is not invoked (e.g. when using WSGI).

0.18.1

Bug Fixes

  • Fixes authentication when the configuration is provided via the --config option (as opposed to the environment).

0.18.0

New Features

  • Supports HTTP basic authentication of Redfish endpoints. Set the new SUSHY_EMULATOR_AUTH_FILE variable to the path of an htpasswd file.

  • Supports reading and changing VerifyCertificate in VirtualMedia resources.

  • The emulator now supports providing UserName and Password for virtual media.

Upgrade Notes

  • The default value of SUSHY_EMULATOR_VMEDIA_VERIFY_SSL has been changed to False to match the actual bare metal hardware.

Bug Fixes

  • Fixes a bug in the handler for Bios/BiosRegistry - it should not include identity in order to match the url returned from bios_attribute_registry_file.json and be consistent with actual vendor responses.

  • Returns the correct status code (404) when a URL is not found.

  • Fixes handling HTTP errors on downloading virtual media files. Error codes are no longer silently ignored.

0.17.0

New Features

  • Adds support for returning message and attribute (particularly BIOS attribute) registries. Also adds two additional BIOS settings - ‘SecureBootStatus’ and ‘SerialNumber’. ‘SecureBootStatus’ has ‘ReadOnly’ set to true and ‘SecureBootStatus’ has ‘IsSystemUniqueProperty’ in the registry.

0.14.0

New Features

  • Adds basic support for Redfish Processor schema.

Bug Fixes

  • Fixes incorrect device name and bus when attaching a virtual floppy.

0.13.0

New Features

  • Adds an option –debug to enable debug mode when running sushy-emulator.

0.12.1

Bug Fixes

  • Adds the Volumes navigation property to the Storage emulator template.

  • No longer tries to use IDE controllers on q35 machines.

0.11.0

New Features

  • Adds basic support for virtual media devices on non-IDE buses, such as SATA and SCSI, as IDE devices are not supported on Q35 libvirt domains.

0.10.0

Known Issues

  • Reads hardware state from libvirt domain XML

    Now reads boot device/mode/image from domain XML on filesystem rather then the running VM, thus avoiding the need for a reboot after setting something. The client should now power cycle the instance if the changes are required in the running VM. note: not simply a soft reboot.

0.8.0

Upgrade Notes

  • Python 2.7 support has been dropped. Last release of sushy-tools to support Python 2.7 is OpenStack Train. The minimum version of Python now supported by sushy-tools is Python 3.6.

Bug Fixes

  • Fixes one of the allowed values for BootSourceOverrideMode element - Redfish specification requires UEFI boot mode to be indicated as UEFI, not Uefi as the dynamic Redfish emulator erroneously adopted.

  • Fixes occasional failure when setting boot image to libvirt domain in response to virtual media “Insert” operation.

  • Fixes potential failure on reading/setting boot device of libvirt domain. Prior to this fix, boot device has only been respected in the boot loader part of libvirt domain XML. However per-device boot configuration can also be used. If the latter way is in place in a libvirt domain, reading boot device would yield nothing, while setting it in the boot loader would fail. This fix respects both ways of configuring libvirt boot device preferring the per-device configuration when setting new boot device.

  • Brings libvirt domain down prior to any change. When Redfish emulator is running against libvirt virtualization backend, any changes being done to domain are not applied for as long as the domain is up. This leads to two nuisances:

    • REST API is not really REST-ful meaning that successfully applied change is not reflected in the document tree

    • Multiple changes done to live domain XML tree may override one another because N-1 change done to a domain is not visible to N’s change

    The fix is to bring running domain down briefly while the change is applied.

  • Fixes situation when changing boot image could invalidate current boot device selection. The fix is to note current libvirt boot device and restore it if the image being changed resides on the active boot device.

  • Fixes defaults to storage and drive resources. Prior to this fix, if storage and/or drive resource emulation is not set up via sushy emulator configuration, the clients trying to read either of these resources would hit hard HTTP 500 response.

0.7.0

New Features

  • Adds Chassis resource emulation to dynamic Redfish emulator. All emulated Computer Systems and Managers get linked up to the first of the configured Chassis (just one by default).

  • Adds Drive resource support to the dynamic Redfish emulator based on static user configuration.

  • Adds generic Indicator LED resource emulation based on static user configuration. Adds IndicatorLED property to Chassis and System resources.

  • Adds Managers resource emulation to dynamic Redfish emulator. Emulated Computer Systems link up automatically to the first of the configured Managers (just one by default).

  • Adds emulation support for Simple Storage resource to libvirt virtualization backend of the dynamic Redfish emulator. The emulation functionality assumes that the storage devices attached to a VM are configured as a libvirt Volume via a storage pool. Devices not configured as a Volume will not be considered for emulation purposes.

  • Adds Storage and Storage Controllers resource support to the dynamic Redfish emulator based on static user configuration.

  • Adds basic Thermal resource emulation under Chassis resource. The Thermal resource is not user-configurable, its contents is mostly static and depends on Jinja2 template. All references between resources are dynamically rendered though.

  • Adds Virtual Media resource.

    As of this release, user can configure a collection of virtual media devices including their types, names and other properties. By default, cdrom and floppy devices are configured.

    Each Manager automatically gets its own instance of the above mentioned virtual media device collection. HTTP/S-hosted images can be inserted into and ejected from virtual media devices.

    If libvirt virtualization backend is being used, once ISO image is inserted into the respective Manager, any System under that Manager can boot from that image by booting from its local cdrom over UEFI.

    The ISO images must be UEFI-bootable or hybrid.

  • Adds Volume resource emulation support.

    As of this release, a user can configure a collection of Volumes including the VolumeType and Capacity. The configured volumes will appear as libvirt volumes in the libvirt virtualization backend of the dynamic Redfish emulator (provided the libvirt pool specified for the volume exists).

    Volume creation via POST request is also supported.

    In case the Openstack backend is used, the NotSupportedError is raised.

Bug Fixes

  • Fixes Flask config file load as pointed by the SUSHY_EMULATOR_CONFIG environment variable when running under WSGI server. Before this fix, the above mentioned environment variable was ignored and user config file not loaded.

0.6.0

Bug Fixes

  • Fixes libvirt domains listing so that both active and inactive domains are rendered as available Systems resource. Before this fix, only inactive domains were listed.

  • Changed HTTP redirect code from 302 to 307 to ensure the original HTTP method is left intact. Otherwise some clients may change PUT/POST to GET on redirect and effectively fail to perform the change they intended.