* feat(vm): Import Disk via API.
Signed-off-by: Marco Attia <54147992+Vaneixus@users.noreply.github.com>
* lint(vm): fix Linter Issues.
Signed-off-by: Marco Attia <54147992+Vaneixus@users.noreply.github.com>
* fix(vm): import_from update issues.
Signed-off-by: Marco Attia <54147992+Vaneixus@users.noreply.github.com>
* fix: store `import_from` in the state, add acc test for `import_from`
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
* chore: update examples and docs
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
* fix: linter
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
* chore: re-gen docs
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
---------
Signed-off-by: Marco Attia <54147992+Vaneixus@users.noreply.github.com>
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
Co-authored-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
Signed-off-by: Marco Attia <54147992+Vaneixus@users.noreply.github.com>
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
Co-authored-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
* feat(lxc): increase number of supported mount points to 256
* fix(container): correct condition for setting replicate value for rootfs
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
This is a "meta" PR to bump the minor version due potentially breaking changes from #1840.
See documentation for more details.
> When cloning an existing virtual machine, whether it's a template or not, the
> resource will inherit the disks and other configuration from the source VM.
>
> *If* you modify any attributes of an existing disk in the clone, you also need to
> explicitly provide values for any other attributes that differ from the schema defaults
> in the source (e.g., `size`, `discard`, `cache`, `aio`).
> Otherwise, the schema defaults will take effect and override the source values.
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
Allow to set disk speed and set / update other attributes of existing disks when cloning a VM
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
- Update Go version from 1.23 to 1.24 in go.mod and README
- Migrate documentation generation from tools/ to main.go
- Update Makefile to use go generate in main.go for docs
- Remove tools/ directory and related configuration
- Update GitHub Actions and Renovate configuration
- Simplify documentation generation process
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
* feat(vm): add RNG device support
This commit adds support for configuring the Random Number Generator (RNG) device for virtual machines in both the VM resource and datasource. The implementation includes:
- New schema and model for RNG configuration
- Support for setting RNG source, max_bytes, and period
- Updated documentation for RNG configuration
- Test cases for RNG configuration
- Integration with VM creation, update, and read operations
---------
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
* chore(deps): update module github.com/golangci/golangci-lint (v1.62.2 → v1.63.4) in /tools
| datasource | package | from | to |
| ---------- | --------------------------------- | ------- | ------- |
| go | github.com/golangci/golangci-lint | v1.62.2 | v1.63.4 |
* chore(deps): remove golang.org/x/exp dependency and update imports to use slices package
- Removed the golang.org/x/exp dependency from go.mod and go.sum.
- Updated imports in proxmox/api/client.go, proxmoxtf/datasource/vms.go, and proxmoxtf/resource/file.go to use the slices package instead of golang.org/x/exp/slices.
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
---------
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
* chore(tests): add option to select auth type (root user / token) for tests
* fix(vm): throw an error when `cpu.architecture` can't be set
---------
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
* feat(node): implement CRUD API for proxmox node config
Signed-off-by: Björn Brauer <zaubernerd@zaubernerd.de>
* fix: add unit tests, fix UnmarshalJSON
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
---------
Signed-off-by: Björn Brauer <zaubernerd@zaubernerd.de>
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
Co-authored-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
* fix(provider): "context deadline exceeded" error when retrieving the next available VM identifier
---------
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
fix(provider): sequentially generated `vm_id`s may clash with exiting VM / Container IDs
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
* feat(acme): implement CRUD API for proxmox cluster ACME plugins
Signed-off-by: Björn Brauer <zaubernerd@zaubernerd.de>
* feat(acme): implement acme_plugins data source
Signed-off-by: Björn Brauer <zaubernerd@zaubernerd.de>
* feat(acme): implement acme_plugin data source
Signed-off-by: Björn Brauer <zaubernerd@zaubernerd.de>
* feat(acme): implement plugin resource creation
Signed-off-by: Björn Brauer <zaubernerd@zaubernerd.de>
* feat(acme): implement plugin resource read
Signed-off-by: Björn Brauer <zaubernerd@zaubernerd.de>
* feat(acme): implement plugin resource update
Signed-off-by: Björn Brauer <zaubernerd@zaubernerd.de>
* feat(acme): implement plugin resource deletion
Signed-off-by: Björn Brauer <zaubernerd@zaubernerd.de>
* feat(acme): implement plugin resource import
Signed-off-by: Björn Brauer <zaubernerd@zaubernerd.de>
* docs(acme): generate documentation
Signed-off-by: Björn Brauer <zaubernerd@zaubernerd.de>
* fix: apply suggestions from code review
Co-authored-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
Signed-off-by: Björn Brauer <zaubernerd@zaubernerd.de>
* refactor: extract common fields into BasePluginData
Signed-off-by: Björn Brauer <zaubernerd@zaubernerd.de>
* fix: restrict plugin resource to type=dns only
because type=standalone is not configurable and always enabled by
default.
Signed-off-by: Björn Brauer <zaubernerd@zaubernerd.de>
* fix: remove unused 'nodes' property
https://github.com/bpg/terraform-provider-proxmox/pull/1479/files#r1710916265
Signed-off-by: Björn Brauer <zaubernerd@zaubernerd.de>
* fix: remove "delete" property
https://github.com/bpg/terraform-provider-proxmox/pull/1479/files#r1710908809
Signed-off-by: Björn Brauer <zaubernerd@zaubernerd.de>
* feat: implement attribute deletion
Signed-off-by: Björn Brauer <zaubernerd@zaubernerd.de>
* fix: ignore empty lines in dns plugin data
Signed-off-by: Björn Brauer <zaubernerd@zaubernerd.de>
* fix: partial revert of code review suggestions
Joining the values with a string literal would produce \\n instead of \n
and splitting at \\n doesn't match a newline.
Signed-off-by: Björn Brauer <zaubernerd@zaubernerd.de>
* refactor: extract acme plugin models into separate file
Signed-off-by: Björn Brauer <zaubernerd@zaubernerd.de>
* fix: format disable parameter as int
Signed-off-by: Björn Brauer <zaubernerd@zaubernerd.de>
---------
Signed-off-by: Björn Brauer <zaubernerd@zaubernerd.de>
Co-authored-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
* feat(file): Add support to set the file mode
GH-733 [1] implemented basic support for hook scripts, but the authors
"did not manage to find time to work on" [2] also including support to
set the file mode. This small but important feature makes the use of the
`proxmox_virtual_environment_container.hook_script_file_id` [3] and
`virtual_environment_vm.hook_script_file_id` [34] attributes basically
useless when not combined with the manual step of making the uploaded
file executable (manually running `chmod +x /path/to/script` or using
other methods, based on the storage backend). Using the
`hook_script_file_id` on its own also causes all planned and applies
changes in the same execution to not be saved in the state because the
Proxmox VE API responses with a HTTP `500` because the uploaded and
assigned file is not executable.
This pull request implements the missing feature to set the file mode
by adding a new `file_mode` attribute of type `string` where an
octal-formatted value can be passed, e.g. `0700` or only `600`.
Note that the support for the octal prefixes `0o` and `0x` are not
supported to reduced the complexity, even though Go of course support
it, including the used `os.FileMode` type [5].
Changing the file mode also causes the file to be replaced, which is
true for almost any attribute in the `proxmox_virtual_environment_file`
resource, to ensure that the file mode can also be changed after the
initial creation.
[1]: https://github.com/bpg/terraform-provider-proxmox/pull/733
[2]: https://github.com/bpg/terraform-provider-proxmox/pull/733#issuecomment-2096716738
[3]: https://registry.terraform.io/providers/bpg/proxmox/latest/docs/resources/virtual_environment_container#hook_script_file_id
[4]: https://registry.terraform.io/providers/bpg/proxmox/latest/docs/resources/virtual_environment_vm#hook_script_file_id
[5]: https://pkg.go.dev/os#FileMode
Related to GH-570
Related to GH-733
Signed-off-by: Sven Greb <development@svengreb.de>
---------
Signed-off-by: Sven Greb <development@svengreb.de>
* feat(acme): implement CRUD API for proxmox cluster ACME
* feat(acme): implement acme_accounts data source
* feat(acme): implement acme_account data source
* fix(acme): wait for task status on account creation
* feat(acme): implement account resource creation
* feat(acme): implement account read
* fix(acme): wait for task status on account update
* feat(acme): implement account update
* fix(acme): wait for task status on account deletion
* feat(acme): implement account deletion
* feat(acme): implement account import
* feat(acme): provide correctly typed API response for `account` field
* feat(acme): implement account schema for acme_account data source
* fix(acme): read `location` into state in acme_account resource
* fix(acme): ensure `name` of acme_account resource can't be changed
* docs(acme): generate documentation
* feat(acme): read back ACME account details from API
* Revert "fix(acme): ensure `name` of acme_account resource can't be changed"
* fix(acme): provide default for acme account name
* fix(acme): acme account name can't be changed
* chore(acme): update resource doc to clarify PVE auth requirements
* chore(acme): add `created_at` attr to the resource, sort model fields & schema attributes alphabetically
---------
Signed-off-by: Björn Brauer <zaubernerd@zaubernerd.de>
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
Co-authored-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>