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 }