Update Docs

This commit is contained in:
2023-10-24 11:47:02 -04:00
parent da54a7062b
commit dfd2240fff
2 changed files with 62 additions and 61 deletions

108
README.md
View File

@@ -1,64 +1,72 @@
# Terraform Provider Scaffolding (Terraform Plugin Framework) # Virtfusion Terraform Provider
_This template repository is built on the [Terraform Plugin Framework](https://github.com/hashicorp/terraform-plugin-framework). The template repository built on the [Terraform Plugin SDK](https://github.com/hashicorp/terraform-plugin-sdk) can be found at [terraform-provider-scaffolding](https://github.com/hashicorp/terraform-provider-scaffolding). See [Which SDK Should I Use?](https://developer.hashicorp.com/terraform/plugin/framework-benefits) in the Terraform documentation for additional information._ <p style="color: red">NOTE: This is a work in progress and is not yet ready for production use.</p>
This repository is a *template* for a [Terraform](https://www.terraform.io) provider. It is intended as a starting point for creating Terraform providers, containing:
- A resource and a data source (`internal/provider/`), ## Overview
- Examples (`examples/`) and generated documentation (`docs/`),
- Miscellaneous meta files.
These files contain boilerplate code that you will need to edit to create your own Terraform provider. Tutorials for creating Terraform providers can be found on the [HashiCorp Developer](https://developer.hashicorp.com/terraform/tutorials/providers-plugin-framework) platform. _Terraform Plugin Framework specific guides are titled accordingly._ This is a Terraform provider for the Virtfusion API. It allows you to manage your Virtfusion resources using Terraform.
Please see the [GitHub template repository documentation](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/creating-a-repository-from-a-template) for how to create a new repository from this template on GitHub. # What can I do with this provider?
Once you've written your provider, you'll want to [publish it on the Terraform Registry](https://developer.hashicorp.com/terraform/registry/providers/publishing) so that others can use it. Currently, you're able to manage the following resources:
* Create and delete virtual machines
* Create and delete SSH keys
## Requirements # How do I use this provider?
- [Terraform](https://developer.hashicorp.com/terraform/downloads) >= 1.0 Below is an example of how to use this provider to create a virtual machine and an SSH key.
- [Go](https://golang.org/doc/install) >= 1.19
## Building The Provider ```hcl
terraform {
required_providers {
virtfusion = {
source = "ezscale/virtfusion"
}
}
}
1. Clone the repository provider "virtfusion" {
1. Enter the repository directory endpoint = "virtfusion.example.com"
1. Build the provider using the Go `install` command: api_token = ""
}
```shell variable "common" {
go install type = map(string)
default = {
hypervisor_id = 1
package_id = 12
user_id = 1
}
}
# Create a SSH key
resource "virtfusion_ssh" "key1" {
name = "My Test Key"
public_key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKWyBR+dk5M5MMfmH6Ss5QDSgcAvbCYu0DkqgPKH8O5T testkey@example.com"
user_id = var.common["user_id"]
}
# Create a server
resource "virtfusion_server" "node1" {
hypervisor_id = var.common["hypervisor_id"]
package_id = var.common["package_id"]
user_id = var.common["user_id"]
}
# Initialize the server with the OS we want, the SSH key we want, and the hostname we want.
resource "virtfusion_build" "node1" {
server_id = virtfusion_server.node1.id
name = "node1-demo"
hostname = "node1.example.com"
osid = 34
vnc = true
ipv6 = true
ssh_keys = [virtfusion_ssh.key1.id]
email = true
}
``` ```
## Adding Dependencies # How can I contribute?
This provider uses [Go modules](https://github.com/golang/go/wiki/Modules). If you'd like to contribute, please feel free to open a pull request. If you're unsure of what to work on, please check the issues tab for any open issues.
Please see the Go documentation for the most up to date information about using Go modules.
To add a new dependency `github.com/author/dependency` to your Terraform provider:
```shell
go get github.com/author/dependency
go mod tidy
```
Then commit the changes to `go.mod` and `go.sum`.
## Using the provider
Fill this in for each provider
## Developing the Provider
If you wish to work on the provider, you'll first need [Go](http://www.golang.org) installed on your machine (see [Requirements](#requirements) above).
To compile the provider, run `go install`. This will build the provider and put the provider binary in the `$GOPATH/bin` directory.
To generate or update documentation, run `go generate`.
In order to run the full suite of Acceptance tests, run `make testacc`.
*Note:* Acceptance tests create real resources, and often cost money to run.
```shell
make testacc
```

View File

@@ -31,11 +31,10 @@ type VirtfusionSSHResource struct {
// VirtfusionSSHResourceModel describes the resource data model. // VirtfusionSSHResourceModel describes the resource data model.
type VirtfusionSSHResourceModel struct { type VirtfusionSSHResourceModel struct {
UserId *int64 `tfsdk:"user_id" json:"userId"` UserId *int64 `tfsdk:"user_id" json:"userId"`
Name *string `tfsdk:"name" json:"name"` Name *string `tfsdk:"name" json:"name"`
PublicKey *string `tfsdk:"public_key" json:"publicKey"` PublicKey *string `tfsdk:"public_key" json:"publicKey"`
PublicKeyHash types.String `tfsdk:"public_key_hash"` Id types.Int64 `tfsdk:"id" json:"id,omitempty"`
Id types.Int64 `tfsdk:"id" json:"id,omitempty"`
} }
func (r *VirtfusionSSHResource) Metadata(ctx context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { func (r *VirtfusionSSHResource) Metadata(ctx context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) {
@@ -60,11 +59,6 @@ func (r *VirtfusionSSHResource) Schema(ctx context.Context, req resource.SchemaR
Description: "Public Key", Description: "Public Key",
Required: true, Required: true,
}, },
"public_key_hash": schema.StringAttribute{
Description: "Public Key Hash",
Computed: true,
Default: nil,
},
"id": schema.Int64Attribute{ "id": schema.Int64Attribute{
Description: "SSH Key ID", Description: "SSH Key ID",
Computed: true, Computed: true,
@@ -263,7 +257,6 @@ func (r *VirtfusionSSHResource) Read(ctx context.Context, req resource.ReadReque
} }
data.Name = &responseData.Data.Name data.Name = &responseData.Data.Name
data.PublicKeyHash = types.StringValue(responseData.Data.PublicKeyHash)
// Save updated data into Terraform state // Save updated data into Terraform state
resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) resp.Diagnostics.Append(resp.State.Set(ctx, &data)...)