Skip to content

Commit e0a5bca

Browse files
committed
impl fw resource.fleet_server_host
1 parent e136626 commit e0a5bca

File tree

15 files changed

+570
-261
lines changed

15 files changed

+570
-261
lines changed

generated/fleet/getschema.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -345,7 +345,7 @@ func transformFixPackageSearchResult(schema *Schema) {
345345
properties.Delete("installationInfo")
346346
}
347347

348-
// transformRemoveUnnecessaryGoPointers removes unneeded pointers from
348+
// transformRemoveUnnecessaryGoPointers removes pointers from
349349
// map and slice objects.
350350
func transformRemoveUnnecessaryGoPointers(schema *Schema) {
351351
var schemaMap map[string]any

internal/clients/fleet/fleet.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -181,10 +181,10 @@ func DeleteOutput(ctx context.Context, client *Client, id string) diag.Diagnosti
181181
}
182182

183183
// ReadFleetServerHost reads a specific fleet server host from the API.
184-
func ReadFleetServerHost(ctx context.Context, client *Client, id string) (*fleetapi.FleetServerHost, diag.Diagnostics) {
184+
func ReadFleetServerHost(ctx context.Context, client *Client, id string) (*fleetapi.FleetServerHost, fwdiag.Diagnostics) {
185185
resp, err := client.API.GetOneFleetServerHostsWithResponse(ctx, id)
186186
if err != nil {
187-
return nil, diag.FromErr(err)
187+
return nil, fromErr(err)
188188
}
189189

190190
switch resp.StatusCode() {
@@ -193,45 +193,45 @@ func ReadFleetServerHost(ctx context.Context, client *Client, id string) (*fleet
193193
case http.StatusNotFound:
194194
return nil, nil
195195
default:
196-
return nil, reportUnknownError(resp.StatusCode(), resp.Body)
196+
return nil, reportUnknownErrorFw(resp.StatusCode(), resp.Body)
197197
}
198198
}
199199

200200
// CreateFleetServerHost creates a new fleet server host.
201-
func CreateFleetServerHost(ctx context.Context, client *Client, req fleetapi.PostFleetServerHostsJSONRequestBody) (*fleetapi.FleetServerHost, diag.Diagnostics) {
201+
func CreateFleetServerHost(ctx context.Context, client *Client, req fleetapi.PostFleetServerHostsJSONRequestBody) (*fleetapi.FleetServerHost, fwdiag.Diagnostics) {
202202
resp, err := client.API.PostFleetServerHostsWithResponse(ctx, req)
203203
if err != nil {
204-
return nil, diag.FromErr(err)
204+
return nil, fromErr(err)
205205
}
206206

207207
switch resp.StatusCode() {
208208
case http.StatusOK:
209209
return resp.JSON200.Item, nil
210210
default:
211-
return nil, reportUnknownError(resp.StatusCode(), resp.Body)
211+
return nil, reportUnknownErrorFw(resp.StatusCode(), resp.Body)
212212
}
213213
}
214214

215215
// UpdateFleetServerHost updates an existing fleet server host.
216-
func UpdateFleetServerHost(ctx context.Context, client *Client, id string, req fleetapi.UpdateFleetServerHostsJSONRequestBody) (*fleetapi.FleetServerHost, diag.Diagnostics) {
216+
func UpdateFleetServerHost(ctx context.Context, client *Client, id string, req fleetapi.UpdateFleetServerHostsJSONRequestBody) (*fleetapi.FleetServerHost, fwdiag.Diagnostics) {
217217
resp, err := client.API.UpdateFleetServerHostsWithResponse(ctx, id, req)
218218
if err != nil {
219-
return nil, diag.FromErr(err)
219+
return nil, fromErr(err)
220220
}
221221

222222
switch resp.StatusCode() {
223223
case http.StatusOK:
224224
return &resp.JSON200.Item, nil
225225
default:
226-
return nil, reportUnknownError(resp.StatusCode(), resp.Body)
226+
return nil, reportUnknownErrorFw(resp.StatusCode(), resp.Body)
227227
}
228228
}
229229

230230
// DeleteFleetServerHost deletes an existing fleet server host.
231-
func DeleteFleetServerHost(ctx context.Context, client *Client, id string) diag.Diagnostics {
231+
func DeleteFleetServerHost(ctx context.Context, client *Client, id string) fwdiag.Diagnostics {
232232
resp, err := client.API.DeleteFleetServerHostsWithResponse(ctx, id)
233233
if err != nil {
234-
return diag.FromErr(err)
234+
return fromErr(err)
235235
}
236236

237237
switch resp.StatusCode() {
@@ -240,7 +240,7 @@ func DeleteFleetServerHost(ctx context.Context, client *Client, id string) diag.
240240
case http.StatusNotFound:
241241
return nil
242242
default:
243-
return reportUnknownError(resp.StatusCode(), resp.Body)
243+
return reportUnknownErrorFw(resp.StatusCode(), resp.Body)
244244
}
245245
}
246246

internal/fleet/fleet_server_host_resource.go

Lines changed: 0 additions & 174 deletions
This file was deleted.

internal/fleet/server_host/create.go

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package server_host
2+
3+
import (
4+
"context"
5+
6+
"github.com/elastic/terraform-provider-elasticstack/internal/clients/fleet"
7+
"github.com/hashicorp/terraform-plugin-framework/resource"
8+
)
9+
10+
func (r *serverHostResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) {
11+
var planModel serverHostModel
12+
13+
diags := req.Plan.Get(ctx, &planModel)
14+
resp.Diagnostics.Append(diags...)
15+
if resp.Diagnostics.HasError() {
16+
return
17+
}
18+
19+
client, err := r.client.GetFleetClient()
20+
if err != nil {
21+
resp.Diagnostics.AddError(err.Error(), "")
22+
return
23+
}
24+
25+
body, diags := planModel.toAPICreateModel(ctx)
26+
resp.Diagnostics.Append(diags...)
27+
if resp.Diagnostics.HasError() {
28+
return
29+
}
30+
31+
host, diags := fleet.CreateFleetServerHost(ctx, client, body)
32+
resp.Diagnostics.Append(diags...)
33+
if resp.Diagnostics.HasError() {
34+
return
35+
}
36+
37+
diags = planModel.populateFromAPI(ctx, host)
38+
resp.Diagnostics.Append(diags...)
39+
if resp.Diagnostics.HasError() {
40+
return
41+
}
42+
43+
diags = resp.State.Set(ctx, planModel)
44+
resp.Diagnostics.Append(diags...)
45+
}

internal/fleet/server_host/delete.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package server_host
2+
3+
import (
4+
"context"
5+
6+
"github.com/elastic/terraform-provider-elasticstack/internal/clients/fleet"
7+
"github.com/hashicorp/terraform-plugin-framework/resource"
8+
)
9+
10+
func (r *serverHostResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) {
11+
var stateModel serverHostModel
12+
13+
diags := req.State.Get(ctx, &stateModel)
14+
resp.Diagnostics.Append(diags...)
15+
if resp.Diagnostics.HasError() {
16+
return
17+
}
18+
19+
client, err := r.client.GetFleetClient()
20+
if err != nil {
21+
resp.Diagnostics.AddError(err.Error(), "")
22+
return
23+
}
24+
25+
hostID := stateModel.HostID.ValueString()
26+
diags = fleet.DeleteFleetServerHost(ctx, client, hostID)
27+
resp.Diagnostics.Append(diags...)
28+
}

internal/fleet/server_host/models.go

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package server_host
2+
3+
import (
4+
"context"
5+
6+
fleetapi "github.com/elastic/terraform-provider-elasticstack/generated/fleet"
7+
"github.com/elastic/terraform-provider-elasticstack/internal/utils"
8+
"github.com/hashicorp/terraform-plugin-framework/diag"
9+
"github.com/hashicorp/terraform-plugin-framework/path"
10+
"github.com/hashicorp/terraform-plugin-framework/types"
11+
)
12+
13+
type serverHostModel struct {
14+
Id types.String `tfsdk:"id"`
15+
HostID types.String `tfsdk:"host_id"`
16+
Name types.String `tfsdk:"name"`
17+
Hosts types.List `tfsdk:"hosts"`
18+
Default types.Bool `tfsdk:"default"`
19+
}
20+
21+
func (model *serverHostModel) populateFromAPI(ctx context.Context, data *fleetapi.FleetServerHost) (diags diag.Diagnostics) {
22+
if data == nil {
23+
return nil
24+
}
25+
26+
model.Id = types.StringValue(data.Id)
27+
model.HostID = types.StringValue(data.Id)
28+
model.Name = types.StringPointerValue(data.Name)
29+
model.Hosts = utils.SliceToListType_String(ctx, data.HostUrls, path.Root("hosts"), diags)
30+
model.Default = types.BoolValue(data.IsDefault)
31+
32+
return
33+
}
34+
35+
func (model serverHostModel) toAPICreateModel(ctx context.Context) (body fleetapi.PostFleetServerHostsJSONRequestBody, diags diag.Diagnostics) {
36+
body = fleetapi.PostFleetServerHostsJSONRequestBody{
37+
HostUrls: utils.ListTypeToSlice_String(ctx, model.Hosts, path.Root("hosts"), diags),
38+
Id: model.HostID.ValueStringPointer(),
39+
IsDefault: model.Default.ValueBoolPointer(),
40+
Name: model.Name.ValueString(),
41+
}
42+
return
43+
}
44+
45+
func (model serverHostModel) toAPIUpdateModel(ctx context.Context) (body fleetapi.UpdateFleetServerHostsJSONRequestBody, diags diag.Diagnostics) {
46+
body = fleetapi.UpdateFleetServerHostsJSONRequestBody{
47+
HostUrls: utils.ListTypeToSlice_String(ctx, model.Hosts, path.Root("hosts"), diags),
48+
IsDefault: model.Default.ValueBoolPointer(),
49+
Name: model.Name.ValueStringPointer(),
50+
}
51+
return
52+
}

0 commit comments

Comments
 (0)