diff options
| author | CoprDistGit <infra@openeuler.org> | 2023-06-20 03:52:26 +0000 | 
|---|---|---|
| committer | CoprDistGit <infra@openeuler.org> | 2023-06-20 03:52:26 +0000 | 
| commit | 8ea8d3da6b89fbefe43a7d14f012ed0e5bf2073a (patch) | |
| tree | e9dd862e043904852f6f9a63c927e278cb49ae0a | |
| parent | 40a732fa7070ae6b352b7f385d24b64b81bf4a36 (diff) | |
automatic import of python-redfish-utilitiesopeneuler20.03
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | python-redfish-utilities.spec | 2501 | ||||
| -rw-r--r-- | sources | 1 | 
3 files changed, 2503 insertions, 0 deletions
| @@ -0,0 +1 @@ +/redfish_utilities-3.1.4.tar.gz diff --git a/python-redfish-utilities.spec b/python-redfish-utilities.spec new file mode 100644 index 0000000..56467b2 --- /dev/null +++ b/python-redfish-utilities.spec @@ -0,0 +1,2501 @@ +%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 <Python_Bot@openeuler.org> - 3.1.4-1 +- Package Spec generated @@ -0,0 +1 @@ +2350cf300de252f547f2e7aca2203bea  redfish_utilities-3.1.4.tar.gz | 
