Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ require (
github.com/stackitcloud/stackit-sdk-go/services/scf v0.6.1
github.com/stackitcloud/stackit-sdk-go/services/secretsmanager v0.14.3
github.com/stackitcloud/stackit-sdk-go/services/serverbackup v1.3.8
github.com/stackitcloud/stackit-sdk-go/services/serverupdate v1.2.6
github.com/stackitcloud/stackit-sdk-go/services/serverupdate v1.5.0
github.com/stackitcloud/stackit-sdk-go/services/serviceaccount v0.12.0
github.com/stackitcloud/stackit-sdk-go/services/serviceenablement v1.4.1
github.com/stackitcloud/stackit-sdk-go/services/sfs v0.6.3
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -724,6 +724,8 @@ github.com/stackitcloud/stackit-sdk-go/services/serverbackup v1.3.8 h1:LLyANBzE8
github.com/stackitcloud/stackit-sdk-go/services/serverbackup v1.3.8/go.mod h1:/bmg57XZu+bGczzcoumrukiGMPGzI2mOyTT4BVIQUBs=
github.com/stackitcloud/stackit-sdk-go/services/serverupdate v1.2.6 h1:sQ3fdtUjgIL2Ul8nRYVVacHOwi5aSMTGGbYVL30oQBU=
github.com/stackitcloud/stackit-sdk-go/services/serverupdate v1.2.6/go.mod h1:3fjlL+9YtuI9Oocl1ZeYIK48ImtY4DwPggFhqAygr7o=
github.com/stackitcloud/stackit-sdk-go/services/serverupdate v1.5.0 h1:4MYNb3VQjVnVPfJ9xhDbSQgoSkxQZJ0tsv9N7O43/RI=
github.com/stackitcloud/stackit-sdk-go/services/serverupdate v1.5.0/go.mod h1:iVCh5xZW/DHBMnJW4Zrw8KMhQIBRAETcnTPi5bbcQIE=
github.com/stackitcloud/stackit-sdk-go/services/serviceaccount v0.12.0 h1:l1EDIlXce2C8JcbBDHVa6nZ4SjPTqmnALTgrhms+NKI=
github.com/stackitcloud/stackit-sdk-go/services/serviceaccount v0.12.0/go.mod h1:EXq8/J7t9p8zPmdIq+atuxyAbnQwxrQT18fI+Qpv98k=
github.com/stackitcloud/stackit-sdk-go/services/serviceenablement v1.4.1 h1:HZnZju8yqpvRIs71PEk54Jov6p+jiKIIlN+J+4tvcL0=
Expand Down
4 changes: 2 additions & 2 deletions stackit/internal/services/serverupdate/enable/datasource.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (
"github.com/hashicorp/terraform-plugin-framework/schema/validator"
"github.com/hashicorp/terraform-plugin-framework/types"
"github.com/hashicorp/terraform-plugin-log/tflog"
"github.com/stackitcloud/stackit-sdk-go/services/serverupdate"
serverupdate "github.com/stackitcloud/stackit-sdk-go/services/serverupdate/v2api"

"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion"
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core"
Expand Down Expand Up @@ -130,7 +130,7 @@ func (d *serverUpdateEnableDataSource) Read(ctx context.Context, req datasource.
ctx = tflog.SetField(ctx, "server_id", serverId)
ctx = tflog.SetField(ctx, "region", region)

serviceResp, err := d.client.GetServiceResource(ctx, projectId, serverId, region).Execute()
serviceResp, err := d.client.DefaultAPI.GetServiceResource(ctx, projectId, serverId, region).Execute()
if err != nil {
utils.LogError(
ctx,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
"github.com/google/go-cmp/cmp"
"github.com/hashicorp/terraform-plugin-framework/types"
"github.com/stackitcloud/stackit-sdk-go/core/utils"
"github.com/stackitcloud/stackit-sdk-go/services/serverupdate"
serverupdate "github.com/stackitcloud/stackit-sdk-go/services/serverupdate/v2api"
)

func TestDataMapFields(t *testing.T) {
Expand Down
10 changes: 5 additions & 5 deletions stackit/internal/services/serverupdate/enable/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import (
"github.com/hashicorp/terraform-plugin-framework/schema/validator"
"github.com/hashicorp/terraform-plugin-log/tflog"
"github.com/stackitcloud/stackit-sdk-go/core/oapierror"
"github.com/stackitcloud/stackit-sdk-go/services/serverupdate"
serverupdate "github.com/stackitcloud/stackit-sdk-go/services/serverupdate/v2api"

"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/conversion"
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core"
Expand Down Expand Up @@ -189,7 +189,7 @@ func (r *serverUpdateEnableResource) Create(ctx context.Context, req resource.Cr
ctx = tflog.SetField(ctx, "server_id", serverId)
ctx = tflog.SetField(ctx, "region", region)

err := r.client.EnableServiceResource(ctx, projectId, serverId, region).EnableServiceResourcePayload(serverupdate.EnableServiceResourcePayload{}).Execute()
err := r.client.DefaultAPI.EnableServiceResource(ctx, projectId, serverId, region).EnableServiceResourcePayload(serverupdate.EnableServiceResourcePayload{}).Execute()
if err != nil {
var oapiErr *oapierror.GenericOpenAPIError
ok := errors.As(err, &oapiErr)
Expand All @@ -201,7 +201,7 @@ func (r *serverUpdateEnableResource) Create(ctx context.Context, req resource.Cr
tflog.Info(ctx, "Server update is already enabled for this server. Please check duplicate resources.")
}

serviceResp, err := r.client.GetServiceResource(ctx, projectId, serverId, region).Execute()
serviceResp, err := r.client.DefaultAPI.GetServiceResource(ctx, projectId, serverId, region).Execute()
if err != nil {
core.LogAndAddError(ctx, &resp.Diagnostics, "Error reading server update enable", fmt.Sprintf("Calling API: %v", err))
return
Expand Down Expand Up @@ -243,7 +243,7 @@ func (r *serverUpdateEnableResource) Read(ctx context.Context, req resource.Read
ctx = tflog.SetField(ctx, "server_id", serverId)
ctx = tflog.SetField(ctx, "region", region)

serviceResp, err := r.client.GetServiceResource(ctx, projectId, serverId, region).Execute()
serviceResp, err := r.client.DefaultAPI.GetServiceResource(ctx, projectId, serverId, region).Execute()
if err != nil {
oapiErr, ok := err.(*oapierror.GenericOpenAPIError) //nolint:errorlint //complaining that error.As should be used to catch wrapped errors, but this error should not be wrapped
if ok && oapiErr.StatusCode == http.StatusNotFound {
Expand Down Expand Up @@ -297,7 +297,7 @@ func (r *serverUpdateEnableResource) Delete(ctx context.Context, req resource.De
ctx = tflog.SetField(ctx, "server_id", serverId)
ctx = tflog.SetField(ctx, "region", region)

err := r.client.DisableServiceResource(ctx, projectId, serverId, region).Execute()
err := r.client.DefaultAPI.DisableServiceResource(ctx, projectId, serverId, region).Execute()
if err != nil {
core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting server update enable", fmt.Sprintf("Calling API: %v", err))
return
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
"github.com/hashicorp/terraform-plugin-framework/types"

"github.com/stackitcloud/stackit-sdk-go/core/utils"
"github.com/stackitcloud/stackit-sdk-go/services/serverupdate"
serverupdate "github.com/stackitcloud/stackit-sdk-go/services/serverupdate/v2api"
)

func TestMapFields(t *testing.T) {
Expand Down
79 changes: 40 additions & 39 deletions stackit/internal/services/serverupdate/schedule/resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,15 @@ import (
"strconv"
"strings"

"github.com/hashicorp/terraform-plugin-framework-validators/int32validator"
"github.com/hashicorp/terraform-plugin-framework/resource/schema/int32planmodifier"

serverupdateUtils "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/services/serverupdate/utils"

"github.com/hashicorp/terraform-plugin-framework-validators/int64validator"
"github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator"
"github.com/hashicorp/terraform-plugin-framework/path"
"github.com/hashicorp/terraform-plugin-framework/resource"
"github.com/hashicorp/terraform-plugin-framework/resource/schema"
"github.com/hashicorp/terraform-plugin-framework/resource/schema/int64planmodifier"
"github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier"
"github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier"
"github.com/hashicorp/terraform-plugin-framework/schema/validator"
Expand All @@ -28,7 +29,7 @@ import (
"github.com/stackitcloud/terraform-provider-stackit/stackit/internal/validate"

"github.com/stackitcloud/stackit-sdk-go/core/oapierror"
"github.com/stackitcloud/stackit-sdk-go/services/serverupdate"
serverupdate "github.com/stackitcloud/stackit-sdk-go/services/serverupdate/v2api"
)

// Ensure the implementation satisfies the expected interfaces.
Expand All @@ -43,11 +44,11 @@ type Model struct {
ID types.String `tfsdk:"id"`
ProjectId types.String `tfsdk:"project_id"`
ServerId types.String `tfsdk:"server_id"`
UpdateScheduleId types.Int64 `tfsdk:"update_schedule_id"`
UpdateScheduleId types.Int32 `tfsdk:"update_schedule_id"`
Name types.String `tfsdk:"name"`
Rrule types.String `tfsdk:"rrule"`
Enabled types.Bool `tfsdk:"enabled"`
MaintenanceWindow types.Int64 `tfsdk:"maintenance_window"`
MaintenanceWindow types.Int32 `tfsdk:"maintenance_window"`
Region types.String `tfsdk:"region"`
}

Expand Down Expand Up @@ -136,14 +137,14 @@ func (r *scheduleResource) Schema(_ context.Context, _ resource.SchemaRequest, r
stringvalidator.LengthBetween(1, 255),
},
},
"update_schedule_id": schema.Int64Attribute{
"update_schedule_id": schema.Int32Attribute{
Description: "Update schedule ID.",
Computed: true,
PlanModifiers: []planmodifier.Int64{
int64planmodifier.UseStateForUnknown(),
PlanModifiers: []planmodifier.Int32{
int32planmodifier.UseStateForUnknown(),
},
Validators: []validator.Int64{
int64validator.AtLeast(1),
Validators: []validator.Int32{
int32validator.AtLeast(1),
},
},
"project_id": schema.StringAttribute{
Expand Down Expand Up @@ -186,12 +187,12 @@ func (r *scheduleResource) Schema(_ context.Context, _ resource.SchemaRequest, r
Description: "Is the update schedule enabled or disabled.",
Required: true,
},
"maintenance_window": schema.Int64Attribute{
"maintenance_window": schema.Int32Attribute{
Description: "Maintenance window [1..24]. Updates start within the defined hourly window. Depending on the updates, the process may exceed this timeframe and require an automatic restart.",
Required: true,
Validators: []validator.Int64{
int64validator.AtLeast(1),
int64validator.AtMost(24),
Validators: []validator.Int32{
int32validator.AtLeast(1),
int32validator.AtMost(24),
},
},
"region": schema.StringAttribute{
Expand Down Expand Up @@ -244,15 +245,15 @@ func (r *scheduleResource) Create(ctx context.Context, req resource.CreateReques
core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating server update schedule", fmt.Sprintf("Creating API payload: %v", err))
return
}
scheduleResp, err := r.client.CreateUpdateSchedule(ctx, projectId, serverId, region).CreateUpdateSchedulePayload(*payload).Execute()
scheduleResp, err := r.client.DefaultAPI.CreateUpdateSchedule(ctx, projectId, serverId, region).CreateUpdateSchedulePayload(*payload).Execute()
if err != nil {
core.LogAndAddError(ctx, &resp.Diagnostics, "Error creating server update schedule", fmt.Sprintf("Calling API: %v", err))
return
}

ctx = core.LogResponse(ctx)

ctx = tflog.SetField(ctx, "update_schedule_id", *scheduleResp.Id)
ctx = tflog.SetField(ctx, "update_schedule_id", scheduleResp.Id)

// Map response body to schema
err = mapFields(scheduleResp, &model, region)
Expand Down Expand Up @@ -281,14 +282,14 @@ func (r *scheduleResource) Read(ctx context.Context, req resource.ReadRequest, r

projectId := model.ProjectId.ValueString()
serverId := model.ServerId.ValueString()
updateScheduleId := model.UpdateScheduleId.ValueInt64()
updateScheduleId := model.UpdateScheduleId.ValueInt32()
region := r.providerData.GetRegionWithOverride(model.Region)
ctx = tflog.SetField(ctx, "project_id", projectId)
ctx = tflog.SetField(ctx, "server_id", serverId)
ctx = tflog.SetField(ctx, "region", region)
ctx = tflog.SetField(ctx, "update_schedule_id", updateScheduleId)

scheduleResp, err := r.client.GetUpdateSchedule(ctx, projectId, serverId, strconv.FormatInt(updateScheduleId, 10), region).Execute()
scheduleResp, err := r.client.DefaultAPI.GetUpdateSchedule(ctx, projectId, serverId, strconv.FormatInt(int64(updateScheduleId), 10), region).Execute()
if err != nil {
oapiErr, ok := err.(*oapierror.GenericOpenAPIError) //nolint:errorlint //complaining that error.As should be used to catch wrapped errors, but this error should not be wrapped
if ok && oapiErr.StatusCode == http.StatusNotFound {
Expand Down Expand Up @@ -330,7 +331,7 @@ func (r *scheduleResource) Update(ctx context.Context, req resource.UpdateReques

projectId := model.ProjectId.ValueString()
serverId := model.ServerId.ValueString()
updateScheduleId := model.UpdateScheduleId.ValueInt64()
updateScheduleId := model.UpdateScheduleId.ValueInt32()
region := model.Region.ValueString()
ctx = tflog.SetField(ctx, "project_id", projectId)
ctx = tflog.SetField(ctx, "server_id", serverId)
Expand All @@ -344,7 +345,7 @@ func (r *scheduleResource) Update(ctx context.Context, req resource.UpdateReques
return
}

scheduleResp, err := r.client.UpdateUpdateSchedule(ctx, projectId, serverId, strconv.FormatInt(updateScheduleId, 10), region).UpdateUpdateSchedulePayload(*payload).Execute()
scheduleResp, err := r.client.DefaultAPI.UpdateUpdateSchedule(ctx, projectId, serverId, strconv.FormatInt(int64(updateScheduleId), 10), region).UpdateUpdateSchedulePayload(*payload).Execute()
if err != nil {
core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating server update schedule", fmt.Sprintf("Calling API: %v", err))
return
Expand Down Expand Up @@ -379,14 +380,14 @@ func (r *scheduleResource) Delete(ctx context.Context, req resource.DeleteReques

projectId := model.ProjectId.ValueString()
serverId := model.ServerId.ValueString()
updateScheduleId := model.UpdateScheduleId.ValueInt64()
updateScheduleId := model.UpdateScheduleId.ValueInt32()
region := model.Region.ValueString()
ctx = tflog.SetField(ctx, "project_id", projectId)
ctx = tflog.SetField(ctx, "server_id", serverId)
ctx = tflog.SetField(ctx, "region", region)
ctx = tflog.SetField(ctx, "update_schedule_id", updateScheduleId)

err := r.client.DeleteUpdateSchedule(ctx, projectId, serverId, strconv.FormatInt(updateScheduleId, 10), region).Execute()
err := r.client.DefaultAPI.DeleteUpdateSchedule(ctx, projectId, serverId, strconv.FormatInt(int64(updateScheduleId), 10), region).Execute()
if err != nil {
core.LogAndAddError(ctx, &resp.Diagnostics, "Error deleting server update schedule", fmt.Sprintf("Calling API: %v", err))
return
Expand Down Expand Up @@ -432,19 +433,19 @@ func mapFields(schedule *serverupdate.UpdateSchedule, model *Model, region strin
if model == nil {
return fmt.Errorf("model input is nil")
}
if schedule.Id == nil {
return fmt.Errorf("response id is nil")
if schedule.Id == 0 {
return fmt.Errorf("response id is 0")
}

model.UpdateScheduleId = types.Int64PointerValue(schedule.Id)
model.UpdateScheduleId = types.Int32Value(schedule.Id)
model.ID = utils.BuildInternalTerraformId(
model.ProjectId.ValueString(), region, model.ServerId.ValueString(),
strconv.FormatInt(model.UpdateScheduleId.ValueInt64(), 10),
strconv.FormatInt(int64(model.UpdateScheduleId.ValueInt32()), 10),
)
model.Name = types.StringPointerValue(schedule.Name)
model.Rrule = types.StringPointerValue(schedule.Rrule)
model.Enabled = types.BoolPointerValue(schedule.Enabled)
model.MaintenanceWindow = types.Int64PointerValue(schedule.MaintenanceWindow)
model.Name = types.StringValue(schedule.Name)
model.Rrule = types.StringValue(schedule.Rrule)
model.Enabled = types.BoolValue(schedule.Enabled)
model.MaintenanceWindow = types.Int32Value(schedule.MaintenanceWindow)
model.Region = types.StringValue(region)
return nil
}
Expand All @@ -458,7 +459,7 @@ func enableUpdatesService(ctx context.Context, model *Model, client *serverupdat
payload := serverupdate.EnableServiceResourcePayload{}

tflog.Debug(ctx, "Enabling server update service")
err := client.EnableServiceResource(ctx, projectId, serverId, region).EnableServiceResourcePayload(payload).Execute()
err := client.DefaultAPI.EnableServiceResource(ctx, projectId, serverId, region).EnableServiceResourcePayload(payload).Execute()
if err != nil {
if strings.Contains(err.Error(), "Tried to activate already active service") {
tflog.Debug(ctx, "Service for server update already enabled")
Expand All @@ -476,10 +477,10 @@ func toCreatePayload(model *Model) (*serverupdate.CreateUpdateSchedulePayload, e
}

return &serverupdate.CreateUpdateSchedulePayload{
Enabled: conversion.BoolValueToPointer(model.Enabled),
Name: conversion.StringValueToPointer(model.Name),
Rrule: conversion.StringValueToPointer(model.Rrule),
MaintenanceWindow: conversion.Int64ValueToPointer(model.MaintenanceWindow),
Enabled: model.Enabled.ValueBool(),
Name: model.Name.ValueString(),
Rrule: model.Rrule.ValueString(),
MaintenanceWindow: model.MaintenanceWindow.ValueInt32(),
}, nil
}

Expand All @@ -489,9 +490,9 @@ func toUpdatePayload(model *Model) (*serverupdate.UpdateUpdateSchedulePayload, e
}

return &serverupdate.UpdateUpdateSchedulePayload{
Enabled: conversion.BoolValueToPointer(model.Enabled),
Name: conversion.StringValueToPointer(model.Name),
Rrule: conversion.StringValueToPointer(model.Rrule),
MaintenanceWindow: conversion.Int64ValueToPointer(model.MaintenanceWindow),
Enabled: model.Enabled.ValueBool(),
Name: model.Name.ValueString(),
Rrule: model.Rrule.ValueString(),
MaintenanceWindow: model.MaintenanceWindow.ValueInt32(),
}, nil
}
Loading
Loading