From 6d57f730709480b48e1f629ce583bd63d0d7601c 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(