in internal/provider/diskpool_data_source.go [267:363]
func (d *diskpoolDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) {
var state diskPoolResourceModel
// Read Terraform configuration data into the model
resp.Diagnostics.Append(req.Config.Get(ctx, &state)...)
diskpool, res, err := d.client.DiskPoolApi.GetDiskPool(d.authCtx, state.ID.ValueString())
if err != nil {
resp.Diagnostics.AddError(
"Unable to Read BackupDR DiskPool",
err.Error(),
)
return
}
if res.StatusCode != 200 {
resp.Diagnostics.AddError(
"Unable to Read BackupDR DiskPool",
res.Status,
)
return
}
// Map response body to model
state = diskPoolResourceModel{
Name: types.StringValue(diskpool.Name),
ID: types.StringValue(diskpool.Id),
Pooltype: types.StringValue(diskpool.Pooltype),
State: types.StringValue(diskpool.State),
Srcid: types.StringValue(diskpool.Srcid),
Status: types.StringValue(diskpool.Status),
Mdiskgrp: types.StringValue(diskpool.Mdiskgrp),
Pooltypedisplayname: types.StringValue(diskpool.Pooltypedisplayname),
Href: types.StringValue(diskpool.Href),
Usedefaultsa: types.BoolValue(diskpool.Usedefaultsa),
Immutable: types.BoolValue(diskpool.Immutable),
Metadataonly: types.BoolValue(diskpool.Metadataonly),
Stale: types.BoolValue(diskpool.Stale),
Modifydate: types.Int64Value(diskpool.Modifydate),
Warnpct: types.Int64Value(int64(diskpool.Warnpct)),
Safepct: types.Int64Value(int64(diskpool.Safepct)),
Udsuid: types.Int64Value(int64(diskpool.Udsuid)),
FreeMb: types.Int64Value(diskpool.FreeMb),
UsageMb: types.Int64Value(diskpool.UsageMb),
CapacityMb: types.Int64Value(diskpool.CapacityMb),
Syncdate: types.Int64Value(diskpool.Syncdate),
}
for _, prop := range diskpool.Properties {
state.Properties = append(state.Properties, keyValueRestModel{
Key: types.StringValue(prop.Key),
Value: types.StringValue(prop.Value),
})
}
if diskpool.Cluster != nil {
state.ApplianceClusterID = types.StringValue(diskpool.Cluster.Clusterid)
state.Cluster = &ClusterRest{
Clusterid: types.StringValue(diskpool.Cluster.Clusterid),
Serviceaccount: types.StringValue(diskpool.Cluster.Serviceaccount),
Zone: types.StringValue(diskpool.Cluster.Zone),
Region: types.StringValue(diskpool.Cluster.Region),
Projectid: types.StringValue(diskpool.Cluster.Projectid),
Version: types.StringValue(diskpool.Cluster.Version),
Name: types.StringValue(diskpool.Cluster.Name),
Type: types.StringValue(diskpool.Cluster.Type_),
Ipaddress: types.StringValue(diskpool.Cluster.Ipaddress),
Publicip: types.StringValue(diskpool.Cluster.Publicip),
Secureconnect: types.BoolValue(diskpool.Cluster.Secureconnect),
PkiBootstrapped: types.BoolValue(diskpool.Cluster.PkiBootstrapped),
Supportstatus: types.StringValue(diskpool.Cluster.Supportstatus),
ID: types.StringValue(diskpool.Cluster.Id),
Href: types.StringValue(diskpool.Cluster.Href),
Syncdate: types.Int64Value(diskpool.Cluster.Syncdate),
Stale: types.BoolValue(diskpool.Cluster.Stale),
}
}
if diskpool.Vaultprops != nil {
state.Vaultprops = &vaultPropsRest{
Bucket: types.StringValue(diskpool.Vaultprops.Bucket),
Compression: types.BoolValue(diskpool.Vaultprops.Compression),
Region: types.StringValue(diskpool.Vaultprops.Region),
ID: types.StringValue(diskpool.Vaultprops.Id),
Href: types.StringValue(diskpool.Vaultprops.Href),
Syncdate: types.Int64Value(diskpool.Vaultprops.Syncdate),
Stale: types.BoolValue(diskpool.Vaultprops.Stale),
}
}
// Save data into Terraform state
resp.Diagnostics.Append(resp.State.Set(ctx, &state)...)
if resp.Diagnostics.HasError() {
return
}
}