Skip to content

Commit e069b94

Browse files
authored
Merge pull request #1764 from gruntwork-io/fix/azure-v1-readiness
fix(azure): API cleanup and correctness fixes
2 parents 0c678a0 + 400b513 commit e069b94

18 files changed

Lines changed: 143 additions & 79 deletions

modules/azure/client_factory.go

Lines changed: 78 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
// Package azure allows users to interact with resources on the Microsoft Azure platform.
22
package azure
33

4-
// snippet-tag-start::client_factory_example.imports
5-
64
import (
75
"context"
86
"errors"
@@ -35,8 +33,6 @@ import (
3533
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/synapse/armsynapse"
3634
)
3735

38-
// snippet-tag-end::client_factory_example.imports
39-
4036
const (
4137
// AzureEnvironmentEnvName is the name of the Azure environment to use. Set to one of the following:
4238
//
@@ -791,9 +787,9 @@ func CreateNsgCustomRulesClientE(subscriptionID string) (*armnetwork.SecurityRul
791787
return CreateNsgCustomRulesClientContextE(context.Background(), subscriptionID)
792788
}
793789

794-
// CreateNewNetworkInterfacesClientContextE returns a network interfaces client.
790+
// CreateNetworkInterfacesClientContextE returns a network interfaces client.
795791
// The ctx parameter supports cancellation and timeouts.
796-
func CreateNewNetworkInterfacesClientContextE(_ context.Context, subscriptionID string) (*armnetwork.InterfacesClient, error) {
792+
func CreateNetworkInterfacesClientContextE(_ context.Context, subscriptionID string) (*armnetwork.InterfacesClient, error) {
797793
clientFactory, err := getArmNetworkClientFactory(subscriptionID)
798794
if err != nil {
799795
return nil, err
@@ -802,16 +798,30 @@ func CreateNewNetworkInterfacesClientContextE(_ context.Context, subscriptionID
802798
return clientFactory.NewInterfacesClient(), nil
803799
}
804800

805-
// CreateNewNetworkInterfacesClientE returns a network interfaces client.
801+
// CreateNetworkInterfacesClientE returns a network interfaces client.
806802
//
807-
// Deprecated: Use [CreateNewNetworkInterfacesClientContextE] instead.
803+
// Deprecated: Use [CreateNetworkInterfacesClientContextE] instead.
804+
func CreateNetworkInterfacesClientE(subscriptionID string) (*armnetwork.InterfacesClient, error) {
805+
return CreateNetworkInterfacesClientContextE(context.Background(), subscriptionID)
806+
}
807+
808+
// CreateNewNetworkInterfacesClientContextE is an alias for backward compatibility.
809+
//
810+
// Deprecated: Use [CreateNetworkInterfacesClientContextE] instead.
811+
func CreateNewNetworkInterfacesClientContextE(ctx context.Context, subscriptionID string) (*armnetwork.InterfacesClient, error) {
812+
return CreateNetworkInterfacesClientContextE(ctx, subscriptionID)
813+
}
814+
815+
// CreateNewNetworkInterfacesClientE is an alias for backward compatibility.
816+
//
817+
// Deprecated: Use [CreateNetworkInterfacesClientContextE] instead.
808818
func CreateNewNetworkInterfacesClientE(subscriptionID string) (*armnetwork.InterfacesClient, error) {
809-
return CreateNewNetworkInterfacesClientContextE(context.Background(), subscriptionID)
819+
return CreateNetworkInterfacesClientContextE(context.Background(), subscriptionID)
810820
}
811821

812-
// CreateNewNetworkInterfaceIPConfigurationClientContextE returns a NIC IP configuration client.
822+
// CreateNetworkInterfaceIPConfigurationClientContextE returns a NIC IP configuration client.
813823
// The ctx parameter supports cancellation and timeouts.
814-
func CreateNewNetworkInterfaceIPConfigurationClientContextE(_ context.Context, subscriptionID string) (*armnetwork.InterfaceIPConfigurationsClient, error) {
824+
func CreateNetworkInterfaceIPConfigurationClientContextE(_ context.Context, subscriptionID string) (*armnetwork.InterfaceIPConfigurationsClient, error) {
815825
clientFactory, err := getArmNetworkClientFactory(subscriptionID)
816826
if err != nil {
817827
return nil, err
@@ -820,11 +830,25 @@ func CreateNewNetworkInterfaceIPConfigurationClientContextE(_ context.Context, s
820830
return clientFactory.NewInterfaceIPConfigurationsClient(), nil
821831
}
822832

823-
// CreateNewNetworkInterfaceIPConfigurationClientE returns a NIC IP configuration client.
833+
// CreateNetworkInterfaceIPConfigurationClientE returns a NIC IP configuration client.
834+
//
835+
// Deprecated: Use [CreateNetworkInterfaceIPConfigurationClientContextE] instead.
836+
func CreateNetworkInterfaceIPConfigurationClientE(subscriptionID string) (*armnetwork.InterfaceIPConfigurationsClient, error) {
837+
return CreateNetworkInterfaceIPConfigurationClientContextE(context.Background(), subscriptionID)
838+
}
839+
840+
// CreateNewNetworkInterfaceIPConfigurationClientContextE is an alias for backward compatibility.
841+
//
842+
// Deprecated: Use [CreateNetworkInterfaceIPConfigurationClientContextE] instead.
843+
func CreateNewNetworkInterfaceIPConfigurationClientContextE(ctx context.Context, subscriptionID string) (*armnetwork.InterfaceIPConfigurationsClient, error) {
844+
return CreateNetworkInterfaceIPConfigurationClientContextE(ctx, subscriptionID)
845+
}
846+
847+
// CreateNewNetworkInterfaceIPConfigurationClientE is an alias for backward compatibility.
824848
//
825-
// Deprecated: Use [CreateNewNetworkInterfaceIPConfigurationClientContextE] instead.
849+
// Deprecated: Use [CreateNetworkInterfaceIPConfigurationClientContextE] instead.
826850
func CreateNewNetworkInterfaceIPConfigurationClientE(subscriptionID string) (*armnetwork.InterfaceIPConfigurationsClient, error) {
827-
return CreateNewNetworkInterfaceIPConfigurationClientContextE(context.Background(), subscriptionID)
851+
return CreateNetworkInterfaceIPConfigurationClientContextE(context.Background(), subscriptionID)
828852
}
829853

830854
// CreatePublicIPAddressesClientContextE returns a public IP addresses client.
@@ -881,9 +905,9 @@ func CreateLoadBalancerFrontendIPConfigClientE(subscriptionID string) (*armnetwo
881905
return CreateLoadBalancerFrontendIPConfigClientContextE(context.Background(), subscriptionID)
882906
}
883907

884-
// CreateNewSubnetClientContextE returns a subnet client.
908+
// CreateSubnetClientContextE returns a subnet client.
885909
// The ctx parameter supports cancellation and timeouts.
886-
func CreateNewSubnetClientContextE(_ context.Context, subscriptionID string) (*armnetwork.SubnetsClient, error) {
910+
func CreateSubnetClientContextE(_ context.Context, subscriptionID string) (*armnetwork.SubnetsClient, error) {
887911
clientFactory, err := getArmNetworkClientFactory(subscriptionID)
888912
if err != nil {
889913
return nil, err
@@ -892,11 +916,25 @@ func CreateNewSubnetClientContextE(_ context.Context, subscriptionID string) (*a
892916
return clientFactory.NewSubnetsClient(), nil
893917
}
894918

895-
// CreateNewSubnetClientE returns a subnet client.
919+
// CreateSubnetClientE returns a subnet client.
920+
//
921+
// Deprecated: Use [CreateSubnetClientContextE] instead.
922+
func CreateSubnetClientE(subscriptionID string) (*armnetwork.SubnetsClient, error) {
923+
return CreateSubnetClientContextE(context.Background(), subscriptionID)
924+
}
925+
926+
// CreateNewSubnetClientContextE is an alias for backward compatibility.
927+
//
928+
// Deprecated: Use [CreateSubnetClientContextE] instead.
929+
func CreateNewSubnetClientContextE(ctx context.Context, subscriptionID string) (*armnetwork.SubnetsClient, error) {
930+
return CreateSubnetClientContextE(ctx, subscriptionID)
931+
}
932+
933+
// CreateNewSubnetClientE is an alias for backward compatibility.
896934
//
897-
// Deprecated: Use [CreateNewSubnetClientContextE] instead.
935+
// Deprecated: Use [CreateSubnetClientContextE] instead.
898936
func CreateNewSubnetClientE(subscriptionID string) (*armnetwork.SubnetsClient, error) {
899-
return CreateNewSubnetClientContextE(context.Background(), subscriptionID)
937+
return CreateSubnetClientContextE(context.Background(), subscriptionID)
900938
}
901939

902940
// CreateNetworkManagementClientContextE returns a network management client.
@@ -917,9 +955,9 @@ func CreateNetworkManagementClientE(subscriptionID string) (*armnetwork.Manageme
917955
return CreateNetworkManagementClientContextE(context.Background(), subscriptionID)
918956
}
919957

920-
// CreateNewVirtualNetworkClientContextE returns a virtual network client.
958+
// CreateVirtualNetworkClientContextE returns a virtual network client.
921959
// The ctx parameter supports cancellation and timeouts.
922-
func CreateNewVirtualNetworkClientContextE(_ context.Context, subscriptionID string) (*armnetwork.VirtualNetworksClient, error) {
960+
func CreateVirtualNetworkClientContextE(_ context.Context, subscriptionID string) (*armnetwork.VirtualNetworksClient, error) {
923961
clientFactory, err := getArmNetworkClientFactory(subscriptionID)
924962
if err != nil {
925963
return nil, err
@@ -928,15 +966,28 @@ func CreateNewVirtualNetworkClientContextE(_ context.Context, subscriptionID str
928966
return clientFactory.NewVirtualNetworksClient(), nil
929967
}
930968

931-
// CreateNewVirtualNetworkClientE returns a virtual network client.
969+
// CreateVirtualNetworkClientE returns a virtual network client.
970+
//
971+
// Deprecated: Use [CreateVirtualNetworkClientContextE] instead.
972+
func CreateVirtualNetworkClientE(subscriptionID string) (*armnetwork.VirtualNetworksClient, error) {
973+
return CreateVirtualNetworkClientContextE(context.Background(), subscriptionID)
974+
}
975+
976+
// CreateNewVirtualNetworkClientContextE is an alias for backward compatibility.
977+
//
978+
// Deprecated: Use [CreateVirtualNetworkClientContextE] instead.
979+
func CreateNewVirtualNetworkClientContextE(ctx context.Context, subscriptionID string) (*armnetwork.VirtualNetworksClient, error) {
980+
return CreateVirtualNetworkClientContextE(ctx, subscriptionID)
981+
}
982+
983+
// CreateNewVirtualNetworkClientE is an alias for backward compatibility.
932984
//
933-
// Deprecated: Use [CreateNewVirtualNetworkClientContextE] instead.
985+
// Deprecated: Use [CreateVirtualNetworkClientContextE] instead.
934986
func CreateNewVirtualNetworkClientE(subscriptionID string) (*armnetwork.VirtualNetworksClient, error) {
935-
return CreateNewVirtualNetworkClientContextE(context.Background(), subscriptionID)
987+
return CreateVirtualNetworkClientContextE(context.Background(), subscriptionID)
936988
}
937989

938-
// CreateAppServiceClientContextE returns an App service client instance configured with the
939-
// correct BaseURI depending on the Azure environment that is currently setup (or "Public", if none is setup).
990+
// CreateAppServiceClientContextE returns an App Service client.
940991
// The ctx parameter supports cancellation and timeouts.
941992
func CreateAppServiceClientContextE(_ context.Context, subscriptionID string) (*armappservice.WebAppsClient, error) {
942993
clientFactory, err := getArmAppServiceClientFactory(subscriptionID)
@@ -947,8 +998,7 @@ func CreateAppServiceClientContextE(_ context.Context, subscriptionID string) (*
947998
return clientFactory.NewWebAppsClient(), nil
948999
}
9491000

950-
// CreateAppServiceClientE returns an App service client instance configured with the
951-
// correct BaseURI depending on the Azure environment that is currently setup (or "Public", if none is setup).
1001+
// CreateAppServiceClientE returns an App Service client.
9521002
//
9531003
// Deprecated: Use [CreateAppServiceClientContextE] instead.
9541004
func CreateAppServiceClientE(subscriptionID string) (*armappservice.WebAppsClient, error) {

modules/azure/compute.go

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,10 @@ func GetVirtualMachineClient(t testing.TestingT, subscriptionID string) *armcomp
3535
// GetVirtualMachineClientContextE is a helper function that will setup an Azure Virtual Machine client on your behalf.
3636
// The ctx parameter supports cancellation and timeouts.
3737
func GetVirtualMachineClientContextE(ctx context.Context, subscriptionID string) (*armcompute.VirtualMachinesClient, error) {
38-
// snippet-tag-start::client_factory_example.helper
3938
vmClient, err := CreateVirtualMachinesClientContextE(ctx, subscriptionID)
4039
if err != nil {
4140
return nil, err
4241
}
43-
// snippet-tag-end::client_factory_example.helper
4442

4543
return vmClient, nil
4644
}
@@ -321,7 +319,7 @@ type VMImage struct {
321319
// This function would fail the test if there is an error.
322320
//
323321
// Deprecated: Use [GetVirtualMachineImageContext] instead.
324-
func GetVirtualMachineImage(t testing.TestingT, vmName string, resGroupName string, subscriptionID string) VMImage {
322+
func GetVirtualMachineImage(t testing.TestingT, vmName string, resGroupName string, subscriptionID string) *VMImage {
325323
t.Helper()
326324

327325
return GetVirtualMachineImageContext(t, context.Background(), vmName, resGroupName, subscriptionID)
@@ -330,14 +328,14 @@ func GetVirtualMachineImage(t testing.TestingT, vmName string, resGroupName stri
330328
// GetVirtualMachineImageE gets the Image of the specified Azure Virtual Machine.
331329
//
332330
// Deprecated: Use [GetVirtualMachineImageContextE] instead.
333-
func GetVirtualMachineImageE(vmName string, resGroupName string, subscriptionID string) (VMImage, error) {
331+
func GetVirtualMachineImageE(vmName string, resGroupName string, subscriptionID string) (*VMImage, error) {
334332
return GetVirtualMachineImageContextE(context.Background(), vmName, resGroupName, subscriptionID)
335333
}
336334

337335
// GetVirtualMachineImageContext gets the Image of the specified Azure Virtual Machine.
338336
// This function would fail the test if there is an error.
339337
// The ctx parameter supports cancellation and timeouts.
340-
func GetVirtualMachineImageContext(t testing.TestingT, ctx context.Context, vmName string, resGroupName string, subscriptionID string) VMImage {
338+
func GetVirtualMachineImageContext(t testing.TestingT, ctx context.Context, vmName string, resGroupName string, subscriptionID string) *VMImage {
341339
t.Helper()
342340

343341
vmImage, err := GetVirtualMachineImageContextE(ctx, vmName, resGroupName, subscriptionID)
@@ -348,21 +346,21 @@ func GetVirtualMachineImageContext(t testing.TestingT, ctx context.Context, vmNa
348346

349347
// GetVirtualMachineImageContextE gets the Image of the specified Azure Virtual Machine.
350348
// The ctx parameter supports cancellation and timeouts.
351-
func GetVirtualMachineImageContextE(ctx context.Context, vmName string, resGroupName string, subscriptionID string) (VMImage, error) {
349+
func GetVirtualMachineImageContextE(ctx context.Context, vmName string, resGroupName string, subscriptionID string) (*VMImage, error) {
352350
vm, err := GetVirtualMachineContextE(ctx, vmName, resGroupName, subscriptionID)
353351
if err != nil {
354-
return VMImage{}, err
352+
return nil, err
355353
}
356354

357355
return extractVMImage(vm), nil
358356
}
359357

360358
// extractVMImage extracts the Image reference from a Virtual Machine object.
361359
// For custom images where Publisher/Offer/SKU/Version may be nil, empty strings are returned.
362-
func extractVMImage(vm *armcompute.VirtualMachine) VMImage {
360+
func extractVMImage(vm *armcompute.VirtualMachine) *VMImage {
363361
ref := vm.Properties.StorageProfile.ImageReference
364362

365-
var img VMImage
363+
img := &VMImage{}
366364

367365
if ref.Publisher != nil {
368366
img.Publisher = *ref.Publisher

modules/azure/compute_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ func TestFetchVirtualMachine(t *testing.T) {
105105
func TestExtractVMNics(t *testing.T) {
106106
t.Parallel()
107107

108-
tests := []struct {
108+
tests := []struct { //nolint:govet // fieldalignment not worth optimizing in test structs
109109
name string
110110
vm *armcompute.VirtualMachine
111111
want []string
@@ -278,10 +278,10 @@ func TestExtractVMAvailabilitySetID(t *testing.T) {
278278
func TestExtractVMImage(t *testing.T) {
279279
t.Parallel()
280280

281-
tests := []struct {
281+
tests := []struct { //nolint:govet // fieldalignment not worth optimizing in test structs
282282
name string
283283
vm *armcompute.VirtualMachine
284-
want VMImage
284+
want *VMImage
285285
}{
286286
{
287287
name: "MarketplaceImage",
@@ -297,7 +297,7 @@ func TestExtractVMImage(t *testing.T) {
297297
},
298298
},
299299
},
300-
want: VMImage{
300+
want: &VMImage{
301301
Publisher: "Canonical",
302302
Offer: "UbuntuServer",
303303
SKU: "18.04-LTS",
@@ -315,7 +315,7 @@ func TestExtractVMImage(t *testing.T) {
315315
},
316316
},
317317
},
318-
want: VMImage{},
318+
want: &VMImage{},
319319
},
320320
}
321321

modules/azure/container_apps.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ func ManagedEnvironmentExistsContextE(ctx context.Context, environmentName strin
4040

4141
_, err = client.Get(ctx, resourceGroupName, environmentName, nil)
4242
if err != nil {
43+
if ResourceNotFoundErrorExists(err) {
44+
return false, nil
45+
}
46+
4347
return false, err
4448
}
4549

@@ -136,6 +140,10 @@ func ContainerAppExistsContextE(ctx context.Context, containerAppName string, re
136140

137141
_, err = client.Get(ctx, resourceGroupName, containerAppName, nil)
138142
if err != nil {
143+
if ResourceNotFoundErrorExists(err) {
144+
return false, nil
145+
}
146+
139147
return false, err
140148
}
141149

@@ -232,6 +240,10 @@ func ContainerAppJobExistsContextE(ctx context.Context, containerAppName string,
232240

233241
_, err = client.Get(ctx, resourceGroupName, containerAppName, nil)
234242
if err != nil {
243+
if ResourceNotFoundErrorExists(err) {
244+
return false, nil
245+
}
246+
235247
return false, err
236248
}
237249

modules/azure/datafactory.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ func DataFactoryExistsE(dataFactoryName string, resourceGroupName string, subscr
5555
// GetDataFactoryContext returns the Data Factory object.
5656
// This function would fail the test if there is an error.
5757
// The ctx parameter supports cancellation and timeouts.
58-
func GetDataFactoryContext(t testing.TestingT, ctx context.Context, resGroupName string, factoryName string, subscriptionID string) *armdatafactory.Factory {
58+
func GetDataFactoryContext(t testing.TestingT, ctx context.Context, subscriptionID string, resGroupName string, factoryName string) *armdatafactory.Factory {
5959
t.Helper()
6060

6161
factory, err := GetDataFactoryContextE(ctx, subscriptionID, resGroupName, factoryName)
@@ -71,7 +71,7 @@ func GetDataFactoryContext(t testing.TestingT, ctx context.Context, resGroupName
7171
func GetDataFactory(t testing.TestingT, resGroupName string, factoryName string, subscriptionID string) *armdatafactory.Factory {
7272
t.Helper()
7373

74-
return GetDataFactoryContext(t, context.Background(), resGroupName, factoryName, subscriptionID) //nolint:staticcheck
74+
return GetDataFactoryContext(t, context.Background(), subscriptionID, resGroupName, factoryName) //nolint:staticcheck
7575
}
7676

7777
// GetDataFactoryContextE returns the Data Factory object.

0 commit comments

Comments
 (0)