frugy


Namefrugy JSON
Version 0.5.1 PyPI version JSON
download
home_pagehttps://techlab.desy.de
SummaryFRU Generator YAML
upload_time2025-08-01 13:18:26
maintainerNone
docs_urlNone
authorPatrick Huesmann
requires_python>=3.6
licenseBSD
keywords ipmi fru microtca amc fmc picmg vita
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # frugy - FRU Generator YAML

This is a tool which generates EEPROM images according to the [IPMI](https://www.intel.com/content/www/us/en/products/docs/servers/ipmi/ipmi-second-gen-interface-spec-v2-rev1-1.html) [FRU](https://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/ipmi-platform-mgt-fru-info-storage-def-v1-0-rev-1-3-spec-update.pdf) standard from [YAML](https://yaml.org/spec/1.2/spec.html) configuration files. It can also parse a FRU EEPROM image and write its contents to a YAML file, or dump them to stdout.

## Installation

From [PyPI](https://pypi.org/project/frugy):
```
pip3 install frugy
```

From [GitHub](https://github.com/MicroTCA-Tech-Lab/frugy):
```
pip3 install git+https://github.com/MicroTCA-Tech-Lab/frugy
```

## Usage

```
$ frugy --help
usage: frugy [-h] [--version] [-o OUTPUT] [-w] [-r] [-d]
             [-e EEPROM_SIZE] [-s SET] [-t] [-b] [-c] [-l [LIST]]
             [-v VERBOSITY] [--internal-area-size SIZE]
             [srcfile]

FRU Generator YAML

positional arguments:
  srcfile               Source file for reading

optional arguments:
  -h, --help            show this help message and exit
  --version             show program's version number and exit
  -o OUTPUT, --output OUTPUT
                        output file (derived from input file if not set)
  -w, --write           FRU write mode (convert YAML to FRU image), default
  -r, --read            FRU read mode (convert FRU image to YAML)
  -d, --dump            dump FRU information to stdout (same as -r -o -)
  -e EEPROM_SIZE, --eeprom-size EEPROM_SIZE
                        pad FRU image to match EEPROM size in bytes (only
                        valid in write mode)
  -s SET, --set SET     set FRU record field to a value (only valid in write
                        mode)
  -t, --timestamp       set BoardInfo.mfg_date_time timestamp to current UTC
                        time (only valid in write mode)
  -b, --broken          enable workaround to parse Opal Kelly EEPROMs
  -c, --ignore-checksum-errors
                        ignore checksum errors when parsing a FRU image
  -l [LIST], --list [LIST]
                        list supported FRU records or schema of specified
                        record
  -v VERBOSITY, --verbosity VERBOSITY
                        set verbosity (0=quiet, 1=info, 2=debug)
```

## Examples

```
frugy damc-fmc2zup.yml
```
Read `damc-fmc2zup.yml` configuration, generate FRU image `damc-fmc2zup.bin`.

```
frugy damc-fmc2zup.yml -o fmc2zup_fru_eeprom.bin -e 2048
```
Read `damc-fmc2zup.yml` configuration, generate `fmc2zup_fru_eeprom.bin`, make it 2048 bytes (pad with 0xff).

```
frugy damc-fmc2zup.bin -r
```
Read and parse FRU image `damc-fmc2zup.bin`, generate YAML file `damc-fmc2zup.yml`.

```
frugy dmmc-stamp.yml -s BoardInfo.serial_number=1234 -s ProductInfo.version=1.0 -t
```
Read `dmmc-stamp.yml`, generate FRU with `BoardInfo.serial_number` set to *1234*, `ProductInfo.version` to *1.0* and `BoardInfo.mfg_date_time` to current UTC time.

```
frugy dmmc-stamp.yml -s serial_number=1234 -t
```
Read `dmmc-stamp.yml`, generate FRU with `BoardInfo.serial_number` *and* `ProductInfo.serial_number` set to *1234* and `BoardInfo.mfg_date_time` to current UTC time.

```
frugy -l
```
Show list of all supported FRU records.

```
frugy -l PointToPointConnectivity
```
Show layout of the FRU record called 'PointToPointConnectivity'.

## Supported FRU records

* [Overview of supported records](docs/records.md)

### YAML keywords for supported FRU records

* [Detailed list of supported IPMI records](docs/ipmi.md)
* [Detailed list of supported PICMG records](docs/picmg.md)
* [Detailed list of supported FMC records](docs/fmc.md)

## Example configuration file

```yaml
BoardInfo:
  manufacturer: DESY
  product_name: DMMC-STAMP Rev.A
  serial_number: '0000'
  part_number: '0000'
  fru_file_id: none
ProductInfo:
  manufacturer: DESY
  product_name: DMMC-STAMP Rev.A
  part_number: '0000'
  version: '0000'
  serial_number: '0000'
  asset_tag: none
  fru_file_id: none
MultirecordArea:
- type: ModuleCurrentRequirements
  current_draw: 6.5
```

More example configurations are stored in the [`examples`](examples)
 folder.

            

Raw data

            {
    "_id": null,
    "home_page": "https://techlab.desy.de",
    "name": "frugy",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": null,
    "keywords": "ipmi fru microtca amc fmc picmg vita",
    "author": "Patrick Huesmann",
    "author_email": "patrick.huesmann@desy.de",
    "download_url": "https://files.pythonhosted.org/packages/ff/4b/ef69da04618e9d38b899e0bf80a9d9a2bb634ffe439fd188a75bd8c3c8fc/frugy-0.5.1.tar.gz",
    "platform": null,
    "description": "# frugy - FRU Generator YAML\n\nThis is a tool which generates EEPROM images according to the [IPMI](https://www.intel.com/content/www/us/en/products/docs/servers/ipmi/ipmi-second-gen-interface-spec-v2-rev1-1.html) [FRU](https://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/ipmi-platform-mgt-fru-info-storage-def-v1-0-rev-1-3-spec-update.pdf) standard from [YAML](https://yaml.org/spec/1.2/spec.html) configuration files. It can also parse a FRU EEPROM image and write its contents to a YAML file, or dump them to stdout.\n\n## Installation\n\nFrom [PyPI](https://pypi.org/project/frugy):\n```\npip3 install frugy\n```\n\nFrom [GitHub](https://github.com/MicroTCA-Tech-Lab/frugy):\n```\npip3 install git+https://github.com/MicroTCA-Tech-Lab/frugy\n```\n\n## Usage\n\n```\n$ frugy --help\nusage: frugy [-h] [--version] [-o OUTPUT] [-w] [-r] [-d]\n             [-e EEPROM_SIZE] [-s SET] [-t] [-b] [-c] [-l [LIST]]\n             [-v VERBOSITY] [--internal-area-size SIZE]\n             [srcfile]\n\nFRU Generator YAML\n\npositional arguments:\n  srcfile               Source file for reading\n\noptional arguments:\n  -h, --help            show this help message and exit\n  --version             show program's version number and exit\n  -o OUTPUT, --output OUTPUT\n                        output file (derived from input file if not set)\n  -w, --write           FRU write mode (convert YAML to FRU image), default\n  -r, --read            FRU read mode (convert FRU image to YAML)\n  -d, --dump            dump FRU information to stdout (same as -r -o -)\n  -e EEPROM_SIZE, --eeprom-size EEPROM_SIZE\n                        pad FRU image to match EEPROM size in bytes (only\n                        valid in write mode)\n  -s SET, --set SET     set FRU record field to a value (only valid in write\n                        mode)\n  -t, --timestamp       set BoardInfo.mfg_date_time timestamp to current UTC\n                        time (only valid in write mode)\n  -b, --broken          enable workaround to parse Opal Kelly EEPROMs\n  -c, --ignore-checksum-errors\n                        ignore checksum errors when parsing a FRU image\n  -l [LIST], --list [LIST]\n                        list supported FRU records or schema of specified\n                        record\n  -v VERBOSITY, --verbosity VERBOSITY\n                        set verbosity (0=quiet, 1=info, 2=debug)\n```\n\n## Examples\n\n```\nfrugy damc-fmc2zup.yml\n```\nRead `damc-fmc2zup.yml` configuration, generate FRU image `damc-fmc2zup.bin`.\n\n```\nfrugy damc-fmc2zup.yml -o fmc2zup_fru_eeprom.bin -e 2048\n```\nRead `damc-fmc2zup.yml` configuration, generate `fmc2zup_fru_eeprom.bin`, make it 2048 bytes (pad with 0xff).\n\n```\nfrugy damc-fmc2zup.bin -r\n```\nRead and parse FRU image `damc-fmc2zup.bin`, generate YAML file `damc-fmc2zup.yml`.\n\n```\nfrugy dmmc-stamp.yml -s BoardInfo.serial_number=1234 -s ProductInfo.version=1.0 -t\n```\nRead `dmmc-stamp.yml`, generate FRU with `BoardInfo.serial_number` set to *1234*, `ProductInfo.version` to *1.0* and `BoardInfo.mfg_date_time` to current UTC time.\n\n```\nfrugy dmmc-stamp.yml -s serial_number=1234 -t\n```\nRead `dmmc-stamp.yml`, generate FRU with `BoardInfo.serial_number` *and* `ProductInfo.serial_number` set to *1234* and `BoardInfo.mfg_date_time` to current UTC time.\n\n```\nfrugy -l\n```\nShow list of all supported FRU records.\n\n```\nfrugy -l PointToPointConnectivity\n```\nShow layout of the FRU record called 'PointToPointConnectivity'.\n\n## Supported FRU records\n\n* [Overview of supported records](docs/records.md)\n\n### YAML keywords for supported FRU records\n\n* [Detailed list of supported IPMI records](docs/ipmi.md)\n* [Detailed list of supported PICMG records](docs/picmg.md)\n* [Detailed list of supported FMC records](docs/fmc.md)\n\n## Example configuration file\n\n```yaml\nBoardInfo:\n  manufacturer: DESY\n  product_name: DMMC-STAMP Rev.A\n  serial_number: '0000'\n  part_number: '0000'\n  fru_file_id: none\nProductInfo:\n  manufacturer: DESY\n  product_name: DMMC-STAMP Rev.A\n  part_number: '0000'\n  version: '0000'\n  serial_number: '0000'\n  asset_tag: none\n  fru_file_id: none\nMultirecordArea:\n- type: ModuleCurrentRequirements\n  current_draw: 6.5\n```\n\nMore example configurations are stored in the [`examples`](examples)\n folder.\n",
    "bugtrack_url": null,
    "license": "BSD",
    "summary": "FRU Generator YAML",
    "version": "0.5.1",
    "project_urls": {
        "Homepage": "https://techlab.desy.de"
    },
    "split_keywords": [
        "ipmi",
        "fru",
        "microtca",
        "amc",
        "fmc",
        "picmg",
        "vita"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a6a6ce96eb3637e6e5f757f31d7c093da2f897b06b1a8906f61160586c3915c6",
                "md5": "9e8df3bf5a15419a2f7aec2f7d4320de",
                "sha256": "0d7e4436d126e214ad223c2c02634eb218294015edd0a70617a2181c4f43983a"
            },
            "downloads": -1,
            "filename": "frugy-0.5.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "9e8df3bf5a15419a2f7aec2f7d4320de",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 30637,
            "upload_time": "2025-08-01T13:18:25",
            "upload_time_iso_8601": "2025-08-01T13:18:25.744731Z",
            "url": "https://files.pythonhosted.org/packages/a6/a6/ce96eb3637e6e5f757f31d7c093da2f897b06b1a8906f61160586c3915c6/frugy-0.5.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "ff4bef69da04618e9d38b899e0bf80a9d9a2bb634ffe439fd188a75bd8c3c8fc",
                "md5": "4f3d12794a24e3a45aa0e71386b9990b",
                "sha256": "e3be316cf0eca46d6fd87b7f527480fbf993e33bed9ba8ab78ecb27985c85526"
            },
            "downloads": -1,
            "filename": "frugy-0.5.1.tar.gz",
            "has_sig": false,
            "md5_digest": "4f3d12794a24e3a45aa0e71386b9990b",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 29145,
            "upload_time": "2025-08-01T13:18:26",
            "upload_time_iso_8601": "2025-08-01T13:18:26.879949Z",
            "url": "https://files.pythonhosted.org/packages/ff/4b/ef69da04618e9d38b899e0bf80a9d9a2bb634ffe439fd188a75bd8c3c8fc/frugy-0.5.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-01 13:18:26",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "frugy"
}
        
Elapsed time: 0.48069s