Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions base/core/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,22 @@ var (
dbWait = utils.PodConfig.GetString("wait_for_db", "empty")
)

func ConfigureApp() {
func configureBaseApp() {
utils.ConfigureLogging()
database.Configure()
metrics.Configure()
database.DBWait(dbWait)
}

func ConfigureApp() {
database.Configure()
configureBaseApp()
}

func ConfigureAdminApp() {
database.ConfigureAdmin()
configureBaseApp()
}

func SetupTestEnvironment() {
utils.SetDefaultEnvOrFail("LOG_LEVEL", "debug")
ConfigureApp()
Expand Down
90 changes: 59 additions & 31 deletions base/database/setup.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,33 +12,46 @@ import (
)

var (
DB *gorm.DB
DBReadReplica *gorm.DB
OtherAdvisoryTypes []string
AdvisoryTypes map[int]string
globalPgConfig *PostgreSQLConfig
DB *gorm.DB
DBReadReplica *gorm.DB
OtherAdvisoryTypes []string
AdvisoryTypes map[int]string
globalPgConfig PostgreSQLConfig
globalPgReadReplicaConfig PostgreSQLConfig
)

func InitDB() {
pgConfig := loadEnvPostgreSQLConfig(false)
if DB != nil && pgConfig == globalPgConfig {
// reuse connection
check(DB)
return
func initDB(db *gorm.DB, pgConfig PostgreSQLConfig, globalPgConfig *PostgreSQLConfig) *gorm.DB {
if db == nil || pgConfig != *globalPgConfig {
// create new connection if not already exists
*globalPgConfig = pgConfig
db = openPostgreSQL(globalPgConfig)
}
globalPgConfig = pgConfig
DB = openPostgreSQL(pgConfig)
check(DB)
if utils.CoreCfg.DBReadReplicaEnabled {
pgConfig := loadEnvPostgreSQLConfig(ReadReplicaConfigured())
DBReadReplica = openPostgreSQL(pgConfig)
check(DBReadReplica)
check(db)
return db
}

func InitAdminDB() {
pgConfig := createPostgreSQLPrimaryAdminConfig()
DB = initDB(DB, pgConfig, &globalPgConfig)
}

func InitUserDB() {
pgConfig := createPostgreSQLPrimaryUserConfig()
DB = initDB(DB, pgConfig, &globalPgConfig)
if utils.CoreCfg.DBReadReplicaEnabled && ReadReplicaConfigured() {
pgConfig := createPostgreSQLReplicaConfig()
DBReadReplica = initDB(DBReadReplica, pgConfig, &globalPgReadReplicaConfig)
}
}

// Configure Configure database, PostgreSQL or SQLite connection
func Configure() {
InitDB()
InitUserDB()
loadAdditionalParamsFromDB()
}

func ConfigureAdmin() {
InitAdminDB()
loadAdditionalParamsFromDB()
}

Expand Down Expand Up @@ -104,19 +117,11 @@ func check(db *gorm.DB) {
}

// load database config from environment vars using inserted prefix
func loadEnvPostgreSQLConfig(useReadReplica bool) *PostgreSQLConfig {
host := utils.CoreCfg.DBHost
port := utils.CoreCfg.DBPort
if useReadReplica {
host = utils.CoreCfg.DBReadReplicaHost
port = utils.CoreCfg.DBReadReplicaPort
}
func createPostgreSQLPrimaryConfig() PostgreSQLConfig {
config := PostgreSQLConfig{
User: utils.CoreCfg.DBUser,
Host: host,
Port: port,
Host: utils.CoreCfg.DBHost,
Port: utils.CoreCfg.DBPort,
Database: utils.CoreCfg.DBName,
Passwd: utils.CoreCfg.DBPassword,
SSLMode: utils.CoreCfg.DBSslMode,
SSLRootCert: utils.CoreCfg.DBSslRootCert,
Debug: utils.CoreCfg.DBDebug,
Expand All @@ -125,7 +130,30 @@ func loadEnvPostgreSQLConfig(useReadReplica bool) *PostgreSQLConfig {
MaxIdleConnections: utils.CoreCfg.DBMaxIdleConnections,
MaxConnectionLifetimeS: utils.CoreCfg.DBMaxConnectionLifetimeS,
}
return &config
return config
}

func createPostgreSQLReplicaConfig() PostgreSQLConfig {
config := createPostgreSQLPrimaryConfig()
config.User = utils.CoreCfg.DBUser
config.Passwd = utils.CoreCfg.DBPassword
config.Host = utils.CoreCfg.DBReadReplicaHost
config.Port = utils.CoreCfg.DBReadReplicaPort
return config
}

func createPostgreSQLPrimaryUserConfig() PostgreSQLConfig {
config := createPostgreSQLPrimaryConfig()
config.User = utils.CoreCfg.DBUser
config.Passwd = utils.CoreCfg.DBPassword
return config
}

func createPostgreSQLPrimaryAdminConfig() PostgreSQLConfig {
config := createPostgreSQLPrimaryConfig()
config.User = utils.CoreCfg.DBAdminUser
config.Passwd = utils.CoreCfg.DBAdminPassword
return config
}

// create "data source" config string needed for database connection opening
Expand Down
2 changes: 1 addition & 1 deletion base/utils/rpm.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (
"strconv"
"strings"

rpm "github.com/ezamriy/gorpm"
rpm "github.com/MichaelMraka/gorpm"
"github.com/pkg/errors"
)

Expand Down
2 changes: 1 addition & 1 deletion evaluator/package_cache.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
"strings"
"time"

rpm "github.com/ezamriy/gorpm"
rpm "github.com/MichaelMraka/gorpm"
lru "github.com/hashicorp/golang-lru/v2"
"gorm.io/gorm"
)
Expand Down
6 changes: 2 additions & 4 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ module app
go 1.24.4

require (
github.com/MichaelMraka/gorpm v0.0.0-20251128174203-65cf25f01bac
github.com/aws/aws-sdk-go v1.55.7
github.com/bytedance/sonic v1.14.2
github.com/ezamriy/gorpm v0.0.0-20160905202458-25f7273cbf51
github.com/getkin/kin-openapi v0.133.0
github.com/gin-contrib/timeout v1.0.2
github.com/gin-gonic/gin v1.11.0
Expand All @@ -19,7 +19,7 @@ require (
github.com/lib/pq v1.10.9
github.com/pkg/errors v0.9.1
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2
github.com/project-kessel/kessel-sdk-go v1.3.0
github.com/project-kessel/kessel-sdk-go v1.4.0
github.com/prometheus/client_golang v1.23.0
github.com/redhatinsights/app-common-go v1.6.9
github.com/redhatinsights/platform-go-middlewares v1.0.0
Expand Down Expand Up @@ -137,6 +137,4 @@ require (
gopkg.in/yaml.v3 v3.0.1 // indirect
)

replace github.com/ezamriy/gorpm v0.0.0-20160905202458-25f7273cbf51 => github.com/MichaelMraka/gorpm v0.0.0-20210923131407-e21b5950f175

replace github.com/segmentio/kafka-go v0.4.49 => github.com/MichaelMraka/kafka-go v0.0.0-20251014134425-230b5408c208
8 changes: 4 additions & 4 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25
github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
github.com/KyleBanks/depth v1.2.1 h1:5h8fQADFrWtarTdtDudMmGsC7GPbOAu6RVB3ffsVFHc=
github.com/KyleBanks/depth v1.2.1/go.mod h1:jzSb9d0L43HxTQfT+oSA1EEp2q+ne2uh6XgeJcm8brE=
github.com/MichaelMraka/gorpm v0.0.0-20210923131407-e21b5950f175 h1:KkjlVN/HUw3OStvTnsAKt6bzLfWz/qDzfdNKRAo9Ef0=
github.com/MichaelMraka/gorpm v0.0.0-20210923131407-e21b5950f175/go.mod h1:R3iHBCKh4OIuNrIzJl+81N08s7dD92MLffdRy+wbtnk=
github.com/MichaelMraka/gorpm v0.0.0-20251128174203-65cf25f01bac h1:qxH8XNTYCJvelLn1tm6iwPI2WIOzUu9x4Wzdui5+pUI=
github.com/MichaelMraka/gorpm v0.0.0-20251128174203-65cf25f01bac/go.mod h1:R3iHBCKh4OIuNrIzJl+81N08s7dD92MLffdRy+wbtnk=
github.com/MichaelMraka/kafka-go v0.0.0-20251014134425-230b5408c208 h1:+BepVnwpCIO1xQFu5ZxRoPVwadiGaevazv5/RFMDlRw=
github.com/MichaelMraka/kafka-go v0.0.0-20251014134425-230b5408c208/go.mod h1:Y1gn60kzLEEaW28YshXyk2+VCUKbJ3Qr6DrnT3i4+9E=
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
Expand Down Expand Up @@ -253,8 +253,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g=
github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U=
github.com/project-kessel/kessel-sdk-go v1.3.0 h1:9pN66fPL6glNMHMqMmbp44h6hAFKSG6je/8xuowGAVk=
github.com/project-kessel/kessel-sdk-go v1.3.0/go.mod h1:wPQReT5OgUvuipd7ZKSdwwpmFHVSlDiA+ueeueK6R38=
github.com/project-kessel/kessel-sdk-go v1.4.0 h1:k4V/a6G4Es8j//OG1iAd0NF3xZ8o8QymtVlhCSKI4x4=
github.com/project-kessel/kessel-sdk-go v1.4.0/go.mod h1:66IfMGKX5odNiyRa+XxwPdCEoW4wFp5+h23NKN12LLI=
github.com/prometheus/client_golang v1.23.0 h1:ust4zpdl9r4trLY/gSjlm07PuiBq2ynaXXlptpfy8Uc=
github.com/prometheus/client_golang v1.23.0/go.mod h1:i/o0R9ByOnHX0McrTMTyhYvKE4haaf2mW08I+jGAjEE=
github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk=
Expand Down
2 changes: 1 addition & 1 deletion scripts/feed_db.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (
)

func main() {
database.InitDB()
database.InitAdminDB()
if len(os.Args) > 1 {
switch os.Args[1] {
case "inventory_hosts":
Expand Down
2 changes: 1 addition & 1 deletion turnpike/admin_api.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import (

// @BasePath /api/patch/admin
func RunAdminAPI() {
core.ConfigureApp()
core.ConfigureAdminApp()

// Toggle Turnpike authentication for internal API (manual sync, re-calc)
enableTurnpikeAuth := utils.PodConfig.GetBool("turnpike_auth", true)
Expand Down
Loading