github.com/mponton/terratest@v0.44.0/modules/azure/containers.go (about) 1 package azure 2 3 import ( 4 "context" 5 "testing" 6 7 "github.com/Azure/azure-sdk-for-go/services/containerinstance/mgmt/2018-10-01/containerinstance" 8 "github.com/Azure/azure-sdk-for-go/services/containerregistry/mgmt/2019-05-01/containerregistry" 9 10 "github.com/stretchr/testify/require" 11 ) 12 13 // ContainerRegistryExists indicates whether the specified container registry exists. 14 // This function would fail the test if there is an error. 15 func ContainerRegistryExists(t *testing.T, registryName string, resourceGroupName string, subscriptionID string) bool { 16 exists, err := ContainerRegistryExistsE(registryName, resourceGroupName, subscriptionID) 17 require.NoError(t, err) 18 19 return exists 20 } 21 22 // ContainerRegistryExistsE indicates whether the specified container registry exists. 23 func ContainerRegistryExistsE(registryName string, resourceGroupName string, subscriptionID string) (bool, error) { 24 _, err := GetContainerRegistryE(registryName, resourceGroupName, subscriptionID) 25 if err != nil { 26 if ResourceNotFoundErrorExists(err) { 27 return false, nil 28 } 29 return false, err 30 } 31 return true, nil 32 } 33 34 // GetContainerRegistry gets the container registry object 35 // This function would fail the test if there is an error. 36 func GetContainerRegistry(t *testing.T, registryName string, resGroupName string, subscriptionID string) *containerregistry.Registry { 37 resource, err := GetContainerRegistryE(registryName, resGroupName, subscriptionID) 38 39 require.NoError(t, err) 40 41 return resource 42 } 43 44 // GetContainerRegistryE gets the container registry object 45 func GetContainerRegistryE(registryName string, resGroupName string, subscriptionID string) (*containerregistry.Registry, error) { 46 rgName, err := getTargetAzureResourceGroupName(resGroupName) 47 if err != nil { 48 return nil, err 49 } 50 51 client, err := GetContainerRegistryClientE(subscriptionID) 52 if err != nil { 53 return nil, err 54 } 55 56 resource, err := client.Get(context.Background(), rgName, registryName) 57 if err != nil { 58 return nil, err 59 } 60 61 return &resource, nil 62 } 63 64 // GetContainerRegistryClientE is a helper function that will setup an Azure Container Registry client on your behalf 65 func GetContainerRegistryClientE(subscriptionID string) (*containerregistry.RegistriesClient, error) { 66 // Create an ACR client 67 registryClient, err := CreateContainerRegistryClientE(subscriptionID) 68 if err != nil { 69 return nil, err 70 } 71 72 // Create an authorizer 73 authorizer, err := NewAuthorizer() 74 if err != nil { 75 return nil, err 76 } 77 78 // Attach authorizer to the client 79 registryClient.Authorizer = *authorizer 80 return registryClient, nil 81 } 82 83 // ContainerInstanceExists indicates whether the specified container instance exists. 84 // This function would fail the test if there is an error. 85 func ContainerInstanceExists(t *testing.T, instanceName string, resourceGroupName string, subscriptionID string) bool { 86 exists, err := ContainerInstanceExistsE(instanceName, resourceGroupName, subscriptionID) 87 require.NoError(t, err) 88 89 return exists 90 } 91 92 // ContainerInstanceExistsE indicates whether the specified container instance exists. 93 func ContainerInstanceExistsE(instanceName string, resourceGroupName string, subscriptionID string) (bool, error) { 94 _, err := GetContainerInstanceE(instanceName, resourceGroupName, subscriptionID) 95 if err != nil { 96 if ResourceNotFoundErrorExists(err) { 97 return false, nil 98 } 99 return false, err 100 } 101 return true, nil 102 } 103 104 // GetContainerInstance gets the container instance object 105 // This function would fail the test if there is an error. 106 func GetContainerInstance(t *testing.T, instanceName string, resGroupName string, subscriptionID string) *containerinstance.ContainerGroup { 107 instance, err := GetContainerInstanceE(instanceName, resGroupName, subscriptionID) 108 109 require.NoError(t, err) 110 111 return instance 112 } 113 114 // GetContainerInstanceE gets the container instance object 115 func GetContainerInstanceE(instanceName string, resGroupName string, subscriptionID string) (*containerinstance.ContainerGroup, error) { 116 rgName, err := getTargetAzureResourceGroupName(resGroupName) 117 if err != nil { 118 return nil, err 119 } 120 121 client, err := GetContainerInstanceClientE(subscriptionID) 122 if err != nil { 123 return nil, err 124 } 125 126 instance, err := client.Get(context.Background(), rgName, instanceName) 127 if err != nil { 128 return nil, err 129 } 130 131 return &instance, nil 132 } 133 134 // GetContainerInstanceClientE is a helper function that will setup an Azure Container Instance client on your behalf 135 func GetContainerInstanceClientE(subscriptionID string) (*containerinstance.ContainerGroupsClient, error) { 136 // Create an ACI client 137 instanceClient, err := CreateContainerInstanceClientE(subscriptionID) 138 if err != nil { 139 return nil, err 140 } 141 142 // Create an authorizer 143 authorizer, err := NewAuthorizer() 144 if err != nil { 145 return nil, err 146 } 147 148 // Attach authorizer to the client 149 instanceClient.Authorizer = *authorizer 150 return instanceClient, nil 151 }