Wraps the new /api/v1/coverages endpoints. Schema mirrors the cnHeat
mental model — antenna, frequency, height, azimuth, downtilt, radius
— with cnHeat-style imperial units (height_agl_ft, radius_mi,
frequency_ghz) the API converts to SI before validation.
Compute is asynchronous: 'terraform apply' returns once the prediction
is queued. The status / progress_pct / error_message / png_path /
raster_path / computed_at fields are computed and update on
'terraform refresh' as the worker progresses through queued →
computing → ready (or failed). Downstream resources that need a
ready heatmap can use a terraform_data trigger that polls the
status field.
Resource semantics:
- Create POST /api/v1/coverages (auto-queues compute)
- Read GET /api/v1/coverages/:id
- Update PATCH /api/v1/coverages/:id (does NOT auto-recompute)
- Delete DELETE /api/v1/coverages/:id
Update doesn't auto-recompute because parameter tweaks may not
require a fresh heatmap; operators can call the recompute endpoint
directly via the existing client method when they want fresh
outputs.
ImportState supported via the standard UUID passthrough.
- Rename Go module path to codeberg.org/towerops/terraform-provider-towerops
- Replace .github/workflows/release.yml with .forgejo/workflows/release.yml
- Configure GoReleaser to publish to Codeberg via Gitea API
- Bump indirect dependencies (golang.org/x/*, grpc, go-plugin, etc.)
- Removed DeviceRoleSource field from Device struct and DeviceResourceModel
- Updated device_role description to reflect default value "other"
- Device role is now optional and defaults to "other" if not specified
- Cleaned up all CRUD operations to remove device_role_source handling
All device types are now manually selected with "other" as default.
- Add device_role field to Device struct in client
- Add device_role and device_role_source to DeviceResourceModel
- Add schema attributes for device_role (optional/computed) and device_role_source (computed)
- Handle device_role in Create, Read, and Update operations
- Valid device_role values: server, switch, router, access_point, backhaul, other
- device_role_source automatically set to 'manual' by API when device_role is provided
mark latitude and longitude as Computed in addition to Optional so
the provider accepts server-set values (geocoding, UI) when the user
omits them from config
change snmp_enabled default from true to false so devices like
resolver1 that only need ping/dns don't trigger unnecessary snmp
discovery. skip sending snmp_version/snmp_port to the api when
snmp_enabled is false.
Add Terraform Registry docs and examples for towerops_schedule and
towerops_escalation_policy resources. Update provider index and main
example to include on-call resources.
- Add snmp_community field to Organization struct (client.go)
- Add snmp_community attribute to organization resource schema
- Mark as Optional and Sensitive in Terraform
- Include in Create and Update operations
- Only settable by organization owners (enforced by API)
Example usage:
resource "towerops_organization" "main" {
name = "My Organization"
use_sites = true
snmp_community = "public"
}
- Add examples/resources/towerops_organization/resource.tf
- Update examples/main.tf to include organization resource
- Terraform Registry will auto-generate docs from these examples
- Make 'name' field optional and computed in organization resource
- Include name in Create and Update operations when provided
- Name can only be changed by organization owners (enforced by API)
- Matches API capability to update organization name
- Backwards compatible: name remains optional
Example usage:
resource "towerops_organization" "main" {
name = "My Organization"
use_sites = true
}
- Make site_id optional, add organization_id field
- Devices can be created without sites (directly in organization)
- Add SNMPv3 authentication and privacy fields
- Update documentation with new examples