Metadata-Version: 2.4
Name: redfish_protocol_validator
Version: 1.3.1
Summary: Redfish Protocol Validator
Home-page: https://github.com/DMTF/Redfish-Protocol-Validator
Author: DMTF, https://www.dmtf.org/standards/feedback
License: BSD 3-clause "New" or "Revised License"
Keywords: Redfish
Classifier: Development Status :: 5 - Production/Stable
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python
Classifier: Topic :: Communications
Description-Content-Type: text/markdown
License-File: LICENSE.md
License-File: AUTHORS.md
Requires-Dist: aenum
Requires-Dist: colorama
Requires-Dist: pyasn1
Requires-Dist: pyasn1-modules
Requires-Dist: requests>=2.30.0
Requires-Dist: sseclient-py
Requires-Dist: urllib3
Dynamic: author
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: license-file
Dynamic: requires-dist
Dynamic: summary

# Redfish Protocol Validator

Copyright 2020-2022 DMTF. All rights reserved.

## About

The Redfish Protocol Validator tests the HTTP protocol behavior of a Redfish service to validate that it conforms to the Redfish Specification.

## Installation

From PyPI:

    pip install redfish_protocol_validator

From GitHub:

    git clone https://github.com/DMTF/Redfish-Protocol-Validator.git
    cd Redfish-Protocol-Validator
    python setup.py sdist
    pip install dist/redfish_protocol_validator-x.x.x.tar.gz

## Requirements

The Redfish Protocol Validator requires Python3.

Required external packages:

```
aenum
colorama
pyasn1
pyasn1-modules
requests
sseclient-py
urllib3
```

If installing from GitHub, you may install the external packages by running:

    pip install -r requirements.txt

## Usage

The Redfish Protocol Validator can be configured using either command-line arguments or a configuration file (config.ini).

### Configuration File

You can use a `config.ini` file in the current working directory with your settings. This is useful for repeated operations with the same configuration.

Example `config.ini`:

```ini
[Authentication]
user = username
password = password

[Connection]
rhost = https://RedfishIP
no-cert-check = true
avoid-http-redirect = true

[Logging]
log-level = WARNING

[Reporting]
report-dir = reports
report-type = both
```

To use a configuration file in a different location, use the `--config` option:

```bash
python rf_protocol_validator.py --config /path/to/myconfig.ini
```

**Note:** Command-line arguments always override configuration file settings, ensuring backward compatibility.

### Command-Line Arguments

```
usage: rf_protocol_validator.py [-h] [--version] [--config CONFIG] [--user USER]
                                [--password PASSWORD] [--rhost RHOST]
                                [--log-level LOG_LEVEL] [--report-dir REPORT_DIR]
                                [--report-type {html,tsv,both}]
                                [--avoid-http-redirect]
                                [--no-cert-check | --ca-bundle CA_BUNDLE]

Validate the protocol conformance of a Redfish service

optional arguments:
  -h, --help            show this help message and exit
  --version             show program's version number and exit
  --config CONFIG, -c CONFIG
                        path to configuration file; defaults to "config.ini"
                        in current directory
  --user USER, -u USER  the username for authentication
  --password PASSWORD, -p PASSWORD
                        the password for authentication
  --rhost RHOST, -r RHOST
                        address of the Redfish service (with scheme)
  --log-level {DEBUG,INFO,WARNING,ERROR,CRITICAL}
                        the logging level (default: WARNING)
  --report-dir REPORT_DIR
                        the directory for generated report files (default:
                        "reports")
  --report-type {html,tsv,both}
                        the type of report to generate: html, tsv, or both
                        (default: both)
  --avoid-http-redirect
                        avoid attempts to generate HTTP redirects for services
                        that do not support HTTP
  --no-cert-check       disable verification of host SSL certificates
  --ca-bundle CA_BUNDLE
                        the file or directory containing trusted CAs
```

**Note:** The `--user`, `--password`, and `--rhost` arguments are required if not provided in the configuration file.

### Examples

Using command-line arguments only (backward compatible):

```
python rf_protocol_validator.py -u username -p password -r https://RedfishIP
```

Using a configuration file:

```
# Uses config.ini from current directory
python rf_protocol_validator.py
```

Using a custom configuration file:

```
python rf_protocol_validator.py --config /path/to/custom.ini
```

Mixing configuration file and command-line arguments (command-line overrides config):

```
# Uses settings from config.ini but overrides the report directory
python rf_protocol_validator.py --report-dir /different/output
```

## Unit Tests

The Redfish Protocol Validator unit tests are executed using the `tox` package.

You may install `tox` by running:

    pip install tox

Running the unit tests:

    tox

## 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"
