From efa528c4831161baa8278b5208499522f56cc124 Mon Sep 17 00:00:00 2001 From: Yun Liu Date: Mon, 21 Aug 2023 16:12:50 +0800 Subject: [PATCH 1/4] fix TestAccKeyVaultManagedStorageAccount_* --- .../keyvault/key_vault_managed_storage_account.go | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/internal/services/keyvault/key_vault_managed_storage_account.go b/internal/services/keyvault/key_vault_managed_storage_account.go index 730e01e574ca..6ee75150f921 100644 --- a/internal/services/keyvault/key_vault_managed_storage_account.go +++ b/internal/services/keyvault/key_vault_managed_storage_account.go @@ -169,12 +169,8 @@ func resourceKeyVaultManagedStorageAccountCreateUpdate(d *pluginsdk.ResourceData return fmt.Errorf("cannot read Managed Storage Account ID %q (Key Vault %q)", name, *keyVaultId) } - storageId, err := commonids.ParseStorageAccountID(*read.ID) - if err != nil { - return err - } - - d.SetId(storageId.ID()) + // This need to be set as this id instead of storage account resource id + d.SetId(*read.ID) return resourceKeyVaultManagedStorageAccountRead(d, meta) } From b130746450d459406bf74c3df76e891812cf6b91 Mon Sep 17 00:00:00 2001 From: "Yun Liu (from Dev Box)" Date: Thu, 7 Sep 2023 10:57:11 +0800 Subject: [PATCH 2/4] update parsing and id --- ...anaged_storage_account_sas_token_definition_resource.go | 7 ++++++- internal/services/keyvault/parse/sas_definition.go | 5 +++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/internal/services/keyvault/key_vault_managed_storage_account_sas_token_definition_resource.go b/internal/services/keyvault/key_vault_managed_storage_account_sas_token_definition_resource.go index ce7320c52c08..7dbfec42cb73 100644 --- a/internal/services/keyvault/key_vault_managed_storage_account_sas_token_definition_resource.go +++ b/internal/services/keyvault/key_vault_managed_storage_account_sas_token_definition_resource.go @@ -180,7 +180,12 @@ func resourceKeyVaultManagedStorageAccountSasTokenDefinitionCreateUpdate(d *plug return fmt.Errorf("cannot read Managed Storage Account Sas Definition %q (Storage Account %q, Key Vault %q)", name, storageAccount.Name, *keyVaultId) } - d.SetId(*read.ID) + storageId, err := parse.SasDefinitionID(*read.ID) + if err != nil { + return err + } + + d.SetId(storageId.ID()) return resourceKeyVaultManagedStorageAccountSasTokenDefinitionRead(d, meta) } diff --git a/internal/services/keyvault/parse/sas_definition.go b/internal/services/keyvault/parse/sas_definition.go index f6bb96fa519c..c9d73393795e 100644 --- a/internal/services/keyvault/parse/sas_definition.go +++ b/internal/services/keyvault/parse/sas_definition.go @@ -15,6 +15,11 @@ type SasDefinitionId struct { Name string } +func (i SasDefinitionId) ID() string { + fmtString := "%sstorage/%s/sas/%s" + return fmt.Sprintf(fmtString, i.KeyVaultBaseUrl, i.StorageAccountName, i.Name) +} + func SasDefinitionID(id string) (*SasDefinitionId, error) { // example: https://example-keyvault.vault.azure.net/storage/exampleStorageAcc01/sas/exampleSasDefinition01 idURL, err := url.ParseRequestURI(id) From be05d1754c726f4d4ad9d746c01ee197f1bde90e Mon Sep 17 00:00:00 2001 From: "Yun Liu (from Dev Box)" Date: Thu, 7 Sep 2023 11:15:32 +0800 Subject: [PATCH 3/4] update parsing and id --- .../keyvault/key_vault_managed_storage_account.go | 8 ++++++-- ...naged_storage_account_sas_token_definition_resource.go | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/internal/services/keyvault/key_vault_managed_storage_account.go b/internal/services/keyvault/key_vault_managed_storage_account.go index 6ee75150f921..cb63025dbdea 100644 --- a/internal/services/keyvault/key_vault_managed_storage_account.go +++ b/internal/services/keyvault/key_vault_managed_storage_account.go @@ -169,8 +169,12 @@ func resourceKeyVaultManagedStorageAccountCreateUpdate(d *pluginsdk.ResourceData return fmt.Errorf("cannot read Managed Storage Account ID %q (Key Vault %q)", name, *keyVaultId) } - // This need to be set as this id instead of storage account resource id - d.SetId(*read.ID) + storageId, err := keyVaultParse.ParseOptionallyVersionedNestedItemID(*read.ID) + if err != nil { + return err + } + + d.SetId(storageId.ID()) return resourceKeyVaultManagedStorageAccountRead(d, meta) } diff --git a/internal/services/keyvault/key_vault_managed_storage_account_sas_token_definition_resource.go b/internal/services/keyvault/key_vault_managed_storage_account_sas_token_definition_resource.go index 7dbfec42cb73..d4e7f5357468 100644 --- a/internal/services/keyvault/key_vault_managed_storage_account_sas_token_definition_resource.go +++ b/internal/services/keyvault/key_vault_managed_storage_account_sas_token_definition_resource.go @@ -180,12 +180,12 @@ func resourceKeyVaultManagedStorageAccountSasTokenDefinitionCreateUpdate(d *plug return fmt.Errorf("cannot read Managed Storage Account Sas Definition %q (Storage Account %q, Key Vault %q)", name, storageAccount.Name, *keyVaultId) } - storageId, err := parse.SasDefinitionID(*read.ID) + sasId, err := parse.SasDefinitionID(*read.ID) if err != nil { return err } - d.SetId(storageId.ID()) + d.SetId(sasId.ID()) return resourceKeyVaultManagedStorageAccountSasTokenDefinitionRead(d, meta) } From bce882d10d0c0d42c9d0a2da5acce9e5ea999a05 Mon Sep 17 00:00:00 2001 From: tombuildsstuff Date: Thu, 7 Sep 2023 18:09:02 +0200 Subject: [PATCH 4/4] keyvault: updating the NestedItem/SASDefinition parsers to force https and exclude the `/` from the BaseURI --- internal/services/keyvault/parse/nested_item.go | 2 +- internal/services/keyvault/parse/sas_definition.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/services/keyvault/parse/nested_item.go b/internal/services/keyvault/parse/nested_item.go index 0beed86564cb..baa588a2d63b 100644 --- a/internal/services/keyvault/parse/nested_item.go +++ b/internal/services/keyvault/parse/nested_item.go @@ -152,7 +152,7 @@ func parseNestedItemId(id string) (*NestedItemId, error) { nestedItemObjectType := NestedItemObjectType(components[0]) childId := NestedItemId{ - KeyVaultBaseUrl: fmt.Sprintf("%s://%s/", idURL.Scheme, idURL.Host), + KeyVaultBaseUrl: fmt.Sprintf("https://%s/", idURL.Host), NestedItemType: nestedItemObjectType, Name: components[1], Version: version, diff --git a/internal/services/keyvault/parse/sas_definition.go b/internal/services/keyvault/parse/sas_definition.go index c9d73393795e..4ce8d10a6ffb 100644 --- a/internal/services/keyvault/parse/sas_definition.go +++ b/internal/services/keyvault/parse/sas_definition.go @@ -16,7 +16,7 @@ type SasDefinitionId struct { } func (i SasDefinitionId) ID() string { - fmtString := "%sstorage/%s/sas/%s" + fmtString := "%s/storage/%s/sas/%s" return fmt.Sprintf(fmtString, i.KeyVaultBaseUrl, i.StorageAccountName, i.Name) } @@ -43,7 +43,7 @@ func SasDefinitionID(id string) (*SasDefinitionId, error) { } sasDefinitionId := SasDefinitionId{ - KeyVaultBaseUrl: fmt.Sprintf("%s://%s/", idURL.Scheme, idURL.Host), + KeyVaultBaseUrl: fmt.Sprintf("https://%s", idURL.Host), StorageAccountName: components[1], Name: components[3], }