1.3.0
This commit is contained in:
@@ -39,18 +39,23 @@ func DiskDataSource(ctx context.Context, state *models.DataSourceDiskModel, c *c
|
||||
Timeouts: state.Timeouts,
|
||||
|
||||
// computed fields
|
||||
Id: types.StringValue(id.String()),
|
||||
ID: types.StringValue(id.String()),
|
||||
AccountID: types.Int64Value(int64(recordDisk.AccountID)),
|
||||
AccountName: types.StringValue(recordDisk.AccountName),
|
||||
ACL: types.StringValue(string(diskAcl)),
|
||||
Computes: flattenComputes(ctx, recordDisk.Computes),
|
||||
CreatedBy: types.StringValue(recordDisk.CreatedBy),
|
||||
CreatedTime: types.Int64Value(int64(recordDisk.CreatedTime)),
|
||||
DeletedBy: types.StringValue(recordDisk.DeletedBy),
|
||||
DeletedTime: types.Int64Value(int64(recordDisk.DeletedTime)),
|
||||
Description: types.StringValue(recordDisk.Description),
|
||||
DestructionTime: types.Int64Value(int64(recordDisk.DestructionTime)),
|
||||
DeviceName: types.StringValue(recordDisk.DeviceName),
|
||||
GID: types.Int64Value(int64(recordDisk.GID)),
|
||||
ImageID: types.Int64Value(int64(recordDisk.ImageID)),
|
||||
MachineID: types.Int64Value(int64(recordDisk.MachineID)),
|
||||
MachineName: types.StringValue(recordDisk.MachineName),
|
||||
Milestones: types.Int64Value(int64(recordDisk.Milestones)),
|
||||
Name: types.StringValue(recordDisk.Name),
|
||||
Order: types.Int64Value(int64(recordDisk.Order)),
|
||||
Params: types.StringValue(recordDisk.Params),
|
||||
@@ -64,20 +69,23 @@ func DiskDataSource(ctx context.Context, state *models.DataSourceDiskModel, c *c
|
||||
SepID: types.Int64Value(int64(recordDisk.SepID)),
|
||||
SepType: types.StringValue(recordDisk.SepType),
|
||||
Shareable: types.BoolValue(recordDisk.Shareable),
|
||||
SizeAvailable: types.Float64Value(recordDisk.SizeAvailable),
|
||||
SizeMax: types.Int64Value(int64(recordDisk.SizeMax)),
|
||||
SizeUsed: types.Float64Value(recordDisk.SizeUsed),
|
||||
Snapshots: flattenSnapshots(ctx, recordDisk.Snapshots),
|
||||
Status: types.StringValue(recordDisk.Status),
|
||||
TechStatus: types.StringValue(recordDisk.TechStatus),
|
||||
Type: types.StringValue(recordDisk.Type),
|
||||
UpdatedBy: types.StringValue(recordDisk.UpdatedBy),
|
||||
UpdatedTime: types.Int64Value(int64(recordDisk.UpdatedTime)),
|
||||
VMID: types.Int64Value(int64(recordDisk.VMID)),
|
||||
}
|
||||
|
||||
state.Images, diags = types.ListValueFrom(ctx, types.StringType, recordDisk.Images)
|
||||
state.Images, diags = types.ListValueFrom(ctx, types.Int64Type, recordDisk.Images)
|
||||
if diags != nil {
|
||||
tflog.Error(ctx, fmt.Sprint("flattens.DiskDataSource: cannot flatten recordDisk.Images to state.Images", diags))
|
||||
}
|
||||
state.PresentTo, diags = types.ListValueFrom(ctx, types.Int64Type, recordDisk.PresentTo)
|
||||
state.PresentTo, diags = types.MapValueFrom(ctx, types.Int64Type, recordDisk.PresentTo)
|
||||
if diags != nil {
|
||||
tflog.Error(ctx, fmt.Sprint("flattens.DiskDataSource: cannot flatten recordDisk.PresentTo to state.PresentTo", diags))
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ func DiskListDataSource(ctx context.Context, state *models.DataSourceDiskListMod
|
||||
Timeouts: state.Timeouts,
|
||||
|
||||
// computed fields
|
||||
Id: types.StringValue(id.String()),
|
||||
ID: types.StringValue(id.String()),
|
||||
EntryCount: types.Int64Value(int64(diskList.EntryCount)),
|
||||
}
|
||||
|
||||
@@ -59,7 +59,9 @@ func DiskListDataSource(ctx context.Context, state *models.DataSourceDiskListMod
|
||||
AccountName: types.StringValue(recordDisk.AccountName),
|
||||
ACL: types.StringValue(string(diskAcl)),
|
||||
Computes: flattenComputes(ctx, recordDisk.Computes),
|
||||
CreatedBy: types.StringValue(recordDisk.CreatedBy),
|
||||
CreatedTime: types.Int64Value(int64(recordDisk.CreatedTime)),
|
||||
DeletedBy: types.StringValue(recordDisk.DeletedBy),
|
||||
DeletedTime: types.Int64Value(int64(recordDisk.DeletedTime)),
|
||||
Description: types.StringValue(recordDisk.Description),
|
||||
DestructionTime: types.Int64Value(int64(recordDisk.DestructionTime)),
|
||||
@@ -68,6 +70,9 @@ func DiskListDataSource(ctx context.Context, state *models.DataSourceDiskListMod
|
||||
ImageID: types.Int64Value(int64(recordDisk.ImageID)),
|
||||
DiskId: types.Int64Value(int64(recordDisk.ID)),
|
||||
DiskName: types.StringValue(recordDisk.Name),
|
||||
MachineID: types.Int64Value(int64(recordDisk.MachineID)),
|
||||
MachineName: types.StringValue(recordDisk.MachineName),
|
||||
Milestones: types.Int64Value(int64(recordDisk.Milestones)),
|
||||
Order: types.Int64Value(int64(recordDisk.Order)),
|
||||
Params: types.StringValue(recordDisk.Params),
|
||||
ParentID: types.Int64Value(int64(recordDisk.ParentID)),
|
||||
@@ -80,20 +85,23 @@ func DiskListDataSource(ctx context.Context, state *models.DataSourceDiskListMod
|
||||
SepID: types.Int64Value(int64(recordDisk.SepID)),
|
||||
SepType: types.StringValue(recordDisk.SepType),
|
||||
Shareable: types.BoolValue(recordDisk.Shareable),
|
||||
SizeAvailable: types.Float64Value(recordDisk.SizeAvailable),
|
||||
SizeMax: types.Int64Value(int64(recordDisk.SizeMax)),
|
||||
SizeUsed: types.Float64Value(recordDisk.SizeUsed),
|
||||
Snapshots: flattenSnapshots(ctx, recordDisk.Snapshots),
|
||||
Status: types.StringValue(recordDisk.Status),
|
||||
TechStatus: types.StringValue(recordDisk.TechStatus),
|
||||
Type: types.StringValue(recordDisk.Type),
|
||||
UpdatedBy: types.StringValue(recordDisk.UpdatedBy),
|
||||
UpdatedTime: types.Int64Value(int64(recordDisk.UpdatedTime)),
|
||||
VMID: types.Int64Value(int64(recordDisk.VMID)),
|
||||
}
|
||||
|
||||
d.Images, diags = types.ListValueFrom(ctx, types.StringType, recordDisk.Images)
|
||||
d.Images, diags = types.ListValueFrom(ctx, types.Int64Type, recordDisk.Images)
|
||||
if diags != nil {
|
||||
tflog.Error(ctx, fmt.Sprint("flattens.DiskListDataSource: cannot flatten recordDisk.Images to d.Images", diags))
|
||||
}
|
||||
d.PresentTo, diags = types.ListValueFrom(ctx, types.Int64Type, recordDisk.PresentTo)
|
||||
d.PresentTo, diags = types.MapValueFrom(ctx, types.Int64Type, recordDisk.PresentTo)
|
||||
if diags != nil {
|
||||
tflog.Error(ctx, fmt.Sprint("flattens.DiskListDataSource: cannot flatten recordDisk.PresentTo to d.PresentTo", diags))
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ func DiskListDeletedDataSource(ctx context.Context, state *models.DataSourceDisk
|
||||
Timeouts: state.Timeouts,
|
||||
|
||||
// computed fields
|
||||
Id: types.StringValue(id.String()),
|
||||
ID: types.StringValue(id.String()),
|
||||
EntryCount: types.Int64Value(int64(diskList.EntryCount)),
|
||||
}
|
||||
|
||||
@@ -56,7 +56,9 @@ func DiskListDeletedDataSource(ctx context.Context, state *models.DataSourceDisk
|
||||
AccountName: types.StringValue(recordDisk.AccountName),
|
||||
ACL: types.StringValue(string(diskAcl)),
|
||||
Computes: flattenComputes(ctx, recordDisk.Computes),
|
||||
CreatedBy: types.StringValue(recordDisk.CreatedBy),
|
||||
CreatedTime: types.Int64Value(int64(recordDisk.CreatedTime)),
|
||||
DeletedBy: types.StringValue(recordDisk.DeletedBy),
|
||||
DeletedTime: types.Int64Value(int64(recordDisk.DeletedTime)),
|
||||
Description: types.StringValue(recordDisk.Description),
|
||||
DestructionTime: types.Int64Value(int64(recordDisk.DestructionTime)),
|
||||
@@ -65,6 +67,7 @@ func DiskListDeletedDataSource(ctx context.Context, state *models.DataSourceDisk
|
||||
ImageID: types.Int64Value(int64(recordDisk.ImageID)),
|
||||
DiskId: types.Int64Value(int64(recordDisk.ID)),
|
||||
DiskName: types.StringValue(recordDisk.Name),
|
||||
Milestones: types.Int64Value(int64(recordDisk.Milestones)),
|
||||
Order: types.Int64Value(int64(recordDisk.Order)),
|
||||
Params: types.StringValue(recordDisk.Params),
|
||||
ParentID: types.Int64Value(int64(recordDisk.ParentID)),
|
||||
@@ -77,20 +80,23 @@ func DiskListDeletedDataSource(ctx context.Context, state *models.DataSourceDisk
|
||||
SepID: types.Int64Value(int64(recordDisk.SepID)),
|
||||
SepType: types.StringValue(recordDisk.SepType),
|
||||
Shareable: types.BoolValue(recordDisk.Shareable),
|
||||
SizeAvailable: types.Float64Value(recordDisk.SizeAvailable),
|
||||
SizeMax: types.Int64Value(int64(recordDisk.SizeMax)),
|
||||
SizeUsed: types.Float64Value(recordDisk.SizeUsed),
|
||||
Snapshots: flattenSnapshots(ctx, recordDisk.Snapshots),
|
||||
Status: types.StringValue(recordDisk.Status),
|
||||
TechStatus: types.StringValue(recordDisk.TechStatus),
|
||||
Type: types.StringValue(recordDisk.Type),
|
||||
UpdatedBy: types.StringValue(recordDisk.UpdatedBy),
|
||||
UpdatedTime: types.Int64Value(int64(recordDisk.UpdatedTime)),
|
||||
VMID: types.Int64Value(int64(recordDisk.VMID)),
|
||||
}
|
||||
|
||||
d.Images, diags = types.ListValueFrom(ctx, types.StringType, recordDisk.Images)
|
||||
d.Images, diags = types.ListValueFrom(ctx, types.Int64Type, recordDisk.Images)
|
||||
if diags != nil {
|
||||
tflog.Error(ctx, fmt.Sprint("flattens.DiskListDeletedDataSource: cannot flatten recordDisk.Images to d.Images", diags))
|
||||
}
|
||||
d.PresentTo, diags = types.ListValueFrom(ctx, types.Int64Type, recordDisk.PresentTo)
|
||||
d.PresentTo, diags = types.MapValueFrom(ctx, types.Int64Type, recordDisk.PresentTo)
|
||||
if diags != nil {
|
||||
tflog.Error(ctx, fmt.Sprint("flattens.DiskListDeletedDataSource: cannot flatten recordDisk.PresentTo to d.PresentTo", diags))
|
||||
}
|
||||
|
||||
@@ -97,7 +97,7 @@ func DiskListUnattachedDataSource(ctx context.Context, state *models.DataSourceD
|
||||
VMID: types.Int64Value(int64(recordDisk.VMID)),
|
||||
}
|
||||
|
||||
d.Images, diags = types.ListValueFrom(ctx, types.StringType, recordDisk.Images)
|
||||
d.Images, diags = types.ListValueFrom(ctx, types.Int64Type, recordDisk.Images)
|
||||
if diags != nil {
|
||||
tflog.Error(ctx, fmt.Sprint("flattens.DiskListUnattachedDataSource: cannot flatten recordDisk.Images to d.Images", diags))
|
||||
}
|
||||
|
||||
@@ -47,14 +47,13 @@ func DiskReplicationDataSource(ctx context.Context, state *models.RecordDiskMode
|
||||
DestructionTime: types.Int64Value(int64(recordDisk.DestructionTime)),
|
||||
GID: types.Int64Value(int64(recordDisk.GID)),
|
||||
ImageID: types.Int64Value(int64(recordDisk.ImageID)),
|
||||
Images: flattens.FlattenSimpleTypeToList(ctx, types.StringType, recordDisk.Images),
|
||||
Images: flattens.FlattenSimpleTypeToList(ctx, types.Int64Type, recordDisk.Images),
|
||||
Name: types.StringValue(recordDisk.Name),
|
||||
Order: types.Int64Value(int64(recordDisk.Order)),
|
||||
Params: types.StringValue(recordDisk.Params),
|
||||
ParentID: types.Int64Value(int64(recordDisk.ParentID)),
|
||||
PCISlot: types.Int64Value(int64(recordDisk.PCISlot)),
|
||||
Pool: types.StringValue(recordDisk.Pool),
|
||||
PresentTo: flattens.FlattenSimpleTypeToList(ctx, types.StringType, recordDisk.PresentTo),
|
||||
PurgeTime: types.Int64Value(int64(recordDisk.PurgeTime)),
|
||||
Replication: &models.ItemReplicationModel{},
|
||||
ResID: types.StringValue(recordDisk.ResID),
|
||||
@@ -73,6 +72,11 @@ func DiskReplicationDataSource(ctx context.Context, state *models.RecordDiskMode
|
||||
VMID: types.Int64Value(int64(recordDisk.VMID)),
|
||||
}
|
||||
|
||||
state.PresentTo, diags = types.MapValueFrom(ctx, types.Int64Type, recordDisk.PresentTo)
|
||||
if diags != nil {
|
||||
tflog.Error(ctx, fmt.Sprint("flattens.DiskDataSource: cannot flatten recordDisk.PresentTo to state.PresentTo", diags))
|
||||
}
|
||||
|
||||
iotune := models.DiskReplicationIOTune{
|
||||
ReadBytesSec: types.Int64Value(int64(recordDisk.IOTune.ReadBytesSec)),
|
||||
ReadBytesSecMax: types.Int64Value(int64(recordDisk.IOTune.ReadBytesSecMax)),
|
||||
|
||||
@@ -23,7 +23,7 @@ func DiskResource(ctx context.Context, plan *models.ResourceDiskModel, c *client
|
||||
|
||||
diags := diag.Diagnostics{}
|
||||
|
||||
diskId, err := strconv.ParseUint(plan.Id.ValueString(), 10, 64)
|
||||
diskId, err := strconv.ParseUint(plan.ID.ValueString(), 10, 64)
|
||||
if err != nil {
|
||||
diags.AddError("flattens.DiskResource: Cannot parse disk ID from state", err.Error())
|
||||
return diags
|
||||
@@ -43,13 +43,11 @@ func DiskResource(ctx context.Context, plan *models.ResourceDiskModel, c *client
|
||||
AccountID: types.Int64Value(int64(recordDisk.AccountID)),
|
||||
DiskName: types.StringValue(recordDisk.Name),
|
||||
SizeMax: types.Int64Value(int64(recordDisk.SizeMax)),
|
||||
GID: types.Int64Value(int64(recordDisk.GID)),
|
||||
|
||||
// optional fields
|
||||
Description: plan.Description,
|
||||
Pool: plan.Pool,
|
||||
SEPID: plan.SEPID,
|
||||
Type: plan.Type,
|
||||
Description: types.StringValue(recordDisk.Description),
|
||||
Pool: types.StringValue(recordDisk.Pool),
|
||||
SEPID: types.Int64Value(int64(recordDisk.SepID)),
|
||||
Detach: plan.Detach,
|
||||
Permanently: plan.Permanently,
|
||||
Shareable: plan.Shareable,
|
||||
@@ -57,16 +55,21 @@ func DiskResource(ctx context.Context, plan *models.ResourceDiskModel, c *client
|
||||
|
||||
// computed fields
|
||||
LastUpdated: plan.LastUpdated,
|
||||
Id: types.StringValue(strconv.Itoa(int(recordDisk.ID))),
|
||||
DiskId: types.Int64Value(int64(recordDisk.ID)),
|
||||
ID: types.StringValue(strconv.Itoa(int(recordDisk.ID))),
|
||||
DiskID: types.Int64Value(int64(recordDisk.ID)),
|
||||
AccountName: types.StringValue(recordDisk.AccountName),
|
||||
ACL: types.StringValue(string(diskAcl)),
|
||||
Computes: flattenComputes(ctx, recordDisk.Computes),
|
||||
CreatedBy: types.StringValue(recordDisk.CreatedBy),
|
||||
CreatedTime: types.Int64Value(int64(recordDisk.CreatedTime)),
|
||||
DeletedBy: types.StringValue(recordDisk.DeletedBy),
|
||||
DeletedTime: types.Int64Value(int64(recordDisk.DeletedTime)),
|
||||
DestructionTime: types.Int64Value(int64(recordDisk.DestructionTime)),
|
||||
DeviceName: types.StringValue(recordDisk.DeviceName),
|
||||
ImageID: types.Int64Value(int64(recordDisk.ImageID)),
|
||||
MachineID: types.Int64Value(int64(recordDisk.MachineID)),
|
||||
MachineName: types.StringValue(recordDisk.MachineName),
|
||||
GID: types.Int64Value(int64(recordDisk.GID)),
|
||||
Order: types.Int64Value(int64(recordDisk.Order)),
|
||||
Params: types.StringValue(recordDisk.Params),
|
||||
ParentID: types.Int64Value(int64(recordDisk.ParentID)),
|
||||
@@ -80,14 +83,17 @@ func DiskResource(ctx context.Context, plan *models.ResourceDiskModel, c *client
|
||||
Snapshots: flattenSnapshots(ctx, recordDisk.Snapshots),
|
||||
Status: types.StringValue(recordDisk.Status),
|
||||
TechStatus: types.StringValue(recordDisk.TechStatus),
|
||||
Type: types.StringValue(recordDisk.Type),
|
||||
UpdatedBy: types.StringValue(recordDisk.UpdatedBy),
|
||||
UpdatedTime: types.Int64Value(int64(recordDisk.UpdatedTime)),
|
||||
VMID: types.Int64Value(int64(recordDisk.VMID)),
|
||||
}
|
||||
|
||||
plan.Images, diags = types.ListValueFrom(ctx, types.StringType, recordDisk.Images)
|
||||
plan.Images, diags = types.ListValueFrom(ctx, types.Int64Type, recordDisk.Images)
|
||||
if diags != nil {
|
||||
tflog.Error(ctx, fmt.Sprint("flattens.DiskResource: cannot flatten recordDisk.Images to plan.Images", diags))
|
||||
}
|
||||
plan.PresentTo, diags = types.ListValueFrom(ctx, types.Int64Type, recordDisk.PresentTo)
|
||||
plan.PresentTo, diags = types.MapValueFrom(ctx, types.Int64Type, recordDisk.PresentTo)
|
||||
if diags != nil {
|
||||
tflog.Error(ctx, fmt.Sprint("flattens.DiskResource: cannot flatten recordDisk.PresentTo to plan.PresentTo", diags))
|
||||
}
|
||||
@@ -129,7 +135,7 @@ func DiskResource(ctx context.Context, plan *models.ResourceDiskModel, c *client
|
||||
}
|
||||
plan.IOTune = obj
|
||||
|
||||
tflog.Info(ctx, "flattens.DiskResource: after flatten", map[string]any{"disk_id": plan.Id.ValueString()})
|
||||
tflog.Info(ctx, "flattens.DiskResource: after flatten", map[string]any{"disk_id": plan.ID.ValueString()})
|
||||
|
||||
tflog.Info(ctx, "End flattens.DiskResource")
|
||||
return nil
|
||||
|
||||
@@ -57,13 +57,12 @@ func DiskReplicationResource(ctx context.Context, state *models.ResourceRecordDi
|
||||
DestructionTime: types.Int64Value(int64(recordDisk.DestructionTime)),
|
||||
GID: types.Int64Value(int64(recordDisk.GID)),
|
||||
ImageID: types.Int64Value(int64(recordDisk.ImageID)),
|
||||
Images: flattens.FlattenSimpleTypeToList(ctx, types.StringType, recordDisk.Images),
|
||||
Images: flattens.FlattenSimpleTypeToList(ctx, types.Int64Type, recordDisk.Images),
|
||||
Order: types.Int64Value(int64(recordDisk.Order)),
|
||||
Params: types.StringValue(recordDisk.Params),
|
||||
ParentID: types.Int64Value(int64(recordDisk.ParentID)),
|
||||
PCISlot: types.Int64Value(int64(recordDisk.PCISlot)),
|
||||
Pool: types.StringValue(recordDisk.Pool),
|
||||
PresentTo: flattens.FlattenSimpleTypeToList(ctx, types.StringType, recordDisk.PresentTo),
|
||||
PurgeTime: types.Int64Value(int64(recordDisk.PurgeTime)),
|
||||
ResID: types.StringValue(recordDisk.ResID),
|
||||
ResName: types.StringValue(recordDisk.ResName),
|
||||
@@ -80,6 +79,11 @@ func DiskReplicationResource(ctx context.Context, state *models.ResourceRecordDi
|
||||
VMID: types.Int64Value(int64(recordDisk.VMID)),
|
||||
}
|
||||
|
||||
state.PresentTo, diags = types.MapValueFrom(ctx, types.Int64Type, recordDisk.PresentTo)
|
||||
if diags != nil {
|
||||
tflog.Error(ctx, fmt.Sprint("flattens.DiskDataSource: cannot flatten recordDisk.PresentTo to state.PresentTo", diags))
|
||||
}
|
||||
|
||||
iotune := models.ResourceDiskReplicationIOTuneModel{
|
||||
ReadBytesSec: types.Int64Value(int64(recordDisk.IOTune.ReadBytesSec)),
|
||||
ReadBytesSecMax: types.Int64Value(int64(recordDisk.IOTune.ReadBytesSecMax)),
|
||||
|
||||
@@ -22,12 +22,6 @@ func resourceDiskCreateInputChecks(ctx context.Context, plan *models.ResourceDis
|
||||
diags.AddError(fmt.Sprintf("Cannot get info about account with ID %v", accountId), err.Error())
|
||||
}
|
||||
|
||||
gid := uint64(plan.GID.ValueInt64())
|
||||
tflog.Info(ctx, "resourceDiskCreateInputChecks: exist gid check", map[string]any{"gid": gid})
|
||||
err = ic.ExistGID(ctx, gid, c)
|
||||
if err != nil {
|
||||
diags.AddError(fmt.Sprintf("Cannot get info about GID %v", gid), err.Error())
|
||||
}
|
||||
return diags
|
||||
}
|
||||
|
||||
@@ -62,7 +56,7 @@ func resourceDiskUpdateInputChecks(ctx context.Context, plan, state *models.Reso
|
||||
fmt.Sprintf("cannot change description from %s to %s for disk id %s",
|
||||
state.Description.ValueString(),
|
||||
plan.Description.ValueString(),
|
||||
plan.Id.ValueString()))
|
||||
plan.ID.ValueString()))
|
||||
}
|
||||
|
||||
// check pool
|
||||
@@ -72,7 +66,7 @@ func resourceDiskUpdateInputChecks(ctx context.Context, plan, state *models.Reso
|
||||
fmt.Sprintf("cannot change pool from %s to %s for disk id %s",
|
||||
state.Pool.ValueString(),
|
||||
plan.Pool.ValueString(),
|
||||
plan.Id.ValueString()))
|
||||
plan.ID.ValueString()))
|
||||
}
|
||||
|
||||
// check sep_id
|
||||
@@ -82,17 +76,7 @@ func resourceDiskUpdateInputChecks(ctx context.Context, plan, state *models.Reso
|
||||
fmt.Sprintf("cannot change sep_id from %d to %d for disk id %s",
|
||||
state.SEPID.ValueInt64(),
|
||||
plan.SEPID.ValueInt64(),
|
||||
plan.Id.ValueString()))
|
||||
}
|
||||
|
||||
// check type
|
||||
if !plan.Type.Equal(state.Type) && !plan.Type.IsUnknown() {
|
||||
diags.AddError(
|
||||
"resourceDiskUpdateInputChecks: type change is not allowed",
|
||||
fmt.Sprintf("cannot change type from %s to %s for disk id %s",
|
||||
state.Type.ValueString(),
|
||||
plan.Type.ValueString(),
|
||||
plan.Id.ValueString()))
|
||||
plan.ID.ValueString()))
|
||||
}
|
||||
|
||||
return diags
|
||||
|
||||
@@ -11,12 +11,14 @@ type DataSourceDiskModel struct {
|
||||
Timeouts timeouts.Value `tfsdk:"timeouts"`
|
||||
|
||||
// response fields
|
||||
Id types.String `tfsdk:"id"`
|
||||
ID types.String `tfsdk:"id"`
|
||||
ACL types.String `tfsdk:"acl"`
|
||||
AccountID types.Int64 `tfsdk:"account_id"`
|
||||
AccountName types.String `tfsdk:"account_name"`
|
||||
Computes types.List `tfsdk:"computes"`
|
||||
CreatedBy types.String `tfsdk:"created_by"`
|
||||
CreatedTime types.Int64 `tfsdk:"created_time"`
|
||||
DeletedBy types.String `tfsdk:"deleted_by"`
|
||||
DeletedTime types.Int64 `tfsdk:"deleted_time"`
|
||||
DeviceName types.String `tfsdk:"devicename"`
|
||||
Description types.String `tfsdk:"desc"`
|
||||
@@ -25,13 +27,16 @@ type DataSourceDiskModel struct {
|
||||
ImageID types.Int64 `tfsdk:"image_id"`
|
||||
Images types.List `tfsdk:"images"`
|
||||
IOTune types.Object `tfsdk:"iotune"`
|
||||
MachineID types.Int64 `tfsdk:"machine_id"`
|
||||
MachineName types.String `tfsdk:"machine_name"`
|
||||
Milestones types.Int64 `tfsdk:"milestones"`
|
||||
Name types.String `tfsdk:"disk_name"`
|
||||
Order types.Int64 `tfsdk:"order"`
|
||||
Params types.String `tfsdk:"params"`
|
||||
ParentID types.Int64 `tfsdk:"parent_id"`
|
||||
PCISlot types.Int64 `tfsdk:"pci_slot"`
|
||||
Pool types.String `tfsdk:"pool"`
|
||||
PresentTo types.List `tfsdk:"present_to"`
|
||||
PresentTo types.Map `tfsdk:"present_to"`
|
||||
PurgeTime types.Int64 `tfsdk:"purge_time"`
|
||||
ResID types.String `tfsdk:"res_id"`
|
||||
ResName types.String `tfsdk:"res_name"`
|
||||
@@ -39,11 +44,14 @@ type DataSourceDiskModel struct {
|
||||
SepType types.String `tfsdk:"sep_type"`
|
||||
SepID types.Int64 `tfsdk:"sep_id"`
|
||||
Shareable types.Bool `tfsdk:"shareable"`
|
||||
SizeAvailable types.Float64 `tfsdk:"size_available"`
|
||||
SizeMax types.Int64 `tfsdk:"size_max"`
|
||||
SizeUsed types.Float64 `tfsdk:"size_used"`
|
||||
Snapshots types.List `tfsdk:"snapshots"`
|
||||
Status types.String `tfsdk:"status"`
|
||||
TechStatus types.String `tfsdk:"tech_status"`
|
||||
Type types.String `tfsdk:"type"`
|
||||
UpdatedBy types.String `tfsdk:"updated_by"`
|
||||
UpdatedTime types.Int64 `tfsdk:"updated_time"`
|
||||
VMID types.Int64 `tfsdk:"vmid"`
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ type DataSourceDiskListModel struct {
|
||||
Timeouts timeouts.Value `tfsdk:"timeouts"`
|
||||
|
||||
// response fields
|
||||
Id types.String `tfsdk:"id"`
|
||||
ID types.String `tfsdk:"id"`
|
||||
Items []ItemDiskModel `tfsdk:"items"`
|
||||
EntryCount types.Int64 `tfsdk:"entry_count"`
|
||||
}
|
||||
@@ -33,7 +33,9 @@ type ItemDiskModel struct {
|
||||
AccountName types.String `tfsdk:"account_name"`
|
||||
ACL types.String `tfsdk:"acl"`
|
||||
Computes types.List `tfsdk:"computes"`
|
||||
CreatedBy types.String `tfsdk:"created_by"`
|
||||
CreatedTime types.Int64 `tfsdk:"created_time"`
|
||||
DeletedBy types.String `tfsdk:"deleted_by"`
|
||||
DeletedTime types.Int64 `tfsdk:"deleted_time"`
|
||||
Description types.String `tfsdk:"desc"`
|
||||
DestructionTime types.Int64 `tfsdk:"destruction_time"`
|
||||
@@ -46,12 +48,13 @@ type ItemDiskModel struct {
|
||||
MachineName types.String `tfsdk:"machine_name"`
|
||||
DiskId types.Int64 `tfsdk:"disk_id"`
|
||||
DiskName types.String `tfsdk:"disk_name"`
|
||||
Milestones types.Int64 `tfsdk:"milestones"`
|
||||
Order types.Int64 `tfsdk:"order"`
|
||||
Params types.String `tfsdk:"params"`
|
||||
ParentID types.Int64 `tfsdk:"parent_id"`
|
||||
PCISlot types.Int64 `tfsdk:"pci_slot"`
|
||||
Pool types.String `tfsdk:"pool"`
|
||||
PresentTo types.List `tfsdk:"present_to"`
|
||||
PresentTo types.Map `tfsdk:"present_to"`
|
||||
PurgeTime types.Int64 `tfsdk:"purge_time"`
|
||||
ResID types.String `tfsdk:"res_id"`
|
||||
ResName types.String `tfsdk:"res_name"`
|
||||
@@ -59,11 +62,14 @@ type ItemDiskModel struct {
|
||||
SepID types.Int64 `tfsdk:"sep_id"`
|
||||
SepType types.String `tfsdk:"sep_type"`
|
||||
Shareable types.Bool `tfsdk:"shareable"`
|
||||
SizeAvailable types.Float64 `tfsdk:"size_available"`
|
||||
SizeMax types.Int64 `tfsdk:"size_max"`
|
||||
SizeUsed types.Float64 `tfsdk:"size_used"`
|
||||
Snapshots types.List `tfsdk:"snapshots"`
|
||||
Status types.String `tfsdk:"status"`
|
||||
TechStatus types.String `tfsdk:"tech_status"`
|
||||
Type types.String `tfsdk:"type"`
|
||||
UpdatedBy types.String `tfsdk:"updated_by"`
|
||||
UpdatedTime types.Int64 `tfsdk:"updated_time"`
|
||||
VMID types.Int64 `tfsdk:"vmid"`
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ type DataSourceDiskListDeletedModel struct {
|
||||
Timeouts timeouts.Value `tfsdk:"timeouts"`
|
||||
|
||||
// response fields
|
||||
Id types.String `tfsdk:"id"`
|
||||
ID types.String `tfsdk:"id"`
|
||||
Items []ItemDiskModel `tfsdk:"items"`
|
||||
EntryCount types.Int64 `tfsdk:"entry_count"`
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ type RecordDiskModel struct {
|
||||
ParentID types.Int64 `tfsdk:"parent_id"`
|
||||
PCISlot types.Int64 `tfsdk:"pci_slot"`
|
||||
Pool types.String `tfsdk:"pool"`
|
||||
PresentTo types.List `tfsdk:"present_to"`
|
||||
PresentTo types.Map `tfsdk:"present_to"`
|
||||
PurgeTime types.Int64 `tfsdk:"purge_time"`
|
||||
Replication *ItemReplicationModel `tfsdk:"replication"`
|
||||
ResID types.String `tfsdk:"res_id"`
|
||||
|
||||
@@ -11,7 +11,6 @@ type ResourceDiskModel struct {
|
||||
AccountID types.Int64 `tfsdk:"account_id"`
|
||||
DiskName types.String `tfsdk:"disk_name"`
|
||||
SizeMax types.Int64 `tfsdk:"size_max"`
|
||||
GID types.Int64 `tfsdk:"gid"`
|
||||
|
||||
// request fields - optional
|
||||
Description types.String `tfsdk:"desc"`
|
||||
@@ -25,23 +24,28 @@ type ResourceDiskModel struct {
|
||||
Timeouts timeouts.Value `tfsdk:"timeouts"`
|
||||
|
||||
// response fields
|
||||
Id types.String `tfsdk:"id"`
|
||||
ID types.String `tfsdk:"id"`
|
||||
LastUpdated types.String `tfsdk:"last_updated"`
|
||||
ACL types.String `tfsdk:"acl"`
|
||||
AccountName types.String `tfsdk:"account_name"`
|
||||
Computes types.List `tfsdk:"computes"`
|
||||
CreatedBy types.String `tfsdk:"created_by"`
|
||||
CreatedTime types.Int64 `tfsdk:"created_time"`
|
||||
DeletedBy types.String `tfsdk:"deleted_by"`
|
||||
DeletedTime types.Int64 `tfsdk:"deleted_time"`
|
||||
DeviceName types.String `tfsdk:"devicename"`
|
||||
DestructionTime types.Int64 `tfsdk:"destruction_time"`
|
||||
DiskId types.Int64 `tfsdk:"disk_id"`
|
||||
DiskID types.Int64 `tfsdk:"disk_id"`
|
||||
ImageID types.Int64 `tfsdk:"image_id"`
|
||||
Images types.List `tfsdk:"images"`
|
||||
MachineID types.Int64 `tfsdk:"machine_id"`
|
||||
MachineName types.String `tfsdk:"machine_name"`
|
||||
GID types.Int64 `tfsdk:"gid"`
|
||||
Order types.Int64 `tfsdk:"order"`
|
||||
Params types.String `tfsdk:"params"`
|
||||
ParentID types.Int64 `tfsdk:"parent_id"`
|
||||
PCISlot types.Int64 `tfsdk:"pci_slot"`
|
||||
PresentTo types.List `tfsdk:"present_to"`
|
||||
PresentTo types.Map `tfsdk:"present_to"`
|
||||
PurgeTime types.Int64 `tfsdk:"purge_time"`
|
||||
ResID types.String `tfsdk:"res_id"`
|
||||
ResName types.String `tfsdk:"res_name"`
|
||||
@@ -51,6 +55,8 @@ type ResourceDiskModel struct {
|
||||
Snapshots types.List `tfsdk:"snapshots"`
|
||||
Status types.String `tfsdk:"status"`
|
||||
TechStatus types.String `tfsdk:"tech_status"`
|
||||
UpdatedBy types.String `tfsdk:"updated_by"`
|
||||
UpdatedTime types.Int64 `tfsdk:"updated_time"`
|
||||
VMID types.Int64 `tfsdk:"vmid"`
|
||||
}
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ type ResourceRecordDiskReplicationModel struct {
|
||||
ParentID types.Int64 `tfsdk:"parent_id"`
|
||||
PCISlot types.Int64 `tfsdk:"pci_slot"`
|
||||
Pool types.String `tfsdk:"pool"`
|
||||
PresentTo types.List `tfsdk:"present_to"`
|
||||
PresentTo types.Map `tfsdk:"present_to"`
|
||||
PurgeTime types.Int64 `tfsdk:"purge_time"`
|
||||
Replication types.Object `tfsdk:"replication"`
|
||||
ResID types.String `tfsdk:"res_id"`
|
||||
|
||||
@@ -51,7 +51,6 @@ func (r *resourceDisk) Create(ctx context.Context, req resource.CreateRequest, r
|
||||
"account_id": plan.AccountID.ValueInt64(),
|
||||
"disk_name": plan.DiskName.ValueString(),
|
||||
"size_max": plan.SizeMax.ValueInt64(),
|
||||
"gid": plan.GID.ValueInt64(),
|
||||
}
|
||||
tflog.Info(ctx, "Create resourceDisk: got plan successfully", contextCreateMap)
|
||||
tflog.Info(ctx, "Create resourceDisk: start creating", contextCreateMap)
|
||||
@@ -67,7 +66,6 @@ func (r *resourceDisk) Create(ctx context.Context, req resource.CreateRequest, r
|
||||
"account_id": plan.AccountID.ValueInt64(),
|
||||
"disk_name": plan.DiskName.ValueString(),
|
||||
"size_max": plan.SizeMax.ValueInt64(),
|
||||
"gid": plan.GID.ValueInt64(),
|
||||
"createTimeout": createTimeout})
|
||||
|
||||
ctx, cancel := context.WithTimeout(ctx, createTimeout)
|
||||
@@ -93,7 +91,7 @@ func (r *resourceDisk) Create(ctx context.Context, req resource.CreateRequest, r
|
||||
)
|
||||
return
|
||||
}
|
||||
plan.Id = types.StringValue(strconv.Itoa(int(diskId)))
|
||||
plan.ID = types.StringValue(strconv.Itoa(int(diskId)))
|
||||
tflog.Info(ctx, "Create resourceDisk: disk created", map[string]any{"diskId": diskId, "disk_name": plan.DiskName.ValueString()})
|
||||
|
||||
// additional settings after disk creation: in case of failures, warnings are added to resp.Diagnostics,
|
||||
@@ -137,7 +135,7 @@ func (r *resourceDisk) Read(ctx context.Context, req resource.ReadRequest, resp
|
||||
tflog.Error(ctx, "Read resourceDisk: Error get state")
|
||||
return
|
||||
}
|
||||
tflog.Info(ctx, "Read resourceDisk: got state successfully", map[string]any{"disk_id": state.Id.ValueString()})
|
||||
tflog.Info(ctx, "Read resourceDisk: got state successfully", map[string]any{"disk_id": state.ID.ValueString()})
|
||||
|
||||
// Set timeouts
|
||||
readTimeout, diags := state.Timeouts.Read(ctx, constants.Timeout300s)
|
||||
@@ -147,7 +145,7 @@ func (r *resourceDisk) Read(ctx context.Context, req resource.ReadRequest, resp
|
||||
return
|
||||
}
|
||||
tflog.Info(ctx, "Read resourceDisk: set timeouts successfully", map[string]any{
|
||||
"disk_id": state.Id.ValueString(),
|
||||
"disk_id": state.ID.ValueString(),
|
||||
"readTimeout": readTimeout})
|
||||
|
||||
ctx, cancel := context.WithTimeout(ctx, readTimeout)
|
||||
@@ -185,7 +183,7 @@ func (r *resourceDisk) Update(ctx context.Context, req resource.UpdateRequest, r
|
||||
tflog.Error(ctx, "Update resourceDisk: Error receiving the plan")
|
||||
return
|
||||
}
|
||||
tflog.Info(ctx, "Update resourceDisk: got plan successfully", map[string]any{"disk_id": plan.Id.ValueString()})
|
||||
tflog.Info(ctx, "Update resourceDisk: got plan successfully", map[string]any{"disk_id": plan.ID.ValueString()})
|
||||
|
||||
// Retrieve values from state
|
||||
var state models.ResourceDiskModel
|
||||
@@ -194,7 +192,7 @@ func (r *resourceDisk) Update(ctx context.Context, req resource.UpdateRequest, r
|
||||
tflog.Error(ctx, "Update resourceDisk: Error receiving the state")
|
||||
return
|
||||
}
|
||||
tflog.Info(ctx, "Update resourceDisk: got state successfully", map[string]any{"disk_id": state.Id.ValueString()})
|
||||
tflog.Info(ctx, "Update resourceDisk: got state successfully", map[string]any{"disk_id": state.ID.ValueString()})
|
||||
|
||||
// Set timeouts
|
||||
updateTimeout, diags := plan.Timeouts.Update(ctx, constants.Timeout300s)
|
||||
@@ -204,22 +202,22 @@ func (r *resourceDisk) Update(ctx context.Context, req resource.UpdateRequest, r
|
||||
return
|
||||
}
|
||||
tflog.Info(ctx, "Update resourceDisk: set timeouts successfully", map[string]any{
|
||||
"disk_id": state.Id.ValueString(),
|
||||
"disk_id": state.ID.ValueString(),
|
||||
"updateTimeout": updateTimeout})
|
||||
|
||||
ctx, cancel := context.WithTimeout(ctx, updateTimeout)
|
||||
defer cancel()
|
||||
|
||||
// Checking if inputs are valid
|
||||
tflog.Info(ctx, "Update resourceDisk: starting input checks", map[string]any{"disk_id": plan.Id.ValueString()})
|
||||
tflog.Info(ctx, "Update resourceDisk: starting input checks", map[string]any{"disk_id": plan.ID.ValueString()})
|
||||
resp.Diagnostics.Append(resourceDiskUpdateInputChecks(ctx, &plan, &state, r.client)...)
|
||||
if resp.Diagnostics.HasError() {
|
||||
tflog.Error(ctx, "Update resourceDisk: Error input checks")
|
||||
return
|
||||
}
|
||||
tflog.Info(ctx, "Update resourceDisk: input checks successful", map[string]any{"disk_id": state.Id.ValueString()})
|
||||
tflog.Info(ctx, "Update resourceDisk: input checks successful", map[string]any{"disk_id": state.ID.ValueString()})
|
||||
|
||||
diskId, err := strconv.Atoi(state.Id.ValueString())
|
||||
diskId, err := strconv.Atoi(state.ID.ValueString())
|
||||
if err != nil {
|
||||
resp.Diagnostics.AddError("Update resourceDisk: Cannot parse disk ID from state", err.Error())
|
||||
return
|
||||
@@ -261,7 +259,7 @@ func (r *resourceDisk) Update(ctx context.Context, req resource.UpdateRequest, r
|
||||
}
|
||||
}
|
||||
|
||||
tflog.Info(ctx, "Update resourceDisk: disk update is completed", map[string]any{"disk_id": plan.Id.ValueString()})
|
||||
tflog.Info(ctx, "Update resourceDisk: disk update is completed", map[string]any{"disk_id": plan.ID.ValueString()})
|
||||
|
||||
// Map response body to schema and populate Computed attribute values
|
||||
resp.Diagnostics.Append(flattens.DiskResource(ctx, &plan, r.client)...)
|
||||
@@ -288,7 +286,7 @@ func (r *resourceDisk) Delete(ctx context.Context, req resource.DeleteRequest, r
|
||||
tflog.Error(ctx, "Delete resourceDisk: Error get state")
|
||||
return
|
||||
}
|
||||
tflog.Info(ctx, "Delete resourceDisk: got state successfully", map[string]any{"disk_id": state.Id.ValueString()})
|
||||
tflog.Info(ctx, "Delete resourceDisk: got state successfully", map[string]any{"disk_id": state.ID.ValueString()})
|
||||
|
||||
// Set timeouts
|
||||
deleteTimeout, diags := state.Timeouts.Delete(ctx, constants.Timeout300s)
|
||||
@@ -298,7 +296,7 @@ func (r *resourceDisk) Delete(ctx context.Context, req resource.DeleteRequest, r
|
||||
return
|
||||
}
|
||||
tflog.Info(ctx, "Delete resourceDisk: set timeouts successfully", map[string]any{
|
||||
"disk_id": state.Id.ValueString(),
|
||||
"disk_id": state.ID.ValueString(),
|
||||
"deleteTimeout": deleteTimeout})
|
||||
|
||||
ctx, cancel := context.WithTimeout(ctx, deleteTimeout)
|
||||
@@ -306,7 +304,7 @@ func (r *resourceDisk) Delete(ctx context.Context, req resource.DeleteRequest, r
|
||||
|
||||
// Delete existing resource group
|
||||
delReq := disks.DeleteRequest{
|
||||
DiskID: uint64(state.DiskId.ValueInt64()),
|
||||
DiskID: uint64(state.DiskID.ValueInt64()),
|
||||
Detach: state.Detach.ValueBool(), // default false
|
||||
Permanently: state.Permanently.ValueBool(), // default false
|
||||
}
|
||||
@@ -318,7 +316,7 @@ func (r *resourceDisk) Delete(ctx context.Context, req resource.DeleteRequest, r
|
||||
return
|
||||
}
|
||||
|
||||
tflog.Info(ctx, "End delete resourceDisk", map[string]any{"disk_id": state.Id.ValueString()})
|
||||
tflog.Info(ctx, "End delete resourceDisk", map[string]any{"disk_id": state.ID.ValueString()})
|
||||
}
|
||||
|
||||
// Schema defines the schema for the resource.
|
||||
|
||||
@@ -38,9 +38,15 @@ func MakeSchemaDataSourceDisk() map[string]schema.Attribute {
|
||||
},
|
||||
},
|
||||
},
|
||||
"created_by": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"created_time": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"deleted_by": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"deleted_time": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
@@ -61,7 +67,7 @@ func MakeSchemaDataSourceDisk() map[string]schema.Attribute {
|
||||
},
|
||||
"images": schema.ListAttribute{
|
||||
Computed: true,
|
||||
ElementType: types.StringType,
|
||||
ElementType: types.Int64Type,
|
||||
},
|
||||
"iotune": schema.SingleNestedAttribute{
|
||||
Computed: true,
|
||||
@@ -110,6 +116,15 @@ func MakeSchemaDataSourceDisk() map[string]schema.Attribute {
|
||||
"disk_name": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"machine_id": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"machine_name": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"milestones": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"order": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
@@ -125,7 +140,7 @@ func MakeSchemaDataSourceDisk() map[string]schema.Attribute {
|
||||
"pool": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"present_to": schema.ListAttribute{
|
||||
"present_to": schema.MapAttribute{
|
||||
Computed: true,
|
||||
ElementType: types.Int64Type,
|
||||
},
|
||||
@@ -150,6 +165,9 @@ func MakeSchemaDataSourceDisk() map[string]schema.Attribute {
|
||||
"shareable": schema.BoolAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"size_available": schema.Float64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"size_max": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
@@ -190,6 +208,12 @@ func MakeSchemaDataSourceDisk() map[string]schema.Attribute {
|
||||
"type": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"updated_by": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"updated_time": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"vmid": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
|
||||
@@ -91,9 +91,15 @@ func MakeSchemaDataSourceDiskList() map[string]schema.Attribute {
|
||||
},
|
||||
},
|
||||
},
|
||||
"created_by": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"created_time": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"deleted_by": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"deleted_time": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
@@ -117,7 +123,7 @@ func MakeSchemaDataSourceDiskList() map[string]schema.Attribute {
|
||||
},
|
||||
"images": schema.ListAttribute{
|
||||
Computed: true,
|
||||
ElementType: types.StringType,
|
||||
ElementType: types.Int64Type,
|
||||
},
|
||||
"iotune": schema.SingleNestedAttribute{
|
||||
Computed: true,
|
||||
@@ -169,6 +175,9 @@ func MakeSchemaDataSourceDiskList() map[string]schema.Attribute {
|
||||
"machine_name": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"milestones": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"disk_name": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
@@ -187,7 +196,7 @@ func MakeSchemaDataSourceDiskList() map[string]schema.Attribute {
|
||||
"pool": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"present_to": schema.ListAttribute{
|
||||
"present_to": schema.MapAttribute{
|
||||
Computed: true,
|
||||
ElementType: types.Int64Type,
|
||||
},
|
||||
@@ -212,6 +221,9 @@ func MakeSchemaDataSourceDiskList() map[string]schema.Attribute {
|
||||
"shareable": schema.BoolAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"size_available": schema.Float64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"size_max": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
@@ -252,6 +264,12 @@ func MakeSchemaDataSourceDiskList() map[string]schema.Attribute {
|
||||
"type": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"updated_by": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"updated_time": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"vmid": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
|
||||
@@ -79,9 +79,15 @@ func MakeSchemaDataSourceDiskListDeleted() map[string]schema.Attribute {
|
||||
},
|
||||
},
|
||||
},
|
||||
"created_by": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"created_time": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"deleted_by": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"deleted_time": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
@@ -105,7 +111,7 @@ func MakeSchemaDataSourceDiskListDeleted() map[string]schema.Attribute {
|
||||
},
|
||||
"images": schema.ListAttribute{
|
||||
Computed: true,
|
||||
ElementType: types.StringType,
|
||||
ElementType: types.Int64Type,
|
||||
},
|
||||
"iotune": schema.SingleNestedAttribute{
|
||||
Computed: true,
|
||||
@@ -157,6 +163,9 @@ func MakeSchemaDataSourceDiskListDeleted() map[string]schema.Attribute {
|
||||
"machine_name": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"milestones": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"disk_name": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
@@ -175,7 +184,7 @@ func MakeSchemaDataSourceDiskListDeleted() map[string]schema.Attribute {
|
||||
"pool": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"present_to": schema.ListAttribute{
|
||||
"present_to": schema.MapAttribute{
|
||||
Computed: true,
|
||||
ElementType: types.Int64Type,
|
||||
},
|
||||
@@ -200,6 +209,9 @@ func MakeSchemaDataSourceDiskListDeleted() map[string]schema.Attribute {
|
||||
"shareable": schema.BoolAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"size_available": schema.Float64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"size_max": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
@@ -240,6 +252,12 @@ func MakeSchemaDataSourceDiskListDeleted() map[string]schema.Attribute {
|
||||
"type": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"updated_by": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"updated_time": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"vmid": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
|
||||
@@ -109,7 +109,7 @@ func MakeSchemaDataSourceDiskListUnattached() map[string]schema.Attribute {
|
||||
},
|
||||
"images": schema.ListAttribute{
|
||||
Computed: true,
|
||||
ElementType: types.StringType,
|
||||
ElementType: types.Int64Type,
|
||||
},
|
||||
"iotune": schema.SingleNestedAttribute{
|
||||
Computed: true,
|
||||
|
||||
@@ -66,7 +66,7 @@ func MakeSchemaDataSourceDiskReplication() map[string]schema.Attribute {
|
||||
},
|
||||
"images": schema.ListAttribute{
|
||||
Computed: true,
|
||||
ElementType: types.StringType,
|
||||
ElementType: types.Int64Type,
|
||||
},
|
||||
"iotune": schema.SingleNestedAttribute{
|
||||
Computed: true,
|
||||
@@ -130,7 +130,7 @@ func MakeSchemaDataSourceDiskReplication() map[string]schema.Attribute {
|
||||
"pool": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"present_to": schema.ListAttribute{
|
||||
"present_to": schema.MapAttribute{
|
||||
Computed: true,
|
||||
ElementType: types.Int64Type,
|
||||
},
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
package schemas
|
||||
|
||||
import (
|
||||
"github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator"
|
||||
"github.com/hashicorp/terraform-plugin-framework/resource/schema"
|
||||
"github.com/hashicorp/terraform-plugin-framework/resource/schema/booldefault"
|
||||
"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"
|
||||
"github.com/hashicorp/terraform-plugin-framework/types"
|
||||
)
|
||||
|
||||
@@ -24,10 +23,6 @@ func MakeSchemaResourceDisk() map[string]schema.Attribute {
|
||||
Required: true,
|
||||
Description: "size in GB, default is 10",
|
||||
},
|
||||
"gid": schema.Int64Attribute{
|
||||
Required: true,
|
||||
Description: "ID of the grid (platform)",
|
||||
},
|
||||
|
||||
// optional attributes
|
||||
"desc": schema.StringAttribute{
|
||||
@@ -46,23 +41,21 @@ func MakeSchemaResourceDisk() map[string]schema.Attribute {
|
||||
Description: "Storage endpoint provider ID to create disk",
|
||||
},
|
||||
"type": schema.StringAttribute{
|
||||
Optional: true,
|
||||
Computed: true,
|
||||
Validators: []validator.String{
|
||||
stringvalidator.OneOf("B", "D", "T"), // case is not ignored
|
||||
},
|
||||
Computed: true,
|
||||
Description: "(B;D;T) B=Boot;D=Data;T=Temp",
|
||||
// default is D
|
||||
},
|
||||
"detach": schema.BoolAttribute{
|
||||
Optional: true,
|
||||
Computed: true,
|
||||
Description: "Detaching the disk from compute",
|
||||
// default is false
|
||||
Default: booldefault.StaticBool(true),
|
||||
},
|
||||
"permanently": schema.BoolAttribute{
|
||||
Optional: true,
|
||||
Computed: true,
|
||||
Description: "Whether to completely delete the disk, works only with non attached disks",
|
||||
// default is false
|
||||
Default: booldefault.StaticBool(true),
|
||||
},
|
||||
"shareable": schema.BoolAttribute{
|
||||
Optional: true,
|
||||
@@ -170,9 +163,15 @@ func MakeSchemaResourceDisk() map[string]schema.Attribute {
|
||||
},
|
||||
},
|
||||
},
|
||||
"created_by": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"created_time": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"deleted_by": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"deleted_time": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
@@ -187,12 +186,22 @@ func MakeSchemaResourceDisk() map[string]schema.Attribute {
|
||||
},
|
||||
"images": schema.ListAttribute{
|
||||
Computed: true,
|
||||
ElementType: types.StringType,
|
||||
ElementType: types.Int64Type,
|
||||
},
|
||||
"gid": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
Description: "ID of the grid (platform)",
|
||||
},
|
||||
"last_updated": schema.StringAttribute{
|
||||
Computed: true,
|
||||
Description: "Timestamp of the last Terraform update of the disk resource.",
|
||||
},
|
||||
"machine_id": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"machine_name": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"order": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
@@ -205,7 +214,7 @@ func MakeSchemaResourceDisk() map[string]schema.Attribute {
|
||||
"pci_slot": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"present_to": schema.ListAttribute{
|
||||
"present_to": schema.MapAttribute{
|
||||
Computed: true,
|
||||
ElementType: types.Int64Type,
|
||||
},
|
||||
@@ -258,6 +267,12 @@ func MakeSchemaResourceDisk() map[string]schema.Attribute {
|
||||
"tech_status": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"updated_by": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"updated_time": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
"vmid": schema.Int64Attribute{
|
||||
Computed: true,
|
||||
},
|
||||
|
||||
@@ -97,7 +97,7 @@ func MakeSchemaResourceDiskReplication() map[string]schema.Attribute {
|
||||
},
|
||||
"images": schema.ListAttribute{
|
||||
Computed: true,
|
||||
ElementType: types.StringType,
|
||||
ElementType: types.Int64Type,
|
||||
},
|
||||
"iotune": schema.SingleNestedAttribute{
|
||||
Computed: true,
|
||||
@@ -158,7 +158,7 @@ func MakeSchemaResourceDiskReplication() map[string]schema.Attribute {
|
||||
"pool": schema.StringAttribute{
|
||||
Computed: true,
|
||||
},
|
||||
"present_to": schema.ListAttribute{
|
||||
"present_to": schema.MapAttribute{
|
||||
Computed: true,
|
||||
ElementType: types.Int64Type,
|
||||
},
|
||||
|
||||
@@ -17,16 +17,16 @@ import (
|
||||
"repository.basistech.ru/BASIS/terraform-provider-dynamix/internal/service/cloudapi/disks/models"
|
||||
)
|
||||
|
||||
// DiskCheckPresence checks if disk with diskId exists
|
||||
func DiskCheckPresence(ctx context.Context, diskId uint64, c *client.Client) (*disks.RecordDisk, error) {
|
||||
tflog.Info(ctx, fmt.Sprintf("Get info about disk with ID - %v", diskId))
|
||||
// DiskCheckPresence checks if disk with diskID exists
|
||||
func DiskCheckPresence(ctx context.Context, diskID uint64, c *client.Client) (*disks.RecordDisk, error) {
|
||||
tflog.Info(ctx, fmt.Sprintf("Get info about disk with ID - %v", diskID))
|
||||
|
||||
diskRecord, err := c.CloudAPI().Disks().Get(ctx, disks.GetRequest{DiskID: diskId})
|
||||
diskRecord, err := c.CloudAPI().Disks().Get(ctx, disks.GetRequest{DiskID: diskID})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("cannot get info about disk with error: %w", err)
|
||||
}
|
||||
|
||||
tflog.Info(ctx, "DiskCheckPresence resourceDisk: response from CloudAPI().Disks().Get", map[string]any{"disk_id": diskId, "response": diskRecord})
|
||||
tflog.Info(ctx, "DiskCheckPresence resourceDisk: response from CloudAPI().Disks().Get", map[string]any{"disk_id": diskID, "response": diskRecord})
|
||||
|
||||
return diskRecord, err
|
||||
}
|
||||
@@ -37,7 +37,6 @@ func CreateRequestResourceDisk(ctx context.Context, plan *models.ResourceDiskMod
|
||||
"account_id": plan.AccountID.ValueInt64(),
|
||||
"disk_name": plan.DiskName.ValueString(),
|
||||
"size_max": plan.SizeMax.ValueInt64(),
|
||||
"gid": plan.GID.ValueInt64(),
|
||||
})
|
||||
|
||||
// set up required parameters in disk create request
|
||||
@@ -45,14 +44,8 @@ func CreateRequestResourceDisk(ctx context.Context, plan *models.ResourceDiskMod
|
||||
AccountID: uint64(plan.AccountID.ValueInt64()),
|
||||
Name: plan.DiskName.ValueString(),
|
||||
Size: uint64(plan.SizeMax.ValueInt64()),
|
||||
GID: uint64(plan.GID.ValueInt64()),
|
||||
}
|
||||
|
||||
if plan.Type.IsUnknown() {
|
||||
createReq.Type = "D" // default value
|
||||
} else {
|
||||
createReq.Type = plan.Type.ValueString()
|
||||
}
|
||||
if !plan.SEPID.IsUnknown() {
|
||||
createReq.SEPID = uint64(plan.SEPID.ValueInt64())
|
||||
}
|
||||
@@ -68,16 +61,16 @@ func CreateRequestResourceDisk(ctx context.Context, plan *models.ResourceDiskMod
|
||||
|
||||
// LimitIOCreateDisk sets IO limits that user specified in iotune field for created resource.
|
||||
// In case of failure returns warnings.
|
||||
func LimitIOCreateDisk(ctx context.Context, diskId uint64, plan *models.ResourceDiskModel, c *client.Client) diag.Diagnostics {
|
||||
func LimitIOCreateDisk(ctx context.Context, diskID uint64, plan *models.ResourceDiskModel, c *client.Client) diag.Diagnostics {
|
||||
diags := diag.Diagnostics{}
|
||||
|
||||
limitIOReq := disks.LimitIORequest{
|
||||
DiskID: diskId,
|
||||
DiskID: diskID,
|
||||
}
|
||||
|
||||
var iotunePlan models.IOTuneModel
|
||||
// plan.IOTune is not null as it was checked before call
|
||||
tflog.Info(ctx, "LimitIOCreateDisk: new iotune specified", map[string]any{"disk_id": diskId})
|
||||
tflog.Info(ctx, "LimitIOCreateDisk: new iotune specified", map[string]any{"disk_id": diskID})
|
||||
diags.Append(plan.IOTune.As(ctx, &iotunePlan, basetypes.ObjectAsOptions{})...)
|
||||
if diags.HasError() {
|
||||
tflog.Error(ctx, "LimitIOCreateDisk: cannot populate iotune with plan.IOTune object element")
|
||||
@@ -103,7 +96,7 @@ func LimitIOCreateDisk(ctx context.Context, diskId uint64, plan *models.Resource
|
||||
limitIOReq.WriteIOPSSecMax = uint64(iotunePlan.WriteIOPSSecMax.ValueInt64())
|
||||
|
||||
tflog.Info(ctx, "LimitIOCreateDisk: before calling CloudAPI().Disks().LimitIO", map[string]any{
|
||||
"disk_id": diskId,
|
||||
"disk_id": diskID,
|
||||
"limitIOReq": limitIOReq})
|
||||
res, err := c.CloudAPI().Disks().LimitIO(ctx, limitIOReq)
|
||||
if err != nil {
|
||||
@@ -111,7 +104,7 @@ func LimitIOCreateDisk(ctx context.Context, diskId uint64, plan *models.Resource
|
||||
err.Error())
|
||||
}
|
||||
tflog.Info(ctx, "LimitIOCreateDisk: response from CloudAPI().Disks().LimitIO", map[string]any{
|
||||
"disk_id": diskId,
|
||||
"disk_id": diskID,
|
||||
"response": res})
|
||||
|
||||
return diags
|
||||
@@ -119,17 +112,17 @@ func LimitIOCreateDisk(ctx context.Context, diskId uint64, plan *models.Resource
|
||||
|
||||
// ShareableCreateDisk shares disk.
|
||||
// In case of failure returns warnings.
|
||||
func ShareableCreateDisk(ctx context.Context, diskId uint64, c *client.Client) diag.Diagnostics {
|
||||
func ShareableCreateDisk(ctx context.Context, diskID uint64, c *client.Client) diag.Diagnostics {
|
||||
diags := diag.Diagnostics{}
|
||||
|
||||
tflog.Info(ctx, "ShareableCreateDisk: before calling CloudAPI().Disks().Share", map[string]any{"disk_id": diskId})
|
||||
res, err := c.CloudAPI().Disks().Share(ctx, disks.ShareRequest{DiskID: diskId})
|
||||
tflog.Info(ctx, "ShareableCreateDisk: before calling CloudAPI().Disks().Share", map[string]any{"disk_id": diskID})
|
||||
res, err := c.CloudAPI().Disks().Share(ctx, disks.ShareRequest{DiskID: diskID})
|
||||
if err != nil {
|
||||
diags.AddWarning("ShareableCreateDisk: Unable to share Disk",
|
||||
err.Error())
|
||||
}
|
||||
tflog.Info(ctx, "ShareableCreateDisk: response from CloudAPI().Disks().Share", map[string]any{
|
||||
"disk_id": diskId,
|
||||
"disk_id": diskID,
|
||||
"response": res})
|
||||
|
||||
return diags
|
||||
@@ -139,17 +132,17 @@ func ShareableCreateDisk(ctx context.Context, diskId uint64, c *client.Client) d
|
||||
// Deleted status.
|
||||
// In case of failure returns errors.
|
||||
func DiskReadStatus(ctx context.Context, state *models.ResourceDiskModel, c *client.Client) diag.Diagnostics {
|
||||
tflog.Info(ctx, "DiskReadStatus: Read status disk with ID", map[string]any{"disk_id": state.Id.ValueString()})
|
||||
tflog.Info(ctx, "DiskReadStatus: Read status disk with ID", map[string]any{"disk_id": state.ID.ValueString()})
|
||||
|
||||
diags := diag.Diagnostics{}
|
||||
|
||||
diskId, err := strconv.ParseUint(state.Id.ValueString(), 10, 64)
|
||||
diskID, err := strconv.ParseUint(state.ID.ValueString(), 10, 64)
|
||||
if err != nil {
|
||||
diags.AddError("DiskReadStatus: Cannot parse disk ID from state", err.Error())
|
||||
return diags
|
||||
}
|
||||
|
||||
recordDisk, err := DiskCheckPresence(ctx, diskId, c)
|
||||
recordDisk, err := DiskCheckPresence(ctx, diskID, c)
|
||||
if err != nil {
|
||||
diags.AddError("DiskReadStatus: Unable to Read Disk before status check", err.Error())
|
||||
return diags
|
||||
@@ -168,17 +161,17 @@ func DiskReadStatus(ctx context.Context, state *models.ResourceDiskModel, c *cli
|
||||
tflog.Info(ctx, "DiskReadStatus: disk with status.Deleted is being read, attempt to restore it", map[string]any{
|
||||
"disk_id": recordDisk.ID,
|
||||
"status": recordDisk.Status})
|
||||
diags.Append(RestoreDisk(ctx, diskId, c)...)
|
||||
diags.Append(RestoreDisk(ctx, diskID, c)...)
|
||||
if diags.HasError() {
|
||||
tflog.Error(ctx, "DiskReadStatus: cannot restore disk")
|
||||
return diags
|
||||
}
|
||||
tflog.Info(ctx, "DiskReadStatus: disk restored successfully", map[string]any{"disk_id": diskId})
|
||||
tflog.Info(ctx, "DiskReadStatus: disk restored successfully", map[string]any{"disk_id": diskID})
|
||||
state.LastUpdated = types.StringValue(time.Now().Format(time.RFC850))
|
||||
case status.Destroyed, status.Purged:
|
||||
diags.AddError(
|
||||
"DiskReadStatus: Disk is in status Destroyed or Purged",
|
||||
fmt.Sprintf("the resource with disk_id %d cannot be read because it has been destroyed or purged", diskId),
|
||||
fmt.Sprintf("the resource with disk_id %d cannot be read because it has been destroyed or purged", diskID),
|
||||
)
|
||||
return diags
|
||||
}
|
||||
@@ -188,14 +181,14 @@ func DiskReadStatus(ctx context.Context, state *models.ResourceDiskModel, c *cli
|
||||
|
||||
// RestoreDisk performs disk Restore request.
|
||||
// Returns error in case of failures.
|
||||
func RestoreDisk(ctx context.Context, diskId uint64, c *client.Client) diag.Diagnostics {
|
||||
func RestoreDisk(ctx context.Context, diskID uint64, c *client.Client) diag.Diagnostics {
|
||||
diags := diag.Diagnostics{}
|
||||
|
||||
restoreReq := disks.RestoreRequest{
|
||||
DiskID: diskId,
|
||||
DiskID: diskID,
|
||||
}
|
||||
|
||||
tflog.Info(ctx, "RestoreDisk: before calling CloudAPI().Disks().Restore", map[string]any{"diskId": diskId, "req": restoreReq})
|
||||
tflog.Info(ctx, "RestoreDisk: before calling CloudAPI().Disks().Restore", map[string]any{"diskID": diskID, "req": restoreReq})
|
||||
|
||||
res, err := c.CloudAPI().Disks().Restore(ctx, restoreReq)
|
||||
if err != nil {
|
||||
@@ -205,18 +198,18 @@ func RestoreDisk(ctx context.Context, diskId uint64, c *client.Client) diag.Diag
|
||||
)
|
||||
return diags
|
||||
}
|
||||
tflog.Info(ctx, "RestoreDisk: response from CloudAPI().Disks().Restore", map[string]any{"disk_id": diskId, "response": res})
|
||||
tflog.Info(ctx, "RestoreDisk: response from CloudAPI().Disks().Restore", map[string]any{"disk_id": diskID, "response": res})
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// SizeMaxUpdateDisk resizes disk.
|
||||
// Returns error in case of failures.
|
||||
func SizeMaxUpdateDisk(ctx context.Context, diskId uint64, plan, state *models.ResourceDiskModel, c *client.Client) diag.Diagnostics {
|
||||
func SizeMaxUpdateDisk(ctx context.Context, diskID uint64, plan, state *models.ResourceDiskModel, c *client.Client) diag.Diagnostics {
|
||||
var diags diag.Diagnostics
|
||||
|
||||
resizeReq := disks.ResizeRequest{
|
||||
DiskID: diskId,
|
||||
DiskID: diskID,
|
||||
}
|
||||
|
||||
// check if resize request is valid
|
||||
@@ -224,7 +217,7 @@ func SizeMaxUpdateDisk(ctx context.Context, diskId uint64, plan, state *models.R
|
||||
diags.AddError(
|
||||
"SizeMaxUpdateDisk: reducing disk size is not allowed",
|
||||
fmt.Sprintf("disk with id %s has state size %d, plan size %d",
|
||||
plan.Id.ValueString(),
|
||||
plan.ID.ValueString(),
|
||||
state.SizeMax.ValueInt64(),
|
||||
plan.SizeMax.ValueInt64()))
|
||||
return diags
|
||||
@@ -233,7 +226,7 @@ func SizeMaxUpdateDisk(ctx context.Context, diskId uint64, plan, state *models.R
|
||||
resizeReq.Size = uint64(plan.SizeMax.ValueInt64())
|
||||
|
||||
tflog.Info(ctx, "SizeMaxUpdateDisk: before calling CloudAPI().Disks().Resize2", map[string]any{
|
||||
"disk_id": plan.Id.ValueString(),
|
||||
"disk_id": plan.ID.ValueString(),
|
||||
"size_max_state": state.SizeMax.ValueInt64(),
|
||||
"size_max_plan": plan.SizeMax.ValueInt64(),
|
||||
"req": resizeReq,
|
||||
@@ -247,7 +240,7 @@ func SizeMaxUpdateDisk(ctx context.Context, diskId uint64, plan, state *models.R
|
||||
}
|
||||
|
||||
tflog.Info(ctx, "SizeMaxUpdateDisk: response from CloudAPI().Disks().Resize2", map[string]any{
|
||||
"disk_id": plan.Id.ValueString(),
|
||||
"disk_id": plan.ID.ValueString(),
|
||||
"response": res})
|
||||
|
||||
return nil
|
||||
@@ -255,16 +248,16 @@ func SizeMaxUpdateDisk(ctx context.Context, diskId uint64, plan, state *models.R
|
||||
|
||||
// NameUpdateDisk renames disk.
|
||||
// Returns error in case of failures.
|
||||
func NameUpdateDisk(ctx context.Context, diskId uint64, plan *models.ResourceDiskModel, c *client.Client) diag.Diagnostics {
|
||||
func NameUpdateDisk(ctx context.Context, diskID uint64, plan *models.ResourceDiskModel, c *client.Client) diag.Diagnostics {
|
||||
var diags diag.Diagnostics
|
||||
|
||||
renameReq := disks.RenameRequest{
|
||||
DiskID: diskId,
|
||||
DiskID: diskID,
|
||||
Name: plan.DiskName.ValueString(),
|
||||
}
|
||||
|
||||
tflog.Info(ctx, "NameUpdateDisk: before calling CloudAPI().Disks().Rename", map[string]any{
|
||||
"disk_id": plan.Id.ValueString(),
|
||||
"disk_id": plan.ID.ValueString(),
|
||||
"disk_name_plan": plan.DiskName.ValueString(),
|
||||
"req": renameReq,
|
||||
})
|
||||
@@ -277,7 +270,7 @@ func NameUpdateDisk(ctx context.Context, diskId uint64, plan *models.ResourceDis
|
||||
}
|
||||
|
||||
tflog.Info(ctx, "NameUpdateDisk: response from CloudAPI().Disks().Rename", map[string]any{
|
||||
"disk_id": plan.Id.ValueString(),
|
||||
"disk_id": plan.ID.ValueString(),
|
||||
"response": res})
|
||||
|
||||
return nil
|
||||
@@ -285,16 +278,16 @@ func NameUpdateDisk(ctx context.Context, diskId uint64, plan *models.ResourceDis
|
||||
|
||||
// LimitIOUpdateDisk changes IO limits that user specified in iotune field for updated resource.
|
||||
// In case of failure returns errors.
|
||||
func LimitIOUpdateDisk(ctx context.Context, diskId uint64, plan *models.ResourceDiskModel, c *client.Client) diag.Diagnostics {
|
||||
func LimitIOUpdateDisk(ctx context.Context, diskID uint64, plan *models.ResourceDiskModel, c *client.Client) diag.Diagnostics {
|
||||
diags := diag.Diagnostics{}
|
||||
|
||||
limitIOReq := disks.LimitIORequest{
|
||||
DiskID: diskId,
|
||||
DiskID: diskID,
|
||||
}
|
||||
|
||||
var iotunePlan models.IOTuneModel
|
||||
// plan.IOTune is not null as it was checked before call
|
||||
tflog.Info(ctx, "LimitIOUpdateDisk: new iotune specified", map[string]any{"disk_id": diskId})
|
||||
tflog.Info(ctx, "LimitIOUpdateDisk: new iotune specified", map[string]any{"disk_id": diskID})
|
||||
diags.Append(plan.IOTune.As(ctx, &iotunePlan, basetypes.ObjectAsOptions{})...)
|
||||
if diags.HasError() {
|
||||
tflog.Error(ctx, "LimitIOUpdateDisk: cannot populate iotune with plan.IOTune object element")
|
||||
@@ -320,7 +313,7 @@ func LimitIOUpdateDisk(ctx context.Context, diskId uint64, plan *models.Resource
|
||||
limitIOReq.WriteIOPSSecMax = uint64(iotunePlan.WriteIOPSSecMax.ValueInt64())
|
||||
|
||||
tflog.Info(ctx, "LimitIOUpdateDisk: before calling CloudAPI().Disks().LimitIO", map[string]any{
|
||||
"disk_id": diskId,
|
||||
"disk_id": diskID,
|
||||
"limitIOReq": limitIOReq})
|
||||
res, err := c.CloudAPI().Disks().LimitIO(ctx, limitIOReq)
|
||||
if err != nil {
|
||||
@@ -329,7 +322,7 @@ func LimitIOUpdateDisk(ctx context.Context, diskId uint64, plan *models.Resource
|
||||
return diags
|
||||
}
|
||||
tflog.Info(ctx, "LimitIOUpdateDisk: response from CloudAPI().Disks().LimitIO", map[string]any{
|
||||
"disk_id": diskId,
|
||||
"disk_id": diskID,
|
||||
"response": res})
|
||||
|
||||
return nil
|
||||
@@ -337,34 +330,34 @@ func LimitIOUpdateDisk(ctx context.Context, diskId uint64, plan *models.Resource
|
||||
|
||||
// ShareableUpdateDisk shares or unshares disk.
|
||||
// In case of failure returns errors.
|
||||
func ShareableUpdateDisk(ctx context.Context, diskId uint64, share bool, c *client.Client) diag.Diagnostics {
|
||||
func ShareableUpdateDisk(ctx context.Context, diskID uint64, share bool, c *client.Client) diag.Diagnostics {
|
||||
diags := diag.Diagnostics{}
|
||||
|
||||
// share
|
||||
if share {
|
||||
tflog.Info(ctx, "ShareableUpdateDisk: before calling CloudAPI().Disks().Share", map[string]any{"disk_id": diskId})
|
||||
res, err := c.CloudAPI().Disks().Share(ctx, disks.ShareRequest{DiskID: diskId})
|
||||
tflog.Info(ctx, "ShareableUpdateDisk: before calling CloudAPI().Disks().Share", map[string]any{"disk_id": diskID})
|
||||
res, err := c.CloudAPI().Disks().Share(ctx, disks.ShareRequest{DiskID: diskID})
|
||||
if err != nil {
|
||||
diags.AddError("ShareableUpdateDisk: Unable to share Disk",
|
||||
err.Error())
|
||||
return diags
|
||||
}
|
||||
tflog.Info(ctx, "ShareableUpdateDisk: response from CloudAPI().Disks().Share", map[string]any{
|
||||
"disk_id": diskId,
|
||||
"disk_id": diskID,
|
||||
"response": res})
|
||||
}
|
||||
|
||||
// unshare
|
||||
if !share {
|
||||
tflog.Info(ctx, "ShareableUpdateDisk: before calling CloudAPI().Disks().Unshare", map[string]any{"disk_id": diskId})
|
||||
res, err := c.CloudAPI().Disks().Unshare(ctx, disks.UnshareRequest{DiskID: diskId})
|
||||
tflog.Info(ctx, "ShareableUpdateDisk: before calling CloudAPI().Disks().Unshare", map[string]any{"disk_id": diskID})
|
||||
res, err := c.CloudAPI().Disks().Unshare(ctx, disks.UnshareRequest{DiskID: diskID})
|
||||
if err != nil {
|
||||
diags.AddError("ShareableUpdateDisk: Unable to unshare Disk",
|
||||
err.Error())
|
||||
return diags
|
||||
}
|
||||
tflog.Info(ctx, "ShareableUpdateDisk: response from CloudAPI().Disks().Unshare", map[string]any{
|
||||
"disk_id": diskId,
|
||||
"disk_id": diskID,
|
||||
"response": res})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user