github.com/darmach/terratest@v0.34.8-0.20210517103231-80931f95e3ff/modules/azure/loganalytics.go (about)

     1  package azure
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  
     7  	"github.com/Azure/azure-sdk-for-go/services/preview/operationalinsights/mgmt/2020-03-01-preview/operationalinsights"
     8  	"github.com/gruntwork-io/terratest/modules/testing"
     9  	"github.com/stretchr/testify/require"
    10  )
    11  
    12  // LogAnalyticsWorkspaceExists indicates whether the operatonal insights workspaces exists.
    13  // This function would fail the test if there is an error.
    14  func LogAnalyticsWorkspaceExists(t testing.TestingT, workspaceName string, resourceGroupName string, subscriptionID string) bool {
    15  	exists, err := LogAnalyticsWorkspaceExistsE(workspaceName, resourceGroupName, subscriptionID)
    16  	require.NoError(t, err)
    17  	return exists
    18  }
    19  
    20  // GetLogAnalyticsWorkspace gets an operational insights workspace if it exists in a subscription.
    21  // This function would fail the test if there is an error.
    22  func GetLogAnalyticsWorkspace(t testing.TestingT, workspaceName string, resourceGroupName string, subscriptionID string) *operationalinsights.Workspace {
    23  	ws, err := GetLogAnalyticsWorkspaceE(workspaceName, resourceGroupName, subscriptionID)
    24  	require.NoError(t, err)
    25  
    26  	return ws
    27  }
    28  
    29  // GetLogAnalyticsWorkspaceE gets an operational insights workspace if it exists in a subscription.
    30  func GetLogAnalyticsWorkspaceE(workspaceName, resoureGroupName, subscriptionID string) (*operationalinsights.Workspace, error) {
    31  	client, err := GetLogAnalyticsWorkspacesClientE(subscriptionID)
    32  	if err != nil {
    33  		return nil, err
    34  	}
    35  
    36  	ws, err := client.Get(context.Background(), resoureGroupName, workspaceName)
    37  	if err != nil {
    38  		return nil, err
    39  	}
    40  	return &ws, nil
    41  }
    42  
    43  // LogAnalyticsWorkspaceExistsE indicates whether the operatonal insights workspaces exists and may return an error.
    44  func LogAnalyticsWorkspaceExistsE(workspaceName string, resourceGroupName string, subscriptionID string) (bool, error) {
    45  	_, err := GetLogAnalyticsWorkspaceE(workspaceName, resourceGroupName, subscriptionID)
    46  	if err != nil {
    47  		if ResourceNotFoundErrorExists(err) {
    48  			return false, nil
    49  		}
    50  		return false, err
    51  	}
    52  	return true, nil
    53  }
    54  
    55  // GetLogAnalyticsWorkspacesClientE return workspaces client; otherwise error.
    56  func GetLogAnalyticsWorkspacesClientE(subscriptionID string) (*operationalinsights.WorkspacesClient, error) {
    57  	subscriptionID, err := getTargetAzureSubscription(subscriptionID)
    58  	if err != nil {
    59  		fmt.Println("Workspace client error getting subscription")
    60  		return nil, err
    61  	}
    62  
    63  	client := operationalinsights.NewWorkspacesClient(subscriptionID)
    64  	authorizer, err := NewAuthorizer()
    65  	if err != nil {
    66  		fmt.Println("authorizer error")
    67  		return nil, err
    68  	}
    69  
    70  	client.Authorizer = *authorizer
    71  	return &client, nil
    72  }