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  }