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

     1  package azure
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/Azure/azure-sdk-for-go/services/postgresql/mgmt/2017-12-01/postgresql"
     7  	"github.com/gruntwork-io/terratest/modules/testing"
     8  	"github.com/stretchr/testify/require"
     9  )
    10  
    11  // GetPostgreSQLServerClientE is a helper function that will setup a postgresql server client.
    12  func GetPostgreSQLServerClientE(subscriptionID string) (*postgresql.ServersClient, error) {
    13  	// Validate Azure subscription ID
    14  	subscriptionID, err := getTargetAzureSubscription(subscriptionID)
    15  	if err != nil {
    16  		return nil, err
    17  	}
    18  
    19  	// Create a postgresql server client
    20  	postgresqlClient := postgresql.NewServersClient(subscriptionID)
    21  
    22  	// Create an authorizer
    23  	authorizer, err := NewAuthorizer()
    24  	if err != nil {
    25  		return nil, err
    26  	}
    27  
    28  	// Attach authorizer to the client
    29  	postgresqlClient.Authorizer = *authorizer
    30  
    31  	return &postgresqlClient, nil
    32  }
    33  
    34  // GetPostgreSQLServer is a helper function that gets the server.
    35  // This function would fail the test if there is an error.
    36  func GetPostgreSQLServer(t testing.TestingT, resGroupName string, serverName string, subscriptionID string) *postgresql.Server {
    37  	postgresqlServer, err := GetPostgreSQLServerE(t, subscriptionID, resGroupName, serverName)
    38  	require.NoError(t, err)
    39  
    40  	return postgresqlServer
    41  }
    42  
    43  // GetPostgreSQLServerE is a helper function that gets the server.
    44  func GetPostgreSQLServerE(t testing.TestingT, subscriptionID string, resGroupName string, serverName string) (*postgresql.Server, error) {
    45  	// Create a postgresql Server client
    46  	postgresqlClient, err := GetPostgreSQLServerClientE(subscriptionID)
    47  	if err != nil {
    48  		return nil, err
    49  	}
    50  
    51  	// Get the corresponding server client
    52  	postgresqlServer, err := postgresqlClient.Get(context.Background(), resGroupName, serverName)
    53  	if err != nil {
    54  		return nil, err
    55  	}
    56  
    57  	//Return server
    58  	return &postgresqlServer, nil
    59  }
    60  
    61  // GetPostgreSQLDBClientE is a helper function that will setup a postgresql DB client.
    62  func GetPostgreSQLDBClientE(subscriptionID string) (*postgresql.DatabasesClient, error) {
    63  	// Validate Azure subscription ID
    64  	subscriptionID, err := getTargetAzureSubscription(subscriptionID)
    65  	if err != nil {
    66  		return nil, err
    67  	}
    68  
    69  	// Create a postgresql db client
    70  	postgresqlDBClient := postgresql.NewDatabasesClient(subscriptionID)
    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  	postgresqlDBClient.Authorizer = *authorizer
    80  
    81  	return &postgresqlDBClient, nil
    82  }
    83  
    84  //GetPostgreSQLDB is a helper function that gets the database.
    85  // This function would fail the test if there is an error.
    86  func GetPostgreSQLDB(t testing.TestingT, resGroupName string, serverName string, dbName string, subscriptionID string) *postgresql.Database {
    87  	database, err := GetPostgreSQLDBE(t, subscriptionID, resGroupName, serverName, dbName)
    88  	require.NoError(t, err)
    89  
    90  	return database
    91  }
    92  
    93  //GetPostgreSQLDBE is a helper function that gets the database.
    94  func GetPostgreSQLDBE(t testing.TestingT, subscriptionID string, resGroupName string, serverName string, dbName string) (*postgresql.Database, error) {
    95  	// Create a postgresql db client
    96  	postgresqldbClient, err := GetPostgreSQLDBClientE(subscriptionID)
    97  	if err != nil {
    98  		return nil, err
    99  	}
   100  
   101  	// Get the corresponding db client
   102  	postgresqlDb, err := postgresqldbClient.Get(context.Background(), resGroupName, serverName, dbName)
   103  	if err != nil {
   104  		return nil, err
   105  	}
   106  
   107  	//Return DB
   108  	return &postgresqlDb, nil
   109  }
   110  
   111  //ListPostgreSQLDB is a helper function that gets all databases per server.
   112  func ListPostgreSQLDB(t testing.TestingT, subscriptionID string, resGroupName string, serverName string) []postgresql.Database {
   113  	dblist, err := ListPostgreSQLDBE(t, subscriptionID, resGroupName, serverName)
   114  	require.NoError(t, err)
   115  
   116  	return dblist
   117  }
   118  
   119  //ListPostgreSQLDBE is a helper function that gets all databases per server.
   120  func ListPostgreSQLDBE(t testing.TestingT, subscriptionID string, resGroupName string, serverName string) ([]postgresql.Database, error) {
   121  	// Create a postgresql db client
   122  	postgresqldbClient, err := GetPostgreSQLDBClientE(subscriptionID)
   123  	if err != nil {
   124  		return nil, err
   125  	}
   126  
   127  	// Get the corresponding db client
   128  	postgresqlDbs, err := postgresqldbClient.ListByServer(context.Background(), resGroupName, serverName)
   129  	if err != nil {
   130  		return nil, err
   131  	}
   132  
   133  	//Return DB lists
   134  	return *postgresqlDbs.Value, nil
   135  }