pkg/armhelpers/storage.go (40 lines of code) (raw):
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.
package armhelpers
import (
"context"
"fmt"
"strings"
"github.com/Azure/azure-sdk-for-go/profile/p20200901/resourcemanager/compute/armcompute"
"github.com/Azure/azure-sdk-for-go/profile/p20200901/resourcemanager/storage/armstorage"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
"github.com/Azure/azure-sdk-for-go/sdk/storage/azblob"
)
func (az *AzureClient) DeleteVirtualHardDisk(ctx context.Context, resourceGroup string, vhd *armcompute.VirtualHardDisk) error {
ctx = policy.WithHTTPHeader(ctx, az.acceptLanguageHeader)
parts, err := azblob.ParseURL(*vhd.URI)
if err != nil {
return err
}
accountName := strings.Split(parts.Host, ".")[0]
keys, err := az.getStorageKeys(ctx, resourceGroup, accountName)
if err != nil {
return err
}
serviceURL := fmt.Sprintf("%s%s", parts.Scheme, parts.Host)
client, err := az.storageBlobClientFactory(serviceURL, *keys[0].Value)
if err != nil {
return err
}
_, err = client.DeleteBlob(ctx, parts.ContainerName, parts.BlobName, nil)
if err != nil {
return err
}
return nil
}
func (az *AzureClient) getStorageKeys(ctx context.Context, resourceGroup, accountName string) ([]*armstorage.AccountKey, error) {
ctx = policy.WithHTTPHeader(ctx, az.acceptLanguageHeader)
storageKeysResult, err := az.storageAccountsClient.ListKeys(ctx, resourceGroup, accountName, nil)
if err != nil {
return nil, err
}
return storageKeysResult.Keys, nil
}