From 145108d80fba305a4363417ef0f81c36c9bd8308 Mon Sep 17 00:00:00 2001 From: Stuart McLaren Date: Tue, 27 Aug 2024 15:49:41 +0100 Subject: [PATCH] Handle datastore id mismatch Handle the corner case where a returned datastore 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 datastore with hpegl_pc_datastore.test, on terraform_plugin_test.tf line 21, in resource "hpegl_pc_datastore" "test": 21: resource "hpegl_pc_datastore" "test" { 'id' mismatch: 698de955-87b5-5fe6-b683-78c3948beede != 698de955-87b5-5fe6-b683-78c3948beede ``` --- internal/resources/datastore/resource.go | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/internal/resources/datastore/resource.go b/internal/resources/datastore/resource.go index 7cd88c9..cd04233 100644 --- a/internal/resources/datastore/resource.go +++ b/internal/resources/datastore/resource.go @@ -147,6 +147,26 @@ func doRead( return } + if datastore.GetId() == nil { + (*diagsP).AddError( + "error reading datastore", + "'id' is nil", + ) + + return + } + + if *(datastore.GetId()) != datastoreID { + (*diagsP).AddError( + "error reading datastore", + fmt.Sprintf("'id' mismatch: %s != %s", + *(datastore.GetId()), datastoreID, + ), + ) + + return + } + datastoreName := datastore.GetName() if datastoreName == nil { (*diagsP).AddError(