├── .coveragerc ├── .gitignore ├── .gitreview ├── .mailmap ├── .pre-commit-config.yaml ├── .stestr.conf ├── CONTRIBUTING.rst ├── HACKING.rst ├── LICENSE ├── README.rst ├── bindep.txt ├── doc ├── requirements.txt └── source │ ├── conf.py │ ├── contributor │ └── index.rst │ ├── index.rst │ ├── install │ └── index.rst │ └── reference │ ├── index.rst │ └── usage.rst ├── pyproject.toml ├── releasenotes ├── notes │ ├── .placeholder │ ├── HttpBootUri-to-settings-6fcbdeed2b4e84df.yaml │ ├── accept-encoding-4646ea43998f80bd.yaml │ ├── action-parameter-missing-7d234b96b5b1d81a.yaml │ ├── add-apply-time-support-to-bios-315ebad429dcab3d.yaml │ ├── add-bios-bf69ac56c4ae8f50.yaml │ ├── add-bios-update-status-cc59816c374b78e4.yaml │ ├── add-chassis-linkage-d8e567f9c791169d.yaml │ ├── add-chassis-support-5b97daffe1c61a2b.yaml │ ├── add-custom-connector-support-0a49c6649d5f7eaf.yaml │ ├── add-default-identity-10c5dd23bed0e915.yaml │ ├── add-drive-led-97b687013fec88c9.yaml │ ├── add-drive-revision-a0c069fff236479d.yaml │ ├── add-drive-volumes-971d80644c3bd1e0.yaml │ ├── add-endpoint-subresource-to-fabric-b03e5fd99ece1bf4.yaml │ ├── add-fabric-support-1520f7fcb0e12539.yaml │ ├── add-http-boot-uri-support-5c25816e13ccdb27.yaml │ ├── add-initial-redfish-oem-extension-support-50c9849bb7b6b25c.yaml │ ├── add-mapped-list-field-04c671f7a73d83f6.yaml │ ├── add-network-adapter-26d01d8d9fb1d7ad.yaml │ ├── add-network-device-function-and-port-e880d8f461e3723d.yaml │ ├── add-odata-version-header-96dc8179c0e2e9bd.yaml │ ├── add-partial-key-match-27bed73d577b1187.yaml │ ├── add-port-e57ec6759ee70bf7.yaml │ ├── add-power-resource-e141ddf298673305.yaml │ ├── add-processor-id-and-status-b81d4c6e6c14c25f.yaml │ ├── add-raid-type-properties-2090da5bea37c660.yaml │ ├── add-read-and-connect-timeout-9f7dc3ed63c192c8.yaml │ ├── add-response-cb-65d448ee2690d0b2.yaml │ ├── add-simple-storage-915464811737bb05.yaml │ ├── add-storage-and-simple-storage-attributes-to-system-16e81f9b15b1897d.yaml │ ├── add-storage-da766d3dbf9fb385.yaml │ ├── add-sushy-root-to-resources-1f221794557aa5fc.yaml │ ├── add-system-bootprogress-42ee452cfa279c63.yaml │ ├── add-system-manager-linkage-86be69c9df4cb359.yaml │ ├── add-system-status-field-41b3f2a8c4b85f38.yaml │ ├── add-system-type-mapping-bf456c5c15a90877.yaml │ ├── add-task-monitor-support-21f711927ad6ec91.yaml │ ├── add-task-service-c751ce51e0b8dc11.yaml │ ├── add-thermal-resource-5c965a3c940f9028.yaml │ ├── add-virtual-media-support-f522fbec4420341c.yaml │ ├── add_composition_service-84750d8d1d96474a.yaml │ ├── add_ethernet_interface-df308f814f0e4bce.yaml │ ├── add_keyword_argument_for_connector-cea5dc4e6c01b548.yaml │ ├── add_product_and_protocol_features_supported-59de3f89b7382434.yaml │ ├── add_update_service-b54c9bb0177e3468.yaml │ ├── allow_empty_context_eventdestination-9a96c34dd7edbeca.yaml │ ├── apply-time-support-for-volume-ops-f2ebc412e3b4290a.yaml │ ├── bios-attribute-registry-a55c2d81c730a795.yaml │ ├── bug-1754514-ca6ebe16c4e4b3b0.yaml │ ├── bug-2111528-f126e9b00c056077.yaml │ ├── catch-general-requests-exceptions-b5fd706597708fb6.yaml │ ├── certificate-collection-acc67488c240274c.yaml │ ├── change-bootdev-smc-ab30317eaf5c37d9.yaml │ ├── change-vmedia-write-protected-attr-586370a552288801.yaml │ ├── check-for-boot-attrs-in-settingsuri-1cad07b6eb1c81b3.yaml │ ├── config-server-side-retries-d16824019bd709a2.yaml │ ├── decouple-boot-params-c75e80f5951abb12.yaml │ ├── deprecate-system-leds-f1a72422c53d281e.yaml │ ├── disable-conn-pooling-3456782afe56ac94.yaml │ ├── do-not-offer-compression-encoding-884ca8a7458cb096.yaml │ ├── drop-py-2-7-cc931c210ce08e33.yaml │ ├── enhance-oem-extension-design-3143717e710b3eaf.yaml │ ├── enhance-storage-volume-drive-support-16314d30f3631fb3.yaml │ ├── enums-3aff03d940012f33.yaml │ ├── ethernet-interfaces-manager-5529326417a38da9.yaml │ ├── event-service-d6607420effc3df8.yaml │ ├── expand-drive-schema-042901f919be646c.yaml │ ├── fix-2008198-bios-factory-reset-400-bad-request-3f4a7a2aada0835b.yaml │ ├── fix-eject-media-empty-dict-573b4c9e06f52ce7.yaml │ ├── fix-exceeding-retries-663ab543cc14f261.yaml │ ├── fix-extended-info-error-handling-73fecb6bf5c852ff.yaml │ ├── fix-insert-media-payload-b5d4c707f81d9603.yaml │ ├── fix-malformed-boot-mode-1ba1117cad8dcc47.yaml │ ├── fix-manager-action-d71fd415cea29aa6.yaml │ ├── fix-missing-etags-ded8c0bb31fafef7.yaml │ ├── fix-oem-loading-52da045252b6c33e.yaml │ ├── fix-refine-resource-refresh-86c21ce230967251.yaml │ ├── fix-required-oem-attribute-parsing-205e4186275aa293.yaml │ ├── fix-retry_volume_operation-on_sys518-009f2b16e5c38a27.yaml │ ├── fix-return-full-weak-etag-04265472cbea9c0e.yaml │ ├── fix-simple-storage-device-capacity-bytes-null-0672eed36d9da70a.yaml │ ├── fix-simple-update-e88838fab4170920.yaml │ ├── fix-software-firmware-inventory-3e0e79e052aa76d9.yaml │ ├── fix-subprocessors-3b619434dba4636d.yaml │ ├── fix-taskmonitor-init-calls-in-volume-module-0f8a747acd0cfe3f.yaml │ ├── fix-to-close-session-on-dealloc-c3687d4dcb1441b8.yaml │ ├── fix-update-service-constants-b8c3f48ccee6ce1f.yaml │ ├── fix-use-headers-for-options-736940b87c06c189.yaml │ ├── fix-virtual-media-fallback-15a559414a65c014.yaml │ ├── fix-volume-actions-not-required-730fd637dd2587ce.yaml │ ├── fix-volume-delete-configuration-unsuported-operational_time_property-f53f650d8612a847.yaml │ ├── fixes-ilo5-redfish-firmware-update-issue-273862b2a11e3536.yaml │ ├── get-retry-9ca311caf8a0b7bb.yaml │ ├── handle-basic-auth-access-errors-393b368b31f5cad2.yaml │ ├── handle_transfer_method-a51d5a17e381ebee.yaml │ ├── health_literals_change-0e3fc0c439b765e3.yaml │ ├── increase-server-retries-5f11edde8ee0b461.yaml │ ├── indicator-led-mappings-e7b34da03f6abb06.yaml │ ├── lazily-load-registries-0e9441e435c2471d.yaml │ ├── make-leds-settable-c82cb513de0171f5.yaml │ ├── make-volume-ops-blocking-de5c2ae032041d5d.yaml │ ├── message-parsing-resilience-534da532515a15da.yaml │ ├── message-registry-logging-39624ae114c02e15.yaml │ ├── monitor_firmware_update-664b0c6c1a0307cf.yaml │ ├── more-transferprotocoltype-739ce8bdedbcb51c.yaml │ ├── no-passwords-295207ac891d27ab.yaml │ ├── non-default-language-registries-f73bdecc98ba2cc8.yaml │ ├── property-missing-7602c421ec177e9a.yaml │ ├── raise-error-on-async-task-failure-b67c7bc189a4d6ca.yaml │ ├── re-raise-1fe9f912691e893e.yaml │ ├── reauthentication-session-fallback-failure-fixes-4f0dcfdad1afd2d7.yaml │ ├── redfish-response-log-294f3f10b770e356.yaml │ ├── refactor-taskmonitor-update-volume-ba99380188395852.yaml │ ├── releasenote-d7138d1e1d414632.yaml │ ├── remove-deprecated-task-monitors-58c505d43e1fa6a7.yaml │ ├── remove-py38-6eebcd268c6f8e37.yaml │ ├── retry-if-transferprototype-missing-9cae57f3ecf470a9.yaml │ ├── retry-ilo-not-ready-error-0b4dce882282eaac.yaml │ ├── retry-on-missing-managedby-b2a5240eab8b4262.yaml │ ├── secure-boot-76c5b80371ea85d1.yaml │ ├── secure-boot-database-7fae673722d7cf4f.yaml │ ├── sessions.yml │ ├── show-networkadapter-firmware-624b9f41cfe0637b.yaml │ ├── skip-empty-mac-address-0d758a9c0d70e2a9.yaml │ ├── standard-registry-license-0ded489afd6cfad1.yaml │ ├── storage-controller-name-6924b71a97f78481.yaml │ ├── storage-controllers-resource-7ab112f5d2c34ca0.yaml │ ├── story-2006246-reset-bios-return-http-error-415-08170df7fe6300f8.yaml │ ├── story-2007216-fix-to-message-registry-cff37659f03ba815.yaml │ ├── supermicro-vmedia-dev-workaround-cc7a870c9a99d92b.yaml │ ├── sushy-oem-idrac-f4a1f2202b7955d7.yaml │ ├── sushy-system-virtualmedia-7a61bd77780f7b0e.yaml │ ├── update-apply-time-support-53c5445b58cd3b42.yaml │ ├── update_sushy_models-9b8ea0350eb4d4d0.yaml │ ├── use-sessions-url-from-root-8b8eca57dc450705.yaml │ ├── use-settingsobject-if-supported-12a332f9905d64ce.yaml │ ├── vmedia-1.4.0-9957460fed59d85c.yaml │ ├── vmedia-blank-auth-c01916469219a39e.yaml │ ├── vmedia-certificate-06c367c6ef33d139.yaml │ ├── vmedia-credentials-14b7705c3c94cc07.yaml │ └── workaround-sushy-requests-verify-handling-6879c273b651246f.yaml └── source │ ├── 2023.1.rst │ ├── 2023.2.rst │ ├── 2024.1.rst │ ├── 2024.2.rst │ ├── 2025.1.rst │ ├── _static │ └── .placeholder │ ├── _templates │ └── .placeholder │ ├── conf.py │ ├── index.rst │ ├── pike.rst │ ├── queens.rst │ ├── rocky.rst │ ├── stein.rst │ ├── train.rst │ ├── unreleased.rst │ ├── ussuri.rst │ ├── victoria.rst │ ├── wallaby.rst │ ├── xena.rst │ ├── yoga.rst │ └── zed.rst ├── requirements.txt ├── setup.cfg ├── setup.py ├── sushy ├── __init__.py ├── auth.py ├── connector.py ├── exceptions.py ├── main.py ├── oem │ ├── __init__.py │ └── dell │ │ ├── __init__.py │ │ ├── asynchronous.py │ │ ├── constants.py │ │ ├── resources │ │ ├── __init__.py │ │ ├── attributes.py │ │ ├── manager │ │ │ ├── __init__.py │ │ │ ├── constants.py │ │ │ ├── idrac_card_service.py │ │ │ ├── job_collection.py │ │ │ ├── job_service.py │ │ │ ├── lifecycle_service.py │ │ │ └── manager.py │ │ ├── system │ │ │ ├── constants.py │ │ │ ├── raid_service.py │ │ │ ├── storage │ │ │ │ ├── constants.py │ │ │ │ └── controller.py │ │ │ └── system.py │ │ └── taskservice │ │ │ ├── constants.py │ │ │ └── task.py │ │ └── utils.py ├── resources │ ├── __init__.py │ ├── base.py │ ├── certificateservice │ │ ├── __init__.py │ │ ├── certificate.py │ │ ├── certificateservice.py │ │ └── constants.py │ ├── chassis │ │ ├── __init__.py │ │ ├── chassis.py │ │ ├── constants.py │ │ ├── power │ │ │ ├── __init__.py │ │ │ ├── constants.py │ │ │ └── power.py │ │ └── thermal │ │ │ ├── __init__.py │ │ │ ├── constants.py │ │ │ └── thermal.py │ ├── common.py │ ├── compositionservice │ │ ├── __init__.py │ │ ├── compositionservice.py │ │ ├── constants.py │ │ ├── resourceblock.py │ │ └── resourcezone.py │ ├── constants.py │ ├── eventservice │ │ ├── __init__.py │ │ ├── constants.py │ │ ├── eventdestination.py │ │ └── eventservice.py │ ├── fabric │ │ ├── __init__.py │ │ ├── constants.py │ │ ├── endpoint.py │ │ └── fabric.py │ ├── ipaddresses.py │ ├── manager │ │ ├── __init__.py │ │ ├── constants.py │ │ ├── manager.py │ │ └── virtual_media.py │ ├── oem │ │ ├── __init__.py │ │ ├── base.py │ │ ├── common.py │ │ └── fake.py │ ├── registry │ │ ├── __init__.py │ │ ├── attribute_registry.py │ │ ├── constants.py │ │ ├── message_registry.py │ │ └── message_registry_file.py │ ├── sessionservice │ │ ├── __init__.py │ │ ├── session.py │ │ └── sessionservice.py │ ├── settings.py │ ├── system │ │ ├── __init__.py │ │ ├── bios.py │ │ ├── constants.py │ │ ├── ethernet_interface.py │ │ ├── network │ │ │ ├── __init__.py │ │ │ ├── adapter.py │ │ │ ├── constants.py │ │ │ ├── device_function.py │ │ │ └── port.py │ │ ├── port.py │ │ ├── processor.py │ │ ├── secure_boot.py │ │ ├── secure_boot_database.py │ │ ├── simple_storage.py │ │ ├── storage │ │ │ ├── __init__.py │ │ │ ├── constants.py │ │ │ ├── controller.py │ │ │ ├── drive.py │ │ │ ├── storage.py │ │ │ └── volume.py │ │ └── system.py │ ├── taskservice │ │ ├── __init__.py │ │ ├── constants.py │ │ ├── task.py │ │ └── taskservice.py │ └── updateservice │ │ ├── __init__.py │ │ ├── constants.py │ │ ├── softwareinventory.py │ │ └── updateservice.py ├── standard_registries │ ├── Base.1.0.0.json │ ├── Base.1.2.0.json │ ├── Base.1.3.0.json │ ├── Base.1.3.1.json │ └── Base.1.4.0.json ├── taskmonitor.py ├── tests │ ├── __init__.py │ ├── oem │ │ ├── __init__.py │ │ └── dell │ │ │ ├── __init__.py │ │ │ ├── functional │ │ │ ├── __init__.py │ │ │ └── vmedia_boot.py │ │ │ └── unit │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── json_samples │ │ │ ├── error_pending_job.json │ │ │ ├── error_running_job.json │ │ │ ├── export_configuration_idrac.json │ │ │ ├── export_configuration_nic_bios.json │ │ │ ├── idrac_card_service.json │ │ │ ├── job_collection_expanded.json │ │ │ ├── job_service.json │ │ │ ├── lifecycle_service.json │ │ │ ├── manager.json │ │ │ ├── manager_collection.json │ │ │ ├── raid_service.json │ │ │ ├── releasenotes │ │ │ │ └── notes │ │ │ │ │ └── fix-lc-wait-loop-cebbee222d3dc7c3.yaml │ │ │ ├── root.json │ │ │ ├── storage_controller.json │ │ │ ├── system.json │ │ │ └── task.json │ │ │ ├── resources │ │ │ ├── __init__.py │ │ │ ├── manager │ │ │ │ ├── __init__.py │ │ │ │ ├── test_idrac_card_service.py │ │ │ │ ├── test_job_collection.py │ │ │ │ ├── test_job_service.py │ │ │ │ ├── test_lifecycle_service.py │ │ │ │ └── test_manager.py │ │ │ ├── system │ │ │ │ ├── __init__.py │ │ │ │ ├── storage │ │ │ │ │ ├── __init__.py │ │ │ │ │ └── test_controller.py │ │ │ │ ├── test_raid_service.py │ │ │ │ └── test_system.py │ │ │ └── taskservice │ │ │ │ ├── __init__.py │ │ │ │ └── test_task.py │ │ │ ├── test_asynchronous.py │ │ │ └── test_root.py │ └── unit │ │ ├── __init__.py │ │ ├── base.py │ │ ├── json_samples │ │ ├── TestRegistry.zip │ │ ├── bare_minimum_root.json │ │ ├── bios.json │ │ ├── bios_attribute_registry.json │ │ ├── bios_attribute_registry_file.json │ │ ├── bios_attribute_registry_file_zthardware.json │ │ ├── bios_attribute_registry_zthardware.json │ │ ├── bios_settings.json │ │ ├── bios_zt.json │ │ ├── certificate.json │ │ ├── certificate_collection.json │ │ ├── certificate_locations.json │ │ ├── certificateservice.json │ │ ├── chassis.json │ │ ├── chassis_collection.json │ │ ├── compositionservice.json │ │ ├── credentials_required_error.json │ │ ├── drive.json │ │ ├── drive2.json │ │ ├── drive3.json │ │ ├── endpoint.json │ │ ├── endpoint_collection.json │ │ ├── error.json │ │ ├── error_single_ext_info.json │ │ ├── ethernet_interfaces.json │ │ ├── ethernet_interfaces_collection.json │ │ ├── eventdestination1.json │ │ ├── eventdestination2.json │ │ ├── eventdestination3.json │ │ ├── eventdestination_collection.json │ │ ├── eventservice.json │ │ ├── fabric.json │ │ ├── fabric_collection.json │ │ ├── firmwareinventory_collection.json │ │ ├── manager.json │ │ ├── manager_collection.json │ │ ├── manager_ethernet_interfaces.json │ │ ├── manager_ethernet_interfaces_collection.json │ │ ├── managerv1_18.json │ │ ├── message_registry.json │ │ ├── message_registry_file.json │ │ ├── message_registry_file_collection.json │ │ ├── network_adapter.json │ │ ├── network_adapter_collection.json │ │ ├── network_device_function.json │ │ ├── network_device_function_collection.json │ │ ├── network_port.json │ │ ├── network_port_collection.json │ │ ├── port.json │ │ ├── port_collection.json │ │ ├── power.json │ │ ├── processor.json │ │ ├── processor2.json │ │ ├── processor_collection.json │ │ ├── resourceblock.json │ │ ├── resourceblock_collection.json │ │ ├── resourcezone.json │ │ ├── resourcezone_collection.json │ │ ├── root.json │ │ ├── secure_boot.json │ │ ├── secure_boot_database.json │ │ ├── secure_boot_database_collection.json │ │ ├── session.json │ │ ├── session_collection.json │ │ ├── session_creation_headers.json │ │ ├── session_creation_headers_no_location.json │ │ ├── session_error.json │ │ ├── session_service.json │ │ ├── settings-body-bootsourceoverridemode-only.json │ │ ├── settings-body-lenovo-se450.json │ │ ├── settings-body-nokia.json │ │ ├── settings-lenovo-se450.json │ │ ├── settings-nokia.json │ │ ├── settings.json │ │ ├── simple_storage.json │ │ ├── simple_storage_collection.json │ │ ├── softwareinventory.json │ │ ├── storage.json │ │ ├── storage_collection.json │ │ ├── storage_controller.json │ │ ├── storage_controller_collection.json │ │ ├── storage_controller_settings.json │ │ ├── subprocessor.json │ │ ├── subprocessor_collection.json │ │ ├── system.json │ │ ├── system_collection.json │ │ ├── system_managedby_missing_manager_present.json │ │ ├── systemv1_20.json │ │ ├── task.json │ │ ├── task2.json │ │ ├── task_collection.json │ │ ├── task_monitor.json │ │ ├── taskservice.json │ │ ├── thermal.json │ │ ├── transfer_method_required_error.json │ │ ├── transfer_proto_required_error.json │ │ ├── transfer_proto_required_error2.json │ │ ├── transfer_proto_required_error3.json │ │ ├── updateservice.json │ │ ├── updateservice_no_inv.json │ │ ├── virtual_media.json │ │ ├── virtual_media_collection.json │ │ ├── virtual_media_collectionv1_6.json │ │ ├── virtual_mediav1_6.json │ │ ├── volume.json │ │ ├── volume2.json │ │ ├── volume3.json │ │ ├── volume4.json │ │ └── volume_collection.json │ │ ├── resources │ │ ├── __init__.py │ │ ├── certificateservice │ │ │ ├── __init__.py │ │ │ ├── test_certificate.py │ │ │ └── test_certificateservice.py │ │ ├── chassis │ │ │ ├── __init__.py │ │ │ ├── test_chassis.py │ │ │ ├── test_power.py │ │ │ └── test_thermal.py │ │ ├── compositionservice │ │ │ ├── __init__.py │ │ │ ├── test_compositionservice.py │ │ │ ├── test_resourceblock.py │ │ │ └── test_resourcezone.py │ │ ├── eventservice │ │ │ ├── __init__.py │ │ │ ├── test_evendestination.py │ │ │ └── test_eventservice.py │ │ ├── fabric │ │ │ ├── __init__.py │ │ │ ├── test_endpoint.py │ │ │ └── test_fabric.py │ │ ├── manager │ │ │ ├── __init__.py │ │ │ ├── test_manager.py │ │ │ └── test_virtual_media.py │ │ ├── oem │ │ │ ├── __init__.py │ │ │ ├── test_common.py │ │ │ └── test_fake.py │ │ ├── registry │ │ │ ├── __init__.py │ │ │ ├── test_attribute_registry.py │ │ │ ├── test_message_registry.py │ │ │ └── test_message_registry_file.py │ │ ├── sessionservice │ │ │ ├── __init__.py │ │ │ ├── test_session.py │ │ │ └── test_sessionservice.py │ │ ├── system │ │ │ ├── __init__.py │ │ │ ├── network │ │ │ │ ├── __init__.py │ │ │ │ ├── test_adapter.py │ │ │ │ ├── test_device_function.py │ │ │ │ └── test_port.py │ │ │ ├── storage │ │ │ │ ├── __init__.py │ │ │ │ ├── test_controller.py │ │ │ │ ├── test_drive.py │ │ │ │ ├── test_storage.py │ │ │ │ └── test_volume.py │ │ │ ├── test_bios.py │ │ │ ├── test_ethernet_interfaces.py │ │ │ ├── test_port.py │ │ │ ├── test_processor.py │ │ │ ├── test_secure_boot.py │ │ │ ├── test_secure_boot_database.py │ │ │ ├── test_simple_storage.py │ │ │ └── test_system.py │ │ ├── taskservice │ │ │ ├── __init__.py │ │ │ ├── test_task.py │ │ │ └── test_taskservice.py │ │ ├── test_base.py │ │ ├── test_settings.py │ │ └── updateservice │ │ │ ├── __init__.py │ │ │ ├── test_softwareinventory.py │ │ │ └── test_updateservice.py │ │ ├── test_auth.py │ │ ├── test_connector.py │ │ ├── test_main.py │ │ ├── test_taskmonitor.py │ │ └── test_utils.py └── utils.py ├── test-requirements.txt ├── tools └── generate-enum.py ├── tox.ini └── zuul.d ├── project.yaml └── sushy-jobs.yaml /.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | branch = True 3 | source = sushy 4 | omit = 5 | *tests* 6 | 7 | [report] 8 | ignore_errors = True 9 | omit = 10 | *tests* 11 | 12 | [html] 13 | directory = cover 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.py[cod] 2 | 3 | # C extensions 4 | *.so 5 | 6 | # Packages 7 | *.egg* 8 | *.egg-info 9 | dist 10 | build 11 | eggs 12 | parts 13 | bin 14 | var 15 | sdist 16 | develop-eggs 17 | .installed.cfg 18 | lib 19 | lib64 20 | 21 | # Installer logs 22 | pip-log.txt 23 | 24 | # Unit test / coverage reports 25 | cover/ 26 | .coverage* 27 | !.coveragerc 28 | .tox 29 | nosetests.xml 30 | .stestr/ 31 | .venv 32 | 33 | # Translations 34 | *.mo 35 | 36 | # Mr Developer 37 | .mr.developer.cfg 38 | .project 39 | .pydevproject 40 | 41 | # Complexity 42 | output/*.html 43 | output/*/index.html 44 | 45 | # Sphinx 46 | doc/build 47 | doc/source/reference/api 48 | 49 | # pbr generates these 50 | AUTHORS 51 | ChangeLog 52 | 53 | # Editors 54 | *~ 55 | .*.swp 56 | .*sw? 57 | 58 | # Files created by releasenotes build 59 | releasenotes/build 60 | -------------------------------------------------------------------------------- /.gitreview: -------------------------------------------------------------------------------- 1 | [gerrit] 2 | host=review.opendev.org 3 | port=29418 4 | project=openstack/sushy.git 5 | -------------------------------------------------------------------------------- /.mailmap: -------------------------------------------------------------------------------- 1 | # Format is: 2 | # 3 | # 4 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | repos: 3 | - repo: https://github.com/pre-commit/pre-commit-hooks 4 | rev: v4.5.0 5 | hooks: 6 | - id: trailing-whitespace 7 | - id: mixed-line-ending 8 | args: ['--fix', 'lf'] 9 | exclude: | 10 | (?x)( 11 | .*.svg$| 12 | ) 13 | - id: fix-byte-order-marker 14 | - id: check-merge-conflict 15 | - id: debug-statements 16 | - id: check-json 17 | files: .*\.json$ 18 | - id: check-yaml 19 | files: .*\.(yaml|yml)$ 20 | exclude: releasenotes/.*$ 21 | - repo: https://github.com/Lucas-C/pre-commit-hooks 22 | rev: v1.5.4 23 | hooks: 24 | - id: remove-tabs 25 | exclude: '.*\.(svg)$' 26 | - repo: https://opendev.org/openstack/hacking 27 | rev: 6.1.0 28 | hooks: 29 | - id: hacking 30 | additional_dependencies: [] 31 | exclude: '^(doc|releasenotes|tools)/.*$' 32 | - repo: https://github.com/codespell-project/codespell 33 | rev: v2.2.6 34 | hooks: 35 | - id: codespell 36 | args: [--write-changes] 37 | - repo: https://github.com/sphinx-contrib/sphinx-lint 38 | rev: v1.0.0 39 | hooks: 40 | - id: sphinx-lint 41 | args: [--enable=default-role] 42 | files: ^doc/|releasenotes|api-ref 43 | - repo: https://opendev.org/openstack/bashate 44 | rev: 2.1.0 45 | hooks: 46 | - id: bashate 47 | args: ["-iE006,E044", "-eE005,E042"] 48 | name: bashate 49 | description: This hook runs bashate for linting shell scripts 50 | entry: bashate 51 | language: python 52 | types: [shell] 53 | - repo: https://github.com/PyCQA/doc8 54 | rev: v1.1.2 55 | hooks: 56 | - id: doc8 57 | - repo: https://github.com/astral-sh/ruff-pre-commit 58 | rev: v0.7.3 59 | hooks: 60 | - id: ruff 61 | args: ['--fix', '--unsafe-fixes'] 62 | -------------------------------------------------------------------------------- /.stestr.conf: -------------------------------------------------------------------------------- 1 | [DEFAULT] 2 | test_path=./sushy/tests 3 | top_dir=. 4 | -------------------------------------------------------------------------------- /CONTRIBUTING.rst: -------------------------------------------------------------------------------- 1 | If you would like to contribute to the development of OpenStack, you must 2 | follow the steps in this page: 3 | 4 | http://docs.openstack.org/infra/manual/developers.html 5 | 6 | If you already have a good understanding of how the system works and your 7 | OpenStack accounts are set up, you can skip to the development workflow 8 | section of this documentation to learn how changes to OpenStack should be 9 | submitted for review via the Gerrit tool: 10 | 11 | http://docs.openstack.org/infra/manual/developers.html#development-workflow 12 | 13 | Sushy is a project under the Bare Metal (ironic) program and shares many 14 | common elements of the developer experience with ironic. You can find useful 15 | information about running unit tests or integrated testing environments in the 16 | ironic developer quickstart: 17 | 18 | https://docs.openstack.org/ironic/latest/contributor/dev-quickstart.html 19 | 20 | Bugs should be filed in launchpad, not GitHub: 21 | 22 | https://bugs.launchpad.net/sushy 23 | 24 | 25 | This repo is mirrored to Github. Issues, Pull Requests, and other Github 26 | features of this repo are not used. https://opendev.org/openstack/sushy is 27 | the canonical version of this repo. 28 | -------------------------------------------------------------------------------- /HACKING.rst: -------------------------------------------------------------------------------- 1 | Sushy Style Commandments 2 | ======================== 3 | 4 | Read the OpenStack Style Commandments https://docs.openstack.org/hacking/latest/ 5 | -------------------------------------------------------------------------------- /README.rst: -------------------------------------------------------------------------------- 1 | Overview 2 | ======== 3 | 4 | Sushy is a Python library to communicate with `Redfish`_ based systems. 5 | 6 | The goal of the library is to be extremely simple, small, have as few 7 | dependencies as possible and be very conservative when dealing with BMCs 8 | by issuing just enough requests to it (BMCs are very flaky). 9 | 10 | Therefore, the scope of the library has been limited to what is supported 11 | by the `OpenStack Ironic `_ 12 | project. As the project grows and more features from `Redfish`_ are 13 | needed we can expand Sushy to fulfill those requirements. 14 | 15 | * Free software: Apache license 16 | * Includes Redfish registry files licensed under 17 | Creative Commons Attribution 4.0 License: 18 | https://creativecommons.org/licenses/by/4.0/ 19 | * Documentation: https://docs.openstack.org/sushy/latest/ 20 | * Usage: https://docs.openstack.org/sushy/latest/reference/usage.html 21 | * Source: https://opendev.org/openstack/sushy 22 | * Bugs: https://bugs.launchpad.net/sushy 23 | * Release Notes: https://docs.openstack.org/releasenotes/sushy/ 24 | 25 | .. _Redfish: http://www.dmtf.org/standards/redfish 26 | -------------------------------------------------------------------------------- /bindep.txt: -------------------------------------------------------------------------------- 1 | # fonts-freefont-otf is needed for pdf docs builds with the 'xelatex' engine 2 | fonts-freefont-otf [doc] 3 | -------------------------------------------------------------------------------- /doc/requirements.txt: -------------------------------------------------------------------------------- 1 | reno>=3.1.0 # Apache-2.0 2 | sphinx>=2.0.0,!=2.1.0 # BSD 3 | openstackdocstheme>=2.2.1 # Apache-2.0 4 | sphinxcontrib-apidoc>=0.2.0 # BSD 5 | -------------------------------------------------------------------------------- /doc/source/index.rst: -------------------------------------------------------------------------------- 1 | .. sushy documentation master file, created by 2 | sphinx-quickstart on Tue Jul 9 22:26:36 2013. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | ================================= 7 | Welcome to Sushy's documentation! 8 | ================================= 9 | 10 | .. include:: ../../README.rst 11 | 12 | Features 13 | ======== 14 | 15 | * Abstraction around the SystemCollection and System resources (Basic 16 | server identification and asset information) 17 | * RAID in Redfish based Systems 18 | * Redfish Ethernet Interface 19 | * System mappings 20 | * System processor 21 | * Storage management 22 | * Systems power management (Both soft and hard; Including NMI injection) 23 | * Changing systems boot device, frequency (Once or permanently) and mode 24 | (UEFI or BIOS) 25 | * Chassis management 26 | * OEM extension 27 | * Virtual media management 28 | * Session Management 29 | 30 | Documentation 31 | ============= 32 | 33 | .. toctree:: 34 | :maxdepth: 1 35 | 36 | install/index 37 | contributor/index 38 | reference/index 39 | 40 | * :ref:`genindex` 41 | -------------------------------------------------------------------------------- /doc/source/install/index.rst: -------------------------------------------------------------------------------- 1 | ================ 2 | Installing Sushy 3 | ================ 4 | 5 | At the command line:: 6 | 7 | $ pip install sushy 8 | 9 | Or, if you have virtualenvwrapper installed:: 10 | 11 | $ mkvirtualenv sushy 12 | $ pip install sushy 13 | -------------------------------------------------------------------------------- /doc/source/reference/index.rst: -------------------------------------------------------------------------------- 1 | ======================= 2 | Sushy Library Reference 3 | ======================= 4 | 5 | Usage 6 | ===== 7 | 8 | .. toctree:: 9 | :maxdepth: 2 10 | 11 | usage 12 | 13 | Sushy Python API Reference 14 | ========================== 15 | 16 | * :ref:`modindex` 17 | 18 | .. # api/modules is hidden since it's in the modindex link above. 19 | .. toctree:: 20 | :hidden: 21 | 22 | api/modules 23 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [build-system] 2 | requires = ["pbr>=6.0.0", "setuptools>=64.0.0"] 3 | build-backend = "pbr.build" 4 | 5 | [tool.doc8] 6 | ignore = ["D001"] 7 | 8 | [tool.ruff] 9 | line-length = 79 10 | target-version = "py37" 11 | 12 | [tool.ruff.lint] 13 | select = [ 14 | "E", # pycodestyle (error) 15 | "F", # pyflakes 16 | "G", # flake8-logging-format 17 | "LOG", # flake8-logging 18 | "S", # flake8-bandit 19 | "UP", # pyupgrade 20 | ] 21 | 22 | [tool.ruff.lint.per-file-ignores] 23 | "sushy/tests/**/*.py" = [ 24 | "S104", # disable 'hardcoded_bind_all_interfaces' for tests 25 | "S105", # disable 'hardcoded_password_string' for tests 26 | "S106", # disable 'hardcoded_password_funcarg' for tests 27 | ] 28 | -------------------------------------------------------------------------------- /releasenotes/notes/.placeholder: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/releasenotes/notes/.placeholder -------------------------------------------------------------------------------- /releasenotes/notes/HttpBootUri-to-settings-6fcbdeed2b4e84df.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | PATCH 'HttpBootUri' against SettingsURI if present. If not, 5 | fall back to System URI. 6 | 7 | -------------------------------------------------------------------------------- /releasenotes/notes/accept-encoding-4646ea43998f80bd.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Adds a work-around for cases where ``Accept-Encoding: identity`` is not 5 | accepted. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/action-parameter-missing-7d234b96b5b1d81a.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Correctly handles error code ``Base.1.12.ActionParameterMissing`` when dealing with 5 | hardware that requires ``TransferProtocolType`` for virtual media 6 | operations and has different message in RelatedProperties response. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/add-apply-time-support-to-bios-315ebad429dcab3d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds support for ``bios`` resource to allow specifying BIOS attribute 5 | update time and maintenance window when updating BIOS attributes using 6 | ``set_attribute`` or ``set_attributes``. 7 | 8 | The update is backward compatible and when new parameters not passed, they 9 | default to ``None``. 10 | 11 | Also adds ``maintenance_window`` for ``bios`` resource to expose default 12 | maintenance window set by the system if any. 13 | -------------------------------------------------------------------------------- /releasenotes/notes/add-bios-bf69ac56c4ae8f50.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds support for the BIOS resource to the library. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/add-bios-update-status-cc59816c374b78e4.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | ``Bios`` resource introduces ``update_status`` property that exposes 5 | the status and any errors of last BIOS attribute update. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-chassis-linkage-d8e567f9c791169d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Establishes linkage between Chassis and ComputerSystem/Managers 5 | resources as references at sushy data abstraction level. That 6 | makes it possible to look up Chassis by Manager/ComputerSystem or 7 | any other way around. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/add-chassis-support-5b97daffe1c61a2b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds support for the Chassis resource to the library. 5 | 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-custom-connector-support-0a49c6649d5f7eaf.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds the ability to specify user-defined connector object on creation 5 | of a root Sushy instance. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-default-identity-10c5dd23bed0e915.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``get_system``, ``get_manager`` and ``get_chassis`` methods modified 5 | not to require the ``identity`` parameter referring to a particular 6 | resource instance. If ``identity`` is omitted, sushy will default to the 7 | only available resource for as long as it's single and therefore 8 | deterministic. 9 | The intent is to simplify user API by not requiring the consumer to 10 | discover available resources prior to requesting one. 11 | -------------------------------------------------------------------------------- /releasenotes/notes/add-drive-led-97b687013fec88c9.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds the ``IndicatorLED`` property to the ``Drive`` resource. The state of 5 | the LED can be read and can be changed via the ``.set_indicator_led()`` 6 | method of the ``Drive`` sushy class. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/add-drive-revision-a0c069fff236479d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds the ``Revision`` property to the ``Drive`` resource. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/add-drive-volumes-971d80644c3bd1e0.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds ``Drive.volumes`` property for list of volumes that drive is part of. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/add-endpoint-subresource-to-fabric-b03e5fd99ece1bf4.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Exposes the ``endpoint`` sub-resource from the ``fabric`` resource. 5 | ``endpoint`` represents the properties of an entity that sends or receives 6 | protocol defined messages over a transport. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/add-fabric-support-1520f7fcb0e12539.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds support for the Fabric resource to the library. 5 | 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-http-boot-uri-support-5c25816e13ccdb27.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds functionality to the ``set_system_boot_options`` method 5 | permitting an ``http_boot_uri`` option to be set. 6 | - | 7 | Adds an ``http_boot_uri`` option to the System boot object, 8 | permitting an API client user to view what the BMC's 9 | redfish ``HttpBootUri`` setting is. 10 | -------------------------------------------------------------------------------- /releasenotes/notes/add-initial-redfish-oem-extension-support-50c9849bb7b6b25c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds foundation for supporting resource extensibility proposed as 5 | OEM extensibility in Redfish specification [1] to the library. 6 | 7 | * Provides an attribute 'oem_vendors' in Resource classes to 8 | discover the available OEM extensions. 9 | * Provides a method 'get_oem_extension()' in Resource classes 10 | to get the vendor defined resource OEM extension object, if 11 | discovered. 12 | 13 | [1] http://redfish.dmtf.org/schemas/DSP0266_1.1.html#resource-extensibility 14 | -------------------------------------------------------------------------------- /releasenotes/notes/add-mapped-list-field-04c671f7a73d83f6.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds a new field called ``MappedListField`` which supports a list of 5 | mapped instances. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-network-adapter-26d01d8d9fb1d7ad.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds support for the NetworkAdapter resource to the library. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/add-network-device-function-and-port-e880d8f461e3723d.yaml: -------------------------------------------------------------------------------- 1 | features: 2 | - | 3 | Adds support for the NetworkDeviceFunction and NetworkPort 4 | resource to the library. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/add-odata-version-header-96dc8179c0e2e9bd.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Improve interoperability by including the recommended OData-Version 5 | header in outgoing Redfish requests. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-partial-key-match-27bed73d577b1187.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds the ability to conditionally match sushy fields against received JSON 5 | object. The conditional matching is performed by a user-supplied callable 6 | which gets the key to consider (along with the value and potentially other 7 | details) and should indicate the the caller if the match occurred. 8 | The motivation behind this change is to accommodate malformed Redfish 9 | resource properties as observed in the OEM wilderness. 10 | -------------------------------------------------------------------------------- /releasenotes/notes/add-port-e57ec6759ee70bf7.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - Adds support for the ``Port`` resource to the library. 4 | -------------------------------------------------------------------------------- /releasenotes/notes/add-power-resource-e141ddf298673305.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds the Power resource to the Library. -------------------------------------------------------------------------------- /releasenotes/notes/add-processor-id-and-status-b81d4c6e6c14c25f.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds the processor status and id fields to the ``Processor`` class. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/add-raid-type-properties-2090da5bea37c660.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Add RAIDType property to the Volume resource and SupportedRAIDTypes 5 | property to the Storage resource. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-read-and-connect-timeout-9f7dc3ed63c192c8.yaml: -------------------------------------------------------------------------------- 1 | fixes: 2 | - Fixes bug where sushy would not pass a read/connect timeout through to 3 | requests when making requests to a redfish service. This means that an 4 | ill-timed failure could cause python processes calling sushy to freeze 5 | indefinitely. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-response-cb-65d448ee2690d0b2.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds optional ``response_callback`` parameter to ``Connector`` class 5 | that can be used by the application to receive vanilla HTTP messages 6 | in the course of running Redfish call. The intention is to facilitate 7 | Redfish exchange debugging. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/add-simple-storage-915464811737bb05.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds the "SimpleStorage" to the library. It also provides the max size 5 | available (in bytes) among all its directly attached devices. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-storage-and-simple-storage-attributes-to-system-16e81f9b15b1897d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Exposes the ``simple_storage`` and ``storage`` properties from system 5 | resource in sushy. 6 | 7 | * ``simple_storage`` property indicates a collection of storage 8 | controllers and their directly-attached devices associated with the 9 | system. 10 | * ``storage`` property refers to a collection of storage subsystem 11 | associated with system. Resources such as drives and volumes can be 12 | accessed from that subsystem. 13 | -------------------------------------------------------------------------------- /releasenotes/notes/add-storage-da766d3dbf9fb385.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds the Storage resource to the library. It also provides the 5 | max size available (in bytes) of drives and volumes that can be 6 | accessed from storage. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/add-sushy-root-to-resources-1f221794557aa5fc.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds ``root`` property to Sushy resources to link to main Sushy object. 5 | Empty for Sushy root itself. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-system-bootprogress-42ee452cfa279c63.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds a ``boot_progress`` mapped object to the System object. Inside of 5 | this object, a ``last_state`` value maps to values provided by the 6 | ``sushy.BootProgressState`` enum. 7 | Also exposes, for information purposes, the ``last_boot_seconds_count``, 8 | ``last_state_updated_at``, and ``oem_last_state`` values, which map to 9 | the DMTF Redfish values ``LastBootTimeSeconds``, ``LastStateTime``, 10 | and ``OemLastState`` fields for the ``BootProgress`` object. 11 | -------------------------------------------------------------------------------- /releasenotes/notes/add-system-manager-linkage-86be69c9df4cb359.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Establishes ComputerSystem->Managers and Manager->ComputerSystems 5 | references at sushy data abstraction level what make it possible to 6 | look up Manager(s) responsible for a ComputerSystem and vice versa. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/add-system-status-field-41b3f2a8c4b85f38.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds the system status field to show the system status. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/add-system-type-mapping-bf456c5c15a90877.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds mappings and constants for possible values of System Type in System 5 | resource. This represents the type of the computer system. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-task-monitor-support-21f711927ad6ec91.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Add support for a Task Monitor resource to be able to monitor the state 5 | of asynchronous operations. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add-task-service-c751ce51e0b8dc11.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds initial support for the TaskService resource to the library. 5 | `TaskService` is responsible for managing tasks. -------------------------------------------------------------------------------- /releasenotes/notes/add-thermal-resource-5c965a3c940f9028.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds the Thermal resource to the Library. -------------------------------------------------------------------------------- /releasenotes/notes/add-virtual-media-support-f522fbec4420341c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds support for the virtual media resource to the library. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/add_composition_service-84750d8d1d96474a.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds support for the CompositionService resource to the library. 5 | 6 | The `CompositionService` is the top level resource for all things 7 | related to Composability. If a Redfish service supports Composability, 8 | the Service Root resource will contain the `CompositionService` property. 9 | -------------------------------------------------------------------------------- /releasenotes/notes/add_ethernet_interface-df308f814f0e4bce.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds the "EthernetInterfaces" to the library. 5 | It also returns the list of connected MACs. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add_keyword_argument_for_connector-cea5dc4e6c01b548.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds functionality to pass different requests library session 5 | arguments to sushy connector. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add_product_and_protocol_features_supported-59de3f89b7382434.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds `Product` and `ProductFeaturesSupported` properties support to 5 | the Redfish `Root Service` 6 | -------------------------------------------------------------------------------- /releasenotes/notes/add_update_service-b54c9bb0177e3468.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds support for the UpdateService resource to the library. 5 | `UpdateService` is responsible for managing firmware updates. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/allow_empty_context_eventdestination-9a96c34dd7edbeca.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Removes the requirement from `Context` to be present when requesting a 5 | subscription, some BMCs do not report `Context` when the subscription is 6 | created with empty string and would cause `MissingAttributeError`. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/apply-time-support-for-volume-ops-f2ebc412e3b4290a.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | The ``supported_values`` property in the 5 | ``OperationApplyTimeSupportField`` class is deprecated. Use the 6 | ``mapped_supported_values`` property instead. The 7 | ``mapped_supported_values`` property uses the ``MappedListField`` type 8 | to map the Redfish schema-defined enumeration values to constants exposed 9 | by the Sushy package. 10 | features: 11 | - | 12 | Update the ``create_volume`` method in the ``VolumeCollection`` class and 13 | the ``delete_volume`` and ``initialize_volume`` methods in the ``Volume`` 14 | class to take optional ``apply_time`` and ``timeout`` keyword parameters. 15 | This allows the caller of those volume methods to specify a preferred 16 | ``OperationApplyTime`` annotation and a maximum timeout for synchronous 17 | operations. For asynchronous operations, those three methods will now 18 | return a ``TaskMonitor`` instance that the caller can use to monitor the 19 | state of the task. 20 | -------------------------------------------------------------------------------- /releasenotes/notes/bios-attribute-registry-a55c2d81c730a795.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Add support for caching Redfish Attribute Registries. In particular, 5 | cache the BIOS Attribute Registry and provide a function to return it 6 | if it matches the AttributeRegistry field in System BIOS. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/bug-1754514-ca6ebe16c4e4b3b0.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | critical: 3 | - | 4 | Fixes authentication failure when SessionService attribute is 5 | not present in the root resource. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/bug-2111528-f126e9b00c056077.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fix the Target property in the Dell OEM, it should be an array 5 | as a value instead of a string. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/catch-general-requests-exceptions-b5fd706597708fb6.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixes potential cases where exceptions from the underlying ``requests`` 5 | library may be raised up through ``sushy``, resulting in client 6 | applications possibly not understanding that an error has occurred. 7 | The sushy ``ConnectionError`` exception is now returned upon any exception 8 | falling under ``RequestException`` from the ``requests`` library. 9 | -------------------------------------------------------------------------------- /releasenotes/notes/certificate-collection-acc67488c240274c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds basic support for ``CertificateService``. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/change-bootdev-smc-ab30317eaf5c37d9.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Changing boot device string for virtual media from "Cd" to "UsbCd" on 5 | SuperMicro machines to match their specific naming convention. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/change-vmedia-write-protected-attr-586370a552288801.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Changes the default value of "WriteProtected" parameter in 5 | in VirtualMedia::insert_media() from False to True. This is to match 6 | Redfish schema 2021.1 and VirtualMedia.v1_3_0: 7 | https://redfish.dmtf.org/schemas/v1/VirtualMedia.v1_3_0.json 8 | -------------------------------------------------------------------------------- /releasenotes/notes/check-for-boot-attrs-in-settingsuri-1cad07b6eb1c81b3.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Adds an extra check for cases where the BMC provides a SettingsObject 5 | URI through @Redfish.Settings but this URI does not allow setting boot 6 | related attributes. Prior to sending a PATCH request to SettingsURI, a 7 | GET request is issued to verify if it contains the attributes to be 8 | updated. In case these attributes are missing, the request is made against 9 | System URI instead. 10 | Issues such as the one addressed with this change usually manifest 11 | themselves with a Redfish response containing an error message similar to 12 | the following: ``MessageId: Base.1.8.PropertyNotWritable, Message: The 13 | property BootSourceOverrideEnabled is a read only property and cannot be 14 | assigned a value.`` 15 | -------------------------------------------------------------------------------- /releasenotes/notes/config-server-side-retries-d16824019bd709a2.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds two new configuration options: 5 | ``server_side_retries`` allows to set a custom value for the number of 6 | times we should retry a GET request in case of a server error, 7 | defaults to 10; 8 | ``server_side_retries_delay`` allows to customize the time in seconds 9 | between the request retries, defaults to 3. 10 | -------------------------------------------------------------------------------- /releasenotes/notes/decouple-boot-params-c75e80f5951abb12.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Adds a new ``set_system_boot_options`` method to the ``System`` object 5 | superseding the ``set_system_boot_source`` method. The new method has 6 | all boot parameters optional to allow for more atomicity when PATCH'ing 7 | Redfish ``Boot`` object. The new method will only include those items in 8 | the PATCH document, that are explicitly passed by the user. This change 9 | might improve interoperability with BMCs that do not handle certain 10 | attributes of the ``Boot`` object. 11 | -------------------------------------------------------------------------------- /releasenotes/notes/deprecate-system-leds-f1a72422c53d281e.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | Deprecates system-specific indicator LEDs as redundant. 5 | The ``SYSTEM_INDICATOR_LED_LIT``, ``SYSTEM_INDICATOR_LED_BLINKING``, 6 | ``SYSTEM_INDICATOR_LED_OFF`` and ``SYSTEM_INDICATOR_LED_UNKNOWN`` constants 7 | should not be used. Generic indicator LED constants should be used instead. 8 | Those are ``INDICATOR_LED_LIT``, ``INDICATOR_LED_BLINKING``, 9 | ``INDICATOR_LED_OFF`` and ``INDICATOR_LED_UNKNOWN`` respectively. 10 | -------------------------------------------------------------------------------- /releasenotes/notes/disable-conn-pooling-3456782afe56ac94.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Disable HTTP connection pooling by asking HTTP server to close our 5 | connection right upon use. The rationale is that some BMC observed in 6 | the wild seem to close persistent connections abruptly upon eventual 7 | reuse failing completely unrelated operation. So in ``sushy`` we 8 | just try not to maintain persistent connections with BMC at all. 9 | -------------------------------------------------------------------------------- /releasenotes/notes/do-not-offer-compression-encoding-884ca8a7458cb096.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixes unreliable behavior with ETag interactions with some BMCs as 5 | opportunistic use of compressed responses may cause the BMC to change 6 | an ETag response to "Weak", which is to be expected as an ETag represents 7 | an absolute byte-by-byte response consistency, and compression cannot 8 | reliably honor that contract. Introduction of a client perceiving a 9 | "Weak" ETag may not be expected by the server, and the server may reject 10 | responses because the ETag is not a "Strong" ETag when we respond or 11 | interact with a resource. 12 | 13 | As a result, requests no longer offer oppurtunistic compression 14 | of responses as an acceptable possibility, which overall has minimal 15 | impact, espescially when compared to the value of consistent BMC 16 | behavior and interaction. 17 | -------------------------------------------------------------------------------- /releasenotes/notes/drop-py-2-7-cc931c210ce08e33.yaml: -------------------------------------------------------------------------------- 1 | upgrade: 2 | - | 3 | Python 2.7 support has been dropped. Last release of sushy 4 | to support Python 2.7 is OpenStack Train. The minimum version of Python now 5 | supported by sushy is Python 3.6. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/enhance-oem-extension-design-3143717e710b3eaf.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | OEM resource class hierarchy has been redesigned to allow for non-terminal 5 | sub-resources (e.g. Links) to be handled within OEM resource model. As a 6 | consequence, backward compatibility with previously existing OEM extension 7 | framework (anything based on ``OEMExtensionResourceBase`` class) is not 8 | preserved. User OEM code migration would involve switching from 9 | ``OEMExtensionResourceBase`` to ``OEMResourceBase`` (note ``__init__`` 10 | call signature change) and replacing ``OEMField``-based classes with their 11 | generic sushy ``Field`` counterparts. 12 | -------------------------------------------------------------------------------- /releasenotes/notes/enhance-storage-volume-drive-support-16314d30f3631fb3.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Update the Storage, Volume, and Drive models to support RAID 5 | configuration management. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/enums-3aff03d940012f33.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | prelude: | 3 | Sushy now exposes Python enums instead of simple string constants. Please 4 | check the upgrade notes before updating to this version. 5 | upgrade: 6 | - | 7 | Python `enumerations `_ are 8 | now used instead of strings for all Sushy constants. The old names are 9 | kept but now point to enumerated values, so e.g. ``sushy.POWER_STATE_ON`` 10 | is an alias for ``sushy.PowerState.ON``. Consumers of the library may see 11 | breakages in two cases: 12 | 13 | * Relying on literal values of the old constants. Use constants instead. 14 | * Relying on the fact that Sushy constants are strings (e.g. storing them 15 | in a database). You can either use the ``value`` attribute to get the 16 | underlying string or create your own mapping. 17 | deprecations: 18 | - | 19 | The old constant names (not based on enumerations) are now deprecated. 20 | For example, use ``sushy.PowerState.ON`` instead of 21 | ``sushy.POWER_STATE_ON``. 22 | -------------------------------------------------------------------------------- /releasenotes/notes/ethernet-interfaces-manager-5529326417a38da9.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds `EthernetInterfaces` property support to the 5 | Redfish Manager instance. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/event-service-d6607420effc3df8.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds support for the Redfish EventService resource. 5 | `EventService` is responsible for managing event subscriptions and 6 | generates the events sent to subscribers. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/expand-drive-schema-042901f919be646c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds ``CapacityBites``, ``Manufacturer``, ``Model``, ``PartNumber``, 5 | ``SerialNumber`` and ``Status`` properties to the ``Drive`` resource. -------------------------------------------------------------------------------- /releasenotes/notes/fix-2008198-bios-factory-reset-400-bad-request-3f4a7a2aada0835b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixes an issue in performing action ``#Bios.ResetBios`` when no body in 5 | POST request provided and BMC responds with HTTP 400 Bad request, for 6 | example, Dell R630 having iDRAC 2.75.75.75. See `story 2008198 7 | `__ for details. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-eject-media-empty-dict-573b4c9e06f52ce7.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Some vendors like HPE iLO has this kind of implementation that for eject 5 | virtual media need to pass empty dictionary otherwise throws Unsupported 6 | media type error. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-exceeding-retries-663ab543cc14f261.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixes exceeding retries. Before this fix running sushy for longer it no 5 | longer retried for temporary failures when it should. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-extended-info-error-handling-73fecb6bf5c852ff.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixes ``AttributeError: 'str' object has no attribute 'get'`` during error 5 | handling. This occurs when BMC does not return a list of messages inside 6 | ``@Message.ExtendedInfo``, but a single item. This has been observed with 7 | iDRAC. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-insert-media-payload-b5d4c707f81d9603.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | "Inserted" and "WriteProtected" optional attributes are no longer present 5 | in the InsertMedia API call payload when default values {"Inserted": True, 6 | "WriteProtected": True} are specified by the consumer (e.g. Ironic) and 7 | PATCH method of configuring virtual media is not used. 8 | Behaviour is unchanged if PATCH method is used. 9 | fixes: 10 | - | 11 | Removing "Inserted" and "WriteProtected" parameters from the Redfish 12 | VirtualMedia::insert_media() API call payload when default values 13 | {"Inserted": True, "WriteProtected": True} are set and PATCH method is not 14 | used. Those parameters are optional as per Redfish schema 2021.1. Some 15 | BMCs (e.g. SuperMicro X11/X12 platforms) treat these fields as read-only 16 | and setting them causes vMedia insert failures. These attributes should 17 | default to True on the BMC side. 18 | Some BMCs using PATCH method of configuring virtual media (e.g. Lenovo 19 | SD530) still require "Inserted" attribute, so only changing this for 20 | non-PATCH methods of configuring virtual media such as InsertMedia action. 21 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-malformed-boot-mode-1ba1117cad8dcc47.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixes malformed value of the ``BootSourceOverrideMode`` element which goes 5 | against the Redfish schema and causes some of the boot mode calls to 6 | fail. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-manager-action-d71fd415cea29aa6.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Makes ``Manager->Actions`` field optional as Redfish Manager schema 5 | defines it. Otherwise sushy fails hard at parsing response from a 6 | Redfish agent that does not include ``Actions`` field in its document 7 | tree. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-missing-etags-ded8c0bb31fafef7.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixes missing ETag in PATCH operation against Redfish resources with 5 | backward compatibility for Redfish implementation which doesn't work 6 | with ETag in header. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-oem-loading-52da045252b6c33e.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixes Sushy OEM extension loading when using multiple servers that 5 | caused loaded extensions to point to server for which the extension 6 | was loaded first. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-refine-resource-refresh-86c21ce230967251.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | New ``force`` argument to the ``refresh`` method on resources can be set to 5 | ``False`` to prevent refreshing of resources that are not stale. Resources 6 | can be marked as stale by calling a new ``invalidate`` method. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-required-oem-attribute-parsing-205e4186275aa293.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixes OEM resource attribute parsing for OEM resources with required 5 | fields. Before the fix an error such as "The attribute is 6 | missing from the resource " occurred. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-retry_volume_operation-on_sys518-009f2b16e5c38a27.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Add retries on iDRAC error with code SYS518 and message "iDRAC is 5 | currently unable to display any information because data sources are 6 | unavailable." for all request types in addition to existing GET methods. 7 | This helps to fix a known intermittent issue when deleting set of volumes 8 | one after another and iDRAC is reloading after deleting each volume. 9 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-return-full-weak-etag-04265472cbea9c0e.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Makes the unstripped version of an Etag available in addition to 5 | the stripped one in order to support vendor implementations which 6 | require one or the other. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-simple-storage-device-capacity-bytes-null-0672eed36d9da70a.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixes bug in ``SimpleStorageCollection.disks_sizes_bytes`` which assumed 5 | the type of a disk's ``CapacityBytes`` property is ``integer``. According 6 | to the Distributed Management Task Force (DMTF) Redfish standard schema 7 | [1], it can be ``null``, which is converted to ``None`` in Python. For 8 | more information, see `story 2006918 9 | `_. 10 | 11 | [1] https://redfish.dmtf.org/schemas/SimpleStorage.v1_2_3.json -------------------------------------------------------------------------------- /releasenotes/notes/fix-simple-update-e88838fab4170920.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixes bug in ``UpdateService.simple_update`` method making it operational. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-software-firmware-inventory-3e0e79e052aa76d9.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixes bugs in the ``UpdateService.software_inventory`` and 5 | ``UpdateService.firmware_inventory`` properties making them operational. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-subprocessors-3b619434dba4636d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixes ``Processor.sub_processors`` for "'Processor' object has no attribute 5 | 'conn'" error. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-taskmonitor-init-calls-in-volume-module-0f8a747acd0cfe3f.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixes issues in the ``volume`` module where the first parameter passed to 5 | the ``TaskMonitor`` constructor was incorrect. The parameter passed was 6 | the resource object (self), but it should have been the connector object 7 | (self._conn). This affected the ``create_volume()`` and 8 | ``delete_volume()`` methods. 9 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-to-close-session-on-dealloc-c3687d4dcb1441b8.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Tries to terminate authenticated Redfish session at BMC Session Service on 5 | the event of ``Sushy`` object deallocation. This should reduce the chance 6 | of authenticated sessions pool exhaustion at some BMCs. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-update-service-constants-b8c3f48ccee6ce1f.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | The ``transfer_protocol`` parameter of the ``UpdateService.simple_update`` 5 | method should be given one of the newly exposed constants rather than a 6 | string literal. This is a breaking change. 7 | features: 8 | - | 9 | Exposes ``UpdateService`` constants to ``sushy`` namespace. -------------------------------------------------------------------------------- /releasenotes/notes/fix-use-headers-for-options-736940b87c06c189.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | If available, uses headers with an Etag to set the boot options. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-virtual-media-fallback-15a559414a65c014.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Adds a fallback for inserting and ejecting virtual media 5 | using the PATCH HTTP request instead of the explicit action URIs. 6 | The fallback is required for Lenovo ThinkSystem machines (i.e. SD530, ..) 7 | that only implement the PATCH method. -------------------------------------------------------------------------------- /releasenotes/notes/fix-volume-actions-not-required-730fd637dd2587ce.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | The ``Actions`` field in the ``Volume`` resource was incorrectly specified 5 | as being required. This fix makes the field optional. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/fix-volume-delete-configuration-unsuported-operational_time_property-f53f650d8612a847.yaml: -------------------------------------------------------------------------------- 1 | fixes: 2 | - | 3 | Fixes 'Unsupported parameter name @Redfish.OperationApplyTime' error 4 | on iDRAC firmware version 6.00.02.00 or newer when deleting volumes. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/fixes-ilo5-redfish-firmware-update-issue-273862b2a11e3536.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adding a new attribute task_uri to monitor redfish firmware 5 | update since some vendors(ilo) does not provide appropriate 6 | response with task_monitor uri. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/get-retry-9ca311caf8a0b7bb.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Automatically retries internal server errors from GET requests. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/handle-basic-auth-access-errors-393b368b31f5cad2.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixes an issue in the sushy connector object handling where a 5 | Sushy client utilizing ``basic`` authentication would not raise 6 | an AccessError exception once the credentials stopped working. 7 | We now explicitly check to see if ``basic`` authentication 8 | is in use, and raise the exception if an AccessError is 9 | encountered. 10 | -------------------------------------------------------------------------------- /releasenotes/notes/handle_transfer_method-a51d5a17e381ebee.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Add TransferMethod for any general error that mentions it. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/health_literals_change-0e3fc0c439b765e3.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | other: 3 | - | 4 | Changes the values for the constants ``HEALTH_STATE_ENABLED``, 5 | ``HEALTH_STATE_DISABLED``, ``HEALTH_OK``, ``HEALTH_WARNING`` 6 | and ``HEALTH_CRITICAL``. These could be correctly used 7 | with their mapped values in mappings.py. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/increase-server-retries-5f11edde8ee0b461.yaml: -------------------------------------------------------------------------------- 1 | fixes: 2 | - | 3 | To avoid timeouts with recent versions of firmwares we need to increase 4 | the number of server side retries. 5 | For example, in idrac firmware series 5.x the time gap between operations 6 | is almost 20 seconds instead of the 10 seconds in the 4.x series. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/indicator-led-mappings-e7b34da03f6abb06.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds mappings and constants for possible values of the Indicator LED 5 | value in the System class. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/lazily-load-registries-0e9441e435c2471d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Postpones (potentially very large) Redfish message registries download and 5 | processing up to the first access by the client. The goal is to reduce 6 | the amount of unnecessary traffic and CPU cycles. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/make-leds-settable-c82cb513de0171f5.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``IndicatorLED`` property of ``System`` and ``Chassis`` resources 5 | made settable with the introduction of the ``.set_indicator_led()`` 6 | method to the respective sushy classes. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/make-volume-ops-blocking-de5c2ae032041d5d.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Make POST and DELETE operations in Volume and VolumeCollection blocking. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/message-parsing-resilience-534da532515a15da.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Makes message parsing more resilient by handling the case where the message 5 | ID only contains a message key and no registry name. In this case, fall 6 | back to the ``Messages`` message registry file and then to the 7 | ``BaseMessages`` message registry file. If the message ID cannot be found, 8 | then set the message to ``unknown``. When parsing messages, if not enough 9 | arguments were supplied, then fill in the remaining arguments with 10 | ``unknown``. 11 | -------------------------------------------------------------------------------- /releasenotes/notes/message-registry-logging-39624ae114c02e15.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | The large ``MessageRegistry`` objects are no longer logged. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/monitor_firmware_update-664b0c6c1a0307cf.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Added the ability to monitor the progress of a firmware update by changing 5 | the ``simple_update`` operation to return a task monitor object. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/more-transferprotocoltype-739ce8bdedbcb51c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Add TransferProtocolType for any general error that mentions it 5 | -------------------------------------------------------------------------------- /releasenotes/notes/no-passwords-295207ac891d27ab.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | security: 3 | - | 4 | No longer logs passwords and auth tokens in DEBUG mode when using 5 | SessionService for authentication. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/non-default-language-registries-f73bdecc98ba2cc8.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | In some cases registries might not be available because the 5 | our check for the registry language did not account for a 6 | possible country suffix. The logic was improved to take it 7 | into account. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/property-missing-7602c421ec177e9a.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Correctly handles error code ``Base.1.5.PropertyMissing`` when dealing with 5 | hardware that requires ``TransferProtocolType`` for virtual media 6 | operations. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/raise-error-on-async-task-failure-b67c7bc189a4d6ca.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixes an issue in the ``Connector`` class where an exception is not raised 5 | when an asynchronous operations fails. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/re-raise-1fe9f912691e893e.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Correctly handles errors on a request that is re-tried after refreshing 5 | an authentication token. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/reauthentication-session-fallback-failure-fixes-4f0dcfdad1afd2d7.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixes issues with the refresh of ``Session`` based authentication where 5 | a previous refresh attempt failing could result in a fallback 6 | to ``Basic`` authentication and would silently fail. The client library 7 | now attempts to re-authenticate. 8 | - | 9 | Fixes silent failures when a refresh of an authentication ``Session`` 10 | fails and was unable to be re-established due to an ``AccessError``. 11 | Should this occur, now the ``AccessError`` exception is explicitly raised 12 | as opposed to attempting to fall back to ``Basic`` authentication. 13 | - | 14 | Fixes issues where the ``Session`` and ``Basic`` auth interface would 15 | fallback to ``Basic`` authentication should a ``ConnectionError`` 16 | exception occur while attempting to perform an authentication action. 17 | ``ConnectionError`` exceptions are signs of networking transport issues, 18 | and should be investigated. A ``ConnectionError`` exception is now raised. 19 | - | 20 | Prevents the combined ``Session`` and ``Basic`` authentication support 21 | from falling back to ``Basic`` authentication once ``Session`` based 22 | authentication has been established. This should be considered a potential 23 | security issue or an environmental change requiring potential client 24 | re-initialization. This is exposed as an ``AccessError`` exception. 25 | Continued operations against the Sushy library will attempt to 26 | reauthenticate, if possible. 27 | -------------------------------------------------------------------------------- /releasenotes/notes/redfish-response-log-294f3f10b770e356.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Reduce the logging from sushy by logging only attributes and values 5 | set in the redfish response, not the entire json. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/refactor-taskmonitor-update-volume-ba99380188395852.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds new method ``get_task_monitor`` to retrieve TaskMonitor instance by 5 | task monitor URI. 6 | deprecations: 7 | - | 8 | Existing two ``TaskMonitor``-s are deprecated and replaced with one 9 | ``taskmonitor.TaskMonitor``. 10 | 11 | For ``resources.task_monitor.TaskMonitor`` users changes include: 12 | 13 | * ``in_progress`` is replaced with method ``check_is_processing`` 14 | * ``location_header`` is replaced with method ``task_monitor_uri`` 15 | * there is no replacement for ``set_retry_after``, 16 | ``taskmonitor.TaskMonitor`` sets this internally from Retry-After 17 | header 18 | 19 | For ``resources.taskservice.taskmonitor.TaskMonitor`` users changes 20 | include: 21 | 22 | * ``check_is_processing``, ``sleep_for`` and static ``get_task_monitor`` 23 | added. 24 | * in ``__init__`` parameter ``field_data`` is deprecated, use ``response`` 25 | * in ``__init__`` parameter ``task_monitor`` is renamed to 26 | ``task_monitor_uri`` 27 | * ``task_monitor`` is deprecated, use ``task_monitor_uri`` 28 | * ``retry_after`` is deprecated, use ``sleep_for`` 29 | 30 | Methods ``create_volume``, ``delete_volume``, ``initialize_volume`` in 31 | volume module are deprecated and replaced with ones named ``create``, 32 | ``delete`` and ``initialize``. New methods for asynchronous operations 33 | return ``taskmonitor.TaskMonitor`` instead of 34 | deprecated ``resources.task_monitor.TaskMonitor``. 35 | 36 | Method ``resources.updateservice.UpdateService.get_task_monitor`` is 37 | deprecated, use ``Sushy.get_task_monitor`` instead. 38 | 39 | -------------------------------------------------------------------------------- /releasenotes/notes/releasenote-d7138d1e1d414632.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Alters eTag handling in PATCH requests: First, the original eTag is used. 5 | In case of a failure, if the eTag provided was weak, it is converted to 6 | a strong format by removing the weak prefix. If this approach is not 7 | applicable or fails, the final attempt is made omitting the eTag entirely. 8 | By taking this approach, no workarounds are applied if BMC is handling 9 | eTags as expected and in case of failures, known workarounds are 10 | attempted, improving overall resiliency. 11 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-deprecated-task-monitors-58c505d43e1fa6a7.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | deprecations: 3 | - | 4 | ``resources.task_monitor.TaskMonitor`` and 5 | ``resources.taskservice.taskmonitor.TaskMonitor`` that were deprecated in 6 | Wallaby are now removed. Use ``taskmonitor.TaskMonitor`` instead. 7 | - | 8 | Methods ``create_volume``, ``delete_volume``, ``initialize_volume`` in 9 | volume module that were deprecated in Wallaby are now removed. Use 10 | ``create``, ``delete`` and ``initialize`` instead. 11 | -------------------------------------------------------------------------------- /releasenotes/notes/remove-py38-6eebcd268c6f8e37.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | upgrade: 3 | - | 4 | Support for Python 3.8 has been removed. Now the minimum python version 5 | supported is 3.9 . 6 | -------------------------------------------------------------------------------- /releasenotes/notes/retry-if-transferprototype-missing-9cae57f3ecf470a9.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Resolved virtualmedia attach failures caused by the lack of 5 | TransferProtocolType parameter in the request payload which is required 6 | by certain BMCs (e.g. on Nokia servers). This is done by adding capability 7 | to retry virtualmedia InsertMedia with the updated payload in such cases. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/retry-ilo-not-ready-error-0b4dce882282eaac.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | An issue was encountered on some HPE iLO supported machines where the 5 | Baseboard Management Controller would respond with a HTTP 400 error 6 | and an error message indicating the requested operation was invalid 7 | for the then system state. For example, attempting to change the power 8 | state via the BMC shortly after previously changing the power state. 9 | We now attempt to retry within the permitted number of retries when 10 | this error is encountered. 11 | -------------------------------------------------------------------------------- /releasenotes/notes/retry-on-missing-managedby-b2a5240eab8b4262.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Adds the ability to retry an attempt to determine a Manager for a System 5 | when ManagedBy attribute is missing but Managers attribute is present. 6 | This resolves issues with certain hardware models such as Huawei 1288H. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/secure-boot-76c5b80371ea85d1.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds support for UEFI secure boot: reading the current status, enabling or 5 | disabling secure boot, resetting keys. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/secure-boot-database-7fae673722d7cf4f.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds support for fetching and resetting individual UEFI secure boot 5 | databases. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/sessions.yml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds "SessionService" and "Sessions" to the library. 5 | - | 6 | Adds the ability to specify authentication type on creation of root sushy object. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/show-networkadapter-firmware-624b9f41cfe0637b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Extend the NetworkAdapters resource to include information about the firmware. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/skip-empty-mac-address-0d758a9c0d70e2a9.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Some hardware vendors set MAC addresses to the empty string which is not 5 | valid so skip including those ethernet_interfaces. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/standard-registry-license-0ded489afd6cfad1.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | other: 3 | - | 4 | Includes Redfish standard message registry files that are licensed 5 | under Creative Commons Attribution 4.0 License: 6 | https://creativecommons.org/licenses/by/4.0/ 7 | -------------------------------------------------------------------------------- /releasenotes/notes/storage-controller-name-6924b71a97f78481.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | The ``Name`` field of a StorageControllers sub-field of a Storage resource 5 | is no longer mandatory. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/storage-controllers-resource-7ab112f5d2c34ca0.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds ``controllers`` property of ``Storage`` class that was introduced in 5 | Redfish v1.9 to replace ``storage_controllers`` deprecated in Redfish 6 | v1.13. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/story-2006246-reset-bios-return-http-error-415-08170df7fe6300f8.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixes an issue in performing action ``#Bios.ResetBios`` when BMC expects 5 | the POST request with empty body instead of no body. See `story 2006246 6 | `__ for details. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/story-2007216-fix-to-message-registry-cff37659f03ba815.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Handles incomplete messages in MessageRegistry that are not having fields 5 | like 'Description' and 'Severity'. See story 6 | `2007216 `_ for more 7 | information. 8 | 9 | -------------------------------------------------------------------------------- /releasenotes/notes/supermicro-vmedia-dev-workaround-cc7a870c9a99d92b.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixes incompatibility with SuperMicro ars-111gl-nhr which uses 'Cd' device 5 | string for virtual media boot as opposed to 'UsbCd' typical to most 6 | SuperMicro servers. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/sushy-oem-idrac-f4a1f2202b7955d7.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | prelude: > 3 | sushy-oem-idrac has been merged into this package, removing the need 4 | to install it separately. 5 | upgrade: 6 | - | 7 | You must uninstall sushy-oem-idrac as a separate package when upgrading. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/sushy-system-virtualmedia-7a61bd77780f7b0e.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds support for virtual media via ``System`` resource. For more 5 | information, see `bug 2039458 6 | `_. 7 | -------------------------------------------------------------------------------- /releasenotes/notes/update-apply-time-support-53c5445b58cd3b42.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Update sushy models to support the Redfish SettingsApplyTime and 5 | OperationApplyTimeSupport annotations. 6 | deprecations: 7 | - | 8 | The ``operation_apply_time_support`` and ``maintenance_window`` 9 | properties in the ``SettingsField`` class are deprecated. The 10 | ``SettingsField`` class represents the ``@Redfish.Settings`` 11 | annotation and those properties cannot appear within this 12 | annotation. Instead use the ``apply_time_settings`` property 13 | in the target resource (e.g. ``Bios`` resource). 14 | -------------------------------------------------------------------------------- /releasenotes/notes/update_sushy_models-9b8ea0350eb4d4d0.yaml: -------------------------------------------------------------------------------- 1 | features: 2 | - | 3 | Unifies sushy models by Redfish schema bundle. 4 | 5 | These changes introduce and update currently implemented 6 | sushy models to comply with the most recent schema bundle[1]. 7 | [1]https://www.dmtf.org/documents/redfish-spmf/redfish-schema-bundle-20181 8 | -------------------------------------------------------------------------------- /releasenotes/notes/use-sessions-url-from-root-8b8eca57dc450705.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Instead of trying to GET /redfish/v1/SessionService, which is usually 5 | reachable via authentication, fail, and then guess 6 | /redfish/v1/SessionService/Sessions as Sessions URL, we try first to use 7 | directly the Sessions URL provided by the root service, if available. 8 | 9 | -------------------------------------------------------------------------------- /releasenotes/notes/use-settingsobject-if-supported-12a332f9905d64ce.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Fixes incompatibility with BMCs that require use of a specific 5 | SettingsObject URI specified in @Redfish.Settings resource in order to 6 | set BootSourceOverride or similar attributes. For example, this is 7 | required on Nokia servers. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/vmedia-1.4.0-9957460fed59d85c.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Allows reading and changing the virtual media fields ``TransferMethod`` 5 | and ``VerifyCertificate``. 6 | - | 7 | Allows reading the virtual media field ``UserName``. 8 | -------------------------------------------------------------------------------- /releasenotes/notes/vmedia-blank-auth-c01916469219a39e.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Provides dummy vmedia username and password if required by BMC 5 | -------------------------------------------------------------------------------- /releasenotes/notes/vmedia-certificate-06c367c6ef33d139.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | Adds support for creating and deleting virtual media TLS certificates. 5 | -------------------------------------------------------------------------------- /releasenotes/notes/vmedia-credentials-14b7705c3c94cc07.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | features: 3 | - | 4 | The ``VirtualMedia.insert_media`` call now supports credentials for the 5 | ``image`` URI. 6 | -------------------------------------------------------------------------------- /releasenotes/notes/workaround-sushy-requests-verify-handling-6879c273b651246f.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Workaround for https://github.com/psf/requests/issues/3829 5 | If the env ``REQUESTS_CA_BUNDLE`` is set the ``requests.Session()`` 6 | ignores the verify parameter. Therefore the verify parameter 7 | is moved directly into the function call of requests. 8 | 9 | 10 | -------------------------------------------------------------------------------- /releasenotes/source/2023.1.rst: -------------------------------------------------------------------------------- 1 | =================================== 2 | 2023.1 Series (4.4.x) Release Notes 3 | =================================== 4 | 5 | .. release-notes:: 6 | :branch: unmaintained/2023.1 7 | -------------------------------------------------------------------------------- /releasenotes/source/2023.2.rst: -------------------------------------------------------------------------------- 1 | =================================== 2 | 2023.2 Series (4.5.x) Release Notes 3 | =================================== 4 | 5 | .. release-notes:: 6 | :branch: stable/2023.2 7 | -------------------------------------------------------------------------------- /releasenotes/source/2024.1.rst: -------------------------------------------------------------------------------- 1 | =========================================== 2 | 2024.1 Series (4.6.0 - 5.0.x) Release Notes 3 | =========================================== 4 | 5 | .. release-notes:: 6 | :branch: stable/2024.1 7 | -------------------------------------------------------------------------------- /releasenotes/source/2024.2.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | 2024.2 Series Release Notes 3 | =========================== 4 | 5 | .. release-notes:: 6 | :branch: stable/2024.2 7 | -------------------------------------------------------------------------------- /releasenotes/source/2025.1.rst: -------------------------------------------------------------------------------- 1 | =========================== 2 | 2025.1 Series Release Notes 3 | =========================== 4 | 5 | .. release-notes:: 6 | :branch: stable/2025.1 7 | -------------------------------------------------------------------------------- /releasenotes/source/_static/.placeholder: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/releasenotes/source/_static/.placeholder -------------------------------------------------------------------------------- /releasenotes/source/_templates/.placeholder: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/releasenotes/source/_templates/.placeholder -------------------------------------------------------------------------------- /releasenotes/source/index.rst: -------------------------------------------------------------------------------- 1 | ============================================ 2 | sushy Release Notes 3 | ============================================ 4 | 5 | .. toctree:: 6 | :maxdepth: 1 7 | 8 | unreleased 9 | 2025.1 10 | 2024.2 11 | 2024.1 12 | 2023.2 13 | 2023.1 14 | zed 15 | yoga 16 | xena 17 | wallaby 18 | victoria 19 | ussuri 20 | train 21 | stein 22 | rocky 23 | queens 24 | pike 25 | -------------------------------------------------------------------------------- /releasenotes/source/pike.rst: -------------------------------------------------------------------------------- 1 | ========================================= 2 | Pike Series (1.0.0 - 1.1.x) Release Notes 3 | ========================================= 4 | 5 | .. release-notes:: 6 | :branch: stable/pike 7 | -------------------------------------------------------------------------------- /releasenotes/source/queens.rst: -------------------------------------------------------------------------------- 1 | =========================================== 2 | Queens Series (1.2.0 - 1.3.x) Release Notes 3 | =========================================== 4 | 5 | .. release-notes:: 6 | :branch: stable/queens 7 | -------------------------------------------------------------------------------- /releasenotes/source/rocky.rst: -------------------------------------------------------------------------------- 1 | ========================================== 2 | Rocky Series (1.4.0 - 1.6.x) Release Notes 3 | ========================================== 4 | 5 | .. release-notes:: 6 | :branch: stable/rocky 7 | -------------------------------------------------------------------------------- /releasenotes/source/stein.rst: -------------------------------------------------------------------------------- 1 | ========================================== 2 | Stein Series (1.7.0 - 1.8.x) Release Notes 3 | ========================================== 4 | 5 | .. release-notes:: 6 | :branch: stable/stein 7 | -------------------------------------------------------------------------------- /releasenotes/source/train.rst: -------------------------------------------------------------------------------- 1 | =========================================== 2 | Train Series (1.9.0 - 2.0.x) Release Notes 3 | =========================================== 4 | 5 | .. release-notes:: 6 | :branch: stable/train 7 | -------------------------------------------------------------------------------- /releasenotes/source/unreleased.rst: -------------------------------------------------------------------------------- 1 | ============================== 2 | Current Series Release Notes 3 | ============================== 4 | 5 | .. release-notes:: 6 | -------------------------------------------------------------------------------- /releasenotes/source/ussuri.rst: -------------------------------------------------------------------------------- 1 | =========================================== 2 | Ussuri Series (3.0.0 - 3.2.x) Release Notes 3 | =========================================== 4 | 5 | .. release-notes:: 6 | :branch: stable/ussuri 7 | -------------------------------------------------------------------------------- /releasenotes/source/victoria.rst: -------------------------------------------------------------------------------- 1 | ============================================= 2 | Victoria Series (3.3.0 - 3.4.x) Release Notes 3 | ============================================= 4 | 5 | .. release-notes:: 6 | :branch: unmaintained/victoria 7 | -------------------------------------------------------------------------------- /releasenotes/source/wallaby.rst: -------------------------------------------------------------------------------- 1 | ============================================ 2 | Wallaby Series (3.5.0 - 3.7.x) Release Notes 3 | ============================================ 4 | 5 | .. release-notes:: 6 | :branch: unmaintained/wallaby 7 | -------------------------------------------------------------------------------- /releasenotes/source/xena.rst: -------------------------------------------------------------------------------- 1 | ========================================== 2 | Xena Series (3.8.0 - 3.12.x) Release Notes 3 | ========================================== 4 | 5 | .. release-notes:: 6 | :branch: unmaintained/xena 7 | -------------------------------------------------------------------------------- /releasenotes/source/yoga.rst: -------------------------------------------------------------------------------- 1 | ========================================= 2 | Yoga Series (4.0.0 - 4.1.x) Release Notes 3 | ========================================= 4 | 5 | .. release-notes:: 6 | :branch: unmaintained/yoga 7 | -------------------------------------------------------------------------------- /releasenotes/source/zed.rst: -------------------------------------------------------------------------------- 1 | ======================================== 2 | Zed Series (4.2.0 - 4.3.x) Release Notes 3 | ======================================== 4 | 5 | .. release-notes:: 6 | :branch: unmaintained/zed 7 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | # Requirements lower bounds listed here are our best effort to keep them up to 2 | # date but we do not test them so no guarantee of having them all correct. If 3 | # you find any incorrect lower bounds, let us know or propose a fix. 4 | 5 | # The order of packages is significant, because pip processes them in the order 6 | # of appearance. Changing the order has an impact on the overall integration 7 | # process, which may cause wedges in the gate later. 8 | 9 | pbr>=6.0.0 # Apache-2.0 10 | requests>=2.14.2 # Apache-2.0 11 | python-dateutil>=2.7.0 # BSD 12 | stevedore>=1.29.0 # Apache-2.0 13 | -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | [metadata] 2 | name = sushy 3 | summary = Sushy is a small Python library to communicate with Redfish based systems 4 | description_file = 5 | README.rst 6 | license = Apache-2.0 7 | author = OpenStack 8 | author_email = openstack-discuss@lists.openstack.org 9 | home_page = https://docs.openstack.org/sushy/latest/ 10 | python_requires = >=3.9 11 | classifier = 12 | Environment :: OpenStack 13 | Intended Audience :: Information Technology 14 | Intended Audience :: System Administrators 15 | Operating System :: POSIX :: Linux 16 | Programming Language :: Python 17 | Programming Language :: Python :: Implementation :: CPython 18 | Programming Language :: Python :: 3 :: Only 19 | Programming Language :: Python :: 3 20 | Programming Language :: Python :: 3.9 21 | Programming Language :: Python :: 3.10 22 | Programming Language :: Python :: 3.11 23 | Programming Language :: Python :: 3.12 24 | 25 | [files] 26 | packages = 27 | sushy 28 | 29 | [entry_points] 30 | sushy.resources.manager.oems = 31 | dell = sushy.oem.dell.resources.manager.manager:get_extension 32 | sushy.resources.storage_controller.oems = 33 | dell = sushy.oem.dell.resources.system.storage.controller:get_extension 34 | sushy.resources.system.oems = 35 | contoso = sushy.resources.oem.fake:get_extension 36 | dell = sushy.oem.dell.resources.system.system:get_extension 37 | sushy.resources.task.oems = 38 | dell = sushy.oem.dell.resources.taskservice.task:get_extension 39 | 40 | [codespell] 41 | quiet-level = 4 42 | # Words to ignore: 43 | # assertIn: used in unit testing 44 | ignore-words-list = assertIn 45 | skip = AUTHORS,ChangeLog,*.pyc,*.inv,*.svg,*.png,*.sample,./doc/build/*,./api-ref/build/*,./releasenotes/build/*,./api-ref/build/*,./build/* 46 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2013 Hewlett-Packard Development Company, L.P. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 12 | # implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | 16 | import setuptools 17 | 18 | setuptools.setup( 19 | setup_requires=['pbr>=6.0.0'], 20 | pbr=True) 21 | -------------------------------------------------------------------------------- /sushy/__init__.py: -------------------------------------------------------------------------------- 1 | 2 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 3 | # not use this file except in compliance with the License. You may obtain 4 | # a copy of the License at 5 | # 6 | # http://www.apache.org/licenses/LICENSE-2.0 7 | # 8 | # Unless required by applicable law or agreed to in writing, software 9 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 10 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 11 | # License for the specific language governing permissions and limitations 12 | # under the License. 13 | 14 | import logging 15 | 16 | import pbr.version 17 | 18 | from sushy.main import Sushy 19 | from sushy.resources.certificateservice.constants import * # noqa 20 | from sushy.resources.chassis.constants import * # noqa 21 | from sushy.resources.constants import * # noqa 22 | from sushy.resources.eventservice.constants import * # noqa 23 | from sushy.resources.fabric.constants import * # noqa 24 | from sushy.resources.ipaddresses import * # noqa 25 | from sushy.resources.manager.constants import * # noqa 26 | from sushy.resources.registry.constants import * # noqa 27 | from sushy.resources.system.constants import * # noqa 28 | from sushy.resources.system.network.constants import * # noqa 29 | from sushy.resources.system.storage.constants import * # noqa 30 | from sushy.resources.updateservice.constants import * # noqa 31 | from sushy.resources.taskservice.constants import * # noqa 32 | 33 | __all__ = ('Sushy',) 34 | __version__ = pbr.version.VersionInfo( 35 | 'sushy').version_string() 36 | 37 | # Set the default handler to avoid "No handler found" warnings. See: 38 | # https://docs.python.org/3/howto/logging.html#library-config 39 | logging.getLogger(__name__).addHandler(logging.NullHandler()) 40 | -------------------------------------------------------------------------------- /sushy/oem/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/oem/__init__.py -------------------------------------------------------------------------------- /sushy/oem/dell/__init__.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021-2022 Dell Inc. or its subsidiaries. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | 15 | from sushy.oem.dell.resources.manager.constants import * # noqa 16 | from sushy.oem.dell.resources.system.constants import * # noqa 17 | from sushy.oem.dell.resources.system.storage.constants import * # noqa 18 | from sushy.oem.dell.resources.taskservice.constants import * # noqa 19 | -------------------------------------------------------------------------------- /sushy/oem/dell/constants.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021 Dell Inc. or its subsidiaries. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | 15 | IDRAC_CONFIG_PENDING = 'LC068' 16 | IDRAC_JOB_RUNNING = 'RAC0679' 17 | NO_FOREIGN_CONFIG = 'STOR018' 18 | INCOMPLETE_JOB_STATES = ['Scheduled', 19 | 'Running', 20 | 'Paused'] 21 | -------------------------------------------------------------------------------- /sushy/oem/dell/resources/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/oem/dell/resources/__init__.py -------------------------------------------------------------------------------- /sushy/oem/dell/resources/manager/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/oem/dell/resources/manager/__init__.py -------------------------------------------------------------------------------- /sushy/oem/dell/resources/system/constants.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2021-2022 Dell Inc. or its subsidiaries. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | 15 | import enum 16 | 17 | 18 | class PhysicalDiskStateMode(enum.Enum): 19 | """Physical disk state mode constants""" 20 | 21 | RAID = 'RAID' 22 | """RAID physical disk state mode""" 23 | 24 | NONRAID = 'Non-RAID' 25 | """Non-RAID physical disk state mode""" 26 | 27 | 28 | # For backward compatibility 29 | PHYSICAL_DISK_STATE_MODE_RAID = PhysicalDiskStateMode.RAID 30 | PHYSICAL_DISK_STATE_MODE_NONRAID = PhysicalDiskStateMode.NONRAID 31 | -------------------------------------------------------------------------------- /sushy/oem/dell/resources/system/storage/constants.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 Dell Inc. or its subsidiaries. 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 4 | # not use this file except in compliance with the License. You may obtain 5 | # a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 | # License for the specific language governing permissions and limitations 13 | # under the License. 14 | 15 | import enum 16 | 17 | 18 | class ControllerMode(enum.Enum): 19 | """RAID controller modes.""" 20 | 21 | RAID = "RAID" 22 | """RAID mode.""" 23 | 24 | HBA = "HBA" 25 | """HBA/Passthru mode. Does not support RAID. For PERC 9 controllers.""" 26 | 27 | EHBA = "EnhancedHBA" 28 | """Enhanced HBA mode. Limited RAID support. For PERC 10 controllers.""" 29 | -------------------------------------------------------------------------------- /sushy/oem/dell/utils.py: -------------------------------------------------------------------------------- 1 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 2 | # not use this file except in compliance with the License. You may obtain 3 | # a copy of the License at 4 | # 5 | # http://www.apache.org/licenses/LICENSE-2.0 6 | # 7 | # Unless required by applicable law or agreed to in writing, software 8 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 9 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 10 | # License for the specific language governing permissions and limitations 11 | # under the License. 12 | 13 | import logging 14 | import time 15 | 16 | import sushy 17 | 18 | LOG = logging.getLogger(__name__) 19 | 20 | 21 | def reboot_system(system): 22 | if system.power_state != sushy.POWER_STATE_OFF: 23 | system.reset_system(sushy.RESET_FORCE_OFF) 24 | LOG.info('Requested system power OFF') 25 | 26 | while system.power_state != sushy.POWER_STATE_OFF: 27 | time.sleep(30) 28 | system.refresh() 29 | 30 | LOG.info('System is powered OFF') 31 | 32 | system.reset_system(sushy.RESET_ON) 33 | 34 | LOG.info('Requested system power ON') 35 | 36 | while system.power_state != sushy.POWER_STATE_ON: 37 | time.sleep(30) 38 | system.refresh() 39 | 40 | LOG.info('System powered ON') 41 | -------------------------------------------------------------------------------- /sushy/resources/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/resources/__init__.py -------------------------------------------------------------------------------- /sushy/resources/certificateservice/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/resources/certificateservice/__init__.py -------------------------------------------------------------------------------- /sushy/resources/chassis/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/resources/chassis/__init__.py -------------------------------------------------------------------------------- /sushy/resources/chassis/power/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/resources/chassis/power/__init__.py -------------------------------------------------------------------------------- /sushy/resources/chassis/thermal/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/resources/chassis/thermal/__init__.py -------------------------------------------------------------------------------- /sushy/resources/chassis/thermal/constants.py: -------------------------------------------------------------------------------- 1 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 2 | # not use this file except in compliance with the License. You may obtain 3 | # a copy of the License at 4 | # 5 | # http://www.apache.org/licenses/LICENSE-2.0 6 | # 7 | # Unless required by applicable law or agreed to in writing, software 8 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 9 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 10 | # License for the specific language governing permissions and limitations 11 | # under the License. 12 | 13 | # Values comes from the Redfish Chassis json-schema: 14 | # https://redfish.dmtf.org/schemas/v1/Thermal.v1_7_1.json 15 | 16 | import enum 17 | 18 | 19 | class FanReadingUnit(enum.Enum): 20 | 21 | RPM = 'RPM' 22 | """The fan reading and thresholds are measured in revolutions per 23 | minute.""" 24 | 25 | PERCENT = 'Percent' 26 | """The fan reading and thresholds are measured as a percentage.""" 27 | 28 | 29 | # Backward compatibility 30 | FAN_READING_UNIT_PERCENTAGE = FanReadingUnit.PERCENT 31 | FAN_READING_UNIT_RPM = FanReadingUnit.RPM 32 | -------------------------------------------------------------------------------- /sushy/resources/compositionservice/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/resources/compositionservice/__init__.py -------------------------------------------------------------------------------- /sushy/resources/eventservice/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/resources/eventservice/__init__.py -------------------------------------------------------------------------------- /sushy/resources/eventservice/constants.py: -------------------------------------------------------------------------------- 1 | # Licensed under the Apache License, Version 2.0 (the "License"); 2 | # you may not use this file except in compliance with the License. 3 | # You may obtain a copy of the License at 4 | # 5 | # http://www.apache.org/licenses/LICENSE-2.0 6 | # 7 | # Unless required by applicable law or agreed to in writing, software 8 | # distributed under the License is distributed on an "AS IS" BASIS, 9 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 10 | # implied. 11 | # See the License for the specific language governing permissions and 12 | # limitations under the License. 13 | 14 | # EventType constants 15 | # http://redfish.dmtf.org/schemas/v1/Event.json#/definitions/EventType 16 | # https://redfish.dmtf.org/schemas/v1/EventService.v1_0_6.json 17 | 18 | import enum 19 | 20 | 21 | class EventType(enum.Enum): 22 | 23 | STATUS_CHANGE = 'StatusChange' 24 | """The status of a resource has changed.""" 25 | 26 | RESOURCE_UPDATED = 'ResourceUpdated' 27 | """A resource has been updated.""" 28 | 29 | RESOURCE_ADDED = 'ResourceAdded' 30 | """A resource has been added.""" 31 | 32 | RESOURCE_REMOVED = 'ResourceRemoved' 33 | """A resource has been removed.""" 34 | 35 | ALERT = 'Alert' 36 | """A condition requires attention.""" 37 | 38 | METRIC_REPORT = 'MetricReport' 39 | """The telemetry service is sending a metric report.""" 40 | 41 | OTHER = 'Other' 42 | """Because EventType is deprecated as of Redfish Specification v1.6, the 43 | event is based on a registry or resource but not an EventType.""" 44 | 45 | 46 | # Backward compatibility 47 | EVENT_TYPE_STATUS_CHANGE = EventType.STATUS_CHANGE 48 | EVENT_TYPE_RESOURCE_UPDATED = EventType.RESOURCE_UPDATED 49 | EVENT_TYPE_RESOURCE_ADDED = EventType.RESOURCE_ADDED 50 | EVENT_TYPE_RESOURCE_REMOVED = EventType.RESOURCE_REMOVED 51 | EVENT_TYPE_ALERT = EventType.ALERT 52 | EVENT_TYPE_METRIC_REPORT = EventType.METRIC_REPORT 53 | EVENT_TYPE_OTHER = EventType.OTHER 54 | -------------------------------------------------------------------------------- /sushy/resources/fabric/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/resources/fabric/__init__.py -------------------------------------------------------------------------------- /sushy/resources/manager/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/resources/manager/__init__.py -------------------------------------------------------------------------------- /sushy/resources/oem/__init__.py: -------------------------------------------------------------------------------- 1 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 2 | # not use this file except in compliance with the License. You may obtain 3 | # a copy of the License at 4 | # 5 | # http://www.apache.org/licenses/LICENSE-2.0 6 | # 7 | # Unless required by applicable law or agreed to in writing, software 8 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 9 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 10 | # License for the specific language governing permissions and limitations 11 | # under the License. 12 | 13 | from sushy.resources.oem.common import get_resource_extension_by_vendor 14 | 15 | __all__ = ('get_resource_extension_by_vendor',) 16 | -------------------------------------------------------------------------------- /sushy/resources/oem/fake.py: -------------------------------------------------------------------------------- 1 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 2 | # not use this file except in compliance with the License. You may obtain 3 | # a copy of the License at 4 | # 5 | # http://www.apache.org/licenses/LICENSE-2.0 6 | # 7 | # Unless required by applicable law or agreed to in writing, software 8 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 9 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 10 | # License for the specific language governing permissions and limitations 11 | # under the License. 12 | 13 | import logging 14 | 15 | from sushy.resources import base 16 | from sushy.resources import common 17 | from sushy.resources.oem import base as oem_base 18 | 19 | LOG = logging.getLogger(__name__) 20 | 21 | 22 | class ProductionLocationField(base.CompositeField): 23 | facility_name = base.Field('FacilityName') 24 | country = base.Field('Country') 25 | 26 | 27 | class ContosoActionsField(base.CompositeField): 28 | reset = common.ResetActionField('#Contoso.Reset') 29 | 30 | 31 | class FakeOEMSystemExtension(oem_base.OEMResourceBase): 32 | 33 | data_type = base.Field('@odata.type') 34 | name = base.Field('Name', required=True) 35 | production_location = ProductionLocationField('ProductionLocation') 36 | _actions = ContosoActionsField('Actions') 37 | 38 | def get_reset_system_path(self): 39 | return self._actions.reset.target_uri 40 | 41 | 42 | def get_extension(*args, **kwargs): 43 | return FakeOEMSystemExtension 44 | -------------------------------------------------------------------------------- /sushy/resources/registry/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/resources/registry/__init__.py -------------------------------------------------------------------------------- /sushy/resources/registry/constants.py: -------------------------------------------------------------------------------- 1 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 2 | # not use this file except in compliance with the License. You may obtain 3 | # a copy of the License at 4 | # 5 | # http://www.apache.org/licenses/LICENSE-2.0 6 | # 7 | # Unless required by applicable law or agreed to in writing, software 8 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 9 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 10 | # License for the specific language governing permissions and limitations 11 | # under the License. 12 | 13 | # Values come from the Redfish schema: 14 | # https://redfish.dmtf.org/schemas/v1/MessageRegistry.v1_4_2.json 15 | 16 | import enum 17 | 18 | 19 | class MessageParamType(enum.Enum): 20 | """Message Registry message parameter type related constants.""" 21 | STRING = "string" 22 | NUMBER = "number" 23 | -------------------------------------------------------------------------------- /sushy/resources/sessionservice/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/resources/sessionservice/__init__.py -------------------------------------------------------------------------------- /sushy/resources/system/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/resources/system/__init__.py -------------------------------------------------------------------------------- /sushy/resources/system/network/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/resources/system/network/__init__.py -------------------------------------------------------------------------------- /sushy/resources/system/storage/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/resources/system/storage/__init__.py -------------------------------------------------------------------------------- /sushy/resources/taskservice/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/resources/taskservice/__init__.py -------------------------------------------------------------------------------- /sushy/resources/taskservice/constants.py: -------------------------------------------------------------------------------- 1 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 2 | # not use this file except in compliance with the License. You may obtain 3 | # a copy of the License at 4 | # 5 | # http://www.apache.org/licenses/LICENSE-2.0 6 | # 7 | # Unless required by applicable law or agreed to in writing, software 8 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 9 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 10 | # License for the specific language governing permissions and limitations 11 | # under the License. 12 | 13 | # Values come from the Redfish UpdateService json-schema. 14 | # https://redfish.dmtf.org/schemas/v1/TaskService.v1_1_5.json#/definitions/OverWritePolicy 15 | 16 | import enum 17 | 18 | 19 | class TaskState(enum.Enum): 20 | """Task state related constants.""" 21 | CANCELLED = 'Cancelled' 22 | CANCELLING = 'Cancelling' 23 | COMPLETED = 'Completed' 24 | EXCEPTION = 'Exception' 25 | INTERRUPTED = 'Interrupted' 26 | NEW = 'New' 27 | PENDING = 'Pending' 28 | RUNNING = 'Running' 29 | SERVICE = 'Service' 30 | STARTING = 'Starting' 31 | STOPPING = 'Stopping' 32 | SUSPENDED = 'Suspended' 33 | 34 | # Deprecated in 1.2.0 35 | KILLED = 'Killed' 36 | 37 | 38 | class OverWritePolicy(enum.Enum): 39 | """Overwrite Policy constants""" 40 | 41 | MANUAL = 'Manual' 42 | """Completed tasks are not automatically overwritten.""" 43 | 44 | OLDEST = 'Oldest' 45 | """Oldest completed tasks are overwritten.""" 46 | 47 | 48 | # Backward compatibility 49 | OVERWRITE_POLICY_MANUAL = OverWritePolicy.MANUAL 50 | OVERWRITE_POLICY_OLDEST = OverWritePolicy.OLDEST 51 | -------------------------------------------------------------------------------- /sushy/resources/updateservice/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/resources/updateservice/__init__.py -------------------------------------------------------------------------------- /sushy/tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/tests/__init__.py -------------------------------------------------------------------------------- /sushy/tests/oem/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/tests/oem/__init__.py -------------------------------------------------------------------------------- /sushy/tests/oem/dell/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/tests/oem/dell/__init__.py -------------------------------------------------------------------------------- /sushy/tests/oem/dell/functional/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/tests/oem/dell/functional/__init__.py -------------------------------------------------------------------------------- /sushy/tests/oem/dell/unit/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/tests/oem/dell/unit/__init__.py -------------------------------------------------------------------------------- /sushy/tests/oem/dell/unit/base.py: -------------------------------------------------------------------------------- 1 | 2 | # Copyright 2019 OpenStack Foundation 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | 16 | from oslotest import base 17 | 18 | 19 | class TestCase(base.BaseTestCase): 20 | """Test case base class for all unit tests""" 21 | -------------------------------------------------------------------------------- /sushy/tests/oem/dell/unit/json_samples/error_pending_job.json: -------------------------------------------------------------------------------- 1 | { 2 | "error": { 3 | "@Message.ExtendedInfo": [ 4 | { 5 | "Message": "Unable to perform the import or export operation because there are pending attribute changes or a configuration job is in progress.", 6 | "MessageArgs": "[]", 7 | "MessageArgs@odata.count": 0, 8 | "MessageId": "IDRAC.2.8.LC068", 9 | "RelatedProperties": [], 10 | "RelatedProperties@odata.count": 0, 11 | "Resolution": "Apply or cancel any pending attribute changes. Changes can be applied by creating a targeted configuration job, or the changes can be cancelled by invoking the DeletePendingConfiguration method. If a configuration job is in progress, wait until it is completed before retrying the import or export system configuration operation.", 12 | "Severity": "Warning" 13 | } 14 | ], 15 | "code": "IDRAC.2.8.LC068", 16 | "message": "Unable to perform the import or export operation because there are pending attribute changes or a configuration job is in progress." 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /sushy/tests/oem/dell/unit/json_samples/error_running_job.json: -------------------------------------------------------------------------------- 1 | { 2 | "error": { 3 | "@Message.ExtendedInfo": [ 4 | { 5 | "Message": "A job operation is already running. Retry the operation after the existing job is completed.", 6 | "MessageArgs": "[]", 7 | "MessageArgs@odata.count": 0, 8 | "MessageId": "IDRAC.2.8.RAC0679", 9 | "RelatedProperties": [], 10 | "RelatedProperties@odata.count": 0, 11 | "Resolution": "Wait until the running job is completed or delete the scheduled job and retry the operation", 12 | "Severity": "Warning" 13 | } 14 | ], 15 | "code": "IDRAC.2.8.RAC0679", 16 | "message": "Wait until the running job is completed or delete the scheduled job and retry the operation." 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /sushy/tests/oem/dell/unit/json_samples/idrac_card_service.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.context": "/redfish/v1/$metadata#DelliDRACCard.DelliDRACCardService", 3 | "@odata.id": "/redfish/v1/Dell/Managers/iDRAC.Embedded.1/DelliDRACCardService", 4 | "@odata.type": "#DelliDRACCardService.v1_1_0.DelliDRACCardService", 5 | "Actions": { 6 | "#DelliDRACCardService.iDRACReset": { 7 | "Force@Redfish.AllowableValues": [ 8 | "Graceful", 9 | "Force" 10 | ], 11 | "target": "/redfish/v1/Dell/Managers/iDRAC.Embedded.1/DelliDRACCardService/Actions/DelliDRACCardService.iDRACReset" 12 | } 13 | }, 14 | "Description": "The DelliDRACCardService resource provides some actions to support iDRAC configurations.", 15 | "Id": "DelliDRACCardService", 16 | "Name": "DelliDRACCardService" 17 | } 18 | -------------------------------------------------------------------------------- /sushy/tests/oem/dell/unit/json_samples/job_collection_expanded.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.context": "/redfish/v1/$metadata#DellJobCollection.DellJobCollection", 3 | "@odata.id": "/redfish/v1/Managers/iDRAC.Embedded.1/Jobs", 4 | "@odata.type": "#DellJobCollection.DellJobCollection", 5 | "Description": "Collection of Job Instances", 6 | "Id": "JobQueue", 7 | "Members": [ 8 | { 9 | "@odata.context": "/redfish/v1/$metadata#DellJob.DellJob", 10 | "@odata.id": "/redfish/v1/Managers/iDRAC.Embedded.1/Jobs/RID_878460711202", 11 | "@odata.type": "#DellJob.v1_0_2.DellJob", 12 | "CompletionTime": "2020-04-25T15:21:33", 13 | "Description": "Job Instance", 14 | "EndTime": "TIME_NA", 15 | "Id": "RID_878460711202", 16 | "JobState": "Running", 17 | "JobType": "RebootForce", 18 | "Message": "Reboot is complete.", 19 | "MessageArgs": [ ], 20 | "MessageArgs@odata.count": 0, 21 | "MessageId": "RED030", 22 | "Name": "Reboot3", 23 | "PercentComplete": 100, 24 | "StartTime": "TIME_NOW", 25 | "TargetSettingsURI": null 26 | } 27 | ], 28 | "Name": "JobQueue" 29 | } 30 | -------------------------------------------------------------------------------- /sushy/tests/oem/dell/unit/json_samples/job_service.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.context": "/redfish/v1/$metadata#DellJobService.DellJobService", 3 | "@odata.id": "/redfish/v1/Dell/Managers/iDRAC.Embedded.1/DellJobService", 4 | "@odata.type": "#DellJobService.v1_1_0.DellJobService", 5 | "Actions": { 6 | "#DellJobService.DeleteJobQueue": { 7 | "target": "/redfish/v1/Dell/Managers/iDRAC.Embedded.1/DellJobService/Actions/DellJobService.DeleteJobQueue" 8 | } 9 | }, 10 | "Description": "The DellJobService resource provides some actions to support Job management functionality.", 11 | "Id": "Job Service", 12 | "Name": "DellJobService" 13 | } 14 | -------------------------------------------------------------------------------- /sushy/tests/oem/dell/unit/json_samples/lifecycle_service.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.context": "/redfish/v1/$metadata#DellLCService.DellLCService", 3 | "@odata.id": "/redfish/v1/Dell/Managers/iDRAC.Embedded.1/DellLCService", 4 | "@odata.type": "#DellLCService.v1_1_0.DellLCService", 5 | "Actions": { 6 | "#DellLCService.GetRemoteServicesAPIStatus": { 7 | "target": "/redfish/v1/Dell/Managers/iDRAC.Embedded.1/DellLCService/Actions/DellLCService.GetRemoteServicesAPIStatus" 8 | } 9 | }, 10 | "Description": "The DellLCService resource provides some actions to support Lifecycle Controller functionality.", 11 | "Id": "DellLCService", 12 | "Name": "DellLCService" 13 | } 14 | -------------------------------------------------------------------------------- /sushy/tests/oem/dell/unit/json_samples/manager_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.context": "/redfish/v1/$metadata#ManagerCollection.ManagerCollection", 3 | "@odata.id": "/redfish/v1/Managers", 4 | "@odata.type": "#ManagerCollection.ManagerCollection", 5 | "Description": "BMC", 6 | "Members": [ 7 | { 8 | "@odata.id": "/redfish/v1/Managers/iDRAC.Embedded.1" 9 | } 10 | ], 11 | "Members@odata.count": 1, 12 | "Name": "Manager" 13 | } 14 | -------------------------------------------------------------------------------- /sushy/tests/oem/dell/unit/json_samples/releasenotes/notes/fix-lc-wait-loop-cebbee222d3dc7c3.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | fixes: 3 | - | 4 | Resolves the issue where wait for Lifecycle Controller job ends prematurely 5 | due to iDRAC BMC raising a different exception type than the code 6 | previously expected by using the correct exception class. 7 | -------------------------------------------------------------------------------- /sushy/tests/oem/dell/unit/json_samples/task.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.context": "/redfish/v1/$metadata#Task.Task", 3 | "@odata.id": "/redfish/v1/TaskService/Tasks/JID_257309938313", 4 | "@odata.type": "#Task.v1_4_3.Task", 5 | "Description": "Server Configuration and other Tasks running on iDRAC are listed here", 6 | "Id": "JID_257309938313", 7 | "Messages": [ 8 | { 9 | "Message": "Task successfully scheduled.", 10 | "MessageArgs": [], 11 | "MessageArgs@odata.count": 0, 12 | "MessageId": "IDRAC.2.5.JCP001" 13 | } 14 | ], 15 | "Messages@odata.count": 1, 16 | "Name": "Configure: RAID.Integrated.1-1", 17 | "Oem": { 18 | "Dell": { 19 | "@odata.type": "#DellJob.v1_1_0.DellJob", 20 | "CompletionTime": null, 21 | "Description": "Job Instance", 22 | "EndTime": "TIME_NA", 23 | "Id": "JID_257309938313", 24 | "JobState": "Scheduled", 25 | "JobType": "RAIDConfiguration", 26 | "Message": "Task successfully scheduled.", 27 | "MessageArgs": [], 28 | "MessageId": "IDRAC.2.5.JCP001", 29 | "Name": "Configure: RAID.Integrated.1-1", 30 | "PercentComplete": 0, 31 | "StartTime": "TIME_NOW", 32 | "TargetSettingsURI": null 33 | } 34 | }, 35 | "PercentComplete": 0, 36 | "TaskState": "Starting", 37 | "TaskStatus": "OK" 38 | } -------------------------------------------------------------------------------- /sushy/tests/oem/dell/unit/resources/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/tests/oem/dell/unit/resources/__init__.py -------------------------------------------------------------------------------- /sushy/tests/oem/dell/unit/resources/manager/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/tests/oem/dell/unit/resources/manager/__init__.py -------------------------------------------------------------------------------- /sushy/tests/oem/dell/unit/resources/system/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/tests/oem/dell/unit/resources/system/__init__.py -------------------------------------------------------------------------------- /sushy/tests/oem/dell/unit/resources/system/storage/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/tests/oem/dell/unit/resources/system/storage/__init__.py -------------------------------------------------------------------------------- /sushy/tests/oem/dell/unit/resources/taskservice/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/tests/oem/dell/unit/resources/taskservice/__init__.py -------------------------------------------------------------------------------- /sushy/tests/oem/dell/unit/test_root.py: -------------------------------------------------------------------------------- 1 | # Copyright 2017 Red Hat, Inc. 2 | # All Rights Reserved. 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 5 | # not use this file except in compliance with the License. You may obtain 6 | # a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13 | # License for the specific language governing permissions and limitations 14 | # under the License. 15 | 16 | import json 17 | from unittest import mock 18 | 19 | from oslotest.base import BaseTestCase 20 | from sushy import main 21 | 22 | 23 | class RootTestCase(BaseTestCase): 24 | 25 | @mock.patch('sushy.auth.SessionOrBasicAuth', autospec=True) 26 | @mock.patch('sushy.connector.Connector', autospec=True) 27 | @mock.patch('sushy.resources.sessionservice.sessionservice.' 28 | 'SessionService', autospec=True) 29 | def setUp(self, mock_session_service, mock_connector, mock_auth): 30 | super().setUp() 31 | self.conn = mock.Mock() 32 | self.sess_serv = mock.Mock() 33 | self.sess_serv.create_session.return_value = (None, None) 34 | mock_session_service.return_value = self.sess_serv 35 | mock_connector.return_value = self.conn 36 | with open('sushy/tests/oem/dell/unit/json_samples/root.json') as f: 37 | self.conn.get.return_value.json.return_value = json.load(f) 38 | self.root = main.Sushy('http://foo.bar:1234', 39 | verify=True, auth=mock_auth) 40 | 41 | def test_oem_vendors(self): 42 | self.assertEqual(['Dell'], self.root.oem_vendors) 43 | -------------------------------------------------------------------------------- /sushy/tests/unit/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/tests/unit/__init__.py -------------------------------------------------------------------------------- /sushy/tests/unit/base.py: -------------------------------------------------------------------------------- 1 | 2 | # Copyright 2010-2011 OpenStack Foundation 3 | # Copyright (c) 2013 Hewlett-Packard Development Company, L.P. 4 | # 5 | # Licensed under the Apache License, Version 2.0 (the "License"); you may 6 | # not use this file except in compliance with the License. You may obtain 7 | # a copy of the License at 8 | # 9 | # http://www.apache.org/licenses/LICENSE-2.0 10 | # 11 | # Unless required by applicable law or agreed to in writing, software 12 | # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 13 | # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 14 | # License for the specific language governing permissions and limitations 15 | # under the License. 16 | 17 | from oslotest import base 18 | 19 | 20 | class TestCase(base.BaseTestCase): 21 | """Test case base class for all unit tests""" 22 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/TestRegistry.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/tests/unit/json_samples/TestRegistry.zip -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/bare_minimum_root.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#ServiceRoot.v1_0_2.ServiceRoot", 3 | "Id": "RootService", 4 | "Name": "Root Service", 5 | "RedfishVersion": "1.0.2", 6 | "UUID": "92384634-2938-2342-8820-489239905423", 7 | "Oem": {}, 8 | "@odata.context": "/redfish/v1/$metadata#ServiceRoot", 9 | "@odata.id": "/redfish/v1/", 10 | "@Redfish.Copyright": "Copyright 2014-2016 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 11 | } 12 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/bios_attribute_registry_file.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.context": "/redfish/v1/$metadata#MessageRegistryFile.MessageRegistryFile", 3 | "@odata.id": "/redfish/v1/Registries/BiosAttributeRegistry.v1_0", 4 | "@odata.type": "#MessageRegistryFile.v1_0_4.MessageRegistryFile", 5 | "Id": "BiosAttributeRegistry.v1_0", 6 | "Description": "Registry Definition File for BiosAttributeRegistry.v1_0", 7 | "Languages": [ 8 | "en", 9 | "ja", 10 | "zh" 11 | ], 12 | "Location": [ 13 | { 14 | "Language": "en", 15 | "Uri": "/redfish/v1/registrystore/registries/en/biosattributeregistry.v1_0" 16 | }, 17 | { 18 | "Language": "ja", 19 | "Uri": "/redfish/v1/registrystore/registries/ja/biosattributeregistry.v1_0" 20 | }, 21 | { 22 | "Language": "zh", 23 | "Uri": "/redfish/v1/registrystore/registries/zh/biosattributeregistry.v1_0" 24 | } 25 | ], 26 | "Name": "BiosAttributeRegistry.v1_0 Message Registry File", 27 | "Registry": "BiosAttributeRegistry.v1_0" 28 | } 29 | 30 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/bios_attribute_registry_file_zthardware.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.context": "/redfish/v1/$metadata#MessageRegistryFile.MessageRegistryFile", 3 | "@odata.etag": "\"1642688165\"", 4 | "@odata.id": "/redfish/v1/Registries/BiosAttributeRegistryProt0.208.208.0", 5 | "@odata.type": "#MessageRegistryFile.v1_1_3.MessageRegistryFile", 6 | "Description": "Registry for BiosAttributeRegistryProt0.208.208.0", 7 | "Id": "BiosAttributeRegistryProt0.208.208.0", 8 | "Languages": [ 9 | "en-US" 10 | ], 11 | "Location": [ 12 | { 13 | "Language": "en-US", 14 | "Uri": "/redfish/v1/Registries/BiosAttributeRegistryProt0.208.208.0.json" 15 | } 16 | ], 17 | "Name": "BiosAttributeRegistryProt0.208.208.0 Registry", 18 | "Registry": "BiosAttributeRegistryProt0.208.208.0" 19 | } 20 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/bios_settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#Bios.v1_0_3.Bios", 3 | "Id": "Settings", 4 | "Name": "BIOS Configuration Pending Settings", 5 | "AttributeRegistry": "BiosAttributeRegistryP89.v1_0_0", 6 | "Attributes": { 7 | "AdminPhone": "(404) 555-1212", 8 | "BootMode": "Uefi", 9 | "EmbeddedSata": "Ahci", 10 | "NicBoot1": "NetworkBoot", 11 | "NicBoot2": "NetworkBoot", 12 | "PowerProfile": "MaxPerf", 13 | "ProcCoreDisable": 0, 14 | "ProcHyperthreading": "Enabled", 15 | "ProcTurboMode": "Disabled", 16 | "UsbControl": "UsbEnabled" 17 | }, 18 | "@Redfish.SettingsApplyTime": { 19 | "@odata.type": "#Settings.v1_1_0.PreferredApplyTime", 20 | "ApplyTime": "OnReset", 21 | "ApplyTime@Redfish.AllowableValues": [ "OnReset", "Immediate", "AtMaintenanceWindowStart", "InMaintenanceWindowOnReset" ], 22 | "MaintenanceWindowStartTime": "2017-05-03T23:12:37-05:00", 23 | "MaintenanceWindowDurationInSeconds": 600 24 | }, 25 | "@odata.context": "/redfish/v1/$metadata#Bios.Bios", 26 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/BIOS/Settings", 27 | "@Redfish.Copyright": "Copyright 2014-2016 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 28 | } 29 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/certificate_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#CertificateCollection.CertificateCollection", 3 | "Name": "Certificate Collection", 4 | "Members@odata.count": 1, 5 | "Members": [ 6 | { 7 | "@odata.id": "/redfish/v1/Managers/BMC/NetworkProtocol/HTTPS/Certificates/1" 8 | } 9 | ], 10 | "@Redfish.SupportedCertificates": [ 11 | "PEM" 12 | ], 13 | "Oem": {}, 14 | "@odata.id": "/redfish/v1/Managers/BMC/NetworkProtocol/HTTPS/Certificates", 15 | "@Redfish.Copyright": "Copyright 2014-2021 DMTF. For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 16 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/certificate_locations.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#CertificateLocations.v1_0_2.CertificateLocations", 3 | "Id": "CertificateLocations", 4 | "Name": "Certificate Locations", 5 | "Links": { 6 | "Certificates": [ 7 | { 8 | "@odata.id": "/redfish/v1/Managers/BMC/NetworkProtocol/HTTPS/Certificates/1" 9 | } 10 | ] 11 | }, 12 | "Oem": {}, 13 | "@odata.id": "/redfish/v1/CertificateService/CertificateLocations", 14 | "@Redfish.Copyright": "Copyright 2014-2021 DMTF. For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 15 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/certificateservice.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#CertificateService.v1_0_4.CertificateService", 3 | "Id": "CertificateService", 4 | "Name": "Certificate Service", 5 | "Actions": { 6 | "#CertificateService.GenerateCSR": { 7 | "target": "/redfish/v1/CertificateService/Actions/CertificateService.GenerateCSR", 8 | "@Redfish.ActionInfo": "/redfish/v1/CertificateService/GenerateCSRActionInfo" 9 | }, 10 | "#CertificateService.ReplaceCertificate": { 11 | "target": "/redfish/v1/CertificateService/Actions/CertificateService.ReplaceCertificate", 12 | "@Redfish.ActionInfo": "/redfish/v1/CertificateService/ReplaceCertificateActionInfo" 13 | } 14 | }, 15 | "CertificateLocations": { 16 | "@odata.id": "/redfish/v1/CertificateService/CertificateLocations" 17 | }, 18 | "Oem": {}, 19 | "@odata.id": "/redfish/v1/CertificateService", 20 | "@Redfish.Copyright": "Copyright 2014-2021 DMTF. For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 21 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/chassis_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#ChassisCollection.ChassisCollection", 3 | "Name": "Chassis Collection", 4 | "Members@odata.count": 5, 5 | "Members": [ 6 | { 7 | "@odata.id": "/redfish/v1/Chassis/MultiBladeEncl" 8 | }, 9 | { 10 | "@odata.id": "/redfish/v1/Chassis/Blade1" 11 | }, 12 | { 13 | "@odata.id": "/redfish/v1/Chassis/Blade2" 14 | }, 15 | { 16 | "@odata.id": "/redfish/v1/Chassis/Blade3" 17 | }, 18 | { 19 | "@odata.id": "/redfish/v1/Chassis/Blade4" 20 | } 21 | ], 22 | "@odata.context": "/redfish/v1/$metadata#ChassisCollection.ChassisCollection", 23 | "@odata.id": "/redfish/v1/Chassis", 24 | "@Redfish.Copyright": "Copyright 2014-2017 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 25 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/compositionservice.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.context": "/redfish/v1/$metadata#CompositionService.CompositionService", 3 | "@odata.type": "#CompositionService.v1_1_0.CompositionService", 4 | "@odata.id": "/redfish/v1/CompositionService", 5 | "AllowOverprovisioning": false, 6 | "AllowZoneAffinity": true, 7 | "Description": "CompositionService1", 8 | "Id": "CompositionService", 9 | "Name": "Composition Service", 10 | "Status": { 11 | "State": "Enabled", 12 | "Health": "OK" 13 | }, 14 | "ServiceEnabled": true, 15 | "ResourceBlocks": { 16 | "@odata.id": "/redfish/v1/CompositionService/ResourceBlocks" 17 | }, 18 | "ResourceZones": { 19 | "@odata.id": "/redfish/v1/CompositionService/ResourceZones" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/credentials_required_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "error": { 3 | "@Message.ExtendedInfo": [ 4 | { 5 | "@odata.type": "#Message.v1_0_8.Message", 6 | "Message": "The action /redfish/v1/Managers/BMC/VirtualMedia/CD1/Actions/VirtualMedia.InsertMedia requires the parameter UserName to be present in the request body.", 7 | "MessageArgs": [ 8 | "/redfish/v1/Managers/BMC/VirtualMedia/CD1/Actions/VirtualMedia.InsertMedia", 9 | "UserName" 10 | ], 11 | "MessageId": "Base.1.12.ActionParameterMissing", 12 | "RelatedProperties": [ 13 | "#/UserName" 14 | ], 15 | "Resolution": "Supply the action with the required parameter in the request body when the request is resubmitted.", 16 | "Severity": "Critical" 17 | }, 18 | { 19 | "@odata.type": "#Message.v1_0_8.Message", 20 | "Message": "The action /redfish/v1/Managers/BMC/VirtualMedia/CD1/Actions/VirtualMedia.InsertMedia requires the parameter Password to be present in the request body.", 21 | "MessageArgs": [ 22 | "/redfish/v1/Managers/BMC/VirtualMedia/CD1/Actions/VirtualMedia.InsertMedia", 23 | "Password" 24 | ], 25 | "MessageId": "Base.1.12.ActionParameterMissing", 26 | "RelatedProperties": [ 27 | "#/Password" 28 | ], 29 | "Resolution": "Supply the action with the required parameter in the request body when the request is resubmitted.", 30 | "Severity": "Critical" 31 | } 32 | ], 33 | "code": "Base.1.12.GeneralError", 34 | "message": "The action /redfish/v1/Managers/BMC/VirtualMedia/CD1/Actions/VirtualMedia.InsertMedia requires the parameter UserName to be present in the request body." 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/drive.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#Drive.v1_4_0.Drive", 3 | "Id": "32ADF365C6C1B7BD", 4 | "Name": "Drive Sample", 5 | "IndicatorLED": "Lit", 6 | "Model": "C123", 7 | "Revision": "100A", 8 | "Status": { 9 | "@odata.type": "#Resource.Status", 10 | "State": "Enabled", 11 | "Health": "OK" 12 | }, 13 | "CapacityBytes": 899527000000, 14 | "FailurePredicted": false, 15 | "Protocol": "SAS", 16 | "MediaType": "HDD", 17 | "Manufacturer": "Contoso", 18 | "SerialNumber": "1234570", 19 | "PartNumber": "C123-1111", 20 | "Identifiers": [ 21 | { 22 | "@odata.type": "#Resource.v1_1_0.Identifier", 23 | "DurableNameFormat": "NAA", 24 | "DurableName": "32ADF365C6C1B7BD" 25 | } 26 | ], 27 | "HotspareType": "Global", 28 | "EncryptionAbility": "SelfEncryptingDrive", 29 | "EncryptionStatus": "Unlocked", 30 | "RotationSpeedRPM": 15000, 31 | "BlockSizeBytes": 512, 32 | "CapableSpeedGbs": 12, 33 | "NegotiatedSpeedGbs": 12, 34 | "Links": { 35 | "@odata.type": "#Drive.v1_2_0.Links" 36 | }, 37 | "Actions": { 38 | "@odata.type": "#Drive.v1_0_0.Actions", 39 | "#Drive.SecureErase": { 40 | "target": "/redfish/v1/Systems/437XR1138R2/Storage/1/Drives/32ADF365C6C1B7BD/Actions/Drive.SecureErase" 41 | } 42 | }, 43 | "@odata.context": "/redfish/v1/$metadata#Drive.Drive", 44 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Storage/1/Drives/32ADF365C6C1B7BD", 45 | "@Redfish.Copyright": "Copyright 2014-2017 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 46 | } 47 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/drive2.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#Drive.v1_4_0.Drive", 3 | "Id": "35D38F11ACEF7BD3", 4 | "Name": "Drive Sample", 5 | "IndicatorLED": "Lit", 6 | "Model": "C123", 7 | "Revision": "100A", 8 | "Status": { 9 | "@odata.type": "#Resource.Status", 10 | "State": "Enabled", 11 | "Health": "OK" 12 | }, 13 | "CapacityBytes": 899527000000, 14 | "FailurePredicted": false, 15 | "Protocol": "SAS", 16 | "MediaType": "HDD", 17 | "Manufacturer": "Contoso", 18 | "SerialNumber": "1234567", 19 | "PartNumber": "C123-1111", 20 | "Identifiers": [ 21 | { 22 | "@odata.type": "#Resource.v1_1_0.Identifier", 23 | "DurableNameFormat": "NAA", 24 | "DurableName": "35D38F11ACEF7BD3" 25 | } 26 | ], 27 | "HotspareType": "None", 28 | "EncryptionAbility": "SelfEncryptingDrive", 29 | "EncryptionStatus": "Unlocked", 30 | "RotationSpeedRPM": 15000, 31 | "BlockSizeBytes": 512, 32 | "CapableSpeedGbs": 12, 33 | "NegotiatedSpeedGbs": 12, 34 | "Links": { 35 | "@odata.type": "#Drive.v1_2_0.Links", 36 | "Volumes": [ 37 | { 38 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Storage/1/Volumes/1" 39 | } 40 | ] 41 | }, 42 | "Actions": { 43 | "@odata.type": "#Drive.v1_0_0.Actions", 44 | "#Drive.SecureErase": { 45 | "target": "/redfish/v1/Systems/437XR1138R2/Storage/1/Drives/35D38F11ACEF7BD3/Actions/Drive.SecureErase" 46 | } 47 | }, 48 | "@odata.context": "/redfish/v1/$metadata#Drive.Drive", 49 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Storage/1/Drives/35D38F11ACEF7BD3", 50 | "@Redfish.Copyright": "Copyright 2014-2017 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 51 | } 52 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/endpoint.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type":"#Endpoint.v1_1_0.Endpoint", 3 | "Id":"Drive1", 4 | "Name":"SAS Drive", 5 | "Description":"The SAS Drive in Enclosure 2 Bay 0", 6 | "EndpointProtocol":"SAS", 7 | "ConnectedEntities":[ 8 | { 9 | "EntityType":"Drive", 10 | "EntityRole":"Target", 11 | "Identifiers":[ 12 | { 13 | "DurableNameFormat":"NAA", 14 | "DurableName":"32ADF365C6C1B7C3" 15 | } 16 | ], 17 | "Oem":{} 18 | } 19 | ], 20 | "Links": 21 | { 22 | "MutuallyExclusiveEndpoints":[ 23 | { 24 | "@odata.id":"/redfish/v1/Fabrics/SAS/Endpoints/Enclosure2" 25 | } 26 | ], 27 | "Ports":[ 28 | { 29 | "@odata.id":"/redfish/v1/Fabrics/SAS/Switches/Switch1/Ports/8" 30 | }, 31 | { 32 | "@odata.id":"/redfish/v1/Fabrics/SAS/Switches/Switch2/Ports/8" 33 | } 34 | ], 35 | "Oem":{} 36 | }, 37 | "Oem":{}, 38 | "@odata.context":"/redfish/v1/$metadata#Endpoint.Endpoint", 39 | "@odata.id":"/redfish/v1/Fabrics/SAS/Endpoints/Drive1" 40 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/endpoint_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#EndpointCollection.EndpointCollection", 3 | "Name": "Endpoint Collection", 4 | "Members@odata.count": 1, 5 | "Members": [ 6 | { 7 | "@odata.id": "/redfish/v1/Fabrics/SAS/Endpoints/Drive1" 8 | } 9 | ], 10 | "Oem": {}, 11 | "@odata.context": "/redfish/v1/$metadata#EndpointCollection.EndpointCollection", 12 | "@odata.id": "/redfish/v1/Fabrics/SAS/Endpoints" 13 | } 14 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/error_single_ext_info.json: -------------------------------------------------------------------------------- 1 | { 2 | "error": { 3 | "code": "Base.1.5.GeneralError", 4 | "message": "A general error has occurred. See ExtendedInfo for more information.", 5 | "@Message.ExtendedInfo": { 6 | "@odata.type": "#Message.v1_0_0.Message", 7 | "MessageId": "Base.1.5.GeneralError", 8 | "Message": "A general error has occurred. See Resolution for information on how to resolve the error.", 9 | "Resolution": "Redfish request contains unsupported media type. Correct the request body and resubmit.", 10 | "Severity": "Warning" 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/ethernet_interfaces.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#EthernetInterface.v1_4_0.EthernetInterface", 3 | "Id": "1", 4 | "Name": "Ethernet Interface", 5 | "Description": "System NIC 1", 6 | "Status": { 7 | "State": "Enabled", 8 | "Health": "OK" 9 | }, 10 | "PermanentMACAddress": "12:44:6A:3B:04:11", 11 | "MACAddress": "12:44:6A:3B:04:11", 12 | "SpeedMbps": 1000, 13 | "FullDuplex": true, 14 | "HostName": "web483", 15 | "FQDN": "web483.contoso.com", 16 | "IPv6DefaultGateway": "fe80::3ed9:2bff:fe34:600", 17 | "NameServers": [ 18 | "names.contoso.com" 19 | ], 20 | "IPv4Addresses": [{ 21 | "Address": "192.168.0.10", 22 | "SubnetMask": "255.255.252.0", 23 | "AddressOrigin": "Static", 24 | "Gateway": "192.168.0.1" 25 | }], 26 | "IPv6Addresses": [{ 27 | "Address": "fe80::1ec1:deff:fe6f:1e24", 28 | "PrefixLength": 64, 29 | "AddressOrigin": "Static", 30 | "AddressState": "Preferred" 31 | }], 32 | "VLANs": { 33 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/EthernetInterfaces/12446A3B0411/VLANs" 34 | }, 35 | "@odata.context": "/redfish/v1/$metadata#EthernetInterface.EthernetInterface", 36 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/EthernetInterfaces/12446A3B0411" 37 | } 38 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/ethernet_interfaces_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#EthernetInterfaceCollection.EthernetInterfaceCollection", 3 | "Name": "Ethernet Interface Collection", 4 | "Description": "System NICs on Contoso Servers", 5 | "Members@odata.count": 1, 6 | "Members": [{ 7 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/EthernetInterfaces/12446A3B0411" 8 | }], 9 | "Oem": {}, 10 | "@odata.context": "/redfish/v1/$metadata#EthernetInterfaceCollection.EthernetInterfaceCollection", 11 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/EthernetInterfaces" 12 | } 13 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/eventdestination1.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.context": "/redfish/v1/$metadata#EventDestination.EventDestination", 3 | "@odata.id": "/redfish/v1/EventService/Subscriptions/1", 4 | "@odata.type": "#EventDestination.v1_0_0.EventDestination", 5 | "Id": "1", 6 | "Context": "SomeContext", 7 | "Description": "Event Subscription", 8 | "Destination": "https://localhost/RedfishEvents/EventReceiver.php", 9 | "EventTypes": [ 10 | "Alert", 11 | "StatusChange" 12 | ], 13 | "HttpHeaders": [], 14 | "Name": "Event Subscription", 15 | "Protocol": "Redfish" 16 | } 17 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/eventdestination2.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.context": "/redfish/v1/$metadata#EventDestination.EventDestination", 3 | "@odata.id": "/redfish/v1/EventService/Subscriptions/2", 4 | "@odata.type": "#EventDestination.v1_0_0.EventDestination", 5 | "Id": "2", 6 | "Context": "IronicContext", 7 | "Description": "Event Subscription", 8 | "Destination": "https://localhost/RedfishEvents/EventReceiver.php", 9 | "EventTypes": [ 10 | "Alert" 11 | ], 12 | "HttpHeaders": [], 13 | "Name": "Event Subscription", 14 | "Protocol": "Redfish" 15 | } 16 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/eventdestination3.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.context": "/redfish/v1/$metadata#EventDestination.EventDestination", 3 | "@odata.etag": "W/\"E92736C3\"", 4 | "@odata.id": "/redfish/v1/EventService/Subscriptions/3", 5 | "@odata.type": "#EventDestination.v1_0_0.EventDestination", 6 | "Id": "3", 7 | "Description": "iLO Event Subscription", 8 | "Destination": "https://localhost/RedfishEvents/EventReceiver.php", 9 | "EventTypes": [ 10 | "Alert" 11 | ], 12 | "HttpHeaders": [], 13 | "Name": "Event Subscription", 14 | "Protocol": "Redfish" 15 | } 16 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/eventdestination_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.context": "/redfish/v1/$metadata#EventDestinationCollection.EventDestinationCollection", 3 | "@odata.id": "/redfish/v1/EventService/Subscriptions", 4 | "@odata.type": "#EventDestinationCollection.EventDestinationCollection", 5 | "Description": "User Event Subscriptions", 6 | "Name": "EventSubscriptions", 7 | "Members": [ 8 | { 9 | "@odata.id": "/redfish/v1/EventService/Subscriptions/1" 10 | }, 11 | { 12 | "@odata.id": "/redfish/v1/EventService/Subscriptions/2" 13 | } 14 | ], 15 | "Members@odata.count": 2 16 | } 17 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/eventservice.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.context": "/redfish/v1/$metadata#EventService.EventService", 3 | "@odata.id": "/redfish/v1/EventService/", 4 | "@odata.type": "#EventService.v1_0_8.EventService", 5 | "Id": "EventService", 6 | "Actions": { 7 | "#EventService.SubmitTestEvent": { 8 | "target": "/redfish/v1/EventService/Actions/EventService.SubmitTestEvent/" 9 | } 10 | }, 11 | "DeliveryRetryAttempts": 3, 12 | "DeliveryRetryIntervalSeconds": 30, 13 | "Description": "Event Subscription service", 14 | "EventTypesForSubscription": [ 15 | "StatusChange", 16 | "ResourceUpdated", 17 | "ResourceAdded", 18 | "ResourceRemoved", 19 | "Alert" 20 | ], 21 | "Name": "Event Service", 22 | "Oem": { 23 | }, 24 | "ServiceEnabled": true, 25 | "Status": { 26 | "Health": "OK", 27 | "HealthRollup": "OK", 28 | "State": "Enabled" 29 | }, 30 | "Subscriptions": { 31 | "@odata.id": "/redfish/v1/EventService/Subscriptions/" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/fabric.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#Fabric.v1_0_3.Fabric", 3 | "Id": "SAS", 4 | "Name": "SAS Fabric", 5 | "FabricType": "SAS", 6 | "Description": "A SAS Fabric with redundant switches.", 7 | "Status": { 8 | "State": "Enabled", 9 | "Health": "OK" 10 | }, 11 | "Zones": { 12 | "@odata.id": "/redfish/v1/Fabrics/SAS/Zones" 13 | }, 14 | "Endpoints": { 15 | "@odata.id": "/redfish/v1/Fabrics/SAS/Endpoints" 16 | }, 17 | "Switches": { 18 | "@odata.id": "/redfish/v1/Fabrics/SAS/Switches" 19 | }, 20 | "Links": { 21 | "Oem": {} 22 | }, 23 | "Actions": { 24 | "Oem": {} 25 | }, 26 | "Oem": {}, 27 | "@odata.context": "/redfish/v1/$metadata#Fabric.Fabric", 28 | "@odata.id": "/redfish/v1/Fabrics/SAS" 29 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/fabric_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#FabricCollection.FabricCollection", 3 | "Name": "Fabric Collection", 4 | "Members@odata.count": 2, 5 | "Members": [ 6 | { 7 | "@odata.id": "/redfish/v1/Fabrics/SAS1" 8 | }, 9 | { 10 | "@odata.id": "/redfish/v1/Fabrics/SAS2" 11 | } 12 | ], 13 | "@odata.context": "/redfish/v1/$metadata#FabricCollection.FabricCollection", 14 | "@odata.id": "/redfish/v1/Fabrics", 15 | "@Redfish.Copyright": "Copyright 2014-2017 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 16 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/firmwareinventory_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.context": "/redfish/v1/$metadata#SoftwareInventoryCollection.SoftwareInventoryCollection", 3 | "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory", 4 | "@odata.type": "#SoftwareInventoryCollection.SoftwareInventoryCollection", 5 | "Description": "Collection of Firmware Inventory", 6 | "Members": [ 7 | { 8 | "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Current-101560-25.5.6.0009" 9 | }, 10 | { 11 | "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Installed-101560-25.5.6.0009" 12 | }, 13 | { 14 | "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/Previous-102302-18.8.9" 15 | } 16 | ], 17 | "Members@odata.count": 3, 18 | "Name": "Firmware Inventory Collection" 19 | } 20 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/manager_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#ManagerCollection.ManagerCollection", 3 | "Name": "Manager Collection", 4 | "Members@odata.count": 1, 5 | "Members": [ 6 | { 7 | "@odata.id": "/redfish/v1/Managers/BMC" 8 | } 9 | ], 10 | "Oem": {}, 11 | "@odata.context": "/redfish/v1/$metadata#Managers", 12 | "@odata.id": "/redfish/v1/Managers", 13 | "@Redfish.Copyright": "Copyright 2014-2016 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 14 | } 15 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/manager_ethernet_interfaces.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#EthernetInterface.v1_4_0.EthernetInterface", 3 | "Id": "1", 4 | "Name": "Ethernet Interface", 5 | "Description": "Manager NIC 1", 6 | "Status": { 7 | "State": "Enabled", 8 | "Health": "OK" 9 | }, 10 | "PermanentMACAddress": "B4:AC:57:49:90:CA", 11 | "MACAddress": "B4:AC:57:49:90:CA", 12 | "SpeedMbps": 1000, 13 | "FullDuplex": true, 14 | "HostName": "web483", 15 | "FQDN": "web483.contoso.com", 16 | "IPv6DefaultGateway": "f82f:ff01:1bb0:7750::1", 17 | "NameServers": [ 18 | "names.contoso.com" 19 | ], 20 | "IPv4Addresses": [{ 21 | "Address": "192.168.0.5", 22 | "SubnetMask": "255.255.252.0", 23 | "AddressOrigin": "Static", 24 | "Gateway": "192.168.0.1" 25 | }], 26 | "IPv4StaticAddresses": [{ 27 | "Address": "192.168.0.5", 28 | "SubnetMask": "255.255.252.0", 29 | "AddressOrigin": "Static" 30 | }], 31 | "IPv6Addresses": [{ 32 | "Address": "f82f:ff01:1bb0:7750::2", 33 | "PrefixLength": 64, 34 | "AddressOrigin": "Static", 35 | "AddressState": "Preferred" 36 | }], 37 | "IPv6StaticAddresses": [{ 38 | "Address": "f82f:ff01:1bb0:7750::2", 39 | "PrefixLength": 64 40 | }], 41 | "VLANs": { 42 | "@odata.id": "/redfish/v1/Managers/1/EthernetInterfaces/1/VLANs" 43 | }, 44 | "@odata.context": "/redfish/v1/$metadata#EthernetInterface.EthernetInterface", 45 | "@odata.id": "/redfish/v1/Managers/1/EthernetInterfaces/1" 46 | } 47 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/manager_ethernet_interfaces_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#EthernetInterfaceCollection.EthernetInterfaceCollection", 3 | "Name": "Ethernet Interface Collection", 4 | "Description": "Manager NICs on Contoso Servers", 5 | "Members@odata.count": 1, 6 | "Members": [{ 7 | "@odata.id": "/redfish/v1/Managers/1/EthernetInterfaces/1" 8 | }], 9 | "Oem": {}, 10 | "@odata.context": "/redfish/v1/$metadata#EthernetInterfaceCollection.EthernetInterfaceCollection", 11 | "@odata.id": "/redfish/v1/Managers/1/EthernetInterfaces" 12 | } 13 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/message_registry.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#MessageRegistry.v1_1_1.MessageRegistry", 3 | "Id": "Test.1.1.1", 4 | "Name": "Test Message Registry", 5 | "Language": "en", 6 | "Description": "This registry defines messages for sushy testing", 7 | "RegistryPrefix": "Test", 8 | "RegistryVersion": "1.1.1", 9 | "OwningEntity": "sushy", 10 | "Messages": { 11 | "Success": { 12 | "Description": "Everything OK", 13 | "Message": "Everything done successfully.", 14 | "Severity": "OK", 15 | "NumberOfArgs": 0, 16 | "Resolution": "None" 17 | }, 18 | "Failed": { 19 | "Description": "Nothing is OK", 20 | "Message": "The property %1 broke everything.", 21 | "Severity": "Critical", 22 | "NumberOfArgs": 1, 23 | "ParamTypes": [ 24 | "string" 25 | ], 26 | "Resolution": "Panic" 27 | }, 28 | "TooBig": { 29 | "Description": "Value too big", 30 | "Message": "Property's %1 value cannot be greater than %2.", 31 | "Severity": "Warning", 32 | "NumberOfArgs": 2, 33 | "ParamTypes": [ 34 | "string", 35 | "number" 36 | ], 37 | "Resolution": "Try again" 38 | }, 39 | "MissingThings": { 40 | "Message": "Property's %1 value cannot be less than %2.", 41 | "NumberOfArgs": 2, 42 | "ParamTypes": [ 43 | "string", 44 | "number" 45 | ], 46 | "Resolution": "Try Later" 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/message_registry_file.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#MessageRegistryFile.v1_1_1.MessageRegistryFile", 3 | "Id": "Test", 4 | "Name": "Test Message Registry File", 5 | "Description": "Message Registry file for testing", 6 | "Languages": ["en"], 7 | "Registry": "Test.1.0", 8 | "Location": [ 9 | {"Language": "default", 10 | "Uri": "/redfish/v1/Registries/Test/Test.1.0.json", 11 | "ArchiveUri": "/redfish/v1/Registries/Archive.zip", 12 | "ArchiveFile": "Test.1.0.json", 13 | "PublicationUri": "https://example.com/Registries/Test.1.0.json" 14 | } 15 | ], 16 | "@odata.context": "/redfish/v1/$metadata#MessageRegistryFile.MessageRegistryFile", 17 | "@odata.id": "/redfish/v1/Registries/Test" 18 | } 19 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/message_registry_file_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#MessageRegistryFileCollection.MessageRegistryFileCollection", 3 | "Name": "Message Registry Test Collection", 4 | "Members@odata.count": 1, 5 | "Members": [ 6 | { 7 | "@odata.id": "/redfish/v1/Registries/Test" 8 | } 9 | ], 10 | "@odata.context": "/redfish/v1/$metadata#MessageRegistryFileCollection.MessageRegistryFileCollection", 11 | "@odata.id": "/redfish/v1/Registries" 12 | } 13 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/network_adapter_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.context": "/redfish/v1/$metadata#NetworkAdapterCollection.NetworkAdapterCollection", 3 | "@odata.id": "/redfish/v1/Chassis/System.Embedded.1/NetworkAdapters", 4 | "@odata.type": "#NetworkAdapterCollection.NetworkAdapterCollection", 5 | "Description": "Collection Of Network Adapter", 6 | "Members": [ 7 | { 8 | "@odata.id": "/redfish/v1/Chassis/System.Embedded.1/NetworkAdapters/NIC.Integrated.1" 9 | } 10 | ], 11 | "Members@odata.count": 1, 12 | "Name": "Network Adapter Collection" 13 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/network_device_function_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.context": "/redfish/v1/$metadata#NetworkDeviceFunctionCollection.NetworkDeviceFunctionCollection", 3 | "@odata.id": "/redfish/v1/Chassis/System.Embedded.1/NetworkAdapters/NIC.Integrated.1/NetworkDeviceFunctions", 4 | "@odata.type": "#NetworkDeviceFunctionCollection.NetworkDeviceFunctionCollection", 5 | "Description": "Collection Of Network Device Function entities", 6 | "Members": [ 7 | { 8 | "@odata.id": "/redfish/v1/Chassis/System.Embedded.1/NetworkAdapters/NIC.Integrated.1/NetworkDeviceFunctions/NIC.Integrated.1-1-1" 9 | }, 10 | { 11 | "@odata.id": "/redfish/v1/Chassis/System.Embedded.1/NetworkAdapters/NIC.Integrated.1/NetworkDeviceFunctions/NIC.Integrated.1-2-1" 12 | } 13 | ], 14 | "Members@odata.count": 2, 15 | "Name": "Network Device Function Collection" 16 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/network_port.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.context": "/redfish/v1/$metadata#NetworkPort.NetworkPort", 3 | "@odata.id": "/redfish/v1/Chassis/System.Embedded.1/NetworkAdapters/NIC.Integrated.1/NetworkPorts/NIC.Integrated.1-1", 4 | "@odata.type": "#NetworkPort.v1_2_3.NetworkPort", 5 | "ActiveLinkTechnology": "Ethernet", 6 | "AssociatedNetworkAddresses": [ 7 | "01:02:03:04:05:06" 8 | ], 9 | "CurrentLinkSpeedMbps": 10000, 10 | "Description": "Network Port View", 11 | "FlowControlConfiguration": "None", 12 | "FlowControlStatus": "None", 13 | "Id": "NIC.Integrated.1-1", 14 | "LinkStatus": "Up", 15 | "Name": "Network Port View", 16 | "NetDevFuncMaxBWAlloc": [ 17 | { 18 | "MaxBWAllocPercent": 100, 19 | "NetworkDeviceFunction": { 20 | "@odata.id": "/redfish/v1/Chassis/System.Embedded.1/NetworkAdapters/NIC.Integrated.1/NetworkDeviceFunctions/NIC.Integrated.1-1-1" 21 | } 22 | } 23 | ], 24 | "NetDevFuncMaxBWAlloc@odata.count": 1, 25 | "NetDevFuncMinBWAlloc": [ 26 | { 27 | "MinBWAllocPercent": 100, 28 | "NetworkDeviceFunction": { 29 | "@odata.id": "/redfish/v1/Chassis/System.Embedded.1/NetworkAdapters/NIC.Integrated.1/NetworkDeviceFunctions/NIC.Integrated.1-1-1" 30 | } 31 | } 32 | ], 33 | "NetDevFuncMinBWAlloc@odata.count": 1, 34 | "Oem": {}, 35 | "PhysicalPortNumber": "1", 36 | "Status": { 37 | "State": "Enabled", 38 | "Health": "OK", 39 | "HealthRollup": "OK" 40 | }, 41 | "SupportedEthernetCapabilities": [ 42 | "WakeOnLAN" 43 | ], 44 | "SupportedEthernetCapabilities@odata.count": 1, 45 | "SupportedLinkCapabilities": [ 46 | { 47 | "AutoSpeedNegotiation": true, 48 | "LinkNetworkTechnology": "Ethernet", 49 | "LinkSpeedMbps": 10000 50 | } 51 | ], 52 | "SupportedLinkCapabilities@odata.count": 1, 53 | "VendorId": "15b3", 54 | "WakeOnLANEnabled": false 55 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/network_port_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.context": "/redfish/v1/$metadata#NetworkPortCollection.NetworkPortCollection", 3 | "@odata.id": "/redfish/v1/Chassis/System.Embedded.1/NetworkAdapters/NIC.Integrated.1/NetworkPorts", 4 | "@odata.type": "#NetworkPortCollection.NetworkPortCollection", 5 | "Description": "Collection Of Network Port entities", 6 | "Members": [ 7 | { 8 | "@odata.id": "/redfish/v1/Chassis/System.Embedded.1/NetworkAdapters/NIC.Integrated.1/NetworkPorts/NIC.Integrated.1-1" 9 | }, 10 | { 11 | "@odata.id": "/redfish/v1/Chassis/System.Embedded.1/NetworkAdapters/NIC.Integrated.1/NetworkPorts/NIC.Integrated.1-2" 12 | } 13 | ], 14 | "Members@odata.count": 2, 15 | "Name": "Network Port Collection" 16 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/port_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.context": "/redfish/v1/$metadata#PortCollection.PortCollection", 3 | "@odata.id": "/redfish/v1/Chassis/System.Embedded.1/NetworkAdapters/NIC.Integrated.1/Ports", 4 | "@odata.type": "#PortCollection.PortCollection", 5 | "Description": "Collection Of Port entities", 6 | "Members": [ 7 | { 8 | "@odata.id": "/redfish/v1/Chassis/System.Embedded.1/NetworkAdapters/NIC.Integrated.1/Ports/NIC.Integrated.1-1" 9 | }, 10 | { 11 | "@odata.id": "/redfish/v1/Chassis/System.Embedded.1/NetworkAdapters/NIC.Integrated.1/Ports/NIC.Integrated.1-2" 12 | }, 13 | { 14 | "@odata.id": "/redfish/v1/Chassis/System.Embedded.1/NetworkAdapters/NIC.Integrated.1/Ports/NIC.Integrated.1-3" 15 | }, 16 | { 17 | "@odata.id": "/redfish/v1/Chassis/System.Embedded.1/NetworkAdapters/NIC.Integrated.1/Ports/NIC.Integrated.1-4" 18 | } 19 | ], 20 | "Members@odata.count": 4, 21 | "Name": "Port Collection" 22 | } 23 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/processor.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#Processor.v1_3_0.Processor", 3 | "Id": "CPU1", 4 | "Socket": "CPU 1", 5 | "ProcessorType": "CPU", 6 | "ProcessorArchitecture": "x86", 7 | "InstructionSet": "x86-64", 8 | "Manufacturer": "Intel(R) Corporation", 9 | "Model": "Multi-Core Intel(R) Xeon(R) processor 7xxx Series", 10 | "ProcessorId": { 11 | "VendorID": "GenuineIntel", 12 | "IdentificationRegisters": "0x34AC34DC8901274A", 13 | "EffectiveFamily": "0x42", 14 | "EffectiveModel": "0x61", 15 | "Step": "0x1", 16 | "MicrocodeInfo": "0x429943" 17 | }, 18 | "MaxSpeedMHz": 3700, 19 | "TotalCores": 8, 20 | "TotalThreads": 16, 21 | "Status": { 22 | "State": "Enabled", 23 | "Health": "OK", 24 | "HealthRollup": "OK" 25 | }, 26 | "SubProcessors": { 27 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Processors/CPU1/SubProcessors" 28 | }, 29 | "@odata.context": "/redfish/v1/$metadata#Systems/Members/437XR1138R2/Processors/Members/$entity", 30 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Processors/CPU1", 31 | "@Redfish.Copyright": "Copyright 2014-2016 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 32 | } 33 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/processor2.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#Processor.v1_3_0.Processor", 3 | "Id": "CPU2", 4 | "Socket": "CPU 2", 5 | "ProcessorType": "CPU", 6 | "Status": { 7 | "State": "Absent" 8 | }, 9 | "@odata.context": "/redfish/v1/$metadata#Systems/Members/437XR1138R2/Processors/Members/$entity", 10 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Processors/CPU2", 11 | "@Redfish.Copyright": "Copyright 2014-2016 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 12 | } 13 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/processor_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#ProcssorCollection.ProcessorCollection", 3 | "Name": "Processors Collection", 4 | "Members@odata.count": 2, 5 | "Members": [ 6 | { 7 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Processors/CPU1" 8 | }, 9 | { 10 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Processors/CPU2" 11 | } 12 | ], 13 | "@odata.context": "/redfish/v1/$metadata#Systems/Links/Members/437XR1138R2/Processors/#entity", 14 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Processors", 15 | "@Redfish.Copyright": "Copyright 2014-2016 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 16 | } 17 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/resourceblock.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.context": "/redfish/v1/$metadata#ResourceBlock.ResourceBlock", 3 | "@odata.type": "#ResourceBlock.v1_3_0.ResourceBlock", 4 | "@odata.id": "/redfish/v1/CompositionService/ResourceBlocks/DriveBlock3", 5 | "Id": "DriveBlock3", 6 | "Name": "Drive Block 3", 7 | "Description": "ResourceBlock1", 8 | "ResourceBlockType": "Storage", 9 | "Status": { 10 | "State": "Enabled", 11 | "Health": "OK" 12 | }, 13 | "CompositionStatus": { 14 | "Reserved": false, 15 | "CompositionState": "Composed", 16 | "MaxCompositions": 1, 17 | "NumberOfCompositions": 0, 18 | "SharingCapable": true, 19 | "SharingEnabled": false 20 | }, 21 | "Processors": [], 22 | "Memory": [], 23 | "Storage": [ 24 | { 25 | "@odata.id": "/redfish/v1/CompositionService/ResourceBlocks/DriveBlock3/Storage/Block3NVMe" 26 | } 27 | ], 28 | "Links": { 29 | "ComputerSystems": [ 30 | { 31 | "@odata.id": "/redfish/v1/Systems/ComposedSystem" 32 | } 33 | ], 34 | "Chassis": [ 35 | { 36 | "@odata.id": "/redfish/v1/Chassis/ComposableModule3" 37 | } 38 | ], 39 | "Zones": [ 40 | { 41 | "@odata.id": "/redfish/v1/CompositionService/ResourceZones/1" 42 | }, 43 | { 44 | "@odata.id": "/redfish/v1/CompositionService/ResourceZones/2" 45 | } 46 | ] 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/resourceblock_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#ResourceBlockCollection.ResourceBlockCollection", 3 | "@odata.id": "/redfish/v1/CompositionService/ResourceBlocks", 4 | "Name": "Resource Block Collection", 5 | "Members@odata.count": 1, 6 | "Members": [ 7 | { "@odata.id": "/redfish/v1/CompositionService/ResourceBlocks/ComputeBlock1" } 8 | ] 9 | } 10 | 11 | 12 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/resourcezone.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.context": "/redfish/v1/$metadata#Zone.Zone", 3 | "@odata.type": "#Zone.v1_2_1.Zone", 4 | "@odata.id": "/redfish/v1/CompositionService/ResourceZones/1", 5 | "Id": "1", 6 | "Name": "Resource Zone 1", 7 | "Description": "ResourceZone1", 8 | "Status": { 9 | "State": "Enabled", 10 | "Health": "OK" 11 | }, 12 | "Links": { 13 | "ResourceBlocks": [ 14 | { 15 | "@odata.id": "/redfish/v1/CompositionService/ResourceBlocks/ComputeBlock1" 16 | }, 17 | { 18 | "@odata.id": "/redfish/v1/CompositionService/ResourceBlocks/DriveBlock3" 19 | }, 20 | { 21 | "@odata.id": "/redfish/v1/CompositionService/ResourceBlocks/DriveBlock4" 22 | }, 23 | { 24 | "@odata.id": "/redfish/v1/CompositionService/ResourceBlocks/DriveBlock5" 25 | }, 26 | { 27 | "@odata.id": "/redfish/v1/CompositionService/ResourceBlocks/DriveBlock6" 28 | }, 29 | { 30 | "@odata.id": "/redfish/v1/CompositionService/ResourceBlocks/DriveBlock7" 31 | } 32 | ] 33 | }, 34 | "@Redfish.CollectionCapabilities": { 35 | "@odata.type": "#CollectionCapabilities.v1_0_0.CollectionCapabilities", 36 | "Capabilities": [ 37 | { 38 | "CapabilitiesObject": { 39 | "@odata.id": "/redfish/v1/Systems/Capabilities" 40 | }, 41 | "UseCase": "ComputerSystemComposition", 42 | "Links": { 43 | "TargetCollection": { 44 | "@odata.id": "/redfish/v1/Systems" 45 | } 46 | } 47 | } 48 | ] 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/resourcezone_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#ZoneCollection.ZoneCollection", 3 | "@odata.id": "/redfish/v1/CompositionService/ResourceZones", 4 | "Name": "Resource Zone Collection", 5 | "Members@odata.count": 1, 6 | "Members": [ 7 | { 8 | "@odata.id": "/redfish/v1/CompositionService/ResourceZones/1" 9 | } 10 | ] 11 | } 12 | 13 | 14 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/root.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#ServiceRoot.v1_3_1.ServiceRoot", 3 | "Id": "RootService", 4 | "Name": "Root Service", 5 | "RedfishVersion": "1.0.2", 6 | "UUID": "92384634-2938-2342-8820-489239905423", 7 | "Product": "Product", 8 | "ProtocolFeaturesSupported": { 9 | "ExcerptQuery": true, 10 | "ExpandQuery": false, 11 | "FilterQuery": true, 12 | "OnlyMemberQuery": true, 13 | "SelectQuery": false 14 | }, 15 | "Systems": { 16 | "@odata.id": "/redfish/v1/Systems" 17 | }, 18 | "Chassis": { 19 | "@odata.id": "/redfish/v1/Chassis" 20 | }, 21 | "Managers": { 22 | "@odata.id": "/redfish/v1/Managers" 23 | }, 24 | "Fabrics": { 25 | "@odata.id": "/redfish/v1/Fabrics" 26 | }, 27 | "Tasks": { 28 | "@odata.id": "/redfish/v1/TaskService" 29 | }, 30 | "SessionService": { 31 | "@odata.id": "/redfish/v1/SessionService" 32 | }, 33 | "UpdateService": { 34 | "@odata.id": "/redfish/v1/UpdateService" 35 | }, 36 | "AccountService": { 37 | "@odata.id": "/redfish/v1/AccountService" 38 | }, 39 | "CompositionService": { 40 | "@odata.id": "/redfish/v1/CompositionService" 41 | }, 42 | "EventService": { 43 | "@odata.id": "/redfish/v1/EventService" 44 | }, 45 | "Links": { 46 | "Sessions": { 47 | "@odata.id": "/redfish/v1/SessionService/Sessions" 48 | } 49 | }, 50 | "Registries": { 51 | "@odata.id": "/redfish/v1/Registries" 52 | }, 53 | "Oem": {}, 54 | "@odata.context": "/redfish/v1/$metadata#ServiceRoot", 55 | "@odata.id": "/redfish/v1/", 56 | "@Redfish.Copyright": "Copyright 2014-2016 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 57 | } 58 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/secure_boot.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/SecureBoot", 3 | "@odata.type": "#SecureBoot.v1_1_0.SecureBoot", 4 | "Id": "SecureBoot", 5 | "Name": "UEFI Secure Boot", 6 | "Actions": { 7 | "#SecureBoot.ResetKeys": { 8 | "target": "/redfish/v1/Systems/437XR1138R2/SecureBoot/Actions/SecureBoot.ResetKeys", 9 | "ResetKeysType@Redfish.AllowableValues": [ 10 | "ResetAllKeysToDefault", 11 | "DeleteAllKeys", 12 | "DeletePK" 13 | ] 14 | } 15 | } , 16 | "SecureBootEnable": false, 17 | "SecureBootCurrentBoot": "Disabled", 18 | "SecureBootMode": "DeployedMode", 19 | "SecureBootDatabases": { 20 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/SecureBoot/SecureBootDatabases" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/secure_boot_database.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#SecureBootDatabase.v1_0_0.SecureBootDatabase", 3 | "Id": "db", 4 | "Name": "db - Authorized Signature Database", 5 | "Description": "UEFI db Secure Boot Database", 6 | "DatabaseId": "db", 7 | "Certificates": { 8 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/SecureBoot/SecureBootDatabases/db/Certificates/" 9 | }, 10 | "Signatures": { 11 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/SecureBoot/SecureBootDatabases/db/Signatures/" 12 | }, 13 | "Actions": { 14 | "#SecureBootDatabase.ResetKeys": { 15 | "target": "/redfish/v1/Systems/437XR1138R2/SecureBoot/SecureBootDatabases/db/Actions/SecureBootDatabase.ResetKeys", 16 | "ResetKeysType@Redfish.AllowableValues": [ 17 | "ResetAllKeysToDefault", 18 | "DeleteAllKeys" 19 | ] 20 | }, 21 | "Oem": {} 22 | }, 23 | "Oem": {}, 24 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/SecureBoot/SecureBootDatabases/db", 25 | "@Redfish.Copyright": "Copyright 2014-2021 DMTF. For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 26 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/secure_boot_database_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#SecureBootDatabaseCollection.SecureBootDatabaseCollection", 3 | "Name": "UEFI SecureBoot Database Collection", 4 | "Members@odata.count": 8, 5 | "Members": [ 6 | { 7 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/SecureBoot/SecureBootDatabases/PK" 8 | }, 9 | { 10 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/SecureBoot/SecureBootDatabases/KEK" 11 | }, 12 | { 13 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/SecureBoot/SecureBootDatabases/db" 14 | }, 15 | { 16 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/SecureBoot/SecureBootDatabases/dbx" 17 | }, 18 | { 19 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/SecureBoot/SecureBootDatabases/PKDefault" 20 | }, 21 | { 22 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/SecureBoot/SecureBootDatabases/KEKDefault" 23 | }, 24 | { 25 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/SecureBoot/SecureBootDatabases/dbDefault" 26 | }, 27 | { 28 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/SecureBoot/SecureBootDatabases/dbxDefault" 29 | } 30 | ], 31 | "Oem": {}, 32 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/SecureBoot/SecureBootDatabases", 33 | "@Redfish.Copyright": "Copyright 2014-2021 DMTF. For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 34 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/session.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#Session.v1_1_0.Session", 3 | "Id": "1234567890ABCDEF", 4 | "Name": "User Session", 5 | "Description": "Manager User Session", 6 | "UserName": "Administrator", 7 | "Oem": {}, 8 | "@odata.context": "/redfish/v1/$metadata#Session.Session", 9 | "@odata.id": "/redfish/v1/SessionService/Sessions/1234567890ABCDEF", 10 | "@Redfish.Copyright": "Copyright 2014-2016 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 11 | } 12 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/session_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#SessionCollection.SessionCollection", 3 | "Name": "Session Collection", 4 | "Members@odata.count": 1, 5 | "@odata.id": "/redfish/v1/SessionService/Sessions", 6 | "@odata.context": "/redfish/v1/$metadata#SessionService/Sessions/$entity", 7 | "Members": [ 8 | { 9 | "@odata.id": "/redfish/v1/SessionService/Sessions/104f9d68f58abb85" 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/session_creation_headers.json: -------------------------------------------------------------------------------- 1 | { 2 | "Content-Security-Policy": "default-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; connect-src 'self'; img-src 'self'; frame-src 'self'; font-src 'self'; object-src 'self'; style-src 'self' 'unsafe-inline'", 3 | "ETag": "'W/\"7dc5e2b9\"'", 4 | "Cache-Control": "max-age=0, no-cache, no-store, must-revalidate", 5 | "Location": "/redfish/v1/SessionService/Sessions/151edd65d41c0b89", 6 | "Connection": "Keep-Alive", 7 | "X-XSS-Protection": "1; mode=block", 8 | "X-Auth-Token": "adc530e2016a0ea98c76c087f0e4b76f", 9 | "Expires": "0", 10 | "X-Frame-Options": "SAMEORIGIN", 11 | "Content-Length": "392", 12 | "X-Content-Type-Options": "nosniff", 13 | "Content-Type": "application/json;charset=utf-8", 14 | "OData-Version": "4.0", 15 | "Keep-Alive": "timeout=1, max=32", 16 | "Strict-Transport-Security": "max-age=31536000; includeSubDomains", 17 | "Date": "Tue, 06 Jun 2017 17:07:48 GMT" 18 | } 19 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/session_creation_headers_no_location.json: -------------------------------------------------------------------------------- 1 | { 2 | "Content-Security-Policy": "default-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-eval'; connect-src 'self'; img-src 'self'; frame-src 'self'; font-src 'self'; object-src 'self'; style-src 'self' 'unsafe-inline'", 3 | "ETag": "'W/\"7dc5e2b9\"'", 4 | "Cache-Control": "max-age=0, no-cache, no-store, must-revalidate", 5 | "Connection": "Keep-Alive", 6 | "X-XSS-Protection": "1; mode=block", 7 | "X-Auth-Token": "adc530e2016a0ea98c76c087f0e4b76f", 8 | "Expires": "0", 9 | "X-Frame-Options": "SAMEORIGIN", 10 | "Content-Length": "392", 11 | "X-Content-Type-Options": "nosniff", 12 | "Content-Type": "application/json;charset=utf-8", 13 | "OData-Version": "4.0", 14 | "Keep-Alive": "timeout=1, max=32", 15 | "Strict-Transport-Security": "max-age=31536000; includeSubDomains", 16 | "Date": "Tue, 06 Jun 2017 17:07:48 GMT" 17 | } 18 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/session_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "error": { 3 | "code": "Base.1.0.GeneralError", 4 | "message": "A general error has occurred. See ExtendedInfo for more information.", 5 | "@Message.ExtendedInfo": [ 6 | { 7 | "@odata.type": "/redfish/v1/$metadata#MessageRegistry.1.0.0.MessageRegistry", 8 | "MessageId": "Base.1.0.NoValidSession", 9 | "RelatedProperties": [], 10 | "Message": "There is no valid session established with the implementation.", 11 | "MessageArgs": [], 12 | "Severity": "Critical", 13 | "Resolution": "Establish as session before attempting any operations." 14 | } 15 | ] 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/session_service.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#SessionService.v1_1_3.SessionService", 3 | "Id": "SessionService", 4 | "Name": "Session Service", 5 | "Description": "Session Service", 6 | "Status": { 7 | "State": "Enabled", 8 | "Health": "OK" 9 | }, 10 | "ServiceEnabled": true, 11 | "SessionTimeout": 30, 12 | "Sessions": { 13 | "@odata.id": "/redfish/v1/SessionService/Sessions" 14 | }, 15 | "@odata.context": "/redfish/v1/$metadata#SessionService", 16 | "@odata.id": "/redfish/v1/SessionService", 17 | "@Redfish.Copyright": "Copyright 2014-2016 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 18 | } 19 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/settings-body-bootsourceoverridemode-only.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.id": "/redfish/v1/Systems/System.Embedded.1/Settings", 3 | "@odata.type": "#ComputerSystem.v1_18_0.ComputerSystem", 4 | "@Redfish.SettingsApplyTime": { 5 | "ApplyTime": "OnReset", 6 | "@odata.type": "#Settings.v1_3_4.PreferredApplyTime" 7 | }, 8 | "AssetTag": null, 9 | "Boot": { 10 | "BootOrder": [], 11 | "BootSourceOverrideMode": null, 12 | "UefiTargetBootSourceOverride": null, 13 | "StopBootOnFault": null 14 | }, 15 | "Id": "System.Embedded.1", 16 | "Name": "System" 17 | } 18 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/settings-body-lenovo-se450.json: -------------------------------------------------------------------------------- 1 | { 2 | "Description": "ComputerSystem 1 Pending Setting", 3 | "Id": "Pending", 4 | "@odata.type": "#ComputerSystem.v1_11_0.ComputerSystem", 5 | "Boot": { 6 | "BootOrder": [ 7 | "Boot0000", 8 | "Boot0001", 9 | "Boot0002", 10 | "Boot0003", 11 | "Boot0004" 12 | ] 13 | }, 14 | "Name": "Pending", 15 | "@odata.etag": "\"21a8f5383ebb2a1fb41\"", 16 | "@odata.id": "/redfish/v1/Systems/1/Pending" 17 | } 18 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/settings-body-nokia.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.context": "/redfish/v1/$metadata#ComputerSystem.ComputerSystem", 3 | "@odata.etag": "\"1660209630\"", 4 | "@odata.id": "/redfish/v1/Systems/Self/SD", 5 | "@odata.type": "#ComputerSystem.v1_8_0.ComputerSystem", 6 | "AssetTag": "AT18996926771_0101", 7 | "Boot": { 8 | "AliasBootOrder": null, 9 | "BootNext": null, 10 | "BootOrder": [ 11 | "Boot0001", 12 | "Boot0003", 13 | "Boot0002" 14 | ], 15 | "BootOrderPropertySelection": "BootOrder", 16 | "BootSourceOverrideEnabled": "Disabled", 17 | "BootSourceOverrideEnabled@Redfish.AllowableValues": [ 18 | "Disabled", 19 | "Once", 20 | "Continuous" 21 | ], 22 | "BootSourceOverrideMode": "UEFI", 23 | "BootSourceOverrideMode@Redfish.AllowableValues": [ 24 | "UEFI" 25 | ], 26 | "BootSourceOverrideTarget": "Cd", 27 | "BootSourceOverrideTarget@Redfish.AllowableValues": [ 28 | "None", 29 | "Pxe", 30 | "Floppy", 31 | "Cd", 32 | "Usb", 33 | "Hdd", 34 | "BiosSetup", 35 | "Utilities", 36 | "Diags", 37 | "UefiShell", 38 | "UefiTarget", 39 | "SDCard", 40 | "UefiHttp", 41 | "RemoteDrive", 42 | "UefiBootNext" 43 | ], 44 | "UefiTargetBootSourceOverride": "", 45 | "HttpBootUri": null 46 | }, 47 | "Description": "System Self", 48 | "Id": "Self", 49 | "Name": "System", 50 | "SystemType": "Physical" 51 | } 52 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/settings-lenovo-se450.json: -------------------------------------------------------------------------------- 1 | { 2 | "@Redfish.Settings": { 3 | "Time": null, 4 | "SupportedApplyTimes": [ 5 | "OnReset" 6 | ], 7 | "Messages": [], 8 | "@odata.type": "#Settings.v1_3_0.Settings", 9 | "SettingsObject": { 10 | "@odata.id": "/redfish/v1/Systems/1/Pending" 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/settings-nokia.json: -------------------------------------------------------------------------------- 1 | { 2 | "@Redfish.Settings": { 3 | "@odata.type": "#Settings.v1_2_2.Settings", 4 | "SettingsObject": { 5 | "@odata.id": "/redfish/v1/Systems/Self/SD" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "@Redfish.Settings": { 3 | "@odata.type": "#Settings.v1_2_0.Settings", 4 | "ETag": "9234ac83b9700123cc32", 5 | "Messages": [{ 6 | "MessageId": "Test.1.0.Failed", 7 | "Message": "Settings %1 update failed due to invalid value", 8 | "Severity": "Critical", 9 | "Resolution": "Fix the value and try again", 10 | "MessageArgs": [ 11 | "arg1" 12 | ], 13 | "RelatedProperties": [ 14 | "#/Attributes/ProcTurboMode" 15 | ] 16 | }], 17 | "SettingsObject": { 18 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/BIOS/Settings" 19 | }, 20 | "Time": "2016-03-07T14:44:30-05:00", 21 | "SupportedApplyTimes": [ 22 | "OnReset", 23 | "InMaintenanceWindowOnReset" 24 | ] 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/simple_storage_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#SimpleStorageCollection.SimpleStorageCollection", 3 | "Name": "Simple Storage Collection", 4 | "Members@odata.count": 1, 5 | "Members": [ 6 | { 7 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/SimpleStorage/1" 8 | } 9 | ], 10 | "@odata.context": "/redfish/v1/$metadata#SimpleStorageCollection.SimpleStorageCollection", 11 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/SimpleStorage", 12 | "@Redfish.Copyright": "Copyright 2014-2017 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 13 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/softwareinventory.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#SoftwareInventory.v1_2_0.SoftwareInventory", 3 | "Id": "BMC", 4 | "Name": "Contoso BMC Firmware", 5 | "Status": { 6 | "State": "Enabled", 7 | "Health": "OK" 8 | }, 9 | "Updateable": true, 10 | "Manufacturer": "Contoso", 11 | "ReleaseDate": "2017-08-22T12:00:00", 12 | "Version": "1.45.455b66-rev4", 13 | "SoftwareId": "1624A9DF-5E13-47FC-874A-DF3AFF143089", 14 | "LowestSupportedVersion": "1.30.367a12-rev1", 15 | "UefiDevicePaths": [ 16 | "BMC(0x1,0x0ABCDEF)" 17 | ], 18 | "RelatedItem": [ 19 | { 20 | "@odata.id": "/redfish/v1/Managers/1" 21 | } 22 | ], 23 | "Actions": { 24 | "Oem": {} 25 | }, 26 | "Oem": {}, 27 | "@odata.context": "/redfish/v1/$metadata#SoftwareInventory.SoftwareInventory", 28 | "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory/BMC" 29 | } 30 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/storage_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#StorageCollection.StorageCollection", 3 | "Name": "Storage Collection", 4 | "Members@odata.count": 1, 5 | "Members": [ 6 | { 7 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Storage/1" 8 | } 9 | ], 10 | "@odata.context": "/redfish/v1/$metadata#StorageCollection.StorageCollection", 11 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Storage", 12 | "@Redfish.Copyright": "Copyright 2014-2017 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 13 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/storage_controller.json: -------------------------------------------------------------------------------- 1 | { 2 | "@Redfish.Settings": { 3 | "@odata.context": "/redfish/v1/$metadata#Settings.Settings", 4 | "@odata.type": "#Settings.v1_3_3.Settings", 5 | "SettingsObject": { 6 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Storage/1/Controllers/1/Settings" 7 | }, 8 | "SupportedApplyTimes": [ 9 | "Immediate", 10 | "OnReset" 11 | ] 12 | }, 13 | "@odata.context": "/redfish/v1/$metadata#StorageController.StorageController", 14 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Storage/1/Controllers/1", 15 | "@odata.type": "#StorageController.v1_2_0.StorageController", 16 | "Description": "Integrated RAID Controller", 17 | "FirmwareVersion": "1.0.0.7", 18 | "Id": "1", 19 | "Identifiers": [ 20 | { 21 | "@odata.type": "#Resource.v1_1_0.Identifier", 22 | "DurableNameFormat": "NAA", 23 | "DurableName": "345C59DBD970859C" 24 | } 25 | ], 26 | "Identifiers@odata.count": 1, 27 | "Manufacturer": "Contoso", 28 | "Model": "12Gbs Integrated RAID", 29 | "Name": "Contoso Integrated RAID", 30 | "SpeedGbps": 12, 31 | "Status": { 32 | "Health": "OK", 33 | "HealthRollup": "OK", 34 | "State": "Enabled" 35 | }, 36 | "SupportedControllerProtocols": [ 37 | "PCIe" 38 | ], 39 | "SupportedControllerProtocols@odata.count": 1, 40 | "SupportedDeviceProtocols": [ 41 | "SAS", 42 | "SATA" 43 | ], 44 | "SupportedDeviceProtocols@odata.count": 2, 45 | "SupportedRAIDTypes": [ 46 | "RAID0", 47 | "RAID1" 48 | ], 49 | "SupportedRAIDTypes@odata.count": 2 50 | } 51 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/storage_controller_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.context": "/redfish/v1/$metadata#StorageControllerCollection.StorageControllerCollection", 3 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Storage/1/Controllers", 4 | "@odata.type": "#StorageControllerCollection.StorageControllerCollection", 5 | "Description": "Collection Of Storage controllers", 6 | "Members": [ 7 | { 8 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Storage/1/Controllers/1" 9 | } 10 | ], 11 | "Members@odata.count": 1, 12 | "Name": "Storage controller Collection" 13 | } 14 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/storage_controller_settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.context": "/redfish/v1/$metadata#StorageController.StorageController", 3 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Storage/1/Controllers/1", 4 | "@odata.type": "#StorageController.v1_2_0.StorageController", 5 | "Id": "1", 6 | "Name": "Local Storage Controller", 7 | "Description": "Integrated RAID Controller" 8 | } 9 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/subprocessor.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.id": "/redfish/v1/Systems/system/Processors/CPU1/SubProcessors/Core1", 3 | "@odata.type": "#Processor.v1_3_0.Processor", 4 | "Id": "Core1", 5 | "Status": { 6 | "State": "Enabled", 7 | "Health": "OK" 8 | } 9 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/subprocessor_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.id": "/redfish/v1/Systems/437XR1138R2Processors/CPU1/SubProcessors", 3 | "@odata.type": "#ProcessorCollection.ProcessorCollection", 4 | "Members": [ 5 | { 6 | "@odata.id": "/redfish/v1/Systems/system/Processors/CPU1/SubProcessors/Core1" 7 | } 8 | ] 9 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/system_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#ComputerSystemCollection.ComputerSystemCollection", 3 | "Name": "Computer System Collection", 4 | "Members@odata.count": 1, 5 | "Members": [ 6 | { 7 | "@odata.id": "/redfish/v1/Systems/437XR1138R2" 8 | } 9 | ], 10 | "@odata.context": "/redfish/v1/$metadata#Systems", 11 | "@odata.id": "/redfish/v1/Systems", 12 | "@Redfish.Copyright": "Copyright 2014-2016 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 13 | } 14 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/task.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type":"#Task.v1_4_3.Task", 3 | "Id":"545", 4 | "Name":"Task 545", 5 | "Description": "Task description", 6 | "TaskMonitor":"/taskmon/545", 7 | "TaskState":"Completed", 8 | "StartTime":"2012-03-07T14:44+06:00", 9 | "EndTime":"2012-03-07T14:45+06:00", 10 | "TaskStatus":"OK", 11 | "PercentComplete": 100, 12 | "Messages":[ 13 | { 14 | "MessageId":"Base.1.0.PropertyNotWriteable", 15 | "RelatedProperties":[ 16 | "SKU" 17 | ], 18 | "Message":"Property %1 is read only.", 19 | "MessageArgs":[ 20 | "SKU" 21 | ], 22 | "Severity":"Warning" 23 | } 24 | ], 25 | "@odata.id":"/redfish/v1/TaskService/Tasks/545" 26 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/task2.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type":"#Task.v1_4_3.Task", 3 | "Id":"546", 4 | "Name":"Task 546", 5 | "Description": "Task description", 6 | "TaskMonitor":"/taskmon/546", 7 | "TaskState":"Pending", 8 | "TaskStatus":"OK", 9 | "PercentComplete": 55, 10 | "@odata.id":"/redfish/v1/TaskService/Tasks/546" 11 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/task_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.context": "/redfish/v1/$metadata#TaskCollection.TaskCollection", 3 | "@odata.id": "/redfish/v1/TaskService/Tasks", 4 | "@odata.type": "#TaskCollection.TaskCollection", 5 | "Description": "Collection of Tasks", 6 | "Members": [ 7 | { 8 | "@odata.id": "/redfish/v1/TaskService/Tasks/545" 9 | }, 10 | { 11 | "@odata.id": "/redfish/v1/TaskService/Tasks/546" 12 | } 13 | ], 14 | "Members@odata.count": 2, 15 | "Name": "Task Collection" 16 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/task_monitor.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type":"#Task.v1_4_3.Task", 3 | "Id":"545", 4 | "Name":"Task 545", 5 | "Description": "Task description", 6 | "TaskMonitor":"/taskmon/545", 7 | "TaskState":"Completed", 8 | "StartTime":"2012-03-07T14:44+06:00", 9 | "EndTime":"2012-03-07T14:45+06:00", 10 | "TaskStatus":"OK", 11 | "PercentComplete": 100, 12 | "Messages":[ 13 | { 14 | "MessageId":"Base.1.0.PropertyNotWriteable", 15 | "RelatedProperties":[ 16 | "SKU" 17 | ], 18 | "Message":"Property %1 is read only.", 19 | "MessageArgs":[ 20 | "SKU" 21 | ], 22 | "Severity":"Warning" 23 | } 24 | ] 25 | } 26 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/taskservice.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#TaskService.v1_1_2.TaskService", 3 | "Id": "TaskService", 4 | "Name": "Tasks Service", 5 | "DateTime": "2015-03-13T04:14:33+06:00", 6 | "CompletedTaskOverWritePolicy": "Manual", 7 | "LifeCycleEventOnTaskStateChange": true, 8 | "Status": { 9 | "State": "Enabled", 10 | "Health": "OK" 11 | }, 12 | "ServiceEnabled": true, 13 | "Tasks": { 14 | "@odata.id": "/redfish/v1/TaskService/Tasks" 15 | }, 16 | "Oem": {}, 17 | "@odata.context": "/redfish/v1/$metadata#TaskService.TaskService", 18 | "@odata.id": "/redfish/v1/TaskService" 19 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/thermal.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#Thermal.v1_3_0.Thermal", 3 | "Id": "Thermal", 4 | "Name": "Blade Thermal", 5 | "Temperatures": [ 6 | { 7 | "@odata.id": "/redfish/v1/Chassis/Blade1/Thermal#/Temperatures/0", 8 | "MemberId": "0", 9 | "Name": "CPU Temp", 10 | "Status": { 11 | "State": "Enabled", 12 | "Health": "OK" 13 | }, 14 | "ReadingCelsius": 62, 15 | "UpperThresholdNonCritical": 75, 16 | "UpperThresholdCritical": 90, 17 | "UpperThresholdFatal": 95, 18 | "MinReadingRangeTemp": 0, 19 | "MaxReadingRangeTemp": 120, 20 | "PhysicalContext": "CPU", 21 | "RelatedItem": [ 22 | { 23 | "@odata.id": "/redfish/v1/Systems/529QB9450R6/Processors/CPU" 24 | } 25 | ] 26 | } 27 | ], 28 | "Fans": [ 29 | { 30 | "@odata.id": "/redfish/v1/Chassis/Blade1/Thermal#/Fans/0", 31 | "MemberId": "0", 32 | "Name": "CPU Fan", 33 | "PhysicalContext": "CPU", 34 | "Status": { 35 | "State": "Enabled", 36 | "Health": "OK" 37 | }, 38 | "Reading": 6000, 39 | "ReadingUnits": "RPM", 40 | "LowerThresholdFatal": 2000, 41 | "MinReadingRange": 0, 42 | "MaxReadingRange": 10000, 43 | "RelatedItem": [ 44 | { 45 | "@odata.id": "/redfish/v1/Systems/529QB9450R6/Processors/CPU" 46 | } 47 | ] 48 | } 49 | ], 50 | "@odata.context": "/redfish/v1/$metadata#Thermal.Thermal", 51 | "@odata.id": "/redfish/v1/Chassis/Blade1/Thermal" 52 | } 53 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/transfer_method_required_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "error": { 3 | "code": "Base.1.4.0.GeneralError", 4 | "message": "See ExtendedInfo for more information.", 5 | "@Message.ExtendedInfo": [ 6 | { 7 | "@odata.type": "Message.v1_0_6.Message", 8 | "MessageId": "Base.1.4.0.GeneralError", 9 | "Message": "'TransferMethod' property which is mandatory to complete the action is missing in the request body.", 10 | "MessageArgs": [], 11 | "Severity": "Critical" 12 | } 13 | ] 14 | } 15 | } 16 | 17 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/transfer_proto_required_error.json: -------------------------------------------------------------------------------- 1 | { 2 | "error": { 3 | "@Message.ExtendedInfo": [ 4 | { 5 | "@odata.type": "#Message.v1_0_8.Message", 6 | "Message": "The action /redfish/v1/Managers/Self/VirtualMedia/CD1/Actions/VirtualMedia.InsertMedia requires the parameter TransferProtocolType to be present in the request body.", 7 | "MessageArgs": [ 8 | "/redfish/v1/Managers/Self/VirtualMedia/CD1/Actions/VirtualMedia.InsertMedia", 9 | "TransferProtocolType" 10 | ], 11 | "MessageId": "Base.1.5.ActionParameterMissing", 12 | "RelatedProperties": [ 13 | "#/TransferProtocolType" 14 | ], 15 | "Resolution": "Supply the action with the required parameter in the request body when the request is resubmitted.", 16 | "Severity": "Critical" 17 | } 18 | ], 19 | "code": "Base.1.5.ActionParameterMissing", 20 | "message": "The action /redfish/v1/Managers/Self/VirtualMedia/CD1/Actions/VirtualMedia.InsertMedia requires the parameter TransferProtocolType to be present in the request body." 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/transfer_proto_required_error2.json: -------------------------------------------------------------------------------- 1 | { 2 | "error": { 3 | "code": "Base.1.4.0.GeneralError", 4 | "message": "See ExtendedInfo for more information.", 5 | "@Message.ExtendedInfo": [ 6 | { 7 | "@odata.type": "Message.v1_0_6.Message", 8 | "MessageId": "Base.1.4.0.GeneralError", 9 | "Message": "'TransferProtocolType' property which is mandatory to complete the action is missing in the request body.", 10 | "MessageArgs": [], 11 | "Severity": "Critical" 12 | } 13 | ] 14 | } 15 | } 16 | 17 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/transfer_proto_required_error3.json: -------------------------------------------------------------------------------- 1 | { 2 | "error": { 3 | "@Message.ExtendedInfo": [ 4 | { 5 | "@odata.type": "#Message.v1_0_8.Message", 6 | "Message": "The action /redfish/v1/Managers/Self/VirtualMedia/CD1/Actions/VirtualMedia.InsertMedia requires the parameter TransferProtocolType to be present in the request body.", 7 | "MessageArgs": [ 8 | "/redfish/v1/Managers/Self/VirtualMedia/CD1/Actions/VirtualMedia.InsertMedia", 9 | "TransferProtocolType" 10 | ], 11 | "MessageId": "Base.1.12.ActionParameterMissing", 12 | "RelatedProperties": [ 13 | "/TransferProtocolType" 14 | ], 15 | "Resolution": "Supply the action with the required parameter in the request body when the request is resubmitted.", 16 | "Severity": "Critical" 17 | } 18 | ], 19 | "code": "Base.1.12.ActionParameterMissing", 20 | "message": "The action /redfish/v1/Managers/Self/VirtualMedia/CD1/Actions/VirtualMedia.InsertMedia requires the parameter TransferProtocolType to be present in the request body." 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/updateservice.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#UpdateService.v1_2_1.UpdateService", 3 | "Id": "UpdateService", 4 | "Name": "Update service", 5 | "Status": { 6 | "State": "Enabled", 7 | "Health": "OK", 8 | "HealthRollup": "OK" 9 | }, 10 | "ServiceEnabled": true, 11 | "HttpPushUri": "/FWUpdate", 12 | "HttpPushUriTargets": ["/FWUpdate"], 13 | "HttpPushUriTargetsBusy": false, 14 | "FirmwareInventory": { 15 | "@odata.id": "/redfish/v1/UpdateService/FirmwareInventory" 16 | }, 17 | "SoftwareInventory": { 18 | "@odata.id": "/redfish/v1/UpdateService/SoftwareInventory" 19 | }, 20 | "Actions": { 21 | "#UpdateService.SimpleUpdate": { 22 | "target": "/redfish/v1/UpdateService/Actions/SimpleUpdate", 23 | "@Redfish.ActionInfo": "/redfish/v1/UpdateService/SimpleUpdateActionInfo" 24 | }, 25 | "Oem": {} 26 | }, 27 | "Oem": {}, 28 | "@odata.context": "/redfish/v1/$metadata#UpdateService.UpdateService", 29 | "@odata.id": "/redfish/v1/UpdateService" 30 | } 31 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/updateservice_no_inv.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#UpdateService.v1_2_1.UpdateService", 3 | "Id": "UpdateService", 4 | "Name": "Update service", 5 | "Status": { 6 | "State": "Enabled", 7 | "Health": "OK", 8 | "HealthRollup": "OK" 9 | }, 10 | "ServiceEnabled": true, 11 | "HttpPushUri": "/FWUpdate", 12 | "HttpPushUriTargets": ["/FWUpdate"], 13 | "HttpPushUriTargetsBusy": false, 14 | "Actions": { 15 | "#UpdateService.SimpleUpdate": { 16 | "target": "/redfish/v1/UpdateService/Actions/SimpleUpdate", 17 | "@Redfish.ActionInfo": "/redfish/v1/UpdateService/SimpleUpdateActionInfo" 18 | }, 19 | "Oem": {} 20 | }, 21 | "Oem": {}, 22 | "@odata.context": "/redfish/v1/$metadata#UpdateService.UpdateService", 23 | "@odata.id": "/redfish/v1/UpdateService" 24 | } 25 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/virtual_media.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#VirtualMedia.v1_2_0.VirtualMedia", 3 | "Id": "Floppy1", 4 | "Name": "Virtual Removable Media", 5 | "MediaTypes": [ 6 | "Floppy", 7 | "USBStick" 8 | ], 9 | "Actions": { 10 | "#VirtualMedia.EjectMedia": { 11 | "target": "/redfish/v1/Managers/BMC/VirtualMedia/Floppy1/Actions/VirtualMedia.EjectMedia", 12 | "title": "Mock Eject Media" 13 | }, 14 | "#VirtualMedia.InsertMedia": { 15 | "target": "/redfish/v1/Managers/BMC/VirtualMedia/Floppy1/Actions/VirtualMedia.InsertMedia", 16 | "title": "Mock Insert Media" 17 | } 18 | }, 19 | "Image": "https://www.dmtf.org/freeImages/Sardine.img", 20 | "ImageName": "Sardine2.1.43.35.6a", 21 | "ConnectedVia": "URI", 22 | "Inserted": true, 23 | "WriteProtected": false, 24 | "Certificates": { 25 | "@odata.id": "/redfish/v1/Managers/BMC/VirtualMedia/Floppy1/Certificates/" 26 | }, 27 | "@odata.context": "/redfish/v1/$metadata#VirtualMedia.VirtualMedia", 28 | "@odata.id": "/redfish/v1/Managers/BMC/VirtualMedia/Floppy1", 29 | "@Redfish.Copyright": "Copyright 2014-2017 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 30 | } 31 | -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/virtual_media_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#VirtualMediaCollection.VirtualMediaCollection", 3 | "Name": "Virtual Media Services", 4 | "Description": "Redfish-BMC Virtual Media Service Settings", 5 | "Members@odata.count": 1, 6 | "Members": [ 7 | { 8 | "@odata.id": "/redfish/v1/Managers/BMC/VirtualMedia/Floppy1" 9 | } 10 | ], 11 | "Oem": {}, 12 | "@odata.context": "/redfish/v1/$metadata#VirtualMediaCollection.VirtualMediaCollection", 13 | "@odata.id": "/redfish/v1/Managers/BMC/VirtualMedia", 14 | "@Redfish.Copyright": "Copyright 2014-2017 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 15 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/virtual_media_collectionv1_6.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#VirtualMediaCollection.VirtualMediaCollection", 3 | "Name": "Virtual Media Services", 4 | "Description": "Virtual Media Service Settings", 5 | "Members@odata.count": 1, 6 | "Members": [ 7 | { 8 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/VirtualMedia/CD1" 9 | } 10 | ], 11 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/VirtualMedia" 12 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/virtual_mediav1_6.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#VirtualMedia.v1_6_1.VirtualMedia", 3 | "Id": "CD1", 4 | "Name": "Virtual CD", 5 | "MediaTypes": [ 6 | "CD", 7 | "DVD" 8 | ], 9 | "Image": "redfish.dmtf.org/freeImages/freeOS.1.1.iso", 10 | "ImageName": "mymedia-read-only", 11 | "ConnectedVia": "Applet", 12 | "Inserted": true, 13 | "WriteProtected": false, 14 | "VerifyCertificate": true, 15 | "Certificates": { 16 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/VirtualMedia/CD1/Certificates" 17 | }, 18 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/VirtualMedia/CD1" 19 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/volume.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#Volume.v1_0_3.Volume", 3 | "Id": "1", 4 | "Name": "Virtual Disk 1", 5 | "Status": { 6 | "@odata.type": "#Resource.Status", 7 | "State": "Enabled", 8 | "Health": "OK" 9 | }, 10 | "Encrypted": false, 11 | "VolumeType": "Mirrored", 12 | "CapacityBytes": 899527000000, 13 | "Identifiers": [ 14 | { 15 | "@odata.type": "#Resource.v1_1_0.Identifier", 16 | "DurableNameFormat": "UUID", 17 | "DurableName": "38f1818b-111e-463a-aa19-fa54f792e468" 18 | } 19 | ], 20 | "Links": { 21 | "@odata.type": "#Volume.v1_0_0.Links", 22 | "Drives": [ 23 | { 24 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Storage/1/Drives/3F5A8C54207B7233" 25 | }, 26 | { 27 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Storage/1/Drives/35D38F11ACEF7BD3" 28 | } 29 | ] 30 | }, 31 | "Actions": { 32 | "@odata.type": "#Volume.v1_0_0.Actions", 33 | "#Volume.Initialize": { 34 | "target": "/redfish/v1/Systems/3/Storage/RAIDIntegrated/Volumes/1/Actions/Volume.Initialize", 35 | "InitializeType@Redfish.AllowableValues": [ 36 | "Fast", 37 | "Slow" 38 | ] 39 | } 40 | }, 41 | "@odata.context": "/redfish/v1/$metadata#Volume.Volume", 42 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Storage/1/Volumes/1", 43 | "@Redfish.Copyright": "Copyright 2014-2017 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 44 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/volume2.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#Volume.v1_0_3.Volume", 3 | "Id": "2", 4 | "Name": "Virtual Disk 2", 5 | "Status": { 6 | "@odata.type": "#Resource.Status", 7 | "State": "Enabled", 8 | "Health": "OK" 9 | }, 10 | "Encrypted": false, 11 | "VolumeType": "NonRedundant", 12 | "CapacityBytes": 107374182400, 13 | "Identifiers": [ 14 | { 15 | "@odata.type": "#Resource.v1_1_0.Identifier", 16 | "DurableNameFormat": "UUID", 17 | "DurableName": "0324c96c-8031-4f5e-886c-50cd90aca854" 18 | } 19 | ], 20 | "Links": { 21 | "@odata.type": "#Volume.v1_0_0.Links", 22 | "Drives": [ 23 | { 24 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Storage/1/Drives/3D58ECBC375FD9F2" 25 | } 26 | ] 27 | }, 28 | "Actions": { 29 | "@odata.type": "#Volume.v1_0_0.Actions", 30 | "#Volume.Initialize": { 31 | "target": "/redfish/v1/Systems/3/Storage/RAIDIntegrated/Volumes/1/Actions/Volume.Initialize", 32 | "InitializeType@Redfish.AllowableValues": [ 33 | "Fast", 34 | "Slow" 35 | ] 36 | } 37 | }, 38 | "@odata.context": "/redfish/v1/$metadata#Volume.Volume", 39 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Storage/1/Volumes/2", 40 | "@Redfish.Copyright": "Copyright 2014-2017 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 41 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/volume3.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#Volume.v1_0_3.Volume", 3 | "Id": "3", 4 | "Name": "Virtual Disk 3", 5 | "Status": { 6 | "@odata.type": "#Resource.Status", 7 | "State": "Enabled", 8 | "Health": "OK" 9 | }, 10 | "Encrypted": false, 11 | "VolumeType": "NonRedundant", 12 | "CapacityBytes": 1073741824000, 13 | "Identifiers": [ 14 | { 15 | "@odata.type": "#Resource.v1_1_0.Identifier", 16 | "DurableNameFormat": "UUID", 17 | "DurableName": "eb179a30-6f87-4fdb-8f92-639eb7aaabcb" 18 | } 19 | ], 20 | "Links": { 21 | "@odata.type": "#Volume.v1_0_0.Links", 22 | "Drives": [ 23 | { 24 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Storage/1/Drives/3D58ECBC375FD9F2" 25 | } 26 | ] 27 | }, 28 | "Actions": { 29 | "@odata.type": "#Volume.v1_0_0.Actions", 30 | "#Volume.Initialize": { 31 | "target": "/redfish/v1/Systems/3/Storage/RAIDIntegrated/Volumes/1/Actions/Volume.Initialize", 32 | "InitializeType@Redfish.AllowableValues": [ 33 | "Fast", 34 | "Slow" 35 | ] 36 | } 37 | }, 38 | "@odata.context": "/redfish/v1/$metadata#Volume.Volume", 39 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Storage/1/Volumes/3", 40 | "@Redfish.Copyright": "Copyright 2014-2017 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 41 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/volume4.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#Volume.v1_0_3.Volume", 3 | "Id": "4", 4 | "Name": "My Volume 4", 5 | "Status": { 6 | "@odata.type": "#Resource.Status", 7 | "State": "Enabled", 8 | "Health": "OK" 9 | }, 10 | "Encrypted": false, 11 | "VolumeType": "Mirrored", 12 | "RAIDType": "RAID1", 13 | "CapacityBytes": 107374182400, 14 | "Identifiers": [ 15 | { 16 | "@odata.type": "#Resource.v1_1_0.Identifier", 17 | "DurableNameFormat": "UUID", 18 | "DurableName": "eb179a30-6f87-4fdb-8f92-639eb7aaabcb" 19 | } 20 | ], 21 | "Links": { 22 | "@odata.type": "#Volume.v1_0_0.Links", 23 | "Drives": [ 24 | { 25 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Storage/1/Drives/3D58ECBC375FD9F2" 26 | } 27 | ] 28 | }, 29 | "Actions": { 30 | "@odata.type": "#Volume.v1_0_0.Actions", 31 | "#Volume.Initialize": { 32 | "target": "/redfish/v1/Systems/437XR1138R2/Storage/1/Volumes/4/Actions/Volume.Initialize", 33 | "InitializeType@Redfish.AllowableValues": [ 34 | "Fast", 35 | "Slow" 36 | ] 37 | } 38 | }, 39 | "@odata.context": "/redfish/v1/$metadata#Volume.Volume", 40 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Storage/1/Volumes/4", 41 | "@Redfish.Copyright": "Copyright 2014-2017 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 42 | } -------------------------------------------------------------------------------- /sushy/tests/unit/json_samples/volume_collection.json: -------------------------------------------------------------------------------- 1 | { 2 | "@odata.type": "#VolumeCollection.VolumeCollection", 3 | "Name": "Storage Volume Collection", 4 | "Description": "Storage Volume Collection", 5 | "Members@odata.count": 3, 6 | "Members": [ 7 | { 8 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Storage/1/Volumes/1" 9 | }, 10 | { 11 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Storage/1/Volumes/2" 12 | }, 13 | { 14 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Storage/1/Volumes/3" 15 | } 16 | ], 17 | "@Redfish.OperationApplyTimeSupport": { 18 | "@odata.type": "#Settings.v1_2_0.OperationApplyTimeSupport", 19 | "SupportedValues": [ "Immediate", "OnReset", "AtMaintenanceWindowStart" ], 20 | "MaintenanceWindowStartTime": "2017-05-03T23:12:37-05:00", 21 | "MaintenanceWindowDurationInSeconds": 600, 22 | "MaintenanceWindowResource": { 23 | "@odata.id": "/redfish/v1/Systems/437XR1138R2" 24 | } 25 | }, 26 | "Oem": {}, 27 | "@odata.context": "/redfish/v1/$metadata#VolumeCollection.VolumeCollection", 28 | "@odata.id": "/redfish/v1/Systems/437XR1138R2/Storage/1/Volumes", 29 | "@Redfish.Copyright": "Copyright 2014-2017 Distributed Management Task Force, Inc. (DMTF). For the full DMTF copyright policy, see http://www.dmtf.org/about/policies/copyright." 30 | } -------------------------------------------------------------------------------- /sushy/tests/unit/resources/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/tests/unit/resources/__init__.py -------------------------------------------------------------------------------- /sushy/tests/unit/resources/certificateservice/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/tests/unit/resources/certificateservice/__init__.py -------------------------------------------------------------------------------- /sushy/tests/unit/resources/chassis/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/tests/unit/resources/chassis/__init__.py -------------------------------------------------------------------------------- /sushy/tests/unit/resources/compositionservice/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/tests/unit/resources/compositionservice/__init__.py -------------------------------------------------------------------------------- /sushy/tests/unit/resources/eventservice/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/tests/unit/resources/eventservice/__init__.py -------------------------------------------------------------------------------- /sushy/tests/unit/resources/fabric/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/tests/unit/resources/fabric/__init__.py -------------------------------------------------------------------------------- /sushy/tests/unit/resources/manager/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/tests/unit/resources/manager/__init__.py -------------------------------------------------------------------------------- /sushy/tests/unit/resources/oem/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/tests/unit/resources/oem/__init__.py -------------------------------------------------------------------------------- /sushy/tests/unit/resources/registry/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/tests/unit/resources/registry/__init__.py -------------------------------------------------------------------------------- /sushy/tests/unit/resources/sessionservice/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/tests/unit/resources/sessionservice/__init__.py -------------------------------------------------------------------------------- /sushy/tests/unit/resources/system/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/tests/unit/resources/system/__init__.py -------------------------------------------------------------------------------- /sushy/tests/unit/resources/system/network/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/tests/unit/resources/system/network/__init__.py -------------------------------------------------------------------------------- /sushy/tests/unit/resources/system/storage/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/tests/unit/resources/system/storage/__init__.py -------------------------------------------------------------------------------- /sushy/tests/unit/resources/taskservice/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/tests/unit/resources/taskservice/__init__.py -------------------------------------------------------------------------------- /sushy/tests/unit/resources/updateservice/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/openstack/sushy/406c64326074dd311cd65f330c0747158ab1bf96/sushy/tests/unit/resources/updateservice/__init__.py -------------------------------------------------------------------------------- /test-requirements.txt: -------------------------------------------------------------------------------- 1 | # The order of packages is significant, because pip processes them in the order 2 | # of appearance. Changing the order has an impact on the overall integration 3 | # process, which may cause wedges in the gate later. 4 | 5 | # unit tests 6 | coverage!=4.4,>=4.0 # Apache-2.0 7 | oslotest>=3.2.0 # Apache-2.0 8 | stestr>=2.0.0 # Apache-2.0 9 | -------------------------------------------------------------------------------- /zuul.d/project.yaml: -------------------------------------------------------------------------------- 1 | - project: 2 | templates: 3 | - check-requirements 4 | - openstack-cover-jobs 5 | - openstack-python3-jobs 6 | - publish-openstack-docs-pti 7 | - release-notes-jobs-python3 8 | check: 9 | jobs: 10 | - ironic-cross-sushy 11 | - sushy-tempest-bios-redfish-pxe 12 | - sushy-tempest-uefi-redfish-vmedia 13 | gate: 14 | jobs: 15 | - ironic-cross-sushy 16 | - sushy-tempest-bios-redfish-pxe 17 | - sushy-tempest-uefi-redfish-vmedia 18 | -------------------------------------------------------------------------------- /zuul.d/sushy-jobs.yaml: -------------------------------------------------------------------------------- 1 | - job: 2 | name: sushy-tempest-bios-redfish-pxe 3 | parent: ironic-tempest-bios-redfish-pxe 4 | irrelevant-files: 5 | - ^.*\.rst$ 6 | - ^\.pre-commit-config\.yaml$ 7 | - ^doc/.*$ 8 | - ^test-requirements.txt$ 9 | - ^sushy/tests/.*$ 10 | required-projects: 11 | - openstack/sushy 12 | 13 | - job: 14 | name: sushy-tempest-uefi-redfish-vmedia 15 | parent: ironic-tempest-uefi-redfish-vmedia 16 | irrelevant-files: 17 | - ^.*\.rst$ 18 | - ^\.pre-commit-config\.yaml$ 19 | - ^doc/.*$ 20 | - ^test-requirements.txt$ 21 | - ^sushy/tests/.*$ 22 | required-projects: 23 | - openstack/sushy 24 | --------------------------------------------------------------------------------