fix: Updating values of "stackit_server" leads to an inconsistent result (#653)
* fix: updating values of "stackit_server" leads to an inconsistent result, when network_interfaces is set
This commit is contained in:
parent
b6f3c70f15
commit
bcc8be0822
1 changed files with 11 additions and 3 deletions
|
|
@ -727,11 +727,10 @@ func (r *serverResource) Update(ctx context.Context, req resource.UpdateRequest,
|
||||||
core.LogAndAddError(ctx, &resp.Diagnostics, "Error retrieving server state", fmt.Sprintf("Getting server state: %v", err))
|
core.LogAndAddError(ctx, &resp.Diagnostics, "Error retrieving server state", fmt.Sprintf("Getting server state: %v", err))
|
||||||
}
|
}
|
||||||
|
|
||||||
var updatedServer *iaas.Server
|
|
||||||
if model.DesiredStatus.ValueString() == modelStateDeallocated {
|
if model.DesiredStatus.ValueString() == modelStateDeallocated {
|
||||||
// if the target state is "deallocated", we have to perform the server update first
|
// if the target state is "deallocated", we have to perform the server update first
|
||||||
// and then shelve it afterwards. A shelved server cannot be updated
|
// and then shelve it afterwards. A shelved server cannot be updated
|
||||||
updatedServer, err = r.updateServerAttributes(ctx, &model, &stateModel)
|
_, err = r.updateServerAttributes(ctx, &model, &stateModel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating server", err.Error())
|
core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating server", err.Error())
|
||||||
return
|
return
|
||||||
|
|
@ -748,13 +747,22 @@ func (r *serverResource) Update(ctx context.Context, req resource.UpdateRequest,
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
updatedServer, err = r.updateServerAttributes(ctx, &model, &stateModel)
|
_, err = r.updateServerAttributes(ctx, &model, &stateModel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating server", err.Error())
|
core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating server", err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Re-fetch the server data, to get the details values.
|
||||||
|
serverReq := r.client.GetServer(ctx, projectId, serverId)
|
||||||
|
serverReq = serverReq.Details(true)
|
||||||
|
updatedServer, err := serverReq.Execute()
|
||||||
|
if err != nil {
|
||||||
|
core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating server", fmt.Sprintf("Calling API: %v", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
err = mapFields(ctx, updatedServer, &model)
|
err = mapFields(ctx, updatedServer, &model)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating server", fmt.Sprintf("Processing API payload: %v", err))
|
core.LogAndAddError(ctx, &resp.Diagnostics, "Error updating server", fmt.Sprintf("Processing API payload: %v", err))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue