%global _empty_manifest_terminate_build 0 Name: python-redfish-utilities Version: 3.1.4 Release: 1 Summary: Redfish Utilities License: BSD 3-clause "New" or "Revised License" URL: https://github.com/DMTF/Redfish-Tacklebox Source0: https://mirrors.aliyun.com/pypi/web/packages/b1/d5/a05ad96f06a3bbed34eaa5483b71f9e4737c9c795cd83fed68d789ceaa53/redfish_utilities-3.1.4.tar.gz BuildArch: noarch Requires: python3-redfish Requires: python3-XlsxWriter %description # Redfish Tacklebox Copyright 2019-2022 DMTF. All rights reserved. ## About Redfish Tacklebox contains a set of Python3 utilities to perform common management operations with a Redfish service. The utilities can be used as part of larger management applications, or be used as standalone command line tools. ## Installation `pip install redfish_utilities` ### Building from Source ``` python setup.py sdist pip install dist/redfish_utilities-x.x.x.tar.gz ``` ## Requirements External modules: * redfish: https://pypi.python.org/pypi/redfish * XlsxWriter: https://pypi.org/project/XlsxWriter You may install the external modules by running: `pip install -r requirements.txt` ## Utilities ### Discover ``` usage: rf_discover.py [-h] A tool to discover Redfish services optional arguments: -h, --help show this help message and exit ``` Example: `rf_discover.py` The tool will perform an SSDP request to find all available Redfish services. Once all the responses are collected, it will print each service with its UUID and service root. ### Sensor List ``` usage: rf_sensor_list.py [-h] --user USER --password PASSWORD --rhost RHOST A tool to walk a Redfish service and list sensor info required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --debug Creates debug file showing HTTP traces and exceptions ``` Example: `rf_sensor_list.py -u root -p root -r https://192.168.1.100` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It then traverses the chassis collection for the service, and reads their respective power and thermal resources. Using the information from those resources, it will build a sensor table and print the information collected. ### System Inventory ``` usage: rf_sys_inventory.py [-h] --user USER --password PASSWORD --rhost RHOST [--details] [--noabsent] [--write [WRITE]] A tool to walk a Redfish service and list component information required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --details, -details Indicates if the full details of each component should be shown --noabsent, -noabsent Indicates if absent devices should be skipped --write [WRITE], -w [WRITE] Indicates if the inventory should be written to a spreadsheet and what the file name should be if given --workaround, -workaround Indicates if workarounds should be attempted for non- conformant services --debug Creates debug file showing HTTP traces and exceptions ``` Example: `rf_sys_inventory.py -u root -p root -r https://192.168.1.100 -details` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It then traverses the chassis collection for the service, and collects component information for processors, memory, drives, PCIe devices, network adapters, and storage controllers. Using the information collected, it will build an inventory table and print the information. ### Logs ``` usage: rf_logs.py [-h] --user USER --password PASSWORD --rhost RHOST [--manager [MANAGER]] [--system [SYSTEM]] [--chassis [CHASSIS]] [--log LOG] [--details] [--clear] A tool to manage logs on a Redfish service required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --manager [MANAGER], -m [MANAGER] The ID of the manager containing the log service --system [SYSTEM], -s [SYSTEM] The ID of the system containing the log service --chassis [CHASSIS], -c [CHASSIS] The ID of the chassis containing the log service --log LOG, -l LOG The ID of the resource containing the log service --details, -details Indicates details to be shown for each log entry --clear, -clear Indicates if the log should be cleared --debug Creates debug file showing HTTP traces and exceptions ``` Example: `rf_logs.py -u root -p root -r https://192.168.1.100 -m BMC` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then attempt to locate the appropriate log service via the following logic: * If the *manager* argument is provided, it will traverse the manager collection for the matching manager. * If the *system* argument is provided, it will traverse the system collection for the matching system. * If the *chassis* argument is provided, it will traverse the chassis collection for the matching chassis. * If any of the above arguments are provided without a specified Id, but the collection contains exactly one member, then that member is used. * If none of the above arguments are provided, then the tool will try to use a manager in the manager collection if there is only one member present. * Within the member, the tool will find the matching log service based on the *log* argument. * If *log* is not specified, and there is exactly one log service in the member, then the tool will use that one log service. Once the desired log service is found, the tool will either perform the `ClearLog` action if *clear* is provided, or read and display the log entries. ### Power/Reset ``` usage: rf_power_reset.py [-h] --user USER --password PASSWORD --rhost RHOST [--system SYSTEM] [--type {On,ForceOff,GracefulShutdown,GracefulRestart,ForceRestart,Nmi,ForceOn,PushPowerButton,PowerCycle,Suspend,Pause,Resume}] [--info] A tool to perform a power/reset operation of a system required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --system SYSTEM, -s SYSTEM The ID of the system to reset --type {On,ForceOff,GracefulShutdown,GracefulRestart,ForceRestart,Nmi,ForceOn,PushPowerButton,PowerCycle,Suspend,Pause,Resume}, -t {On,ForceOff,GracefulShutdown,GracefulRestart,ForceRestart,Nmi,ForceOn,PushPowerButton,PowerCycle,Suspend,Pause,Resume} The type of power/reset operation to perform --info, -info Indicates if reset and power information should be reported --debug Creates debug file showing HTTP traces and exceptions ``` Example: `rf_power_reset.py -u root -p root -r https://192.168.1.100 -t GracefulRestart` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It then traverses the system collection for the service to find the matching system specified by the *system* argument. It will perform the `Reset` action with the specified reset type from the *type* argument. * If *system* is not specified, and if the service has exactly one system, it will perform the operation on the one system. * If *type* is not specified, it will attempt a `GracefulRestart`. ### Boot Override ``` usage: rf_boot_override.py [-h] --user USER --password PASSWORD --rhost RHOST [--system SYSTEM] [--target TARGET] [--uefi UEFI] [--reset] A tool to perform a one time boot override of a system required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --system SYSTEM, -s SYSTEM The ID of the system to set --info, -info Indicates if boot information should be reported --target TARGET, -t TARGET The target boot device; if this argument is omitted the tool will display the current boot settings --uefi UEFI, -uefi UEFI If target is 'UefiTarget', the UEFI Device Path of the device to boot. If target is 'UefiBootNext', the UEFI Boot Option string of the device to boot. --mode MODE, -m MODE The requested boot mode ('UEFI' or 'Legacy') --reset, -reset Signifies that the system is reset after the boot override is set --debug Creates debug file showing HTTP traces and exceptions ``` Example: `rf_boot_override.py -u root -p root -r https://192.168.1.100 -t Pxe -reset` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It then traverses the system collection for the service to find the matching system specified by the *system* argument. * If *system* is not specified, and if the service has exactly one system, it will perform the operation on the one system. The tool will then perform an operation on the `Boot` object within the matching system. * If *target* is specified, it will update the `Boot` object to set the boot override to be *target*. * If *reset* is provided, it will reset the system after updating the `Boot` object. * If *target* is not specified, it will display the current boot override settings for the system. ### Manager Configuration ``` usage: rf_manager_config.py [-h] --user USER --password PASSWORD --rhost RHOST [--manager MANAGER] {info,reset,getnet,setnet} ... A tool to manage managers in a service positional arguments: {info,reset,getnet,setnet} info Displays information about a manager reset Resets a manager getnet Displays information about an Ethernet interface setnet Configures an Ethernet interface required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --manager MANAGER, -m MANAGER The ID of the manager to target --debug Creates debug file showing HTTP traces and exceptions ``` #### Info ``` usage: rf_manager_config.py info [-h] optional arguments: -h, --help show this help message and exit ``` Example: `rf_manager_config.py -u root -p root -r https://192.168.1.100 info` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then locate the manager specified by the *manager* argument, and displays the manager instance. * If *manager* is not specified, and if the service has exactly one manager, it will perform the operation on the one manager. #### Reset ``` usage: rf_manager_config.py reset [-h] [--type {On,ForceOff,GracefulShutdown,GracefulRestart,ForceRestart,Nmi,ForceOn,PushPowerButton,PowerCycle}] [--info] optional arguments: -h, --help show this help message and exit --type {On,ForceOff,GracefulShutdown,GracefulRestart,ForceRestart,Nmi,ForceOn,PushPowerButton,PowerCycle}, -t {On,ForceOff,GracefulShutdown,GracefulRestart,ForceRestart,Nmi,ForceOn,PushPowerButton,PowerCycle} The type of power/reset operation to perform --info, -info Indicates if reset information should be reported ``` Example: `rf_manager_config.py -u root -p root -r https://192.168.1.100 reset -t GracefulRestart` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It then traverses the manager collection for the service to find the matching system specified by the *manager* argument. It will perform the `Reset` action with the specified reset type from the *type* argument. * If *manager* is not specified, and if the service has exactly one manager, it will perform the operation on the one manager. * If *type* is not specified, it will attempt a `GracefulRestart`. #### Get Network Interface ``` usage: rf_manager_config.py getnet [-h] [--id ID] optional arguments: -h, --help show this help message and exit --id ID, -i ID The identifier of the Ethernet interface to display ``` Example: `rf_manager_config.py -u root -p root -r https://192.168.1.100 getnet -i NIC2` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then locate the manager specified by the *manager* argument, locate the Ethernet interface specified by the *id* argument, and displays the interface instance. * If *manager* is not specified, and if the service has exactly one manager, it will perform the operation on the one manager. * If *id* is not specified, and if the manager has exactly one Ethernet interface, it will perform the operation on the one interface. #### Set Network Interface ``` usage: rf_manager_config.py setnet [-h] [--id ID] [--ipv4address IPV4ADDRESS] [--ipv4netmask IPV4NETMASK] [--ipv4gateway IPV4GATEWAY] [--dhcpv4 {On,Off}] [--ipv6addresses IPV6ADDRESSES [IPV6ADDRESSES ...]] [--ipv6gateways IPV6GATEWAYS [IPV6GATEWAYS ...]] [--dhcpv6 {Stateful,Stateless,Disabled}] [--vlan {On,Off}] [--vlanid VLANID] [--vlanpriority VLANPRIORITY] optional arguments: -h, --help show this help message and exit --id ID, -i ID The identifier of the Ethernet interface to configure --ipv4address IPV4ADDRESS, -ipv4address IPV4ADDRESS The static IPv4 address to set --ipv4netmask IPV4NETMASK, -ipv4netmask IPV4NETMASK The static IPv4 subnet mask to set --ipv4gateway IPV4GATEWAY, -ipv4gateway IPV4GATEWAY The static IPv4 gateway to set --dhcpv4 {On,Off}, -dhcpv4 {On,Off} The DHCPv4 configuration to set --ipv6addresses IPV6ADDRESSES [IPV6ADDRESSES ...], -ipv6addresses IPV6ADDRESSES [IPV6ADDRESSES ...] The static IPv6 addresses to set with prefix length --ipv6gateways IPV6GATEWAYS [IPV6GATEWAYS ...], -ipv6gateways IPV6GATEWAYS [IPV6GATEWAYS ...] The static IPv6 default gateways to set with prefix length --dhcpv6 {Stateful,Stateless,Disabled}, -dhcpv6 {Stateful,Stateless,Disabled} The DHCPv6 configuration to set --vlan {On,Off}, -vlan {On,Off} The VLAN enabled configuration to set --vlanid VLANID, -vlanid VLANID The VLAN ID to set --vlanpriority VLANPRIORITY, -vlanpriority VLANPRIORITY The VLAN priority to set ``` Example: `rf_manager_config.py -u root -p root -r https://192.168.1.100 setnet -i NIC2 -ipv4address 192.168.1.101 -ipv4gateway 192.168.1.1` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then locate the manager specified by the *manager* argument, locate the Ethernet interface specified by the *id* argument, and apply the requested settings to the interface. * If *manager* is not specified, and if the service has exactly one manager, it will perform the operation on the one manager. * If *id* is not specified, and if the manager has exactly one Ethernet interface, it will perform the operation on the one interface. ### BIOS Settings ``` usage: rf_bios_settings.py [-h] --user USER --password PASSWORD --rhost RHOST [--system SYSTEM] [--attribute name value] A tool to manager BIOS settings for a system required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --system SYSTEM, -s SYSTEM The ID of the system to manage --attribute name value, -a name value Sets a BIOS attribute to a new value; can be supplied multiple times to set multiple attributes --workaround, -workaround Indicates if workarounds should be attempted for non- conformant services --debug Creates debug file showing HTTP traces and exceptions ``` Example: `rf_bios_settings.py -u root -p root -r https://192.168.1.100 -a BiosMode Legacy` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It then traverses the system collection for the service to find the matching system specified by the *system* argument. * If *system* is not specified, and if the service has exactly one system, it will perform the operation on the one system. The tool will then get the BIOS resource for the matching system. * If *attribute* is specified, it will update the BIOS resource with the new attribute value. * If *attribute* is not specified, it will display the BIOS settings. ### Accounts ``` usage: rf_accounts.py [-h] --user USER --password PASSWORD --rhost RHOST [--add name password role] [--delete DELETE] [--setname old_name new_name] [--setpassword name new_password] [--setrole name new_role] [--enable ENABLE] [--disable DISABLE] [--unlock UNLOCK] A tool to manage user accounts on a Redfish service required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --add name password role, -add name password role Adds a new user account --delete DELETE, -delete DELETE Deletes a user account with the given name --setname old_name new_name, -setname old_name new_name Sets a user account to a new name --setpassword name new_password, -setpassword name new_password Sets a user account to a new password --setrole name new_role, -setrole name new_role Sets a user account to a new role --enable ENABLE, -enable ENABLE Enables a user account with the given name --disable DISABLE, -disable DISABLE Disabled a user account with the given name --unlock UNLOCK, -unlock UNLOCK Unlocks a user account with the given name --debug Creates debug file showing HTTP traces and exceptions ``` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. Based on the parameters, it will display, add, delete, or modify user accounts. * The *add* argument is used to create a new user account * Example: `rf_accounts.py -u root -p root -r https://192.168.1.100 -add new_name new_password new_role` * The *delete* argument is used to delete a user account based on the given user name * Example: `rf_accounts.py -u root -p root -r https://192.168.1.100 -delete user_to_delete` * The *setname* argument is used to change the name of a user account * Example: `rf_accounts.py -u root -p root -r https://192.168.1.100 -setname user_to_change new_name` * The *setpassword* argument is used to change the password of a user account * Example: `rf_accounts.py -u root -p root -r https://192.168.1.100 -setpassword user_to_change new_password` * The *setrole* argument is used to change the role of a user account * Example: `rf_accounts.py -u root -p root -r https://192.168.1.100 -setrole user_to_change new_role` * The *enable* argument is used to enable a user account * Example: `rf_accounts.py -u root -p root -r https://192.168.1.100 -enable user_to_change` * The *disable* argument is used to disable a user account * Example: `rf_accounts.py -u root -p root -r https://192.168.1.100 -disable user_to_change` * The *unlock* argument is used to unlock a user account * Example: `rf_accounts.py -u root -p root -r https://192.168.1.100 -unlock user_to_change` * If none of the above arguments are given, a table of the user accounts is provided * Example: `rf_accounts.py -u root -p root -r https://192.168.1.100` ### Update ``` usage: rf_update.py [-h] --user USER --password PASSWORD --rhost RHOST --image IMAGE [--target TARGET] A tool to perform an update with a Redfish service required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) --image IMAGE, -i IMAGE The URI or filepath of the image optional arguments: -h, --help show this help message and exit --target TARGET, -t TARGET The target resource to apply the image --debug Creates debug file showing HTTP traces and exceptions ``` Example: `rf_update.py -u root -p root -r https://192.168.1.100 -i image.bin` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It then builds a request payload to perform a `SimpleUpdate` action against the update service using the image specified by the *image* argument. The optional *target* argument is used in the request if attempting to update a particular system, device, manager, or other resource. Once the `SimpleUpdate` is requested, it monitors the progress of the update, and displays response messages reported by the service about the update once complete. ### Event Service ``` usage: rf_event_service.py [-h] --user USER --password PASSWORD --rhost RHOST {subscribe,unsubscribe,info} ... A tool to manage the event service on a Redfish service positional arguments: {info,subscribe,unsubscribe} info Displays information about the event service and subscriptions subscribe Creates an event subscription to a specified URL unsubscribe Deletes an event subscription required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --debug Creates debug file showing HTTP traces and exceptions ``` #### Info ``` usage: rf_event_service.py info [-h] optional arguments: -h, --help show this help message and exit ``` Example: `rf_event_service.py -u root -p root -r https://192.168.1.100 info` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then locate the event service and event subscriptions and display their information. #### Subscribe ``` usage: rf_event_service.py subscribe [-h] --destination DESTINATION [--context CONTEXT] [--expand] [--format FORMAT] [--resourcetypes RESOURCETYPES [RESOURCETYPES ...]] [--registries REGISTRIES [REGISTRIES ...]] required arguments: --destination DESTINATION, -dest DESTINATION The URL where events are sent for the subscription optional arguments: -h, --help show this help message and exit --context CONTEXT, -c CONTEXT The context string for the subscription that is supplied back in the event payload --expand, -e Indicates if the origin of condition in the event is to be expanded --format FORMAT, -f FORMAT The format of the event payloads --resourcetypes RESOURCETYPES [RESOURCETYPES ...], -rt RESOURCETYPES [RESOURCETYPES ...] A list of resource types for the subscription --registries REGISTRIES [REGISTRIES ...], -reg REGISTRIES [REGISTRIES ...] A list of registries for the subscription --eventtypes EVENTTYPES [EVENTTYPES ...], -et EVENTTYPES [EVENTTYPES ...] A list of event types for the subscription; this option has been deprecated in favor of other methods such as 'resource types' and 'registries' ``` Example: `rf_event_service.py -u root -p root -r https://192.168.1.100 subscribe -dest http://someremotelistener/redfish_event_handler` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then locate the event service and perform a POST operation on the event destination collection to create a new subscription. The subscription will specify the destination to be the *destination* argument, and other optional arguments are provided as additional settings on the subscription. #### Unsubscribe ``` usage: rf_event_service.py unsubscribe [-h] --id ID required arguments: --id ID, -i ID The identifier of the event subscription to be deleted optional arguments: -h, --help show this help message and exit ``` Example: `rf_event_service.py -u root -p root -r https://192.168.1.100 unsubscribe --id 1` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then locate the event service and traverse the members of the event destination collection to find a member with the `Id` property matching the *id* argument. If a match is found, it will perform a DELETE on the member. ### Virtual Media ``` usage: rf_virtual_media.py [-h] --user USER --password PASSWORD --rhost RHOST [--system SYSTEM] {info,insert,eject} ... A tool to manage virtual media of a system positional arguments: {info,insert,eject} info Displays information about the virtual media for a system insert Inserts virtual media for a system eject Ejects virtual media from a system required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --system SYSTEM, -s SYSTEM The ID of the system containing the virtual media --debug Creates debug file showing HTTP traces and exceptions ``` #### Info ``` usage: rf_virtual_media.py info [-h] optional arguments: -h, --help show this help message and exit ``` Example: `rf_virtual_media.py -u root -p root -r https://192.168.1.100 info` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then locate the system specified by the *system* argument, find its virtual media collection, and display the virtual media instances. #### Insert ``` usage: rf_virtual_media.py insert [-h] --image IMAGE [--id ID] [--notinserted] [--writable] [--mediatypes MEDIATYPES [MEDIATYPES ...]] required arguments: --image IMAGE, -image IMAGE The URI of the image to insert optional arguments: -h, --help show this help message and exit --id ID, -i ID The identifier of the virtual media instance to insert --notinserted, -notinserted Indicates if the media is to be marked as not inserted for the system --writable, -writable Indicates if the media is to be marked as writable for the system --mediatypes MEDIATYPES [MEDIATYPES ...], -mt MEDIATYPES [MEDIATYPES ...] A list of acceptable media types for the virtual media ``` Example: `rf_virtual_media.py -u root -p root -r https://192.168.1.100 insert -image http://somefileserver/my_media.iso` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then locate the system specified by the *system* argument, find its virtual media collection. It will then iterate through the virtual media collection, and insert the virtual media specified by the *image* argument in an appropriate slot. #### Eject ``` usage: rf_virtual_media.py eject [-h] --id ID required arguments: --id ID, -i ID The identifier of the virtual media instance to eject optional arguments: -h, --help show this help message and exit ``` Example: `rf_virtual_media.py -u root -p root -r https://192.168.1.100 eject --id 1` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then locate the system specified by the *system* argument, find its virtual media collection. It will then locate the virtual media instance with matching `Id` property with the *id* argument, and then eject the media. ### Diagnostic Data ``` usage: rf_diagnostic_data.py [-h] --user USER --password PASSWORD --rhost RHOST [--manager [MANAGER]] [--system [SYSTEM]] [--chassis [CHASSIS]] [--log LOG] [--type {Manager,PreOS,OS,OEM}] [--oemtype OEMTYPE] [--directory DIRECTORY] A tool to collect diagnostic data from a log service on a Redfish service required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --manager [MANAGER], -m [MANAGER] The ID of the manager containing the log service --system [SYSTEM], -s [SYSTEM] The ID of the system containing the log service --chassis [CHASSIS], -c [CHASSIS] The ID of the chassis containing the log service --log LOG, -l LOG The ID of the log service --type {Manager,PreOS,OS,OEM}, -type {Manager,PreOS,OS,OEM} The type of diagnostic data to collect; defaults to 'Manager' if not specified --oemtype OEMTYPE, -oemtype OEMTYPE The OEM-specific type of diagnostic data to collect; this option should only be used if the requested type is 'OEM' --directory DIRECTORY, -d DIRECTORY The directory to save the diagnostic data; defaults to the current directory if not specified --debug Creates debug file showing HTTP traces and exceptions ``` Example: `rf_diagnostic_data.py -u root -p root -r https://192.168.1.100 -m BMC` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then attempt to locate the appropriate log service via the following logic: * If the *manager* argument is provided, it will traverse the manager collection for the matching manager. * If the *system* argument is provided, it will traverse the system collection for the matching system. * If the *chassis* argument is provided, it will traverse the chassis collection for the matching chassis. * If any of the above arguments are provided without a specified Id, but the collection contains exactly one member, then that member is used. * If none of the above arguments are provided, then the tool will try to use a manager in the manager collection if there is only one member present. * Within the member, the tool will find the matching log service based on the *log* argument. * If *log* is not specified, and there is exactly one log service in the member, then the tool will use that one log service. Once the desired log service is found, the tool perform the `GetDiagnosticData` action and specify the type of diagnostic data to collect based on the *type* and *oemtype* arguments. Once the action is complete, it will download the diagnostic data from the service and save it on the local system. ### Raw Request ``` usage: rf_raw_request.py [-h] --user USER --password PASSWORD --rhost RHOST [--method {GET,HEAD,POST,PATCH,PUT,DELETE}] --request REQUEST [--body BODY] [--verbose] A tool perform a raw request to a Redfish service required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) --request REQUEST, -req REQUEST The URI for the request optional arguments: -h, --help show this help message and exit --method {GET,HEAD,POST,PATCH,PUT,DELETE}, -m {GET,HEAD,POST,PATCH,PUT,DELETE} The HTTP method to perform; performs GET if not specified --body BODY, -b BODY The body to provide with the request; can be a JSON string for a JSON request, a filename to send binary data, or an unstructured string --verbose, -v Indicates if HTTP response codes and headers are displayed ``` Example: `rf_raw_request.py -u root -p root -r https://192.168.1.100 -req /redfish/v1/Systems/1 -m PATCH -b '{"AssetTag": "New tag"}'` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then perform the requested method on the specified URI with an optional body, specified by the *method*, *request*, and *body* arguments. It will then display the response of the operation from the service. ## Release Process 1. Go to the "Actions" page 2. Select the "Release and Publish" workflow 3. Click "Run workflow" 4. Fill out the form 5. Click "Run workflow" %package -n python3-redfish-utilities Summary: Redfish Utilities Provides: python-redfish-utilities BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-redfish-utilities # Redfish Tacklebox Copyright 2019-2022 DMTF. All rights reserved. ## About Redfish Tacklebox contains a set of Python3 utilities to perform common management operations with a Redfish service. The utilities can be used as part of larger management applications, or be used as standalone command line tools. ## Installation `pip install redfish_utilities` ### Building from Source ``` python setup.py sdist pip install dist/redfish_utilities-x.x.x.tar.gz ``` ## Requirements External modules: * redfish: https://pypi.python.org/pypi/redfish * XlsxWriter: https://pypi.org/project/XlsxWriter You may install the external modules by running: `pip install -r requirements.txt` ## Utilities ### Discover ``` usage: rf_discover.py [-h] A tool to discover Redfish services optional arguments: -h, --help show this help message and exit ``` Example: `rf_discover.py` The tool will perform an SSDP request to find all available Redfish services. Once all the responses are collected, it will print each service with its UUID and service root. ### Sensor List ``` usage: rf_sensor_list.py [-h] --user USER --password PASSWORD --rhost RHOST A tool to walk a Redfish service and list sensor info required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --debug Creates debug file showing HTTP traces and exceptions ``` Example: `rf_sensor_list.py -u root -p root -r https://192.168.1.100` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It then traverses the chassis collection for the service, and reads their respective power and thermal resources. Using the information from those resources, it will build a sensor table and print the information collected. ### System Inventory ``` usage: rf_sys_inventory.py [-h] --user USER --password PASSWORD --rhost RHOST [--details] [--noabsent] [--write [WRITE]] A tool to walk a Redfish service and list component information required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --details, -details Indicates if the full details of each component should be shown --noabsent, -noabsent Indicates if absent devices should be skipped --write [WRITE], -w [WRITE] Indicates if the inventory should be written to a spreadsheet and what the file name should be if given --workaround, -workaround Indicates if workarounds should be attempted for non- conformant services --debug Creates debug file showing HTTP traces and exceptions ``` Example: `rf_sys_inventory.py -u root -p root -r https://192.168.1.100 -details` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It then traverses the chassis collection for the service, and collects component information for processors, memory, drives, PCIe devices, network adapters, and storage controllers. Using the information collected, it will build an inventory table and print the information. ### Logs ``` usage: rf_logs.py [-h] --user USER --password PASSWORD --rhost RHOST [--manager [MANAGER]] [--system [SYSTEM]] [--chassis [CHASSIS]] [--log LOG] [--details] [--clear] A tool to manage logs on a Redfish service required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --manager [MANAGER], -m [MANAGER] The ID of the manager containing the log service --system [SYSTEM], -s [SYSTEM] The ID of the system containing the log service --chassis [CHASSIS], -c [CHASSIS] The ID of the chassis containing the log service --log LOG, -l LOG The ID of the resource containing the log service --details, -details Indicates details to be shown for each log entry --clear, -clear Indicates if the log should be cleared --debug Creates debug file showing HTTP traces and exceptions ``` Example: `rf_logs.py -u root -p root -r https://192.168.1.100 -m BMC` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then attempt to locate the appropriate log service via the following logic: * If the *manager* argument is provided, it will traverse the manager collection for the matching manager. * If the *system* argument is provided, it will traverse the system collection for the matching system. * If the *chassis* argument is provided, it will traverse the chassis collection for the matching chassis. * If any of the above arguments are provided without a specified Id, but the collection contains exactly one member, then that member is used. * If none of the above arguments are provided, then the tool will try to use a manager in the manager collection if there is only one member present. * Within the member, the tool will find the matching log service based on the *log* argument. * If *log* is not specified, and there is exactly one log service in the member, then the tool will use that one log service. Once the desired log service is found, the tool will either perform the `ClearLog` action if *clear* is provided, or read and display the log entries. ### Power/Reset ``` usage: rf_power_reset.py [-h] --user USER --password PASSWORD --rhost RHOST [--system SYSTEM] [--type {On,ForceOff,GracefulShutdown,GracefulRestart,ForceRestart,Nmi,ForceOn,PushPowerButton,PowerCycle,Suspend,Pause,Resume}] [--info] A tool to perform a power/reset operation of a system required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --system SYSTEM, -s SYSTEM The ID of the system to reset --type {On,ForceOff,GracefulShutdown,GracefulRestart,ForceRestart,Nmi,ForceOn,PushPowerButton,PowerCycle,Suspend,Pause,Resume}, -t {On,ForceOff,GracefulShutdown,GracefulRestart,ForceRestart,Nmi,ForceOn,PushPowerButton,PowerCycle,Suspend,Pause,Resume} The type of power/reset operation to perform --info, -info Indicates if reset and power information should be reported --debug Creates debug file showing HTTP traces and exceptions ``` Example: `rf_power_reset.py -u root -p root -r https://192.168.1.100 -t GracefulRestart` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It then traverses the system collection for the service to find the matching system specified by the *system* argument. It will perform the `Reset` action with the specified reset type from the *type* argument. * If *system* is not specified, and if the service has exactly one system, it will perform the operation on the one system. * If *type* is not specified, it will attempt a `GracefulRestart`. ### Boot Override ``` usage: rf_boot_override.py [-h] --user USER --password PASSWORD --rhost RHOST [--system SYSTEM] [--target TARGET] [--uefi UEFI] [--reset] A tool to perform a one time boot override of a system required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --system SYSTEM, -s SYSTEM The ID of the system to set --info, -info Indicates if boot information should be reported --target TARGET, -t TARGET The target boot device; if this argument is omitted the tool will display the current boot settings --uefi UEFI, -uefi UEFI If target is 'UefiTarget', the UEFI Device Path of the device to boot. If target is 'UefiBootNext', the UEFI Boot Option string of the device to boot. --mode MODE, -m MODE The requested boot mode ('UEFI' or 'Legacy') --reset, -reset Signifies that the system is reset after the boot override is set --debug Creates debug file showing HTTP traces and exceptions ``` Example: `rf_boot_override.py -u root -p root -r https://192.168.1.100 -t Pxe -reset` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It then traverses the system collection for the service to find the matching system specified by the *system* argument. * If *system* is not specified, and if the service has exactly one system, it will perform the operation on the one system. The tool will then perform an operation on the `Boot` object within the matching system. * If *target* is specified, it will update the `Boot` object to set the boot override to be *target*. * If *reset* is provided, it will reset the system after updating the `Boot` object. * If *target* is not specified, it will display the current boot override settings for the system. ### Manager Configuration ``` usage: rf_manager_config.py [-h] --user USER --password PASSWORD --rhost RHOST [--manager MANAGER] {info,reset,getnet,setnet} ... A tool to manage managers in a service positional arguments: {info,reset,getnet,setnet} info Displays information about a manager reset Resets a manager getnet Displays information about an Ethernet interface setnet Configures an Ethernet interface required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --manager MANAGER, -m MANAGER The ID of the manager to target --debug Creates debug file showing HTTP traces and exceptions ``` #### Info ``` usage: rf_manager_config.py info [-h] optional arguments: -h, --help show this help message and exit ``` Example: `rf_manager_config.py -u root -p root -r https://192.168.1.100 info` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then locate the manager specified by the *manager* argument, and displays the manager instance. * If *manager* is not specified, and if the service has exactly one manager, it will perform the operation on the one manager. #### Reset ``` usage: rf_manager_config.py reset [-h] [--type {On,ForceOff,GracefulShutdown,GracefulRestart,ForceRestart,Nmi,ForceOn,PushPowerButton,PowerCycle}] [--info] optional arguments: -h, --help show this help message and exit --type {On,ForceOff,GracefulShutdown,GracefulRestart,ForceRestart,Nmi,ForceOn,PushPowerButton,PowerCycle}, -t {On,ForceOff,GracefulShutdown,GracefulRestart,ForceRestart,Nmi,ForceOn,PushPowerButton,PowerCycle} The type of power/reset operation to perform --info, -info Indicates if reset information should be reported ``` Example: `rf_manager_config.py -u root -p root -r https://192.168.1.100 reset -t GracefulRestart` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It then traverses the manager collection for the service to find the matching system specified by the *manager* argument. It will perform the `Reset` action with the specified reset type from the *type* argument. * If *manager* is not specified, and if the service has exactly one manager, it will perform the operation on the one manager. * If *type* is not specified, it will attempt a `GracefulRestart`. #### Get Network Interface ``` usage: rf_manager_config.py getnet [-h] [--id ID] optional arguments: -h, --help show this help message and exit --id ID, -i ID The identifier of the Ethernet interface to display ``` Example: `rf_manager_config.py -u root -p root -r https://192.168.1.100 getnet -i NIC2` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then locate the manager specified by the *manager* argument, locate the Ethernet interface specified by the *id* argument, and displays the interface instance. * If *manager* is not specified, and if the service has exactly one manager, it will perform the operation on the one manager. * If *id* is not specified, and if the manager has exactly one Ethernet interface, it will perform the operation on the one interface. #### Set Network Interface ``` usage: rf_manager_config.py setnet [-h] [--id ID] [--ipv4address IPV4ADDRESS] [--ipv4netmask IPV4NETMASK] [--ipv4gateway IPV4GATEWAY] [--dhcpv4 {On,Off}] [--ipv6addresses IPV6ADDRESSES [IPV6ADDRESSES ...]] [--ipv6gateways IPV6GATEWAYS [IPV6GATEWAYS ...]] [--dhcpv6 {Stateful,Stateless,Disabled}] [--vlan {On,Off}] [--vlanid VLANID] [--vlanpriority VLANPRIORITY] optional arguments: -h, --help show this help message and exit --id ID, -i ID The identifier of the Ethernet interface to configure --ipv4address IPV4ADDRESS, -ipv4address IPV4ADDRESS The static IPv4 address to set --ipv4netmask IPV4NETMASK, -ipv4netmask IPV4NETMASK The static IPv4 subnet mask to set --ipv4gateway IPV4GATEWAY, -ipv4gateway IPV4GATEWAY The static IPv4 gateway to set --dhcpv4 {On,Off}, -dhcpv4 {On,Off} The DHCPv4 configuration to set --ipv6addresses IPV6ADDRESSES [IPV6ADDRESSES ...], -ipv6addresses IPV6ADDRESSES [IPV6ADDRESSES ...] The static IPv6 addresses to set with prefix length --ipv6gateways IPV6GATEWAYS [IPV6GATEWAYS ...], -ipv6gateways IPV6GATEWAYS [IPV6GATEWAYS ...] The static IPv6 default gateways to set with prefix length --dhcpv6 {Stateful,Stateless,Disabled}, -dhcpv6 {Stateful,Stateless,Disabled} The DHCPv6 configuration to set --vlan {On,Off}, -vlan {On,Off} The VLAN enabled configuration to set --vlanid VLANID, -vlanid VLANID The VLAN ID to set --vlanpriority VLANPRIORITY, -vlanpriority VLANPRIORITY The VLAN priority to set ``` Example: `rf_manager_config.py -u root -p root -r https://192.168.1.100 setnet -i NIC2 -ipv4address 192.168.1.101 -ipv4gateway 192.168.1.1` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then locate the manager specified by the *manager* argument, locate the Ethernet interface specified by the *id* argument, and apply the requested settings to the interface. * If *manager* is not specified, and if the service has exactly one manager, it will perform the operation on the one manager. * If *id* is not specified, and if the manager has exactly one Ethernet interface, it will perform the operation on the one interface. ### BIOS Settings ``` usage: rf_bios_settings.py [-h] --user USER --password PASSWORD --rhost RHOST [--system SYSTEM] [--attribute name value] A tool to manager BIOS settings for a system required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --system SYSTEM, -s SYSTEM The ID of the system to manage --attribute name value, -a name value Sets a BIOS attribute to a new value; can be supplied multiple times to set multiple attributes --workaround, -workaround Indicates if workarounds should be attempted for non- conformant services --debug Creates debug file showing HTTP traces and exceptions ``` Example: `rf_bios_settings.py -u root -p root -r https://192.168.1.100 -a BiosMode Legacy` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It then traverses the system collection for the service to find the matching system specified by the *system* argument. * If *system* is not specified, and if the service has exactly one system, it will perform the operation on the one system. The tool will then get the BIOS resource for the matching system. * If *attribute* is specified, it will update the BIOS resource with the new attribute value. * If *attribute* is not specified, it will display the BIOS settings. ### Accounts ``` usage: rf_accounts.py [-h] --user USER --password PASSWORD --rhost RHOST [--add name password role] [--delete DELETE] [--setname old_name new_name] [--setpassword name new_password] [--setrole name new_role] [--enable ENABLE] [--disable DISABLE] [--unlock UNLOCK] A tool to manage user accounts on a Redfish service required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --add name password role, -add name password role Adds a new user account --delete DELETE, -delete DELETE Deletes a user account with the given name --setname old_name new_name, -setname old_name new_name Sets a user account to a new name --setpassword name new_password, -setpassword name new_password Sets a user account to a new password --setrole name new_role, -setrole name new_role Sets a user account to a new role --enable ENABLE, -enable ENABLE Enables a user account with the given name --disable DISABLE, -disable DISABLE Disabled a user account with the given name --unlock UNLOCK, -unlock UNLOCK Unlocks a user account with the given name --debug Creates debug file showing HTTP traces and exceptions ``` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. Based on the parameters, it will display, add, delete, or modify user accounts. * The *add* argument is used to create a new user account * Example: `rf_accounts.py -u root -p root -r https://192.168.1.100 -add new_name new_password new_role` * The *delete* argument is used to delete a user account based on the given user name * Example: `rf_accounts.py -u root -p root -r https://192.168.1.100 -delete user_to_delete` * The *setname* argument is used to change the name of a user account * Example: `rf_accounts.py -u root -p root -r https://192.168.1.100 -setname user_to_change new_name` * The *setpassword* argument is used to change the password of a user account * Example: `rf_accounts.py -u root -p root -r https://192.168.1.100 -setpassword user_to_change new_password` * The *setrole* argument is used to change the role of a user account * Example: `rf_accounts.py -u root -p root -r https://192.168.1.100 -setrole user_to_change new_role` * The *enable* argument is used to enable a user account * Example: `rf_accounts.py -u root -p root -r https://192.168.1.100 -enable user_to_change` * The *disable* argument is used to disable a user account * Example: `rf_accounts.py -u root -p root -r https://192.168.1.100 -disable user_to_change` * The *unlock* argument is used to unlock a user account * Example: `rf_accounts.py -u root -p root -r https://192.168.1.100 -unlock user_to_change` * If none of the above arguments are given, a table of the user accounts is provided * Example: `rf_accounts.py -u root -p root -r https://192.168.1.100` ### Update ``` usage: rf_update.py [-h] --user USER --password PASSWORD --rhost RHOST --image IMAGE [--target TARGET] A tool to perform an update with a Redfish service required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) --image IMAGE, -i IMAGE The URI or filepath of the image optional arguments: -h, --help show this help message and exit --target TARGET, -t TARGET The target resource to apply the image --debug Creates debug file showing HTTP traces and exceptions ``` Example: `rf_update.py -u root -p root -r https://192.168.1.100 -i image.bin` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It then builds a request payload to perform a `SimpleUpdate` action against the update service using the image specified by the *image* argument. The optional *target* argument is used in the request if attempting to update a particular system, device, manager, or other resource. Once the `SimpleUpdate` is requested, it monitors the progress of the update, and displays response messages reported by the service about the update once complete. ### Event Service ``` usage: rf_event_service.py [-h] --user USER --password PASSWORD --rhost RHOST {subscribe,unsubscribe,info} ... A tool to manage the event service on a Redfish service positional arguments: {info,subscribe,unsubscribe} info Displays information about the event service and subscriptions subscribe Creates an event subscription to a specified URL unsubscribe Deletes an event subscription required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --debug Creates debug file showing HTTP traces and exceptions ``` #### Info ``` usage: rf_event_service.py info [-h] optional arguments: -h, --help show this help message and exit ``` Example: `rf_event_service.py -u root -p root -r https://192.168.1.100 info` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then locate the event service and event subscriptions and display their information. #### Subscribe ``` usage: rf_event_service.py subscribe [-h] --destination DESTINATION [--context CONTEXT] [--expand] [--format FORMAT] [--resourcetypes RESOURCETYPES [RESOURCETYPES ...]] [--registries REGISTRIES [REGISTRIES ...]] required arguments: --destination DESTINATION, -dest DESTINATION The URL where events are sent for the subscription optional arguments: -h, --help show this help message and exit --context CONTEXT, -c CONTEXT The context string for the subscription that is supplied back in the event payload --expand, -e Indicates if the origin of condition in the event is to be expanded --format FORMAT, -f FORMAT The format of the event payloads --resourcetypes RESOURCETYPES [RESOURCETYPES ...], -rt RESOURCETYPES [RESOURCETYPES ...] A list of resource types for the subscription --registries REGISTRIES [REGISTRIES ...], -reg REGISTRIES [REGISTRIES ...] A list of registries for the subscription --eventtypes EVENTTYPES [EVENTTYPES ...], -et EVENTTYPES [EVENTTYPES ...] A list of event types for the subscription; this option has been deprecated in favor of other methods such as 'resource types' and 'registries' ``` Example: `rf_event_service.py -u root -p root -r https://192.168.1.100 subscribe -dest http://someremotelistener/redfish_event_handler` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then locate the event service and perform a POST operation on the event destination collection to create a new subscription. The subscription will specify the destination to be the *destination* argument, and other optional arguments are provided as additional settings on the subscription. #### Unsubscribe ``` usage: rf_event_service.py unsubscribe [-h] --id ID required arguments: --id ID, -i ID The identifier of the event subscription to be deleted optional arguments: -h, --help show this help message and exit ``` Example: `rf_event_service.py -u root -p root -r https://192.168.1.100 unsubscribe --id 1` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then locate the event service and traverse the members of the event destination collection to find a member with the `Id` property matching the *id* argument. If a match is found, it will perform a DELETE on the member. ### Virtual Media ``` usage: rf_virtual_media.py [-h] --user USER --password PASSWORD --rhost RHOST [--system SYSTEM] {info,insert,eject} ... A tool to manage virtual media of a system positional arguments: {info,insert,eject} info Displays information about the virtual media for a system insert Inserts virtual media for a system eject Ejects virtual media from a system required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --system SYSTEM, -s SYSTEM The ID of the system containing the virtual media --debug Creates debug file showing HTTP traces and exceptions ``` #### Info ``` usage: rf_virtual_media.py info [-h] optional arguments: -h, --help show this help message and exit ``` Example: `rf_virtual_media.py -u root -p root -r https://192.168.1.100 info` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then locate the system specified by the *system* argument, find its virtual media collection, and display the virtual media instances. #### Insert ``` usage: rf_virtual_media.py insert [-h] --image IMAGE [--id ID] [--notinserted] [--writable] [--mediatypes MEDIATYPES [MEDIATYPES ...]] required arguments: --image IMAGE, -image IMAGE The URI of the image to insert optional arguments: -h, --help show this help message and exit --id ID, -i ID The identifier of the virtual media instance to insert --notinserted, -notinserted Indicates if the media is to be marked as not inserted for the system --writable, -writable Indicates if the media is to be marked as writable for the system --mediatypes MEDIATYPES [MEDIATYPES ...], -mt MEDIATYPES [MEDIATYPES ...] A list of acceptable media types for the virtual media ``` Example: `rf_virtual_media.py -u root -p root -r https://192.168.1.100 insert -image http://somefileserver/my_media.iso` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then locate the system specified by the *system* argument, find its virtual media collection. It will then iterate through the virtual media collection, and insert the virtual media specified by the *image* argument in an appropriate slot. #### Eject ``` usage: rf_virtual_media.py eject [-h] --id ID required arguments: --id ID, -i ID The identifier of the virtual media instance to eject optional arguments: -h, --help show this help message and exit ``` Example: `rf_virtual_media.py -u root -p root -r https://192.168.1.100 eject --id 1` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then locate the system specified by the *system* argument, find its virtual media collection. It will then locate the virtual media instance with matching `Id` property with the *id* argument, and then eject the media. ### Diagnostic Data ``` usage: rf_diagnostic_data.py [-h] --user USER --password PASSWORD --rhost RHOST [--manager [MANAGER]] [--system [SYSTEM]] [--chassis [CHASSIS]] [--log LOG] [--type {Manager,PreOS,OS,OEM}] [--oemtype OEMTYPE] [--directory DIRECTORY] A tool to collect diagnostic data from a log service on a Redfish service required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --manager [MANAGER], -m [MANAGER] The ID of the manager containing the log service --system [SYSTEM], -s [SYSTEM] The ID of the system containing the log service --chassis [CHASSIS], -c [CHASSIS] The ID of the chassis containing the log service --log LOG, -l LOG The ID of the log service --type {Manager,PreOS,OS,OEM}, -type {Manager,PreOS,OS,OEM} The type of diagnostic data to collect; defaults to 'Manager' if not specified --oemtype OEMTYPE, -oemtype OEMTYPE The OEM-specific type of diagnostic data to collect; this option should only be used if the requested type is 'OEM' --directory DIRECTORY, -d DIRECTORY The directory to save the diagnostic data; defaults to the current directory if not specified --debug Creates debug file showing HTTP traces and exceptions ``` Example: `rf_diagnostic_data.py -u root -p root -r https://192.168.1.100 -m BMC` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then attempt to locate the appropriate log service via the following logic: * If the *manager* argument is provided, it will traverse the manager collection for the matching manager. * If the *system* argument is provided, it will traverse the system collection for the matching system. * If the *chassis* argument is provided, it will traverse the chassis collection for the matching chassis. * If any of the above arguments are provided without a specified Id, but the collection contains exactly one member, then that member is used. * If none of the above arguments are provided, then the tool will try to use a manager in the manager collection if there is only one member present. * Within the member, the tool will find the matching log service based on the *log* argument. * If *log* is not specified, and there is exactly one log service in the member, then the tool will use that one log service. Once the desired log service is found, the tool perform the `GetDiagnosticData` action and specify the type of diagnostic data to collect based on the *type* and *oemtype* arguments. Once the action is complete, it will download the diagnostic data from the service and save it on the local system. ### Raw Request ``` usage: rf_raw_request.py [-h] --user USER --password PASSWORD --rhost RHOST [--method {GET,HEAD,POST,PATCH,PUT,DELETE}] --request REQUEST [--body BODY] [--verbose] A tool perform a raw request to a Redfish service required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) --request REQUEST, -req REQUEST The URI for the request optional arguments: -h, --help show this help message and exit --method {GET,HEAD,POST,PATCH,PUT,DELETE}, -m {GET,HEAD,POST,PATCH,PUT,DELETE} The HTTP method to perform; performs GET if not specified --body BODY, -b BODY The body to provide with the request; can be a JSON string for a JSON request, a filename to send binary data, or an unstructured string --verbose, -v Indicates if HTTP response codes and headers are displayed ``` Example: `rf_raw_request.py -u root -p root -r https://192.168.1.100 -req /redfish/v1/Systems/1 -m PATCH -b '{"AssetTag": "New tag"}'` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then perform the requested method on the specified URI with an optional body, specified by the *method*, *request*, and *body* arguments. It will then display the response of the operation from the service. ## Release Process 1. Go to the "Actions" page 2. Select the "Release and Publish" workflow 3. Click "Run workflow" 4. Fill out the form 5. Click "Run workflow" %package help Summary: Development documents and examples for redfish-utilities Provides: python3-redfish-utilities-doc %description help # Redfish Tacklebox Copyright 2019-2022 DMTF. All rights reserved. ## About Redfish Tacklebox contains a set of Python3 utilities to perform common management operations with a Redfish service. The utilities can be used as part of larger management applications, or be used as standalone command line tools. ## Installation `pip install redfish_utilities` ### Building from Source ``` python setup.py sdist pip install dist/redfish_utilities-x.x.x.tar.gz ``` ## Requirements External modules: * redfish: https://pypi.python.org/pypi/redfish * XlsxWriter: https://pypi.org/project/XlsxWriter You may install the external modules by running: `pip install -r requirements.txt` ## Utilities ### Discover ``` usage: rf_discover.py [-h] A tool to discover Redfish services optional arguments: -h, --help show this help message and exit ``` Example: `rf_discover.py` The tool will perform an SSDP request to find all available Redfish services. Once all the responses are collected, it will print each service with its UUID and service root. ### Sensor List ``` usage: rf_sensor_list.py [-h] --user USER --password PASSWORD --rhost RHOST A tool to walk a Redfish service and list sensor info required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --debug Creates debug file showing HTTP traces and exceptions ``` Example: `rf_sensor_list.py -u root -p root -r https://192.168.1.100` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It then traverses the chassis collection for the service, and reads their respective power and thermal resources. Using the information from those resources, it will build a sensor table and print the information collected. ### System Inventory ``` usage: rf_sys_inventory.py [-h] --user USER --password PASSWORD --rhost RHOST [--details] [--noabsent] [--write [WRITE]] A tool to walk a Redfish service and list component information required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --details, -details Indicates if the full details of each component should be shown --noabsent, -noabsent Indicates if absent devices should be skipped --write [WRITE], -w [WRITE] Indicates if the inventory should be written to a spreadsheet and what the file name should be if given --workaround, -workaround Indicates if workarounds should be attempted for non- conformant services --debug Creates debug file showing HTTP traces and exceptions ``` Example: `rf_sys_inventory.py -u root -p root -r https://192.168.1.100 -details` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It then traverses the chassis collection for the service, and collects component information for processors, memory, drives, PCIe devices, network adapters, and storage controllers. Using the information collected, it will build an inventory table and print the information. ### Logs ``` usage: rf_logs.py [-h] --user USER --password PASSWORD --rhost RHOST [--manager [MANAGER]] [--system [SYSTEM]] [--chassis [CHASSIS]] [--log LOG] [--details] [--clear] A tool to manage logs on a Redfish service required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --manager [MANAGER], -m [MANAGER] The ID of the manager containing the log service --system [SYSTEM], -s [SYSTEM] The ID of the system containing the log service --chassis [CHASSIS], -c [CHASSIS] The ID of the chassis containing the log service --log LOG, -l LOG The ID of the resource containing the log service --details, -details Indicates details to be shown for each log entry --clear, -clear Indicates if the log should be cleared --debug Creates debug file showing HTTP traces and exceptions ``` Example: `rf_logs.py -u root -p root -r https://192.168.1.100 -m BMC` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then attempt to locate the appropriate log service via the following logic: * If the *manager* argument is provided, it will traverse the manager collection for the matching manager. * If the *system* argument is provided, it will traverse the system collection for the matching system. * If the *chassis* argument is provided, it will traverse the chassis collection for the matching chassis. * If any of the above arguments are provided without a specified Id, but the collection contains exactly one member, then that member is used. * If none of the above arguments are provided, then the tool will try to use a manager in the manager collection if there is only one member present. * Within the member, the tool will find the matching log service based on the *log* argument. * If *log* is not specified, and there is exactly one log service in the member, then the tool will use that one log service. Once the desired log service is found, the tool will either perform the `ClearLog` action if *clear* is provided, or read and display the log entries. ### Power/Reset ``` usage: rf_power_reset.py [-h] --user USER --password PASSWORD --rhost RHOST [--system SYSTEM] [--type {On,ForceOff,GracefulShutdown,GracefulRestart,ForceRestart,Nmi,ForceOn,PushPowerButton,PowerCycle,Suspend,Pause,Resume}] [--info] A tool to perform a power/reset operation of a system required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --system SYSTEM, -s SYSTEM The ID of the system to reset --type {On,ForceOff,GracefulShutdown,GracefulRestart,ForceRestart,Nmi,ForceOn,PushPowerButton,PowerCycle,Suspend,Pause,Resume}, -t {On,ForceOff,GracefulShutdown,GracefulRestart,ForceRestart,Nmi,ForceOn,PushPowerButton,PowerCycle,Suspend,Pause,Resume} The type of power/reset operation to perform --info, -info Indicates if reset and power information should be reported --debug Creates debug file showing HTTP traces and exceptions ``` Example: `rf_power_reset.py -u root -p root -r https://192.168.1.100 -t GracefulRestart` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It then traverses the system collection for the service to find the matching system specified by the *system* argument. It will perform the `Reset` action with the specified reset type from the *type* argument. * If *system* is not specified, and if the service has exactly one system, it will perform the operation on the one system. * If *type* is not specified, it will attempt a `GracefulRestart`. ### Boot Override ``` usage: rf_boot_override.py [-h] --user USER --password PASSWORD --rhost RHOST [--system SYSTEM] [--target TARGET] [--uefi UEFI] [--reset] A tool to perform a one time boot override of a system required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --system SYSTEM, -s SYSTEM The ID of the system to set --info, -info Indicates if boot information should be reported --target TARGET, -t TARGET The target boot device; if this argument is omitted the tool will display the current boot settings --uefi UEFI, -uefi UEFI If target is 'UefiTarget', the UEFI Device Path of the device to boot. If target is 'UefiBootNext', the UEFI Boot Option string of the device to boot. --mode MODE, -m MODE The requested boot mode ('UEFI' or 'Legacy') --reset, -reset Signifies that the system is reset after the boot override is set --debug Creates debug file showing HTTP traces and exceptions ``` Example: `rf_boot_override.py -u root -p root -r https://192.168.1.100 -t Pxe -reset` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It then traverses the system collection for the service to find the matching system specified by the *system* argument. * If *system* is not specified, and if the service has exactly one system, it will perform the operation on the one system. The tool will then perform an operation on the `Boot` object within the matching system. * If *target* is specified, it will update the `Boot` object to set the boot override to be *target*. * If *reset* is provided, it will reset the system after updating the `Boot` object. * If *target* is not specified, it will display the current boot override settings for the system. ### Manager Configuration ``` usage: rf_manager_config.py [-h] --user USER --password PASSWORD --rhost RHOST [--manager MANAGER] {info,reset,getnet,setnet} ... A tool to manage managers in a service positional arguments: {info,reset,getnet,setnet} info Displays information about a manager reset Resets a manager getnet Displays information about an Ethernet interface setnet Configures an Ethernet interface required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --manager MANAGER, -m MANAGER The ID of the manager to target --debug Creates debug file showing HTTP traces and exceptions ``` #### Info ``` usage: rf_manager_config.py info [-h] optional arguments: -h, --help show this help message and exit ``` Example: `rf_manager_config.py -u root -p root -r https://192.168.1.100 info` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then locate the manager specified by the *manager* argument, and displays the manager instance. * If *manager* is not specified, and if the service has exactly one manager, it will perform the operation on the one manager. #### Reset ``` usage: rf_manager_config.py reset [-h] [--type {On,ForceOff,GracefulShutdown,GracefulRestart,ForceRestart,Nmi,ForceOn,PushPowerButton,PowerCycle}] [--info] optional arguments: -h, --help show this help message and exit --type {On,ForceOff,GracefulShutdown,GracefulRestart,ForceRestart,Nmi,ForceOn,PushPowerButton,PowerCycle}, -t {On,ForceOff,GracefulShutdown,GracefulRestart,ForceRestart,Nmi,ForceOn,PushPowerButton,PowerCycle} The type of power/reset operation to perform --info, -info Indicates if reset information should be reported ``` Example: `rf_manager_config.py -u root -p root -r https://192.168.1.100 reset -t GracefulRestart` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It then traverses the manager collection for the service to find the matching system specified by the *manager* argument. It will perform the `Reset` action with the specified reset type from the *type* argument. * If *manager* is not specified, and if the service has exactly one manager, it will perform the operation on the one manager. * If *type* is not specified, it will attempt a `GracefulRestart`. #### Get Network Interface ``` usage: rf_manager_config.py getnet [-h] [--id ID] optional arguments: -h, --help show this help message and exit --id ID, -i ID The identifier of the Ethernet interface to display ``` Example: `rf_manager_config.py -u root -p root -r https://192.168.1.100 getnet -i NIC2` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then locate the manager specified by the *manager* argument, locate the Ethernet interface specified by the *id* argument, and displays the interface instance. * If *manager* is not specified, and if the service has exactly one manager, it will perform the operation on the one manager. * If *id* is not specified, and if the manager has exactly one Ethernet interface, it will perform the operation on the one interface. #### Set Network Interface ``` usage: rf_manager_config.py setnet [-h] [--id ID] [--ipv4address IPV4ADDRESS] [--ipv4netmask IPV4NETMASK] [--ipv4gateway IPV4GATEWAY] [--dhcpv4 {On,Off}] [--ipv6addresses IPV6ADDRESSES [IPV6ADDRESSES ...]] [--ipv6gateways IPV6GATEWAYS [IPV6GATEWAYS ...]] [--dhcpv6 {Stateful,Stateless,Disabled}] [--vlan {On,Off}] [--vlanid VLANID] [--vlanpriority VLANPRIORITY] optional arguments: -h, --help show this help message and exit --id ID, -i ID The identifier of the Ethernet interface to configure --ipv4address IPV4ADDRESS, -ipv4address IPV4ADDRESS The static IPv4 address to set --ipv4netmask IPV4NETMASK, -ipv4netmask IPV4NETMASK The static IPv4 subnet mask to set --ipv4gateway IPV4GATEWAY, -ipv4gateway IPV4GATEWAY The static IPv4 gateway to set --dhcpv4 {On,Off}, -dhcpv4 {On,Off} The DHCPv4 configuration to set --ipv6addresses IPV6ADDRESSES [IPV6ADDRESSES ...], -ipv6addresses IPV6ADDRESSES [IPV6ADDRESSES ...] The static IPv6 addresses to set with prefix length --ipv6gateways IPV6GATEWAYS [IPV6GATEWAYS ...], -ipv6gateways IPV6GATEWAYS [IPV6GATEWAYS ...] The static IPv6 default gateways to set with prefix length --dhcpv6 {Stateful,Stateless,Disabled}, -dhcpv6 {Stateful,Stateless,Disabled} The DHCPv6 configuration to set --vlan {On,Off}, -vlan {On,Off} The VLAN enabled configuration to set --vlanid VLANID, -vlanid VLANID The VLAN ID to set --vlanpriority VLANPRIORITY, -vlanpriority VLANPRIORITY The VLAN priority to set ``` Example: `rf_manager_config.py -u root -p root -r https://192.168.1.100 setnet -i NIC2 -ipv4address 192.168.1.101 -ipv4gateway 192.168.1.1` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then locate the manager specified by the *manager* argument, locate the Ethernet interface specified by the *id* argument, and apply the requested settings to the interface. * If *manager* is not specified, and if the service has exactly one manager, it will perform the operation on the one manager. * If *id* is not specified, and if the manager has exactly one Ethernet interface, it will perform the operation on the one interface. ### BIOS Settings ``` usage: rf_bios_settings.py [-h] --user USER --password PASSWORD --rhost RHOST [--system SYSTEM] [--attribute name value] A tool to manager BIOS settings for a system required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --system SYSTEM, -s SYSTEM The ID of the system to manage --attribute name value, -a name value Sets a BIOS attribute to a new value; can be supplied multiple times to set multiple attributes --workaround, -workaround Indicates if workarounds should be attempted for non- conformant services --debug Creates debug file showing HTTP traces and exceptions ``` Example: `rf_bios_settings.py -u root -p root -r https://192.168.1.100 -a BiosMode Legacy` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It then traverses the system collection for the service to find the matching system specified by the *system* argument. * If *system* is not specified, and if the service has exactly one system, it will perform the operation on the one system. The tool will then get the BIOS resource for the matching system. * If *attribute* is specified, it will update the BIOS resource with the new attribute value. * If *attribute* is not specified, it will display the BIOS settings. ### Accounts ``` usage: rf_accounts.py [-h] --user USER --password PASSWORD --rhost RHOST [--add name password role] [--delete DELETE] [--setname old_name new_name] [--setpassword name new_password] [--setrole name new_role] [--enable ENABLE] [--disable DISABLE] [--unlock UNLOCK] A tool to manage user accounts on a Redfish service required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --add name password role, -add name password role Adds a new user account --delete DELETE, -delete DELETE Deletes a user account with the given name --setname old_name new_name, -setname old_name new_name Sets a user account to a new name --setpassword name new_password, -setpassword name new_password Sets a user account to a new password --setrole name new_role, -setrole name new_role Sets a user account to a new role --enable ENABLE, -enable ENABLE Enables a user account with the given name --disable DISABLE, -disable DISABLE Disabled a user account with the given name --unlock UNLOCK, -unlock UNLOCK Unlocks a user account with the given name --debug Creates debug file showing HTTP traces and exceptions ``` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. Based on the parameters, it will display, add, delete, or modify user accounts. * The *add* argument is used to create a new user account * Example: `rf_accounts.py -u root -p root -r https://192.168.1.100 -add new_name new_password new_role` * The *delete* argument is used to delete a user account based on the given user name * Example: `rf_accounts.py -u root -p root -r https://192.168.1.100 -delete user_to_delete` * The *setname* argument is used to change the name of a user account * Example: `rf_accounts.py -u root -p root -r https://192.168.1.100 -setname user_to_change new_name` * The *setpassword* argument is used to change the password of a user account * Example: `rf_accounts.py -u root -p root -r https://192.168.1.100 -setpassword user_to_change new_password` * The *setrole* argument is used to change the role of a user account * Example: `rf_accounts.py -u root -p root -r https://192.168.1.100 -setrole user_to_change new_role` * The *enable* argument is used to enable a user account * Example: `rf_accounts.py -u root -p root -r https://192.168.1.100 -enable user_to_change` * The *disable* argument is used to disable a user account * Example: `rf_accounts.py -u root -p root -r https://192.168.1.100 -disable user_to_change` * The *unlock* argument is used to unlock a user account * Example: `rf_accounts.py -u root -p root -r https://192.168.1.100 -unlock user_to_change` * If none of the above arguments are given, a table of the user accounts is provided * Example: `rf_accounts.py -u root -p root -r https://192.168.1.100` ### Update ``` usage: rf_update.py [-h] --user USER --password PASSWORD --rhost RHOST --image IMAGE [--target TARGET] A tool to perform an update with a Redfish service required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) --image IMAGE, -i IMAGE The URI or filepath of the image optional arguments: -h, --help show this help message and exit --target TARGET, -t TARGET The target resource to apply the image --debug Creates debug file showing HTTP traces and exceptions ``` Example: `rf_update.py -u root -p root -r https://192.168.1.100 -i image.bin` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It then builds a request payload to perform a `SimpleUpdate` action against the update service using the image specified by the *image* argument. The optional *target* argument is used in the request if attempting to update a particular system, device, manager, or other resource. Once the `SimpleUpdate` is requested, it monitors the progress of the update, and displays response messages reported by the service about the update once complete. ### Event Service ``` usage: rf_event_service.py [-h] --user USER --password PASSWORD --rhost RHOST {subscribe,unsubscribe,info} ... A tool to manage the event service on a Redfish service positional arguments: {info,subscribe,unsubscribe} info Displays information about the event service and subscriptions subscribe Creates an event subscription to a specified URL unsubscribe Deletes an event subscription required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --debug Creates debug file showing HTTP traces and exceptions ``` #### Info ``` usage: rf_event_service.py info [-h] optional arguments: -h, --help show this help message and exit ``` Example: `rf_event_service.py -u root -p root -r https://192.168.1.100 info` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then locate the event service and event subscriptions and display their information. #### Subscribe ``` usage: rf_event_service.py subscribe [-h] --destination DESTINATION [--context CONTEXT] [--expand] [--format FORMAT] [--resourcetypes RESOURCETYPES [RESOURCETYPES ...]] [--registries REGISTRIES [REGISTRIES ...]] required arguments: --destination DESTINATION, -dest DESTINATION The URL where events are sent for the subscription optional arguments: -h, --help show this help message and exit --context CONTEXT, -c CONTEXT The context string for the subscription that is supplied back in the event payload --expand, -e Indicates if the origin of condition in the event is to be expanded --format FORMAT, -f FORMAT The format of the event payloads --resourcetypes RESOURCETYPES [RESOURCETYPES ...], -rt RESOURCETYPES [RESOURCETYPES ...] A list of resource types for the subscription --registries REGISTRIES [REGISTRIES ...], -reg REGISTRIES [REGISTRIES ...] A list of registries for the subscription --eventtypes EVENTTYPES [EVENTTYPES ...], -et EVENTTYPES [EVENTTYPES ...] A list of event types for the subscription; this option has been deprecated in favor of other methods such as 'resource types' and 'registries' ``` Example: `rf_event_service.py -u root -p root -r https://192.168.1.100 subscribe -dest http://someremotelistener/redfish_event_handler` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then locate the event service and perform a POST operation on the event destination collection to create a new subscription. The subscription will specify the destination to be the *destination* argument, and other optional arguments are provided as additional settings on the subscription. #### Unsubscribe ``` usage: rf_event_service.py unsubscribe [-h] --id ID required arguments: --id ID, -i ID The identifier of the event subscription to be deleted optional arguments: -h, --help show this help message and exit ``` Example: `rf_event_service.py -u root -p root -r https://192.168.1.100 unsubscribe --id 1` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then locate the event service and traverse the members of the event destination collection to find a member with the `Id` property matching the *id* argument. If a match is found, it will perform a DELETE on the member. ### Virtual Media ``` usage: rf_virtual_media.py [-h] --user USER --password PASSWORD --rhost RHOST [--system SYSTEM] {info,insert,eject} ... A tool to manage virtual media of a system positional arguments: {info,insert,eject} info Displays information about the virtual media for a system insert Inserts virtual media for a system eject Ejects virtual media from a system required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --system SYSTEM, -s SYSTEM The ID of the system containing the virtual media --debug Creates debug file showing HTTP traces and exceptions ``` #### Info ``` usage: rf_virtual_media.py info [-h] optional arguments: -h, --help show this help message and exit ``` Example: `rf_virtual_media.py -u root -p root -r https://192.168.1.100 info` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then locate the system specified by the *system* argument, find its virtual media collection, and display the virtual media instances. #### Insert ``` usage: rf_virtual_media.py insert [-h] --image IMAGE [--id ID] [--notinserted] [--writable] [--mediatypes MEDIATYPES [MEDIATYPES ...]] required arguments: --image IMAGE, -image IMAGE The URI of the image to insert optional arguments: -h, --help show this help message and exit --id ID, -i ID The identifier of the virtual media instance to insert --notinserted, -notinserted Indicates if the media is to be marked as not inserted for the system --writable, -writable Indicates if the media is to be marked as writable for the system --mediatypes MEDIATYPES [MEDIATYPES ...], -mt MEDIATYPES [MEDIATYPES ...] A list of acceptable media types for the virtual media ``` Example: `rf_virtual_media.py -u root -p root -r https://192.168.1.100 insert -image http://somefileserver/my_media.iso` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then locate the system specified by the *system* argument, find its virtual media collection. It will then iterate through the virtual media collection, and insert the virtual media specified by the *image* argument in an appropriate slot. #### Eject ``` usage: rf_virtual_media.py eject [-h] --id ID required arguments: --id ID, -i ID The identifier of the virtual media instance to eject optional arguments: -h, --help show this help message and exit ``` Example: `rf_virtual_media.py -u root -p root -r https://192.168.1.100 eject --id 1` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then locate the system specified by the *system* argument, find its virtual media collection. It will then locate the virtual media instance with matching `Id` property with the *id* argument, and then eject the media. ### Diagnostic Data ``` usage: rf_diagnostic_data.py [-h] --user USER --password PASSWORD --rhost RHOST [--manager [MANAGER]] [--system [SYSTEM]] [--chassis [CHASSIS]] [--log LOG] [--type {Manager,PreOS,OS,OEM}] [--oemtype OEMTYPE] [--directory DIRECTORY] A tool to collect diagnostic data from a log service on a Redfish service required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) optional arguments: -h, --help show this help message and exit --manager [MANAGER], -m [MANAGER] The ID of the manager containing the log service --system [SYSTEM], -s [SYSTEM] The ID of the system containing the log service --chassis [CHASSIS], -c [CHASSIS] The ID of the chassis containing the log service --log LOG, -l LOG The ID of the log service --type {Manager,PreOS,OS,OEM}, -type {Manager,PreOS,OS,OEM} The type of diagnostic data to collect; defaults to 'Manager' if not specified --oemtype OEMTYPE, -oemtype OEMTYPE The OEM-specific type of diagnostic data to collect; this option should only be used if the requested type is 'OEM' --directory DIRECTORY, -d DIRECTORY The directory to save the diagnostic data; defaults to the current directory if not specified --debug Creates debug file showing HTTP traces and exceptions ``` Example: `rf_diagnostic_data.py -u root -p root -r https://192.168.1.100 -m BMC` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then attempt to locate the appropriate log service via the following logic: * If the *manager* argument is provided, it will traverse the manager collection for the matching manager. * If the *system* argument is provided, it will traverse the system collection for the matching system. * If the *chassis* argument is provided, it will traverse the chassis collection for the matching chassis. * If any of the above arguments are provided without a specified Id, but the collection contains exactly one member, then that member is used. * If none of the above arguments are provided, then the tool will try to use a manager in the manager collection if there is only one member present. * Within the member, the tool will find the matching log service based on the *log* argument. * If *log* is not specified, and there is exactly one log service in the member, then the tool will use that one log service. Once the desired log service is found, the tool perform the `GetDiagnosticData` action and specify the type of diagnostic data to collect based on the *type* and *oemtype* arguments. Once the action is complete, it will download the diagnostic data from the service and save it on the local system. ### Raw Request ``` usage: rf_raw_request.py [-h] --user USER --password PASSWORD --rhost RHOST [--method {GET,HEAD,POST,PATCH,PUT,DELETE}] --request REQUEST [--body BODY] [--verbose] A tool perform a raw request to a Redfish service required arguments: --user USER, -u USER The user name for authentication --password PASSWORD, -p PASSWORD The password for authentication --rhost RHOST, -r RHOST The address of the Redfish service (with scheme) --request REQUEST, -req REQUEST The URI for the request optional arguments: -h, --help show this help message and exit --method {GET,HEAD,POST,PATCH,PUT,DELETE}, -m {GET,HEAD,POST,PATCH,PUT,DELETE} The HTTP method to perform; performs GET if not specified --body BODY, -b BODY The body to provide with the request; can be a JSON string for a JSON request, a filename to send binary data, or an unstructured string --verbose, -v Indicates if HTTP response codes and headers are displayed ``` Example: `rf_raw_request.py -u root -p root -r https://192.168.1.100 -req /redfish/v1/Systems/1 -m PATCH -b '{"AssetTag": "New tag"}'` The tool will log into the service specified by the *rhost* argument using the credentials provided by the *user* and *password* arguments. It will then perform the requested method on the specified URI with an optional body, specified by the *method*, *request*, and *body* arguments. It will then display the response of the operation from the service. ## Release Process 1. Go to the "Actions" page 2. Select the "Release and Publish" workflow 3. Click "Run workflow" 4. Fill out the form 5. Click "Run workflow" %prep %autosetup -n redfish_utilities-3.1.4 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-redfish-utilities -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue Jun 20 2023 Python_Bot - 3.1.4-1 - Package Spec generated