0
0
mirror of https://github.com/bpg/terraform-provider-proxmox.git synced 2025-07-01 19:12:59 +00:00
Commit Graph

20 Commits

Author SHA1 Message Date
Pavel Boldyrev
d843e46b37
misc(vm2): add support for vga (#1328)
* misc(vm2): add support for `vga`
* fix: use random VM IDs in parallel acc tests

---------

Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
2024-05-27 21:30:12 -04:00
Pavel Boldyrev
e3dd31f55e
chore(vm2): add datasource implementation (#1318)
* chore(vm2): add datasource implementation

---------

Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
2024-05-22 02:06:41 +00:00
Pavel Boldyrev
b6af836386
misc: update documentation
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
2024-05-05 22:27:18 -04:00
Sven Greb
76c1c2282b
feat(cluster): Implement initial support for "hardware mappings" (#1213)
* feat(cluster): Implement initial support for "hardware mappings"

Right now it is alredy possible to use a mapped resource [1], but there
is no dedicated `proxmox_virtual_environment_cluster_hardware_mapping`
resource but this step must still be done manually (or automated through
other ways that interact with the Proxmox API).

This commit implements support for "hardware mapping" resources and data
sources for the, currently, available bus types PCI and USB, based on
the Proxmox VE API documentations [2].

There are some "specialities" in these resources and data sources:

1. The Proxmox VE API attribute, but this implementations names it
   "comment" since this naming is generally across the Proxmox VE web UI
   and API documentations. This still follows the Terraform
   "best practices" [3] as it improves the user experience by matching
   the field name to the naming used in the human-facing interfaces.

2. Like in point 1, the name of the attribute of "node checks
   diagnostics" for USB hardware mappings is "errors" in the Proxmox VE
   API while it is "checks" for hardware mappings of type PCI.
   The second naming pattern is also generally used across the
   Proxmox VE web UI and API documentations, including the "check_node"
   attribute that is also implemented in the
   "proxmox_virtual_environment_hardware_mappings" data source.
   Therefore, this implementation named both attributes "checks" which
   still follows the Terraform "best practices" [3] as it improves the
   user experience by matching the field name to the naming used in the
   human-facing interfaces.
3. This implmenetation comes with the "unique" feature of allowing
   comments (named "descriptions" by the Proxmox VE API) for an entry in
   a device map which is not possible through the web UI at all but only
   adding a comment for the whole mapping entry instead.

Note that this implementation also adds another point in the
"Known Issues" documentation since it is only possible to map a
PCI/USB device using the `root` PAM account, but this is still better
than having to manually configure it through the web UI or by
interacting with the Proxmox VE API on other ways.

[1]: https://github.com/bpg/terraform-provider-proxmox/pull/500
[2]: https://pve.proxmox.com/pve-docs/api-viewer/#/cluster/mapping/pci
[3]: https://developer.hashicorp.com/terraform/plugin/best-practices/hashicorp-provider-design-principles#resource-and-attribute-schema-should-closely-match-the-underlying-api

Signed-off-by: Sven Greb <development@svengreb.de>

* fix linter

Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>

---------

Signed-off-by: Sven Greb <development@svengreb.de>
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
Co-authored-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
2024-04-18 16:00:51 -04:00
Serge
9fee8c1e2e
feat(vm): add proxmox_virtual_environment_node datasource (#1151)
* feat(vm): add proxmox_virtual_environment_node datasource

It helps to get CPU model, number of cores and sockets.

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>

* fix node_name ref
* add acceptance test

Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>

---------

Signed-off-by: Serge Logvinov <serge.logvinov@sinextra.dev>
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
Co-authored-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
2024-03-23 20:17:09 -04:00
Ming Xie
0d548a7807
fix(docs): Inconsistent indentations in docs (#961)
fix(docs): Inconsistent indentations cause rendering issues

Signed-off-by: Ming Xie <git@mxie.dev>
2024-01-26 20:25:51 -05:00
Pavel Boldyrev
7d94bf73ec
chore(docs): remove static website generator with ruby dependencies (#929)
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
2024-01-18 03:21:50 +00:00
Pavel Boldyrev
e2717a9a9e
feat(docs): add initial mini-howtos for VM (#730)
* chore(docs): minor fixes and linting

Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>

* chore(docs): add VM mini-howtos with examples

Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>

* address peer-review feedback

Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>

* vscode settings

Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>

---------

Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
2023-11-28 12:38:47 -05:00
Rafał Safin
de8b4ec41a
feat(cluster): add cluster options resource (#548) 2023-09-12 07:49:03 -04:00
Emmanuel Benoît
03c9b36b86
feat(ha): add support for Proxmox High Availability objects (#498)
* chore: fix a pair of typos in comments

* feat(api): list High Availability groups

  * New clients created for HA and HA groups (via
    `Cluster().HA().Groups()`)
  * `List(ctx)` method that lists the cluster's High Availability groups

* feat(ha): added the `proxmox_virtual_environment_hagroups` data source

  * This data source returns the list of HA groups in its value's
    `group_ids` field

* fix(api): changed incorrect copy-pasted error message

* feat(api): get a HA group's full information

  * Added a `Get()` method to the HA group client, which fetches a
    single group's information based on its identifier.

* feat(ha): added the `proxmox_virtual_environment_hagroup` data source

  * This data source can read information about a single Proxmox High
    Availabillity group from the cluster.

* chore(ha): fixed linter error

* test(ha): added schema tests for the HA groups data sources

* fix(ha): use -1 as a node's priority when no priority is defined

  * It used to default to 0, which is a valid value for priorities.

* chore(ha): converted the `hagroups` datasource to the Terraform plugin SDK

* chore(refactoring): common definition for `id` attributes

* chore(ha): ported the HA group datasource to the Terraform plugin framework

* feat(ha): return HA group identifiers as a set rather than a list

* docs(ha): added examples for the hagroups/hagroup datasources

* docs(ha): added documentation for the hagroup{,s} datasources

* chore(ha): fixed linter errors

* chore(ha): workaround for the linter's split personality disorder

* fix(ha): fixed reading the restricted flag

* chore(refactoring): use `ExpandPath` for paths to the HA groups API

Co-authored-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>

* feat: CustomBool to Terraform attribute value conversion method

* chore(refactoring): use `CustomBool` for boolean fields in the API data

* chore(refactoring): renamed "members" to "nodes" in the HA group datasource

* fix: typo in comment

* chore(refactoring): split HA group API data and added the update request body

* fix(api): fixed copy-pasted error message

* feat(api): method to create/update a HA group

* feat(api): HA group deletion method

* fix(api): made the digest optional for HA groups

* feat(ha): added unimplemented hagroup resource

* fix(ha): fixed copy-pasted comment

* feat(ha): schema definition for the HA group resource

* feat: helper function that converts string attr values to string pointers

* fix(ha): ensure node priorities are <= 1000 in HA groups

* fix(ha): add the digest attribute to the schema

* feat(ha): model definition for the HA group resource

* fix(api): fixed incorrect error message

* fix(api): fixed HA group creation / update

  * I had somehow misunderstood the Proxmox API doc and thought creation
    and update went through the same endpoint. This has been fixed by
    adding separate data structures and separate methods for both
    actions.

* feat: Terraform/Proxmox API conversion utilities

* chore(refactoring): HA group model and reading code moved to separate file

* feat(ha): HA group creation

* fix(api): renamed method (missed during previous refactor)

* feat(ha): `Read()` method implemented for the `hagroup` resource

* chore(refactoring): more consistent variable naming

* fix(ha): fixed the behaviour of `Read()` when the resource is deleted externally

* feat(ha): implement HA group deletion

* feat(ha): HA group update implemented

* fix(ha): prevent empty or untrimmed HA group comments

* feat(ha): HA group import

* docs(ha): HA group resource examples

* docs(ha): generated documentation for the `hagroup` resource

* chore(ha): fixed linter errors

* chore(refactoring): updated the code based on changes to the datasource PR

* fix(api): fixed boolean fields in the HA group create/update structures

* fix(ha): removed digest from the HA group resource and datasource

  * The digest is generated by Proxmox from the *whole* HA groups
    configuration, so any update to one group causes changes in all
    other groups.
  * Because of that, using it causes failures when updating two or more
    HA groups.
  * It is also a pretty useless value to have in the datasource, as it
    is global and not actually related to the individual data items

* chore(refactoring): removed obsolete type conversion code

* chore(refactoring): use `ExpandPath` in the HA groups API client

* feat(ha): custom type for HA resource states

* feat(ha): custom type for HA resource types

* fix(api): fixed JSON decoding for HA resource states and types

  * Values were being decoded directly from the raw bytes.
  * Added tests for JSON marshaling/unmarshaling

* feat(api): custom type for HA resource identifiers

  * Structure with a type and name
  * Conversion to/from strings
  * Marshaling to/Unmarshaling from JSON
  * URL encoding

* feat(api): list and get HA resources

* feat(ha): HA resources list datasource

* feat(ha): added method that converts HA resource data to Terraform values

* fix(api): HA resource max relocation/restarts are optional

* feat(ha): Terraform validator for HA resource IDs

* feat(ha): HA resource datasource

* chore(refactoring): moved HA resource model to separate file

* feat(api): data structures for HA resource creation and update

* feat(api): HA resource creation, update and deletion

* fix(api): incorrect mapping in common HA resource data

* feat: utility function to create attribute validators based on parse functions

* feat: validators for HA resource identifiers, states and types

* fix(api): incorrect comment for the update request body

* feat(ha): Terraform resource for Proxmox HA resources

* chore(reafactoring): removed old HA resource ID validator

* docs: examples related to HA resources added

* docs: added documentation related to HA resources management

* fix: update doc generation, fix minor typos

* fix: rename & split utils package, replace `iota`

---------

Co-authored-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
2023-08-20 21:42:12 +00:00
Pavel Boldyrev
a9a7329d9f
feat(core): migrate version datasource to TF plugin framework (#440)
* feat: migrate `version` datasource to tf framework

* set up documentation generator

* add generated docs for network resources

* fix test mux server, add import examples to network resources

* fix network tests

* fix shell examples
2023-07-29 02:10:02 +00:00
Pavel Boldyrev
98e1cff7fe
feat: Add firewall resources (#246)
* refactoring existing cluster / firewall API for better composition

* add basic security groups API
fix linter errors

* add rules API

* fix after renaming resourceVirtualEnvironmentClusterIPSet

* fix linter errors

* make linter happy

* even more refactoring

* tidy up datasources

* in refactoring spree

* update examples

* fix firewall resource/datasource & client error handling

* add ipset(s) datasource

* update docs

* add security group resource with rules

* docs

* fix security group update, TODO: rule update

* fix after rebase

* add rule update, extract common rule schema, refactor group

* fix linter  errors

* bump linter for ci

* make alias and ipset reusable

* make security group reusable

* refactor datasources

* add security group datasources

* fix linter errors

* update docs

TODO: documentation for group datasources

* add sg docs, update doc index

* minor cleanup

* fix examples & tests

* stub for firewall-level options and rules

* extract firewall interface

* add firewall options and rules on the cluster level

TODO: issues with rule list management

* refactor all resources format AGAIN, now more flat, without complex subresources

* sort out hierarchy of APIs and remove duplication in API wrappers

* bring back security group

* finally, working rules

* restore cluster firewall option

* add containers support

* add options

* move rules back under security group, update docs

* fix vm_id / container_id attrs

* add examples

* cleanup

* more cleanup


Release-As: 0.17.0-rc1
2023-04-02 18:01:10 -04:00
Pavel Boldyrev
c2d3f46474
feat(vm): Add bare minimum VM datasource (#268)
* feat(vm): Add a bare minimum VM datasource

* fix linter errors

* fix doc

* add lookup across all nodes in the cluster, add filter by tags

* stable vm list

* fix linter errors

* pr feedback: switch to dynamic id for vms

* add datasource examples

* add unit tests

* Update virtual_environment_vms.md
2023-03-22 01:52:58 +00:00
Pavel Boldyrev
bf9e31ecfc
chore: lint and reformat the code (#204)
* chore: reformat code

* chore: add commitlint config

* reformat README.md

* add linter config

* lint & reformat docs

* go linter: only new issues

* fix some linting errors

* more reformatting

* disable linter warning for some duplicated code
2023-01-16 18:07:30 -05:00
Pavel Boldyrev
86719256dc
Update docs (#57)
* more docs update

* add some badges

* cleanup .MDs

* update .lock

* add cloud-config to the example doc
2022-05-23 23:43:12 -04:00
Dan Petersen
612ad45a30 Update docs 2021-02-10 05:05:26 +01:00
Dan Petersen
ae82c5768f Rename doc files 2021-02-10 04:48:18 +01:00
Dan Petersen
259b446583 Update changelog, documentation and release workflow 2021-02-10 00:00:56 +01:00
Dan Petersen
7de58a2df0 Merge remote-tracking branch 'blz-ea/feature-terraform-registry' into release-0.4.0 2021-01-02 23:13:24 +01:00
Alex Kulikovskikh
dae62778ff Update docs to support Terraform Registry 2020-10-22 19:10:40 -04:00