From 9472d7f2b5ed9086c092c4c569efb202fc4acd41 Mon Sep 17 00:00:00 2001 From: Stuart McLaren Date: Tue, 27 Aug 2024 16:32:06 +0100 Subject: [PATCH] Handle server id mismatch Handle the corner case where a returned server id may not match the id in the current terraform state. This should never happen because id's are immutable. If it does ever occur we will not overwrite any state and will instead raise this error: ``` Error: error reading server with hpegl_pc_server.test, on terraform_plugin_test.tf line 21, in resource "hpegl_pc_server" "test": 21: resource "hpegl_pc_server" "test" { 'id' mismatch: 697e8cbf-df7e-570c-a3c7-912d4ce8375a != 697e8cbf-df7e-570c-a3c7-912d4ce8375a ``` --- internal/resources/server/resource.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/internal/resources/server/resource.go b/internal/resources/server/resource.go index 2119983..6fbac8d 100644 --- a/internal/resources/server/resource.go +++ b/internal/resources/server/resource.go @@ -2,6 +2,7 @@ package server import ( "context" + "fmt" "github.com/HewlettPackard/hpegl-pcbe-terraform-resources/internal/client" "github.com/HewlettPackard/hpegl-pcbe-terraform-resources/internal/sdk/systems/privatecloudbusiness" @@ -101,6 +102,17 @@ func doRead( return } + if *(server.GetId()) != serverID { + (*diagsP).AddError( + "error reading server", + fmt.Sprintf("'id' mismatch: %s != %s", + *(server.GetId()), serverID, + ), + ) + + return + } + if server.GetName() == nil { (*diagsP).AddError( "error reading server",