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

     1  package azure
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/Azure/azure-sdk-for-go/profiles/latest/mysql/mgmt/mysql"
     7  	"github.com/gruntwork-io/terratest/modules/testing"
     8  	"github.com/stretchr/testify/require"
     9  )
    10  
    11  // GetMYSQLServerClientE is a helper function that will setup a mysql server client.
    12  // TODO: remove in next version
    13  func GetMYSQLServerClientE(subscriptionID string) (*mysql.ServersClient, error) {
    14  	// Validate Azure subscription ID
    15  	subscriptionID, err := getTargetAzureSubscription(subscriptionID)
    16  	if err != nil {
    17  		return nil, err
    18  	}
    19  
    20  	// Create a mysql server client
    21  	mysqlClient := mysql.NewServersClient(subscriptionID)
    22  
    23  	// Create an authorizer
    24  	authorizer, err := NewAuthorizer()
    25  	if err != nil {
    26  		return nil, err
    27  	}
    28  
    29  	// Attach authorizer to the client
    30  	mysqlClient.Authorizer = *authorizer
    31  
    32  	return &mysqlClient, nil
    33  }
    34  
    35  // GetMYSQLServer is a helper function that gets the server.
    36  // This function would fail the test if there is an error.
    37  func GetMYSQLServer(t testing.TestingT, resGroupName string, serverName string, subscriptionID string) *mysql.Server {
    38  	mysqlServer, err := GetMYSQLServerE(t, subscriptionID, resGroupName, serverName)
    39  	require.NoError(t, err)
    40  
    41  	return mysqlServer
    42  }
    43  
    44  // GetMYSQLServerE is a helper function that gets the server.
    45  func GetMYSQLServerE(t testing.TestingT, subscriptionID string, resGroupName string, serverName string) (*mysql.Server, error) {
    46  	// Create a mySQl Server client
    47  	mysqlClient, err := CreateMySQLServerClientE(subscriptionID)
    48  	if err != nil {
    49  		return nil, err
    50  	}
    51  
    52  	// Get the corresponding server client
    53  	mysqlServer, err := mysqlClient.Get(context.Background(), resGroupName, serverName)
    54  	if err != nil {
    55  		return nil, err
    56  	}
    57  
    58  	//Return server
    59  	return &mysqlServer, nil
    60  }
    61  
    62  // GetMYSQLDBClientE is a helper function that will setup a mysql DB client.
    63  func GetMYSQLDBClientE(subscriptionID string) (*mysql.DatabasesClient, error) {
    64  	// Validate Azure subscription ID
    65  	subscriptionID, err := getTargetAzureSubscription(subscriptionID)
    66  	if err != nil {
    67  		return nil, err
    68  	}
    69  
    70  	// Create a mysql db client
    71  	mysqlDBClient := mysql.NewDatabasesClient(subscriptionID)
    72  
    73  	// Create an authorizer
    74  	authorizer, err := NewAuthorizer()
    75  	if err != nil {
    76  		return nil, err
    77  	}
    78  
    79  	// Attach authorizer to the client
    80  	mysqlDBClient.Authorizer = *authorizer
    81  
    82  	return &mysqlDBClient, nil
    83  }
    84  
    85  //GetMYSQLDB is a helper function that gets the database.
    86  // This function would fail the test if there is an error.
    87  func GetMYSQLDB(t testing.TestingT, resGroupName string, serverName string, dbName string, subscriptionID string) *mysql.Database {
    88  	database, err := GetMYSQLDBE(t, subscriptionID, resGroupName, serverName, dbName)
    89  	require.NoError(t, err)
    90  
    91  	return database
    92  }
    93  
    94  //GetMYSQLDBE is a helper function that gets the database.
    95  func GetMYSQLDBE(t testing.TestingT, subscriptionID string, resGroupName string, serverName string, dbName string) (*mysql.Database, error) {
    96  	// Create a mySQl db client
    97  	mysqldbClient, err := GetMYSQLDBClientE(subscriptionID)
    98  	if err != nil {
    99  		return nil, err
   100  	}
   101  
   102  	// Get the corresponding db client
   103  	mysqlDb, err := mysqldbClient.Get(context.Background(), resGroupName, serverName, dbName)
   104  	if err != nil {
   105  		return nil, err
   106  	}
   107  
   108  	//Return DB
   109  	return &mysqlDb, nil
   110  }
   111  
   112  //ListMySQLDB is a helper function that gets all databases per server.
   113  func ListMySQLDB(t testing.TestingT, resGroupName string, serverName string, subscriptionID string) []mysql.Database {
   114  	dblist, err := ListMySQLDBE(t, subscriptionID, resGroupName, serverName)
   115  	require.NoError(t, err)
   116  
   117  	return dblist
   118  }
   119  
   120  //ListMySQLDBE is a helper function that gets all databases per server.
   121  func ListMySQLDBE(t testing.TestingT, subscriptionID string, resGroupName string, serverName string) ([]mysql.Database, error) {
   122  	// Create a mySQl db client
   123  	mysqldbClient, err := GetMYSQLDBClientE(subscriptionID)
   124  	if err != nil {
   125  		return nil, err
   126  	}
   127  
   128  	// Get the corresponding db client
   129  	mysqlDbs, err := mysqldbClient.ListByServer(context.Background(), resGroupName, serverName)
   130  	if err != nil {
   131  		return nil, err
   132  	}
   133  
   134  	//Return DB lists
   135  	return *mysqlDbs.Value, nil
   136  }