Skip to main content

Convert RVTools Excel exports into an Oracle Cloud (OCI) monthly cost estimate workbook.

Project description

Logo

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 workbook 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

  • Direct RVTools ingestion – reads raw RVTools_export_all.xlsx files, normalises column names, and ignores housekeeping VMs (vCLS-*).
  • Configurable inclusion filters – toggle powered-off VMs for CPU/RAM and powered-off disks for storage calculations independently.
  • Automatic unit handling – converts MiB totals to GiB, rounds quantities up to whole units, and maps 2 vCPUs to 1 OCPU.
  • Live pricing lookup – fetcheslist 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.xlsx with two sheets (Total Disk vs. In Use Disk), metadata header, formulas, advisory text, and Oracle-styled formatting. Designed to look similar to the output from the official OCI Cost Estimator.

⚡ Quick start

# 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 (recommended)

pip install oci-rvtools

This installs the oci-rvtools command globally (or into your active virtual environment).

Homebrew (macOS)

brew tap KimTholstorf/oci-rvtools-cost-estimator
brew install oci-rvtools

pipx (isolated install)

pipx install oci-rvtools

pipx installs the tool in its own isolated environment and makes the command available system-wide without affecting other Python packages.

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 .

One-off execution with uv

uvx oci-rvtools \
  --rvtools ./customer/RVTools_export_all.xlsx

uv downloads the package into a cache and runs it without a permanent install.


📥 Input expectations

  • RVTools workbook(s) in .xlsx format containing the vInfo sheet (default RVTools_export_all.xlsx).
  • The script ignores temporary Excel lock files (~$*.xlsx) automatically.
  • 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:

  1. total_disk – Monthly costs using the total provisioned disk capacity (TiB → GiB).
  2. 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 Oracle 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.

Paths can point to folders; the script recursively picks up .xlsx files (skipping ~$ temp files). Duplicate files are de-duplicated.


📈 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

asciinema


⚠️ Notes

  • The script 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

oci_rvtools-1.0.9.tar.gz (17.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

oci_rvtools-1.0.9-py3-none-any.whl (14.7 kB view details)

Uploaded Python 3

File details

Details for the file oci_rvtools-1.0.9.tar.gz.

File metadata

  • Download URL: oci_rvtools-1.0.9.tar.gz
  • Upload date:
  • Size: 17.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for oci_rvtools-1.0.9.tar.gz
Algorithm Hash digest
SHA256 b214136a38b9e67657c57f64fcef7191b1fb91287173e2193ab0b60b71b5e83d
MD5 c0c226e3d79acf6d93bdffc330df72ae
BLAKE2b-256 cf6892a483a7a99d2d5913b04f0642c891930771b8430cba78c80ed3853808ec

See more details on using hashes here.

Provenance

The following attestation bundles were made for oci_rvtools-1.0.9.tar.gz:

Publisher: pypi-publish.yml on KimTholstorf/oci-rvtools-cost-estimator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file oci_rvtools-1.0.9-py3-none-any.whl.

File metadata

  • Download URL: oci_rvtools-1.0.9-py3-none-any.whl
  • Upload date:
  • Size: 14.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for oci_rvtools-1.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 b2b595b4cf8c0aed0ec5f7554ec5272e9b1a6ae4b8c38b7aae74e2ddc99d7f79
MD5 bf076fe2d836c30823f9a256b8a2067f
BLAKE2b-256 854481ed52ea50ab9923efa00685805db721abc5e92b4216aba1beb3d94e6f22

See more details on using hashes here.

Provenance

The following attestation bundles were made for oci_rvtools-1.0.9-py3-none-any.whl:

Publisher: pypi-publish.yml on KimTholstorf/oci-rvtools-cost-estimator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page