in profiles/source_profile.go [144:201]
func (spd *SourceProfileDialectImpl) NewSourceProfileConnectionMySQL(params map[string]string, g utils.GetUtilInfoInterface) (SourceProfileConnectionMySQL, error) {
mysql := SourceProfileConnectionMySQL{}
host, hostOk := params["host"]
user, userOk := params["user"]
db, dbOk := params["dbName"]
port, portOk := params["port"]
pwd, pwdOk := params["password"]
streamingConfig, cfgOk := params["streamingCfg"]
if cfgOk && streamingConfig == "" {
return mysql, fmt.Errorf("specify a non-empty streaming config file path")
}
mysql.StreamingConfig = streamingConfig
// We don't users to mix and match params from source-profile and environment variables.
// We either try to get all params from the source-profile and if none are set, we read from the env variables.
if !(hostOk || userOk || dbOk || portOk || pwdOk) {
// No connection params provided through source-profile. Fetching from env variables.
fmt.Printf("Connection parameters not specified in source-profile. Reading from " +
"environment variables MYSQLHOST, MYSQLUSER, MYSQLDATABASE, MYSQLPORT, MYSQLPWD...\n")
mysql.Host = os.Getenv("MYSQLHOST")
mysql.User = os.Getenv("MYSQLUSER")
mysql.Db = os.Getenv("MYSQLDATABASE")
mysql.Port = os.Getenv("MYSQLPORT")
mysql.Pwd = os.Getenv("MYSQLPWD")
// Throw error if the input entered is empty.
if mysql.Host == "" || mysql.User == "" || mysql.Db == "" {
return mysql, fmt.Errorf("found empty string for MYSQLHOST/MYSQLUSER/MYSQLDATABASE. Please specify these environment variables with correct values")
}
} else if hostOk && userOk && dbOk {
// If atleast host, username and dbName are provided through source-profile,
// go ahead and use source-profile. Port and password handled later even if they are empty.
mysql.Host, mysql.User, mysql.Db, mysql.Port, mysql.Pwd = host, user, db, port, pwd
// Throw error if the input entered is empty.
if mysql.Host == "" || mysql.User == "" || mysql.Db == "" {
return mysql, fmt.Errorf("found empty string for host/user/dbName. Please specify host, port, user and dbName in the source-profile")
}
} else {
// Partial params provided through source-profile. Ask user to provide all through the source-profile.
return mysql, fmt.Errorf("please specify host, port, user and dbName in the source-profile")
}
// Throw same error if the input entered is empty.
if mysql.Host == "" || mysql.User == "" || mysql.Db == "" {
return mysql, fmt.Errorf("found empty string for host/user/db. please specify host, port, user and dbName in the source-profile")
}
if mysql.Port == "" {
// Set default port for mysql, which rarely changes.
mysql.Port = "3306"
}
if mysql.Pwd == "" {
mysql.Pwd = g.GetPassword()
}
return mysql, nil
}