github.com/someshkoli/terratest@v0.41.1/modules/azure/monitor.go (about)

     1  package azure
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/Azure/azure-sdk-for-go/profiles/preview/preview/monitor/mgmt/insights"
     7  	"github.com/gruntwork-io/terratest/modules/testing"
     8  	"github.com/stretchr/testify/require"
     9  )
    10  
    11  // DiagnosticSettingsResourceExists indicates whether the diagnostic settings resource exists
    12  // This function would fail the test if there is an error.
    13  func DiagnosticSettingsResourceExists(t testing.TestingT, diagnosticSettingsResourceName string, resourceURI string, subscriptionID string) bool {
    14  	exists, err := DiagnosticSettingsResourceExistsE(diagnosticSettingsResourceName, resourceURI, subscriptionID)
    15  	require.NoError(t, err)
    16  
    17  	return exists
    18  }
    19  
    20  // DiagnosticSettingsResourceExistsE indicates whether the diagnostic settings resource exists
    21  func DiagnosticSettingsResourceExistsE(diagnosticSettingsResourceName string, resourceURI string, subscriptionID string) (bool, error) {
    22  	_, err := GetDiagnosticsSettingsResourceE(diagnosticSettingsResourceName, resourceURI, subscriptionID)
    23  	if err != nil {
    24  		if ResourceNotFoundErrorExists(err) {
    25  			return false, nil
    26  		}
    27  		return false, err
    28  	}
    29  
    30  	return true, nil
    31  }
    32  
    33  // GetDiagnosticsSettingsResource gets the diagnostics settings for a specified resource
    34  // This function would fail the test if there is an error.
    35  func GetDiagnosticsSettingsResource(t testing.TestingT, name string, resourceURI string, subscriptionID string) *insights.DiagnosticSettingsResource {
    36  	resource, err := GetDiagnosticsSettingsResourceE(name, resourceURI, subscriptionID)
    37  	require.NoError(t, err)
    38  	return resource
    39  }
    40  
    41  // GetDiagnosticsSettingsResourceE gets the diagnostics settings for a specified resource
    42  func GetDiagnosticsSettingsResourceE(name string, resourceURI string, subscriptionID string) (*insights.DiagnosticSettingsResource, error) {
    43  	// Validate Azure subscription ID
    44  	subscriptionID, err := getTargetAzureSubscription(subscriptionID)
    45  	if err != nil {
    46  		return nil, err
    47  	}
    48  
    49  	client, err := CreateDiagnosticsSettingsClientE(subscriptionID)
    50  	if err != nil {
    51  		return nil, err
    52  	}
    53  
    54  	settings, err := client.Get(context.Background(), resourceURI, name)
    55  	if err != nil {
    56  		return nil, err
    57  	}
    58  
    59  	return &settings, nil
    60  }
    61  
    62  // GetDiagnosticsSettingsClientE returns a diagnostics settings client
    63  // TODO: delete in next version
    64  func GetDiagnosticsSettingsClientE(subscriptionID string) (*insights.DiagnosticSettingsClient, error) {
    65  	// Validate Azure subscription ID
    66  	subscriptionID, err := getTargetAzureSubscription(subscriptionID)
    67  	if err != nil {
    68  		return nil, err
    69  	}
    70  
    71  	client := insights.NewDiagnosticSettingsClient(subscriptionID)
    72  	authorizer, err := NewAuthorizer()
    73  	if err != nil {
    74  		return nil, err
    75  	}
    76  
    77  	client.Authorizer = *authorizer
    78  
    79  	return &client, nil
    80  }
    81  
    82  // GetVMInsightsOnboardingStatus get diagnostics VM onboarding status
    83  // This function would fail the test if there is an error.
    84  func GetVMInsightsOnboardingStatus(t testing.TestingT, resourceURI string, subscriptionID string) *insights.VMInsightsOnboardingStatus {
    85  	status, err := GetVMInsightsOnboardingStatusE(t, resourceURI, subscriptionID)
    86  	require.NoError(t, err)
    87  
    88  	return status
    89  }
    90  
    91  // GetVMInsightsOnboardingStatusE get diagnostics VM onboarding status
    92  func GetVMInsightsOnboardingStatusE(t testing.TestingT, resourceURI string, subscriptionID string) (*insights.VMInsightsOnboardingStatus, error) {
    93  	client, err := CreateVMInsightsClientE(subscriptionID)
    94  	if err != nil {
    95  		return nil, err
    96  	}
    97  
    98  	status, err := client.GetOnboardingStatus(context.Background(), resourceURI)
    99  	if err != nil {
   100  		return nil, err
   101  	}
   102  
   103  	return &status, nil
   104  }
   105  
   106  // GetVMInsightsClientE gets a VM Insights client
   107  // TODO: delete in next version
   108  func GetVMInsightsClientE(t testing.TestingT, subscriptionID string) (*insights.VMInsightsClient, error) {
   109  	// Validate Azure subscription ID
   110  	subscriptionID, err := getTargetAzureSubscription(subscriptionID)
   111  	if err != nil {
   112  		return nil, err
   113  	}
   114  
   115  	client := insights.NewVMInsightsClient(subscriptionID)
   116  
   117  	authorizer, err := NewAuthorizer()
   118  	if err != nil {
   119  		return nil, err
   120  	}
   121  
   122  	client.Authorizer = *authorizer
   123  
   124  	return &client, nil
   125  }
   126  
   127  // GetActivityLogAlertResource gets a Action Group in the specified Azure Resource Group
   128  // This function would fail the test if there is an error.
   129  func GetActivityLogAlertResource(t testing.TestingT, activityLogAlertName string, resGroupName string, subscriptionID string) *insights.ActivityLogAlertResource {
   130  	activityLogAlertResource, err := GetActivityLogAlertResourceE(activityLogAlertName, resGroupName, subscriptionID)
   131  	require.NoError(t, err)
   132  
   133  	return activityLogAlertResource
   134  }
   135  
   136  // GetActivityLogAlertResourceE gets a Action Group in the specified Azure Resource Group
   137  func GetActivityLogAlertResourceE(activityLogAlertName string, resGroupName string, subscriptionID string) (*insights.ActivityLogAlertResource, error) {
   138  	// Validate resource group name and subscription ID
   139  	_, err := getTargetAzureResourceGroupName(resGroupName)
   140  	if err != nil {
   141  		return nil, err
   142  	}
   143  
   144  	// Get the client reference
   145  	client, err := CreateActivityLogAlertsClientE(subscriptionID)
   146  	if err != nil {
   147  		return nil, err
   148  	}
   149  
   150  	// Get the Action Group
   151  	activityLogAlertResource, err := client.Get(context.Background(), resGroupName, activityLogAlertName)
   152  	if err != nil {
   153  		return nil, err
   154  	}
   155  
   156  	return &activityLogAlertResource, nil
   157  }
   158  
   159  // GetActivityLogAlertsClientE gets an Action Groups client in the specified Azure Subscription
   160  // TODO: delete in next version
   161  func GetActivityLogAlertsClientE(subscriptionID string) (*insights.ActivityLogAlertsClient, error) {
   162  	// Validate Azure subscription ID
   163  	subscriptionID, err := getTargetAzureSubscription(subscriptionID)
   164  	if err != nil {
   165  		return nil, err
   166  	}
   167  
   168  	// Get the Action Groups client
   169  	client := insights.NewActivityLogAlertsClient(subscriptionID)
   170  
   171  	// Create an authorizer
   172  	authorizer, err := NewAuthorizer()
   173  	if err != nil {
   174  		return nil, err
   175  	}
   176  
   177  	client.Authorizer = *authorizer
   178  
   179  	return &client, nil
   180  }