internal/fleet/server_host/models.go (44 lines of code) (raw):
package server_host
import (
"context"
"github.com/elastic/terraform-provider-elasticstack/generated/kbapi"
"github.com/elastic/terraform-provider-elasticstack/internal/utils"
"github.com/hashicorp/terraform-plugin-framework/diag"
"github.com/hashicorp/terraform-plugin-framework/path"
"github.com/hashicorp/terraform-plugin-framework/types"
)
type serverHostModel struct {
Id types.String `tfsdk:"id"`
HostID types.String `tfsdk:"host_id"`
Name types.String `tfsdk:"name"`
Hosts types.List `tfsdk:"hosts"`
Default types.Bool `tfsdk:"default"`
}
func (model *serverHostModel) populateFromAPI(ctx context.Context, data *kbapi.ServerHost) (diags diag.Diagnostics) {
if data == nil {
return nil
}
model.Id = types.StringValue(data.Id)
model.HostID = types.StringValue(data.Id)
model.Name = types.StringValue(data.Name)
model.Hosts = utils.SliceToListType_String(ctx, data.HostUrls, path.Root("hosts"), &diags)
model.Default = types.BoolPointerValue(data.IsDefault)
return
}
func (model serverHostModel) toAPICreateModel(ctx context.Context) (body kbapi.PostFleetFleetServerHostsJSONRequestBody, diags diag.Diagnostics) {
body = kbapi.PostFleetFleetServerHostsJSONRequestBody{
HostUrls: utils.ListTypeToSlice_String(ctx, model.Hosts, path.Root("hosts"), &diags),
Id: model.HostID.ValueStringPointer(),
IsDefault: model.Default.ValueBoolPointer(),
Name: model.Name.ValueString(),
}
return
}
func (model serverHostModel) toAPIUpdateModel(ctx context.Context) (body kbapi.PutFleetFleetServerHostsItemidJSONRequestBody, diags diag.Diagnostics) {
body = kbapi.PutFleetFleetServerHostsItemidJSONRequestBody{
HostUrls: utils.SliceRef(utils.ListTypeToSlice_String(ctx, model.Hosts, path.Root("hosts"), &diags)),
IsDefault: model.Default.ValueBoolPointer(),
Name: model.Name.ValueStringPointer(),
}
return
}