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 }