in webv2/profile/profile.go [38:85]
func ListConnectionProfiles(w http.ResponseWriter, r *http.Request) {
ctx := context.Background()
dsClient, err := datastream.NewClient(ctx)
if err != nil {
http.Error(w, fmt.Sprintf("datastream client can not be created: %v", err), http.StatusBadRequest)
}
defer dsClient.Close()
sessionState := session.GetSessionState()
sessionState.Conv.ConvLock.Lock()
defer sessionState.Conv.ConvLock.Unlock()
source := r.FormValue("source") == "true"
if !source {
sessionState.Conv.Audit.MigrationRequestId, _ = utils.GenerateName("smt-job")
sessionState.Conv.Audit.MigrationRequestId = strings.Replace(sessionState.Conv.Audit.MigrationRequestId, "_", "-", -1)
sessionState.Bucket = strings.ToLower(sessionState.Conv.Audit.MigrationRequestId) + "/"
}
databaseType, err := helpers.GetSourceDatabaseFromDriver(sessionState.Driver)
if err != nil {
http.Error(w, fmt.Sprintf("Error while getting source database: %v", err), http.StatusBadRequest)
return
}
var connectionProfileList []connectionProfile
req := &datastreampb.ListConnectionProfilesRequest{
Parent: fmt.Sprintf("projects/%s/locations/%s", sessionState.GCPProjectID, sessionState.Region),
}
it := dsClient.ListConnectionProfiles(ctx, req)
for {
resp, err := it.Next()
if err == iterator.Done {
break
}
if err != nil {
http.Error(w, fmt.Sprintf("Error while getting list of connection profiles: %v", err), http.StatusBadRequest)
return
}
if source && databaseType == constants.MYSQL && resp.GetMysqlProfile().GetHostname() != "" {
connectionProfileList = append(connectionProfileList, connectionProfile{Name: resp.GetName(), DisplayName: resp.GetDisplayName()})
} else if source && databaseType == constants.ORACLE && resp.GetOracleProfile().GetHostname() != "" {
connectionProfileList = append(connectionProfileList, connectionProfile{Name: resp.GetName(), DisplayName: resp.GetDisplayName()})
} else if source && databaseType == constants.POSTGRES && resp.GetPostgresqlProfile().GetHostname() != "" {
connectionProfileList = append(connectionProfileList, connectionProfile{Name: resp.GetName(), DisplayName: resp.GetDisplayName()})
} else if !source && resp.GetGcsProfile().GetBucket() != "" {
connectionProfileList = append(connectionProfileList, connectionProfile{Name: resp.GetName(), DisplayName: resp.GetDisplayName()})
}
}
w.WriteHeader(http.StatusOK)
json.NewEncoder(w).Encode(connectionProfileList)
}