first
This commit is contained in:
579
DCIManager6/dci6-support/platform_info_fromDB.go
Normal file
579
DCIManager6/dci6-support/platform_info_fromDB.go
Normal file
@@ -0,0 +1,579 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func getDciLocationDB(ispDbName string, runningSql runningSqlServer) ([]dciLocation, []error) {
|
||||
dbName := "dci_1"
|
||||
if ispDbName == "isp" {
|
||||
dbName = ispDbName
|
||||
}
|
||||
query := "SELECT id, status, COALESCE(status_info, 'null') as status_info, name, ssh_address, ssh_port, ssh_user, COALESCE(setup_info, 'null') as setup_info, COALESCE(params_dhcp, 'null') as params_dhcp, COALESCE(params_redis, 'null') as params_redis, COALESCE(params_nginx, 'null') as params_nginx, COALESCE(params_netflow, 'null') as params_netflow, COALESCE(settings, 'null') as settings, CASE WHEN is_main THEN 1 ELSE 0 END as is_main, COALESCE(proxy_params, '') as proxy_params, COALESCE(userspace, 0) as userspace, COALESCE(patch, 'null') as patch FROM dci_location;"
|
||||
|
||||
var errs []error
|
||||
var dl []dciLocation
|
||||
|
||||
if runningSql.Type == "mysql" {
|
||||
rows, db, err := mysqlQuery(query, dbName, runningSql)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка выполнения запроса к таблице %s.dci_location : %s", dbName, err.Error())
|
||||
errs = append(errs, err)
|
||||
return dl, errs
|
||||
}
|
||||
defer db.Close()
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
var dciLoc dciLocation
|
||||
err = rows.Scan(&dciLoc.Id, &dciLoc.Status, &dciLoc.StatusInfo, &dciLoc.Name, &dciLoc.SshAddress, &dciLoc.SshPort, &dciLoc.SshUser, &dciLoc.SetupInfo, &dciLoc.ParamsDhcp, &dciLoc.ParamsRedis, &dciLoc.ParamsNginx, &dciLoc.ParamsNetflow, &dciLoc.Settings, &dciLoc.IsMain, &dciLoc.ProxyParams, &dciLoc.Userspace, &dciLoc.Patch)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка сканирования результатов запроса в структуру dciLocation : %s", err.Error())
|
||||
errs = append(errs, err)
|
||||
continue
|
||||
}
|
||||
dl = append(dl, dciLoc)
|
||||
}
|
||||
} else if runningSql.Type == "pgsql" {
|
||||
rows, pool, err := pgsqlQuery(query, dbName, runningSql)
|
||||
// dbName dci_1
|
||||
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка выполнения запроса к таблице %s.dci_location : %s", dbName, err.Error())
|
||||
errs = append(errs, err)
|
||||
return dl, errs
|
||||
}
|
||||
defer pool.Close()
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
var dciLoc dciLocation
|
||||
err = rows.Scan(&dciLoc.Id, &dciLoc.Status, &dciLoc.StatusInfo, &dciLoc.Name, &dciLoc.SshAddress, &dciLoc.SshPort, &dciLoc.SshUser, &dciLoc.SetupInfo, &dciLoc.ParamsDhcp, &dciLoc.ParamsRedis, &dciLoc.ParamsNginx, &dciLoc.ParamsNetflow, &dciLoc.Settings, &dciLoc.IsMain, &dciLoc.ProxyParams, &dciLoc.Userspace, &dciLoc.Patch)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка сканирования результатов запроса в структуру dciLocation : %s", err.Error())
|
||||
errs = append(errs, err)
|
||||
continue
|
||||
}
|
||||
dl = append(dl, dciLoc)
|
||||
}
|
||||
}
|
||||
return dl, errs
|
||||
}
|
||||
|
||||
func getDciLocationComposeDB(ispDbName string, runningSql runningSqlServer) ([]dciLocationDockerCompose, []error) {
|
||||
dbName := "dci_1"
|
||||
if ispDbName == "isp" {
|
||||
dbName = ispDbName
|
||||
}
|
||||
var errs []error
|
||||
var dlc []dciLocationDockerCompose
|
||||
query := "SELECT id,name,docker_compose FROM dci_location;"
|
||||
|
||||
switch runningSql.Type {
|
||||
case "mysql":
|
||||
rows, db, err := mysqlQuery(query, dbName, runningSql)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка выполнения запроса к таблице %s.dci_location : %s", dbName, err.Error())
|
||||
errs = append(errs, err)
|
||||
return dlc, errs
|
||||
}
|
||||
defer db.Close()
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
var dciLocCompose dciLocationDockerCompose
|
||||
err = rows.Scan(&dciLocCompose.Id, &dciLocCompose.Name, &dciLocCompose.DockerCompose)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка записи в структуру dciLocationDockerCompose : %s", err.Error())
|
||||
}
|
||||
dlc = append(dlc, dciLocCompose)
|
||||
}
|
||||
case "pgsql":
|
||||
rows, pool, err := pgsqlQuery(query, dbName, runningSql)
|
||||
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка выполнения запроса к таблице %s.dci_location : %s", dbName, err.Error())
|
||||
errs = append(errs, err)
|
||||
return dlc, errs
|
||||
}
|
||||
defer rows.Close()
|
||||
defer pool.Close()
|
||||
for rows.Next() {
|
||||
var dciLocCompose dciLocationDockerCompose
|
||||
err = rows.Scan(&dciLocCompose.Id, &dciLocCompose.Name, &dciLocCompose.DockerCompose)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка записи в структуру dciLocationDockerCompose : %s", err.Error())
|
||||
}
|
||||
dlc = append(dlc, dciLocCompose)
|
||||
}
|
||||
}
|
||||
return dlc, errs
|
||||
}
|
||||
|
||||
func getDciTaskMonthErrorsDB(ispDbName string, runningSql runningSqlServer) ([]taskManagerTask, []error) {
|
||||
var tm []taskManagerTask
|
||||
var errs []error
|
||||
dbName := "auth"
|
||||
if ispDbName == "isp" {
|
||||
dbName = ispDbName
|
||||
}
|
||||
|
||||
switch runningSql.Type {
|
||||
case "mysql":
|
||||
query := "SELECT id,name,registration_time,request_info,output,status FROM taskmgr_task WHERE status != 'complete' AND registration_time >= NOW() - INTERVAL 1 MONTH;"
|
||||
rows, db, err := mysqlQuery(query, dbName, runningSql)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка выполнения запроса к таблице %s.taskmgr_task : %s", dbName, err.Error())
|
||||
errs = append(errs, err)
|
||||
return tm, errs
|
||||
}
|
||||
defer rows.Close()
|
||||
defer db.Close()
|
||||
for rows.Next() {
|
||||
var taskManagerFailed taskManagerTask
|
||||
err = rows.Scan(&taskManagerFailed.Id, &taskManagerFailed.Name, &taskManagerFailed.RegistrationTime, &taskManagerFailed.RequestInfo, &taskManagerFailed.Output, &taskManagerFailed.Status)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка записи в структуру taskManagerFailed : %s", err.Error())
|
||||
}
|
||||
tm = append(tm, taskManagerFailed)
|
||||
}
|
||||
case "pgsql":
|
||||
query := "SELECT id,name,registration_time,request_info,output,status FROM taskmgr_task WHERE status != 'complete' AND registration_time >= NOW() - INTERVAL '1 MONTH';"
|
||||
rows, pool, err := pgsqlQuery(query, dbName, runningSql)
|
||||
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка выполнения запроса к таблице %s.taskmgr_task : %s", dbName, err.Error())
|
||||
errs = append(errs, err)
|
||||
return tm, errs
|
||||
}
|
||||
defer rows.Close()
|
||||
defer pool.Close()
|
||||
for rows.Next() {
|
||||
|
||||
var taskManagerFailed taskManagerTask
|
||||
err = rows.Scan(&taskManagerFailed.Id, &taskManagerFailed.Name, &taskManagerFailed.RegistrationTime, &taskManagerFailed.RequestInfo, &taskManagerFailed.Output, &taskManagerFailed.Status)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка записи в структуру taskManagerFailed : %s", err.Error())
|
||||
}
|
||||
log.Println(taskManagerFailed.Id)
|
||||
tm = append(tm, taskManagerFailed)
|
||||
}
|
||||
}
|
||||
|
||||
return tm, errs
|
||||
}
|
||||
|
||||
func getDciLocationHWCountDB(ispDbName string, runningSql runningSqlServer, platformStruct outputPlatformStruct) ([]hwByLocation, []error) {
|
||||
var hw []hwByLocation
|
||||
var errs []error
|
||||
dbName := "dci_1"
|
||||
if ispDbName == "isp" {
|
||||
dbName = ispDbName
|
||||
}
|
||||
|
||||
// dbName dci_1
|
||||
for _, loc := range platformStruct.DciLocations {
|
||||
locId := strconv.Itoa(loc.Id)
|
||||
query := "select (SELECT COUNT(id) FROM dci_server WHERE location = " + locId + ") AS server, (SELECT COUNT(id) FROM dci_switch WHERE location = " + locId + ") AS switch, (SELECT count(id) FROM dci_pdu WHERE location = " + locId + ") AS pdu, (SELECT COUNT(id) FROM dci_ups WHERE location = " + locId + ") AS ups;"
|
||||
switch runningSql.Type {
|
||||
case "mysql":
|
||||
rows, db, err := mysqlQuery(query, dbName, runningSql)
|
||||
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка выполнения запроса к таблицам с оборудованиям : %s", err.Error())
|
||||
errs = append(errs, err)
|
||||
return hw, errs
|
||||
}
|
||||
defer db.Close()
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
var hwByLocation hwByLocation
|
||||
err = rows.Scan(&hwByLocation.Server, &hwByLocation.Switch, &hwByLocation.Pdu, &hwByLocation.Ups)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка записи в структуру hwByLocation: %s", err.Error())
|
||||
}
|
||||
hwByLocation.Location = loc.Id
|
||||
hw = append(hw, hwByLocation)
|
||||
}
|
||||
case "pgsql":
|
||||
rows, pool, err := pgsqlQuery(query, dbName, runningSql)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка выполнения запроса к таблицам с оборудованием : %s", err.Error())
|
||||
errs = append(errs, err)
|
||||
return hw, errs
|
||||
}
|
||||
defer pool.Close()
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
var hwByLocation hwByLocation
|
||||
err = rows.Scan(&hwByLocation.Server, &hwByLocation.Switch, &hwByLocation.Pdu, &hwByLocation.Ups)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка записи в структуру hwByLocation: %s", err.Error())
|
||||
}
|
||||
hwByLocation.Location = loc.Id
|
||||
hw = append(hw, hwByLocation)
|
||||
}
|
||||
}
|
||||
}
|
||||
return hw, errs
|
||||
}
|
||||
|
||||
func getDciPluginsDB(ispDbName string, runningSql runningSqlServer) ([]installedPlugin, []error) {
|
||||
var ip []installedPlugin
|
||||
var errs []error
|
||||
dbName := "auth"
|
||||
if ispDbName == "isp" {
|
||||
dbName = ispDbName
|
||||
}
|
||||
query := "SELECT COALESCE(name, 'null'), COALESCE(status, 'null'), COALESCE(version, 'null'), COALESCE(current_version, 'null') from ps_plugin;"
|
||||
switch runningSql.Type {
|
||||
case "mysql":
|
||||
rows, db, err := mysqlQuery(query, dbName, runningSql)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка выполнения запроса к таблице %s.ps_plugin : %s", dbName, err.Error())
|
||||
errs = append(errs, err)
|
||||
return ip, errs
|
||||
}
|
||||
defer db.Close()
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
var instPlug installedPlugin
|
||||
err = rows.Scan(&instPlug.Name, &instPlug.Status, &instPlug.Version, &instPlug.CurrentVersion)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка записи в структуру installedPlugin : %s", err.Error())
|
||||
errs = append(errs, err)
|
||||
}
|
||||
ip = append(ip, instPlug)
|
||||
}
|
||||
case "pgsql":
|
||||
rows, pool, err := pgsqlQuery(query, dbName, runningSql)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка выполнения запроса к таблице %s.ps_plugin : %s", dbName, err.Error())
|
||||
errs = append(errs, err)
|
||||
return ip, errs
|
||||
}
|
||||
defer pool.Close()
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
var instPlug installedPlugin
|
||||
err = rows.Scan(&instPlug.Name, &instPlug.Status, &instPlug.Version, &instPlug.CurrentVersion)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка записи в структуру installedPlugin : %s", err.Error())
|
||||
errs = append(errs, err)
|
||||
}
|
||||
ip = append(ip, instPlug)
|
||||
}
|
||||
}
|
||||
return ip, errs
|
||||
}
|
||||
|
||||
func getDciUsersCountDB(ispDbName string, runningSql runningSqlServer) (users, error) {
|
||||
var u users
|
||||
var err error
|
||||
dbName := "auth"
|
||||
if ispDbName == "isp" {
|
||||
dbName = ispDbName
|
||||
}
|
||||
|
||||
query := "SELECT COUNT(id) FROM auth_user;"
|
||||
switch runningSql.Type {
|
||||
case "mysql":
|
||||
rows, db, err := mysqlQuery(query, dbName, runningSql)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка выполнения запроса к таблице %s.auth_user : %s", dbName, err.Error())
|
||||
return u, err
|
||||
}
|
||||
defer db.Close()
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
err = rows.Scan(&u.Count)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка записи в структуру users")
|
||||
if rows != nil {
|
||||
rows.Close()
|
||||
}
|
||||
return u, err
|
||||
}
|
||||
}
|
||||
case "pgsql":
|
||||
rows, pool, err := pgsqlQuery(query, dbName, runningSql)
|
||||
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка выполнения запроса к таблице %s.auth_user : %s", dbName, err.Error())
|
||||
return u, err
|
||||
}
|
||||
defer pool.Close()
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
err = rows.Scan(&u.Count)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка записи в структуру users")
|
||||
if rows != nil {
|
||||
rows.Close()
|
||||
}
|
||||
return u, err
|
||||
}
|
||||
}
|
||||
}
|
||||
return u, err
|
||||
}
|
||||
|
||||
func getDciLdapDB(ispDbName string, runningSql runningSqlServer) ([]ldap, []error) {
|
||||
var ldaps []ldap
|
||||
var errs []error
|
||||
dbName := "auth"
|
||||
if ispDbName == "isp" {
|
||||
dbName = ispDbName
|
||||
}
|
||||
query := "SELECT id,name,last_sync FROM auth_ldap;"
|
||||
switch runningSql.Type {
|
||||
case "mysql":
|
||||
rows, db, err := mysqlQuery(query, dbName, runningSql)
|
||||
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка при выполнении запроса к %s.auth_ldap : %s", dbName, err.Error())
|
||||
errs = append(errs, err)
|
||||
return ldaps, errs
|
||||
}
|
||||
defer db.Close()
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
var ldap ldap
|
||||
err = rows.Scan(&ldap.Id, &ldap.Name, &ldap.LastSync)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка при записи структуры ldap : %s", err.Error())
|
||||
errs = append(errs, err)
|
||||
}
|
||||
ldaps = append(ldaps, ldap)
|
||||
}
|
||||
case "pgsql":
|
||||
rows, pool, err := pgsqlQuery(query, dbName, runningSql)
|
||||
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка при выполнении запроса к %s.auth_ldap : %s", dbName, err.Error())
|
||||
errs = append(errs, err)
|
||||
return ldaps, errs
|
||||
}
|
||||
defer pool.Close()
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
var ldap ldap
|
||||
err = rows.Scan(&ldap.Id, &ldap.Name, &ldap.LastSync)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка при записи структуры ldap : %s", err.Error())
|
||||
errs = append(errs, err)
|
||||
}
|
||||
ldaps = append(ldaps, ldap)
|
||||
}
|
||||
}
|
||||
return ldaps, errs
|
||||
}
|
||||
|
||||
func getDciRepoDB(ispDbName string, runningSql runningSqlServer) ([]repo, []error) {
|
||||
var repos []repo
|
||||
var errs []error
|
||||
query := "SELECT id,name,url FROM dci_repo"
|
||||
dbName := "dci_1"
|
||||
if ispDbName == "isp" {
|
||||
dbName = ispDbName
|
||||
}
|
||||
|
||||
switch runningSql.Type {
|
||||
case "mysql":
|
||||
rows, db, err := mysqlQuery(query, dbName, runningSql)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка выполнения запроса к %s.dci_repo : %s", dbName, err.Error())
|
||||
errs = append(errs, err)
|
||||
return repos, errs
|
||||
}
|
||||
defer db.Close()
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
var repo repo
|
||||
err = rows.Scan(&repo.Id, &repo.Name, &repo.Url)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка запписи в структуру repo : %s", err.Error())
|
||||
errs = append(errs, err)
|
||||
}
|
||||
repos = append(repos, repo)
|
||||
}
|
||||
case "pgsql":
|
||||
rows, pool, err := pgsqlQuery(query, dbName, runningSql)
|
||||
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка выполнения запроса к %s.dci_repo : %s", dbName, err.Error())
|
||||
errs = append(errs, err)
|
||||
return repos, errs
|
||||
}
|
||||
defer pool.Close()
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
var repo repo
|
||||
err = rows.Scan(&repo.Id, &repo.Name, &repo.Url)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка запписи в структуру repo : %s", err.Error())
|
||||
errs = append(errs, err)
|
||||
}
|
||||
repos = append(repos, repo)
|
||||
}
|
||||
}
|
||||
return repos, errs
|
||||
}
|
||||
|
||||
func getDciOsTemplatesDB(ispDbName string, runningSql runningSqlServer, platformStruct outputPlatformStruct) ([]osTemplate, []error) {
|
||||
var ispRepSlice []string
|
||||
for _, r := range platformStruct.Repos {
|
||||
if strings.Contains(r.Url, "download.ispsystem.com") {
|
||||
ispRepSlice = append(ispRepSlice, strconv.Itoa(r.Id))
|
||||
}
|
||||
}
|
||||
ispRep := strings.Join(ispRepSlice, ",")
|
||||
var osTemplates []osTemplate
|
||||
var errs []error
|
||||
query := "SELECT id,name,filename,macro,metainfo,directory_name,repository,size from dci_os_template where repository not in (" + ispRep + ");"
|
||||
dbName := "dci_1"
|
||||
if ispDbName == "isp" {
|
||||
dbName = ispDbName
|
||||
}
|
||||
switch runningSql.Type {
|
||||
case "mysql":
|
||||
rows, db, err := mysqlQuery(query, dbName, runningSql)
|
||||
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка при выполнении запроса к %s.dci_os_template : %s", dbName, err.Error())
|
||||
errs = append(errs, err)
|
||||
return osTemplates, errs
|
||||
}
|
||||
defer db.Close()
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
var ostempl osTemplate
|
||||
err = rows.Scan(&ostempl.Id, &ostempl.Name, &ostempl.Filename, &ostempl.Macro, &ostempl.Metainfo, &ostempl.DirectoryName, &ostempl.Repository, &ostempl.Size)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка записи в структуру osTemplate : %s", err.Error())
|
||||
errs = append(errs, err)
|
||||
}
|
||||
osTemplates = append(osTemplates, ostempl)
|
||||
}
|
||||
case "pgsql":
|
||||
rows, pool, err := pgsqlQuery(query, dbName, runningSql)
|
||||
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка при выполнении запроса к %s.dci_os_template : %s", dbName, err.Error())
|
||||
errs = append(errs, err)
|
||||
return osTemplates, errs
|
||||
}
|
||||
defer pool.Close()
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
var ostempl osTemplate
|
||||
err = rows.Scan(&ostempl.Id, &ostempl.Name, &ostempl.Filename, &ostempl.Macro, &ostempl.Metainfo, &ostempl.DirectoryName, &ostempl.Repository, &ostempl.Size)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка записи в структуру osTemplate : %s", err.Error())
|
||||
errs = append(errs, err)
|
||||
}
|
||||
osTemplates = append(osTemplates, ostempl)
|
||||
}
|
||||
}
|
||||
|
||||
return osTemplates, errs
|
||||
}
|
||||
|
||||
func getDciRealIpDB(ispDbName string, runningSql runningSqlServer) (realIP, error) {
|
||||
dbName := "dci_1"
|
||||
if ispDbName == "isp" {
|
||||
dbName = ispDbName
|
||||
}
|
||||
var ri realIP
|
||||
var err error
|
||||
query := "SELECT name, value FROM isp_settings WHERE name = 'trusted_servers';"
|
||||
|
||||
switch runningSql.Type {
|
||||
case "mysql":
|
||||
// TODO Тут важно проверить, что это хранится в таблице isp_settings в базе dci_1, а не auth Эта таблица есть в обеих базах и там разные настройки
|
||||
rows, db, err := mysqlQuery(query, dbName, runningSql)
|
||||
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка запроса к %s.isp_settings : %s", dbName, err.Error())
|
||||
return ri, err
|
||||
}
|
||||
defer db.Close()
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
var ri realIP
|
||||
err = rows.Scan(&ri.Name, &ri.Value)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка записи в структуру realIP : %s", err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
case "pgsql":
|
||||
// TODO Тут важно проверить, что это хранится в таблице isp_settings в базе dci_1, а не auth Эта таблица есть в обеих базах и там разные настройки
|
||||
rows, pool, err := pgsqlQuery(query, dbName, runningSql)
|
||||
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка запроса к %s.isp_settings : %s", dbName, err.Error())
|
||||
return ri, err
|
||||
}
|
||||
defer pool.Close()
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
var ri realIP
|
||||
err = rows.Scan(&ri.Name, &ri.Value)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка записи в структуру realIP : %s", err.Error())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ri, err
|
||||
}
|
||||
|
||||
func getDciBackupTask(ispDbName string, runningSql runningSqlServer) ([]backupTask, []error) {
|
||||
var bts []backupTask
|
||||
var errs []error
|
||||
dbName := "auth"
|
||||
if ispDbName == "isp" {
|
||||
dbName = ispDbName
|
||||
}
|
||||
query := "SELECT id,enabled,cron_expression,limit_count,limit_size_mib FROM backup_task;"
|
||||
|
||||
switch runningSql.Type {
|
||||
case "mysql":
|
||||
rows, db, err := mysqlQuery(query, dbName, runningSql)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка запроса к %s.backup_task : %s", dbName, err)
|
||||
errs = append(errs, err)
|
||||
return bts, errs
|
||||
}
|
||||
defer db.Close()
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
var bt backupTask
|
||||
err = rows.Scan(&bt.Id, &bt.Enabled, &bt.CronExpression, &bt.LimitCount, &bt.LimitSizeMib)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка записи в структуру backupTask : %s", err.Error())
|
||||
}
|
||||
bts = append(bts, bt)
|
||||
}
|
||||
case "pgsql":
|
||||
rows, pool, err := pgsqlQuery(query, dbName, runningSql)
|
||||
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка запроса к %s.backup_task : %s", dbName, err)
|
||||
errs = append(errs, err)
|
||||
return bts, errs
|
||||
}
|
||||
defer pool.Close()
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
var bt backupTask
|
||||
err = rows.Scan(&bt.Id, &bt.Enabled, &bt.CronExpression, &bt.LimitCount, &bt.LimitSizeMib)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("Ошибка записи в структуру backupTask : %s", err.Error())
|
||||
}
|
||||
bts = append(bts, bt)
|
||||
}
|
||||
}
|
||||
return bts, errs
|
||||
}
|
||||
Reference in New Issue
Block a user