Combine New/Setup functions

This commit is contained in:
Michael Hohn
2024-06-16 10:31:52 -07:00
committed by =Michael Hohn
parent f611f02d1c
commit cd0647836e
8 changed files with 47 additions and 63 deletions

View File

@@ -68,19 +68,16 @@ func main() {
// Apply 'mode' flag // Apply 'mode' flag
switch *mode { switch *mode {
case "standalone": case "standalone":
// XX: combine New/Setup functions?
// Assemble single-process version // Assemble single-process version
sl := logger.NewLoggerSingle()
sl.Setup(&logger.Visibles{})
sq := queue.NewQueueSingle(2) // FIXME take value from configuration sl := logger.NewLoggerSingle(&logger.Visibles{})
sq.Setup(&queue.Visibles{
// FIXME take value from configuration
sq := queue.NewQueueSingle(2, &queue.Visibles{
Logger: sl, Logger: sl,
}) })
ss := storage.NewStorageSingle(config.Storage.StartingID) ss := storage.NewStorageSingle(config.Storage.StartingID, &storage.Visibles{})
ss.Setup(&storage.Visibles{})
qp, err := qpstore.NewStore(config.Storage.StartingID) qp, err := qpstore.NewStore(config.Storage.StartingID)
if err != nil { if err != nil {
@@ -88,14 +85,13 @@ func main() {
os.Exit(1) os.Exit(1)
} }
ql, err := storage.NewQLDBStore(config.Storage.StartingID) ql, err := storage.NewQLDBStore(config.Storage.StartingID, &storage.Visibles{})
if err != nil { if err != nil {
slog.Error("Unable to initialize ql database storage") slog.Error("Unable to initialize ql database storage")
os.Exit(1) os.Exit(1)
} }
sc := server.NewCommanderSingle() server.NewCommanderSingle(&server.Visibles{
sc.Setup(&server.Visibles{
Logger: sl, Logger: sl,
Queue: sq, Queue: sq,
ServerStore: ss, ServerStore: ss,
@@ -103,8 +99,8 @@ func main() {
QLDBStore: ql, QLDBStore: ql,
}) })
sr := agent.NewAgentSingle(2, sq) // FIXME take value from configuration // FIXME take value from configuration
sr.Setup(&agent.Visibles{ agent.NewAgentSingle(2, &agent.Visibles{
Logger: sl, Logger: sl,
Queue: sq, Queue: sq,
QueryPackStore: qp, QueryPackStore: qp,
@@ -112,23 +108,19 @@ func main() {
}) })
case "container": case "container":
// XX: combine New/Setup functions?
// Assemble container version // Assemble container version
sl := logger.NewLoggerSingle() sl := logger.NewLoggerSingle(&logger.Visibles{})
sl.Setup(&logger.Visibles{})
sq := queue.NewQueueSingle(2) // FIXME take value from configuration // FIXME take value from configuration
sq.Setup(&queue.Visibles{ sq := queue.NewQueueSingle(2, &queue.Visibles{
Logger: sl, Logger: sl,
}) })
ss, err := storage.NewServerStore(config.Storage.StartingID) ss, err := storage.NewServerStore(config.Storage.StartingID, &storage.Visibles{})
if err != nil { if err != nil {
slog.Error("Unable to initialize server storage") slog.Error("Unable to initialize server storage")
os.Exit(1) os.Exit(1)
} }
ss.Setup(&storage.Visibles{})
qp, err := qpstore.NewStore(config.Storage.StartingID) qp, err := qpstore.NewStore(config.Storage.StartingID)
if err != nil { if err != nil {
@@ -136,23 +128,20 @@ func main() {
os.Exit(1) os.Exit(1)
} }
ql, err := storage.NewQLDBStore(config.Storage.StartingID) ql, err := storage.NewQLDBStore(config.Storage.StartingID, &storage.Visibles{})
if err != nil { if err != nil {
slog.Error("Unable to initialize ql database storage") slog.Error("Unable to initialize ql database storage")
os.Exit(1) os.Exit(1)
} }
ql.Setup(&storage.Visibles{})
sr := agent.NewAgentSingle(2, sq) // FIXME take value from configuration agent.NewAgentSingle(2, &agent.Visibles{
sr.Setup(&agent.Visibles{
Logger: sl, Logger: sl,
Queue: sq, Queue: sq,
QueryPackStore: qp, QueryPackStore: qp,
QLDBStore: ql, QLDBStore: ql,
}) })
sc := server.NewCommanderContainer() server.NewCommanderContainer(&server.Visibles{
sc.Setup(&server.Visibles{
Logger: sl, Logger: sl,
Queue: sq, Queue: sq,
ServerStore: ss, ServerStore: ss,
@@ -161,7 +150,7 @@ func main() {
}) })
case "cluster": case "cluster":
// Assemble cccluster // Assemble cluster version
default: default:
slog.Error("Invalid value for --mode. Allowed values are: standalone, container, cluster\n") slog.Error("Invalid value for --mode. Allowed values are: standalone, container, cluster\n")
os.Exit(1) os.Exit(1)

View File

@@ -24,8 +24,8 @@ type RunnerSingle struct {
queue queue.Queue queue queue.Queue
} }
func NewAgentSingle(numWorkers int, queue queue.Queue) *RunnerSingle { func NewAgentSingle(numWorkers int, av *Visibles) *RunnerSingle {
r := RunnerSingle{queue: queue} r := RunnerSingle{queue: av.Queue}
for id := 1; id <= numWorkers; id++ { for id := 1; id <= numWorkers; id++ {
go r.worker(id) go r.worker(id)
@@ -42,10 +42,6 @@ type Visibles struct {
QLDBStore storage.Storage QLDBStore storage.Storage
} }
func (c *RunnerSingle) Setup(st *Visibles) {
return
}
func (r *RunnerSingle) worker(wid int) { func (r *RunnerSingle) worker(wid int) {
var job common.AnalyzeJob var job common.AnalyzeJob

View File

@@ -4,13 +4,11 @@ type LoggerSingle struct {
modules *Visibles modules *Visibles
} }
func NewLoggerSingle() *LoggerSingle { func NewLoggerSingle(v *Visibles) *LoggerSingle {
l := LoggerSingle{} l := LoggerSingle{}
l.modules = v
return &l return &l
} }
type Visibles struct{} type Visibles struct{}
func (l *LoggerSingle) Setup(v *Visibles) {
l.modules = v
}

View File

@@ -16,14 +16,13 @@ type Visibles struct {
Logger logger.Logger Logger logger.Logger
} }
func (q *QueueSingle) Setup(v *Visibles) { func NewQueueSingle(numWorkers int, v *Visibles) *QueueSingle {
q.modules = v
}
func NewQueueSingle(numWorkers int) *QueueSingle {
q := QueueSingle{} q := QueueSingle{}
q.jobs = make(chan common.AnalyzeJob, 10) q.jobs = make(chan common.AnalyzeJob, 10)
q.results = make(chan common.AnalyzeResult, 10) q.results = make(chan common.AnalyzeResult, 10)
q.NumWorkers = numWorkers q.NumWorkers = numWorkers
q.modules = v
return &q return &q
} }

View File

@@ -21,11 +21,6 @@ import (
"github.com/gorilla/mux" "github.com/gorilla/mux"
) )
func (c *CommanderSingle) Setup(st *Visibles) {
c.st = st
setupEndpoints(c)
}
func setupEndpoints(c CommanderAPI) { func setupEndpoints(c CommanderAPI) {
r := mux.NewRouter() r := mux.NewRouter()

View File

@@ -29,8 +29,12 @@ type CommanderSingle struct {
st *Visibles st *Visibles
} }
func NewCommanderSingle() *CommanderSingle { func NewCommanderSingle(st *Visibles) *CommanderSingle {
c := CommanderSingle{} c := CommanderSingle{}
c.st = st
setupEndpoints(&c)
return &c return &c
} }
@@ -38,8 +42,12 @@ type CommanderContainer struct {
st *Visibles st *Visibles
} }
func NewCommanderContainer() *CommanderContainer { func NewCommanderContainer(st *Visibles) *CommanderContainer {
c := CommanderContainer{} c := CommanderContainer{}
c.st = st
setupEndpoints(&c)
return &c return &c
} }

View File

@@ -32,13 +32,7 @@ func (s *StorageContainer) FindAvailableDBs(analysisReposRequested []common.Owne
return notFoundRepos, analysisRepos return notFoundRepos, analysisRepos
} }
func (s *StorageContainer) Setup(v *Visibles) { func NewQLDBStore(startingID int, v *Visibles) (*StorageContainer, error) {
// TODO XX: set up qldb_db
s.modules = v
}
func NewQLDBStore(startingID int) (*StorageContainer, error) {
// TODO drop the startingID // TODO drop the startingID
db, err := ConnectDB(DBSpec{ db, err := ConnectDB(DBSpec{
Host: "postgres", Host: "postgres",
@@ -61,10 +55,13 @@ func NewQLDBStore(startingID int) (*StorageContainer, error) {
return nil, err return nil, err
} }
// TODO XX: set up qldb_db
s.modules = v
return &s, nil return &s, nil
} }
func NewServerStore(startingID int) (*StorageContainer, error) { func NewServerStore(startingID int, v *Visibles) (*StorageContainer, error) {
db, err := ConnectDB(DBSpec{ db, err := ConnectDB(DBSpec{
Host: "postgres", Host: "postgres",
Port: 5432, Port: 5432,
@@ -85,6 +82,9 @@ func NewServerStore(startingID int) (*StorageContainer, error) {
return nil, err return nil, err
} }
// TODO XX: set up qldb_db
s.modules = v
return &s, nil return &s, nil
} }

View File

@@ -23,13 +23,12 @@ var (
mutex sync.Mutex mutex sync.Mutex
) )
func NewStorageSingle(startingID int) *StorageSingle { func NewStorageSingle(startingID int, v *Visibles) *StorageSingle {
s := StorageSingle{currentID: startingID} s := StorageSingle{currentID: startingID}
return &s
}
func (s *StorageSingle) Setup(v *Visibles) {
s.modules = v s.modules = v
return &s
} }
func (s *StorageSingle) NextID() int { func (s *StorageSingle) NextID() int {