Skip GPG import and pass --skip sign to GoReleaser when
GPG_PRIVATE_KEY secret is not configured. Allows releases
to proceed without signing until keys are set up.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The CI environment does not have the terraform binary installed.
The terraform fmt directive is not required for builds — it was only
a convenience for formatting example .tf files locally.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
golangci-lint v1.64+ removed max-per-linter and max-same-issues from
the issues section schema. Remove them to pass config validation in CI.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Regenerated docs/ via tfplugindocs: 51 files covering all 20 resources
and 30 data sources with auto-extracted schemas and examples
- Removed stale docs for old resources (build.md, ssh.md)
- CHANGELOG.md: added v1.0.0 entry with full feature list, breaking
changes, and security notes
- terraform-registry-manifest.json: confirmed protocol_versions ["6.0"]
is correct for Terraform Plugin Framework
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- CLAUDE.md: architecture guide, conventions, type mapping quirks,
build commands, and common pitfalls for AI-assisted development
- README.md: full resource/data source tables, quick start guide,
environment variable configuration, and usage examples
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Security fixes from audit:
- Escape user-supplied strings (ext_relation_id, interface_name) with
url.PathEscape before interpolating into API URL paths, preventing
path traversal via crafted values like "../admin" or "foo/bar"
- Mark auth token URL attributes as Sensitive in both
virtfusion_user_auth_token and virtfusion_user_server_auth_token
resources, since the URL embeds the signed token
- Truncate raw API error response bodies to 500 bytes in error messages
to prevent leaking sensitive data from verbose Laravel error responses
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Complete rewrite of the VirtFusion Terraform provider with full API coverage:
- 20 managed resources (server, build, SSH key, user, firewall, IP blocks, etc.)
- 30 data sources (hypervisors, packages, servers, IP blocks, self-service, etc.)
- New HTTP client with proper error handling, query parameter support, and
automatic multipage pagination via GetAllPages (fetches all pages from
Laravel-style paginated endpoints and merges into a single response)
- Fixed type mismatches against live API: ServerData.Suspended (int→bool),
IPBlockData.Type (string→int), PackageData json tags (primaryStorage, etc.),
ServerData nested CPU/Settings/Resources structure, HypervisorGroupResources
array response
- Configurable results-per-page (default 300) on all list data sources
- Migrated CI from GitHub Actions to Gitea Actions
- Updated goreleaser config, go.mod dependencies, and examples
Verified against live VirtFusion instance at cp.vps.ezscale.tech:
all data sources return correct data with full pagination support.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>