Skip to content

Commit 3bc9b13

Browse files
jooolaapricote
andauthored
refactor: move data.hcloud_ssh_key(s) to Plugin Framework (#817)
Related to #752 Co-authored-by: Julian Tölle <julian.toelle@hetzner-cloud.de>
1 parent 7d8bf6e commit 3bc9b13

13 files changed

+793
-330
lines changed

hcloud/plugin_provider.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"github.com/hetznercloud/hcloud-go/hcloud"
2121
"github.com/hetznercloud/terraform-provider-hcloud/internal/datacenter"
2222
"github.com/hetznercloud/terraform-provider-hcloud/internal/location"
23+
"github.com/hetznercloud/terraform-provider-hcloud/internal/sshkey"
2324
"github.com/hetznercloud/terraform-provider-hcloud/internal/util/tflogutil"
2425
)
2526

@@ -171,6 +172,8 @@ func (p *PluginProvider) DataSources(_ context.Context) []func() datasource.Data
171172
datacenter.NewDataSourceList,
172173
location.NewDataSource,
173174
location.NewDataSourceList,
175+
sshkey.NewDataSource,
176+
sshkey.NewDataSourceList,
174177
}
175178
}
176179

@@ -180,5 +183,7 @@ func (p *PluginProvider) DataSources(_ context.Context) []func() datasource.Data
180183
// The resource type name is determined by the Resource implementing
181184
// the Metadata method. All resources must have unique names.
182185
func (p *PluginProvider) Resources(_ context.Context) []func() resource.Resource {
183-
return []func() resource.Resource{}
186+
return []func() resource.Resource{
187+
sshkey.NewResource,
188+
}
184189
}

hcloud/provider.go

-4
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import (
2828
"github.com/hetznercloud/terraform-provider-hcloud/internal/rdns"
2929
"github.com/hetznercloud/terraform-provider-hcloud/internal/server"
3030
"github.com/hetznercloud/terraform-provider-hcloud/internal/servertype"
31-
"github.com/hetznercloud/terraform-provider-hcloud/internal/sshkey"
3231
"github.com/hetznercloud/terraform-provider-hcloud/internal/volume"
3332
)
3433

@@ -96,7 +95,6 @@ func Provider() *schema.Provider {
9695
server.NetworkResourceType: server.NetworkResource(),
9796
server.ResourceType: server.Resource(),
9897
snapshot.ResourceType: snapshot.Resource(),
99-
sshkey.ResourceType: sshkey.Resource(),
10098
volume.AttachmentResourceType: volume.AttachmentResource(),
10199
volume.ResourceType: volume.Resource(),
102100
placementgroup.ResourceType: placementgroup.Resource(),
@@ -122,8 +120,6 @@ func Provider() *schema.Provider {
122120
server.DataSourceListType: server.DataSourceList(),
123121
servertype.DataSourceType: servertype.DataSource(),
124122
servertype.DataSourceListType: servertype.ServerTypesDataSource(),
125-
sshkey.DataSourceType: sshkey.DataSource(),
126-
sshkey.DataSourceListType: sshkey.DataSourceList(),
127123
volume.DataSourceType: volume.DataSource(),
128124
volume.DataSourceListType: volume.DataSourceList(),
129125
},

hcloud/provider_test.go

-4
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import (
1515
"github.com/hetznercloud/terraform-provider-hcloud/internal/server"
1616
"github.com/hetznercloud/terraform-provider-hcloud/internal/servertype"
1717
"github.com/hetznercloud/terraform-provider-hcloud/internal/snapshot"
18-
"github.com/hetznercloud/terraform-provider-hcloud/internal/sshkey"
1918
"github.com/hetznercloud/terraform-provider-hcloud/internal/volume"
2019
"github.com/stretchr/testify/assert"
2120
)
@@ -48,7 +47,6 @@ func TestProvider_Resources(t *testing.T) {
4847
server.NetworkResourceType,
4948
server.ResourceType,
5049
snapshot.ResourceType,
51-
sshkey.ResourceType,
5250
volume.AttachmentResourceType,
5351
volume.ResourceType,
5452
placementgroup.ResourceType,
@@ -85,8 +83,6 @@ func TestProvider_DataSources(t *testing.T) {
8583
server.DataSourceListType,
8684
servertype.DataSourceType,
8785
servertype.DataSourceListType,
88-
sshkey.DataSourceType,
89-
sshkey.DataSourceListType,
9086
volume.DataSourceType,
9187
volume.DataSourceListType,
9288
}

internal/sshkey/common.go

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package sshkey
2+
3+
import (
4+
"context"
5+
6+
"github.com/hashicorp/terraform-plugin-framework/diag"
7+
"github.com/hashicorp/terraform-plugin-framework/types"
8+
9+
"github.com/hetznercloud/hcloud-go/hcloud"
10+
"github.com/hetznercloud/terraform-provider-hcloud/internal/util/resourceutil"
11+
)
12+
13+
type resourceData struct {
14+
ID types.String `tfsdk:"id"`
15+
Name types.String `tfsdk:"name"`
16+
Fingerprint types.String `tfsdk:"fingerprint"`
17+
PublicKey types.String `tfsdk:"public_key"`
18+
Labels types.Map `tfsdk:"labels"`
19+
}
20+
21+
func populateResourceData(ctx context.Context, data *resourceData, in *hcloud.SSHKey) diag.Diagnostics {
22+
var diags diag.Diagnostics
23+
var newDiags diag.Diagnostics
24+
25+
data.ID = resourceutil.IDStringValue(in.ID)
26+
data.Name = types.StringValue(in.Name)
27+
data.Fingerprint = types.StringValue(in.Fingerprint)
28+
data.PublicKey = types.StringValue(in.PublicKey)
29+
30+
data.Labels, newDiags = resourceutil.LabelsMapValueFrom(ctx, in.Labels)
31+
diags.Append(newDiags...)
32+
33+
return diags
34+
}

0 commit comments

Comments
 (0)