docs: update CHANGELOG, CONTRIBUTING, issue templates for vrcx
- CHANGELOG: new [Unreleased] section describing the vrcx feature set on top of the inherited 0.1.0 (bmccollect) baseline - CONTRIBUTING: dev/prod/old layout, full src/vrcx/ module tour, updated build/install commands, expanded 'where features go' table - ISSUE_TEMPLATE/config.yml: security advisories link points at vrcx
This commit is contained in:
parent
b923b9ebe7
commit
82a155d494
3 changed files with 63 additions and 26 deletions
2
.github/ISSUE_TEMPLATE/config.yml
vendored
2
.github/ISSUE_TEMPLATE/config.yml
vendored
|
|
@ -1,5 +1,5 @@
|
||||||
blank_issues_enabled: false
|
blank_issues_enabled: false
|
||||||
contact_links:
|
contact_links:
|
||||||
- name: Security vulnerability
|
- name: Security vulnerability
|
||||||
url: https://github.com/Engelgardt23/bmccollect/security/advisories/new
|
url: https://github.com/Engelgardt23/vrcx/security/advisories/new
|
||||||
about: Please report security issues privately via GitHub Security Advisories — not as a public issue.
|
about: Please report security issues privately via GitHub Security Advisories — not as a public issue.
|
||||||
|
|
|
||||||
24
CHANGELOG.md
24
CHANGELOG.md
|
|
@ -1,14 +1,30 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
All notable changes to **bmccollect** are documented in this file.
|
All notable changes to **vrcx** are documented in this file.
|
||||||
|
|
||||||
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and the project uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and the project uses [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
### Added
|
||||||
|
- Renamed from `bmccollect` to **vrcx** (Vegman Remote Collect, extended).
|
||||||
|
- **Parallel BMC + SDS collection.** Per host, the BMC and the SDS service OS are queried in parallel via two independent SSH sessions; per-host output layout now has `bmc/` and `os/` subfolders.
|
||||||
|
- **SDS host SSH client** (`sds.py`) with a `sudo(cmd)` helper that funnels the password through `sudo -S` — no NOPASSWD changes required on the host.
|
||||||
|
- **OS command table** (`os_commands.py`): `lsigetlinux.sh`, `storcli64`, `nvme list`, `smartctl -x` per drive, `dmidecode`, `dmesg -T`, `journalctl -b`, `/var/log/messages`, `lspci`, `lsblk`.
|
||||||
|
- **SDS IP discovery** (`discover.py`) — Redfish `EthernetInterfaces` → `/24` ping-sweep → `arp -a` lookup, with a manual-prompt fallback per host.
|
||||||
|
- **i18n** (`i18n.py`) — bilingual UI; first run prompts EN/RU and persists the choice.
|
||||||
|
- **`config.ini`** next to the exe with inline EN+RU descriptions; knobs for default user, OS-by-default toggle, ping-sweep, parallel host count.
|
||||||
|
- **Clickable update check** in the header (link points to the releases page).
|
||||||
|
- Project repo layout split into `dev/` (current work), `prod/` (stable), `old/` (archived releases).
|
||||||
|
- New output layout: `out/<ts>/<bmc_ip>/{bmc,os}/`, shared `archives/dump_<ip>.tar.gz`, outer `<ts>.tar.gz`.
|
||||||
|
- Embedded application icon (`assets/icon.ico`, generated via `tools/make_icon.ps1`).
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- `commands.py` (BMC table) carried over from the previous release without changes — BMC-only flow is 1:1 compatible with VRC v1.1b.
|
||||||
|
- Per-host folder name is now the BMC IP, not `<serial>_bmcdump_<dt>`.
|
||||||
|
|
||||||
## [0.1.0] - 2026-05-16
|
## [0.1.0] - 2026-05-16
|
||||||
### Added
|
### Added
|
||||||
- Initial public release.
|
- Initial public release (as `bmccollect`).
|
||||||
- Re-implementation of the original YADRO VRC tool as a properly structured Python project.
|
- Re-implementation of the original YADRO VRC tool as a properly structured Python project.
|
||||||
- Multi-BMC parallel collection over SSH, with the YADRO BMC CLI command set + raw shell + `cat` + `journalctl` + Redfish.
|
- Multi-BMC parallel collection over SSH, with the YADRO BMC CLI command set + raw shell + `cat` + `journalctl` + Redfish.
|
||||||
- Output structure 1:1 with VRC v1.1b — same per-host `<serial>_bmcdump_<datetime>` layout inside a single session `tar.gz`.
|
- Output structure 1:1 with VRC v1.1b — same per-host `<serial>_bmcdump_<datetime>` layout inside a single session `tar.gz`.
|
||||||
|
|
@ -16,5 +32,5 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and
|
||||||
- Auto-update check on startup against GitHub `/releases/latest`.
|
- Auto-update check on startup against GitHub `/releases/latest`.
|
||||||
- MIT licensed.
|
- MIT licensed.
|
||||||
|
|
||||||
[Unreleased]: https://github.com/Engelgardt23/bmccollect/compare/v0.1.0...HEAD
|
[Unreleased]: https://github.com/Engelgardt23/vrcx/compare/v0.1.0...HEAD
|
||||||
[0.1.0]: https://github.com/Engelgardt23/bmccollect/releases/tag/v0.1.0
|
[0.1.0]: https://github.com/Engelgardt23/vrcx/releases/tag/v0.1.0
|
||||||
|
|
|
||||||
|
|
@ -5,51 +5,68 @@
|
||||||
## Repo layout
|
## Repo layout
|
||||||
|
|
||||||
```
|
```
|
||||||
bmccollect/
|
vrcx/
|
||||||
├── .github/
|
├── .github/
|
||||||
│ ├── workflows/release.yml ← CI: tag-driven build + GitHub Release
|
│ ├── workflows/release.yml ← CI: tag-driven build + GitHub Release
|
||||||
│ └── ISSUE_TEMPLATE/ ← bug / feature / security routing
|
│ └── ISSUE_TEMPLATE/ ← bug / feature / security routing
|
||||||
├── src/bmccollect/ ← package source (≤200 lines per module)
|
├── dev/ ← current work (everything code-related lives here)
|
||||||
│ ├── __init__.py ← single source of truth for __version__
|
│ ├── src/vrcx/
|
||||||
│ ├── __main__.py ← entry: python -m bmccollect
|
│ │ ├── __init__.py ← single source of truth for __version__
|
||||||
│ ├── app.py ← orchestration: prompts, threads, packaging
|
│ │ ├── __main__.py ← entry: python -m vrcx
|
||||||
│ ├── platform_win.py ← VT enable
|
│ │ ├── app.py ← orchestration: config, prompts, threads, packaging
|
||||||
│ ├── update_check.py ← GitHub /releases/latest poll
|
│ │ ├── config.py ← config.ini next to the exe (first-run prompt)
|
||||||
│ ├── commands.py ← table of "filename → how to obtain it"
|
│ │ ├── i18n.py ← EN/RU translation table + t() helper
|
||||||
│ ├── bmc.py ← BmcSession (SSH + Redfish helper)
|
│ │ ├── platform_win.py ← VT enable
|
||||||
│ ├── collector.py ← per-host collect loop
|
│ │ ├── update_check.py ← GitHub /releases/latest poll (returns tag)
|
||||||
│ ├── tarball.py ← layout, per-host & session tar.gz
|
│ │ ├── commands.py ← BMC artefacts table
|
||||||
│ └── ui.py ← rich-based TUI
|
│ │ ├── bmc.py ← BmcSession (SSH + Redfish helper)
|
||||||
├── bmccollect-launcher.py ← PyInstaller entry (root, absolute import)
|
│ │ ├── collector.py ← per-host BMC collect loop
|
||||||
├── pyproject.toml ← deps, packaging, dynamic version
|
│ │ ├── os_commands.py ← SDS-host artefacts table
|
||||||
├── CHANGELOG.md / CONTRIBUTING.md / LICENSE / README.md / SECURITY.md
|
│ │ ├── sds.py ← SdsSession (SSH + sudo -S + SFTP)
|
||||||
|
│ │ ├── os_collector.py ← per-host OS collect loop
|
||||||
|
│ │ ├── discover.py ← Redfish-MAC → ARP → SDS IP
|
||||||
|
│ │ ├── tarball.py ← layout, per-host & session tar.gz
|
||||||
|
│ │ └── ui.py ← rich-based TUI
|
||||||
|
│ ├── assets/icon.ico ← embedded app icon
|
||||||
|
│ ├── tools/make_icon.ps1 ← regenerate the icon
|
||||||
|
│ ├── vrcx-launcher.py ← PyInstaller entry (absolute import)
|
||||||
|
│ ├── vrcx.spec ← PyInstaller spec (gitignored)
|
||||||
|
│ └── pyproject.toml
|
||||||
|
├── prod/ ← last stable portable build (gitignored)
|
||||||
|
├── old/ ← previous portable builds, kept for rollback
|
||||||
|
├── CHANGELOG.md / CONTRIBUTING.md / LICENSE / README.md / README.ru.md / SECURITY.md
|
||||||
└── .gitignore
|
└── .gitignore
|
||||||
```
|
```
|
||||||
|
|
||||||
|
`dev/` / `prod/` / `old/` is a workflow convention: new changes land in `dev/`, the validated build is copied into `prod/`, the previous `prod/` is archived under `old/`.
|
||||||
|
|
||||||
## Run from source
|
## Run from source
|
||||||
|
|
||||||
```
|
```
|
||||||
python -m pip install rich paramiko
|
python -m pip install rich paramiko
|
||||||
PYTHONPATH=src python -m bmccollect
|
PYTHONPATH=dev/src python -m vrcx
|
||||||
```
|
```
|
||||||
|
|
||||||
## Editable install
|
## Editable install
|
||||||
|
|
||||||
```
|
```
|
||||||
|
cd dev
|
||||||
python -m pip install -e .
|
python -m pip install -e .
|
||||||
bmccollect
|
vrcx
|
||||||
```
|
```
|
||||||
|
|
||||||
## Build the portable .exe
|
## Build the portable .exe
|
||||||
|
|
||||||
```
|
```
|
||||||
python -m pip install pyinstaller rich paramiko
|
python -m pip install pyinstaller rich paramiko
|
||||||
python -m PyInstaller --onefile --console --name bmccollect --paths src bmccollect-launcher.py
|
python -m PyInstaller --onefile --console --name vrcx \
|
||||||
|
--icon dev/assets/icon.ico \
|
||||||
|
--paths dev/src dev/vrcx-launcher.py
|
||||||
```
|
```
|
||||||
|
|
||||||
## Cut a release
|
## Cut a release
|
||||||
|
|
||||||
1. Update `src/bmccollect/__init__.py` — bump `__version__` to `X.Y.Z`.
|
1. Bump `dev/src/vrcx/__init__.py` → `__version__ = "X.Y.Z"`.
|
||||||
2. Update `CHANGELOG.md` — move items from `[Unreleased]` into a new `[X.Y.Z]` section with today's date.
|
2. Update `CHANGELOG.md` — move items from `[Unreleased]` into a new `[X.Y.Z]` section with today's date.
|
||||||
3. Commit: `git commit -am "vX.Y.Z: …"`.
|
3. Commit: `git commit -am "vX.Y.Z: …"`.
|
||||||
4. Tag: `git tag vX.Y.Z`.
|
4. Tag: `git tag vX.Y.Z`.
|
||||||
|
|
@ -61,8 +78,12 @@ CI builds the exe and creates the GitHub Release with the zip attached.
|
||||||
|
|
||||||
| Adding... | Touch this module |
|
| Adding... | Touch this module |
|
||||||
|---|---|
|
|---|---|
|
||||||
| A new artefact (file in the dump) | `commands.py` → one new `CommandSpec` row |
|
| New BMC artefact | `commands.py` → one new `CommandSpec` row |
|
||||||
|
| New SDS-host artefact | `os_commands.py` → one new `OsCommandSpec` row |
|
||||||
| Support for a new BMC API (e.g. IPMI) | `bmc.py` → add a method on `BmcSession`; reference it from `commands.py` with a new `kind` |
|
| Support for a new BMC API (e.g. IPMI) | `bmc.py` → add a method on `BmcSession`; reference it from `commands.py` with a new `kind` |
|
||||||
| New per-host UI column / progress detail | `ui.py` → `Ui._render_table` + `set_progress` / `set_summary` |
|
| Different discovery strategy | `discover.py` |
|
||||||
|
| New per-host UI column / progress detail | `ui.py` → `Ui._render_table` + `set_progress` |
|
||||||
| Different output naming or layout | `tarball.py` |
|
| Different output naming or layout | `tarball.py` |
|
||||||
|
| New configuration knob | `config.py` (add field + parser line) and use it from `app.py` |
|
||||||
|
| New translated string | `i18n.py` — add the key to both `en` and `ru` |
|
||||||
| Tweaking the startup banner / prompts | `app.py` → `main` / `_prompt_inputs` |
|
| Tweaking the startup banner / prompts | `app.py` → `main` / `_prompt_inputs` |
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue