pkg/armhelpers/groupsclient.go (35 lines of code) (raw):
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.
package armhelpers
import (
"context"
resources "github.com/Azure/azure-sdk-for-go/profile/p20200901/resourcemanager/resources/armresources"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/policy"
)
// EnsureResourceGroup ensures the named resource group exists in the given location.
func (az *AzureClient) EnsureResourceGroup(ctx context.Context, name, location string, managedBy *string) (resources.ResourceGroup, error) {
ctx = policy.WithHTTPHeader(ctx, az.acceptLanguageHeader)
var tags map[string]*string
group, err := az.groupsClient.Get(ctx, name, nil)
if err == nil {
tags = group.Tags
}
response, err := az.groupsClient.CreateOrUpdate(ctx, name, resources.ResourceGroup{
Name: &name,
Location: &location,
ManagedBy: managedBy,
Tags: tags,
}, nil)
if err != nil {
return resources.ResourceGroup{}, err
}
return response.ResourceGroup, nil
}
// DeleteResourceGroup delete the named resource group
func (az *AzureClient) DeleteResourceGroup(ctx context.Context, name string) error {
ctx = policy.WithHTTPHeader(ctx, az.acceptLanguageHeader)
poller, err := az.groupsClient.BeginDelete(ctx, name, nil)
if err != nil {
return err
}
if _, err = poller.PollUntilDone(ctx, nil); err != nil {
return err
}
return err
}