Convert RVTools Excel exports into an Oracle Cloud (OCI) monthly cost estimate workbook.
Project description
Turn VMware RVTools exports into an Oracle Cloud monthly cost estimate
This utility ingests one or more RVTools vInfo sheets, pulls the latest Oracle Cloud Infrastructure prices, and generates an Excel file with aggregate monthly costs for all included resources.
Because OCI pricing scales linearly oci-rvtools doesn't price individual VMs. Instead it calculates the cost of a hypothetical single VM whose vCPU, RAM, and disk match the combined totals of the ingested workloads. That aggregated cost is identical to summing the per-VM prices, but a lot just easier to calculate and present 🤓.
🚀 Features
- Browser-based web app – no install required. Drop in your RVTools export on oci-rvtools.com and get the cost estimate instantly. Runs 100% browser-local via WebAssembly — nothing is uploaded, nothing leaves your device. Read Security & Privacy for more on this.
- Direct RVTools ingestion – reads raw
RVTools_export_all.xlsxfiles and ignores housekeeping VMs (vCLS-*). - Multi-file support – pass multiple files, a directory, or upload a
.zipof exports in the web app to aggregate across sites. - Configurable inclusion filters – toggle powered-off VMs for CPU/RAM and powered-off disks for storage calculations independently.
- Datacenter and Cluster filtering – list all Datacenters and Clusters in the input, then scope the estimate to a specific subset using
--datacenterand--cluster. - Automatic unit handling – converts MiB totals to GiB, rounds quantities up to whole units, and maps 2 vCPUs to 1 OCPU.
- Live pricing lookup – fetches list prices for configurable OCI part numbers via the OCI pricing API.
- Console logging – prints aggregation totals, pricing inputs, and powered-on/off inclusion choices to the console.
- Polished Excel output – writes
oci_cost_summary.xlsxwith two sheets (Total Disk vs. In Use Disk), metadata header, full Excel formulas and advisory text. Designed to look similar to the output from the official OCI Cost Estimator.
⚡ Quick start
Online (no install)
Visit oci-rvtools.com — drop in your RVTools .xlsx or a .zip of multiple exports, choose your options, and get the cost estimate. Everything runs in your browser via WebAssembly.
CLI
# Install from PyPI
pip install oci-rvtools
# Run the estimator
oci-rvtools \
--rvtools ./customer/RVTools_export_all.xlsx \
--output oci_cost_summary.xlsx
The tool contacts the OCI pricing API at runtime. Ensure the machine has outbound internet access.
🏗️ Installation options
PyPI, pipx or uv
# pip — installs into your active environment
pip install oci-rvtools
# pipx — isolated install, command available system-wide
pipx install oci-rvtools
# uv — one-off run without a permanent install
uvx oci-rvtools --rvtools ./customer/RVTools_export_all.xlsx
Homebrew (macOS)
brew tap KimTholstorf/oci-rvtools-cost-estimator
brew install oci-rvtools
Docker
# CLI mode — mount your working directory to /data
docker run --rm \
-v "$(pwd)":/data \
ghcr.io/kimtholstorf/oci-rvtools-cost-estimator:latest \
--rvtools /data/RVTools_export_all.xlsx \
--output /data/oci_cost_summary.xlsx
# Web app mode — no arguments starts the local web UI on port 8080
docker run --rm -p 8080:8080 \
ghcr.io/kimtholstorf/oci-rvtools-cost-estimator:latest
# then open http://localhost:8080
From source
git clone https://github.com/KimTholstorf/oci-rvtools-cost-estimator.git
cd oci-rvtools-cost-estimator
python3 -m venv .venv
source .venv/bin/activate
pip install .
# Run the CLI
oci-rvtools --rvtools ./customer/RVTools_export_all.xlsx
# Or serve the web UI locally
python3 -m http.server 8080 --directory docs/
# then open http://localhost:8080
📥 Input expectations
- RVTools workbook(s) in
.xlsxformat containing thevInfosheet (defaultRVTools_export_all.xlsx). - All calculations default to powered-on VMs, but powered-off VM CPU/RAM and disk capacity can be included via flags.
📤 Output workbook
The generated Excel file (oci_cost_summary.xlsx by default) contains:
- total_disk – Monthly costs using the total provisioned disk capacity (TiB → GiB).
- used_disk – Monthly costs using the reported "In Use" disk capacity.
Each sheet includes:
- Banner row stamped with the run date.
- Metadata block (source files, hours per month, currency, VPU value, powered-on/off inclusion flags).
- Pricing table with formulas for Part Qty, Instance Qty, Usage Qty, Unit Price, and Monthly Cost.
- Advisory text and disclaimer merged across all columns.
All quantities are rounded up to whole units before pricing. Block Volume Performance Units (VPU) scale with disk capacity (VPU per GB × GB).
🛠️ CLI reference
| Argument | Description |
|---|---|
--version |
Print the script version and exit. |
--rvtools PATH [PATH ...] |
One or more RVTools .xlsx files or directories to scan. Required. |
--output FILE |
Destination workbook path. Defaults to oci_cost_summary.xlsx. |
--hours HOURS |
Hours per month to bill. Defaults to 730. |
--currency CODE |
Pricing currency (passed to OCI pricing API). Defaults to USD. |
--ocpu-part PART |
OCI part number for OCPU per hour (default B97384, i.e. VM.Standard.E5.Flex). |
--memory-part PART |
OCI part number for memory GB per hour (default B97385, i.e. VM.Standard.E5.Flex). |
--storage-part PART |
OCI part number for block storage capacity per month (default B91961). |
--vpu-part PART |
OCI part number for block volume performance units (default B91962). |
--vpu VALUE |
VPUs per GB (range 1–120, default 10, i.e Balanced performance level). |
--include-poweredoff-vms |
Include powered-off VMs when summing vCPU and RAM. |
--include-poweredoff-disks |
Include powered-off VMs when summing disk usage (default). |
--exclude-poweredoff-disks |
Ignore powered-off VMs when summing disk usage. |
--list |
Print all Datacenter and Cluster names found in the input file(s) and exit. |
--datacenter NAME [NAME ...] |
Only include VMs in the given Datacenter(s). Quote names with spaces e.g. "DC East". |
--cluster NAME [NAME ...] |
Only include VMs in the given Cluster(s). Quote names with spaces e.g. "Cluster East 01". |
Paths can point to folders; the script recursively picks up .xlsx files (skipping ~$ temp files). Duplicate files are de-duplicated.
When both --datacenter and --cluster are specified, a VM must match both conditions (AND logic). Multiple values within each flag are matched with OR logic.
📈 Examples
# Baseline run (powered-on VMs only, powered-off disks included)
oci-rvtools \
--rvtools ./customer/RVTools_export_all.xlsx
# Aggregate multiple exports and change output name
oci-rvtools \
--rvtools ./customer/site-a.xlsx ./customer/site-b.xlsx \
--output reports/oci_cost_summary.xlsx
# Include powered-off VM CPU/RAM and exclude their disks
oci-rvtools \
--rvtools ./customer/RVTools_export_all.xlsx \
--include-poweredoff-vms \
--exclude-poweredoff-disks
# Override pricing part numbers (VM.Standard.E6.Flex) and hours per month
oci-rvtools \
--rvtools ./customer/RVTools_export_all.xlsx \
--hours 744 \
--ocpu-part B111129 \
--memory-part B111130
# Ultra High Performance for Storage
oci-rvtools \
--rvtools ./customer/RVTools_export_all.xlsx \
--vpu 30 # Ultra High Performance is VPU 30-120.
🍿 Demo
CLI
Web-UI
⚠️ Notes
- The CLI relies on real-time pricing data; expect run failures if the Oracle pricing API is unreachable or if your machine is not connected to the internet.
- Pricing logic assumes USD list rates identical across regions. Adjust currency or part numbers as needed.
- Generated workbooks contain formulas and formatting; Excel recalculates automatically when opened.
Happy estimating! Contributions and pull requests are welcome.
MIT License — © 2026 Kim Tholstorf
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file oci_rvtools-1.0.10.tar.gz.
File metadata
- Download URL: oci_rvtools-1.0.10.tar.gz
- Upload date:
- Size: 19.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d32b382887b58b124f9151dd6aa5da23dcb9494d776c9140c27b7cf5f9e90b19
|
|
| MD5 |
4f3d84979f02321d1bfe39519423af3d
|
|
| BLAKE2b-256 |
d211db56aa8f2452a93e431a7337d80c43203429605f05816efdac016b5ba001
|
Provenance
The following attestation bundles were made for oci_rvtools-1.0.10.tar.gz:
Publisher:
pypi-publish.yml on KimTholstorf/oci-rvtools-cost-estimator
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
oci_rvtools-1.0.10.tar.gz -
Subject digest:
d32b382887b58b124f9151dd6aa5da23dcb9494d776c9140c27b7cf5f9e90b19 - Sigstore transparency entry: 1261608306
- Sigstore integration time:
-
Permalink:
KimTholstorf/oci-rvtools-cost-estimator@2da1db8f6b6b51f007e56dde78f20e75613ae876 -
Branch / Tag:
refs/tags/v1.0.10 - Owner: https://github.com/KimTholstorf
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@2da1db8f6b6b51f007e56dde78f20e75613ae876 -
Trigger Event:
push
-
Statement type:
File details
Details for the file oci_rvtools-1.0.10-py3-none-any.whl.
File metadata
- Download URL: oci_rvtools-1.0.10-py3-none-any.whl
- Upload date:
- Size: 16.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d1f8a78e94ffd6935e46a0ff822cf2975cc05cf64e1b4c0c060c12f5d76c61a
|
|
| MD5 |
da81a7e843c1d4334c590e8d7c35cb05
|
|
| BLAKE2b-256 |
90023121b772ba2390aff97be92b0858f269a7975b4d26cbeb7fab3927768830
|
Provenance
The following attestation bundles were made for oci_rvtools-1.0.10-py3-none-any.whl:
Publisher:
pypi-publish.yml on KimTholstorf/oci-rvtools-cost-estimator
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
oci_rvtools-1.0.10-py3-none-any.whl -
Subject digest:
8d1f8a78e94ffd6935e46a0ff822cf2975cc05cf64e1b4c0c060c12f5d76c61a - Sigstore transparency entry: 1261608460
- Sigstore integration time:
-
Permalink:
KimTholstorf/oci-rvtools-cost-estimator@2da1db8f6b6b51f007e56dde78f20e75613ae876 -
Branch / Tag:
refs/tags/v1.0.10 - Owner: https://github.com/KimTholstorf
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-publish.yml@2da1db8f6b6b51f007e56dde78f20e75613ae876 -
Trigger Event:
push
-
Statement type: