diff --git a/README.md b/README.md index 76ae7fe..2ed723a 100644 --- a/README.md +++ b/README.md @@ -1,34 +1,7 @@ -# Initial setup +# Overview +vCTP is a vSphere Chargeback Tracking Platform, designed for a specific customer, so some decisions may not be applicable for your use case. -## Pre-requisite tools - -```shell -go install github.com/a-h/templ/cmd/templ@latest -go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest -go install github.com/swaggo/swag/cmd/swag@latest -``` - -## Database -This project now uses [goose](https://github.com/pressly/goose) for DB migrations. - -Install via `brew install goose` on a mac, or install via golang with command `go install github.com/pressly/goose/v3/cmd/goose@latest` - -Create a new up/down migration file with this command -```shell -goose -dir db/migrations sqlite3 ./db.sqlite3 create init sql -``` - -```shell -sqlc generate -``` - -## HTML templates -Run `templ generate -path ./components` to generate code based on template files - -## Documentation -Run `swag init --exclude "pkg.mod,pkg.build,pkg.tools" -o server/router/docs` - -#### Snapshots and Reports +## Snapshots and Reports - Hourly snapshots capture inventory per vCenter (concurrency via `hourly_snapshot_concurrency`). - Daily summaries aggregate the hourly snapshots for the day; monthly summaries aggregate daily summaries for the month. - Snapshots are registered in `snapshot_registry` so regeneration via `/api/snapshots/aggregate` can locate the correct tables (fallback scanning is also supported). @@ -37,7 +10,7 @@ Run `swag init --exclude "pkg.mod,pkg.build,pkg.tools" -o server/router/docs` - Snapshots/aggregations: `vctp_hourly_snapshots_total`, `vctp_hourly_snapshots_failed_total`, `vctp_hourly_snapshot_last_unix`, `vctp_hourly_snapshot_last_rows`, `vctp_daily_aggregations_total`, `vctp_daily_aggregations_failed_total`, `vctp_daily_aggregation_duration_seconds`, `vctp_monthly_aggregations_total`, `vctp_monthly_aggregations_failed_total`, `vctp_monthly_aggregation_duration_seconds`, `vctp_reports_available` - vCenter health/perf: `vctp_vcenter_connect_failures_total{vcenter}`, `vctp_vcenter_snapshot_duration_seconds{vcenter}`, `vctp_vcenter_inventory_size{vcenter}` -#### RPM Layout (summary) +## RPM Layout (summary) The RPM installs the service and defaults under `/usr/bin`, config under `/etc/dtms`, and data under `/var/lib/vctp`: - Binary: `/usr/bin/vctp-linux-amd64` - Systemd unit: `/etc/systemd/system/vctp.service` @@ -46,7 +19,7 @@ The RPM installs the service and defaults under `/usr/bin`, config under `/etc/d - Data: SQLite DB and reports default to `/var/lib/vctp` (reports under `/var/lib/vctp/reports`) - Scripts: preinstall/postinstall handle directory creation and permissions. -#### Settings File +## Settings File Configuration now lives in the YAML settings file. By default the service reads `/etc/dtms/vctp.yml`, or you can override it with the `-settings` flag. @@ -54,7 +27,7 @@ Configuration now lives in the YAML settings file. By default the service reads vctp -settings /path/to/vctp.yml ``` -#### Database Configuration +### Database Configuration By default the app uses SQLite and creates/opens `db.sqlite3`. You can opt into PostgreSQL by updating the settings file: @@ -75,13 +48,13 @@ settings: PostgreSQL migrations live in `db/migrations_postgres`, while SQLite migrations remain in `db/migrations`. -#### Snapshot Retention +### Snapshot Retention Hourly and daily snapshot table retention can be configured in the settings file: - `settings.hourly_snapshot_max_age_days` (default: 60) - `settings.daily_snapshot_max_age_months` (default: 12) -#### Settings Reference +### Settings Reference All configuration lives under the top-level `settings:` key in `vctp.yml`. General: @@ -120,3 +93,41 @@ Filters/chargeback: - `settings.tenants_to_filter`: list of tenant name patterns to exclude - `settings.node_charge_clusters`: list of cluster name patterns for node chargeback - `settings.srm_activeactive_vms`: list of SRM Active/Active VM name patterns + +# Developer setup + +## Pre-requisite tools + +```shell +go install github.com/a-h/templ/cmd/templ@latest +go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest +go install github.com/swaggo/swag/cmd/swag@latest +``` + +## Database +This project now uses [goose](https://github.com/pressly/goose) for DB migrations. + +Install via `brew install goose` on a mac, or install via golang with command `go install github.com/pressly/goose/v3/cmd/goose@latest` + +Create a new up/down migration file with this command +```shell +goose -dir db/migrations sqlite3 ./db.sqlite3 create init sql +``` + +```shell +sqlc generate +``` + +## HTML templates +Run `templ generate -path ./components` to generate code based on template files + +## Documentation +Run `swag init --exclude "pkg.mod,pkg.build,pkg.tools" -o server/router/docs` + +## CI/CD (Drone) +- `.drone.yml` defines a Docker pipeline: + - Restore/build caches for Go modules/tools. + - Build step installs generators (`templ`, `sqlc`, `swag`), regenerates code/docs, runs project scripts, and produces the `vctp-linux-amd64` binary. + - RPM step packages via `nfpm` using `vctp.yml`, emits RPMs into `./build/`. + - Optional SFTP deploy step uploads build artifacts (e.g., `vctp*`) to a remote host. + - Cache rebuild step preserves Go caches across runs. \ No newline at end of file