diff --git a/cmd/agent/main.go b/cmd/agent/main.go index faa6139..dd6fd6d 100644 --- a/cmd/agent/main.go +++ b/cmd/agent/main.go @@ -36,7 +36,7 @@ func main() { apiAddr := fmt.Sprintf("%s:%d", cfg.Api.Address, cfg.Api.Port) promAddr := fmt.Sprintf("%s:%d", cfg.Prometheus.Address, cfg.Prometheus.Port) - d := dispatcher.New(q, db, cfg.Interfaces) + d := dispatcher.New(q, db, cfg) go agentapi.New(d, db).Start(apiAddr) go promserver.Start(promAddr, registry) diff --git a/internal/dispatcher/dispatcher.go b/internal/dispatcher/dispatcher.go index f240245..8e94827 100644 --- a/internal/dispatcher/dispatcher.go +++ b/internal/dispatcher/dispatcher.go @@ -3,27 +3,28 @@ package dispatcher import ( "log" + configuration "git.g3e.fr/syonad/two/internal/config/agent" "git.g3e.fr/syonad/two/pkg/worker" "github.com/dgraph-io/badger/v4" ) type Command interface { - Execute(db *badger.DB, interfaces map[string]string) error + Execute(db *badger.DB, cfg *configuration.Config) error } type Dispatcher struct { - queue *worker.Queue - db *badger.DB - interfaces map[string]string + queue *worker.Queue + db *badger.DB + cfg *configuration.Config } -func New(queue *worker.Queue, db *badger.DB, interfaces map[string]string) *Dispatcher { - return &Dispatcher{queue: queue, db: db, interfaces: interfaces} +func New(queue *worker.Queue, db *badger.DB, cfg *configuration.Config) *Dispatcher { + return &Dispatcher{queue: queue, db: db, cfg: cfg} } func (d *Dispatcher) Dispatch(cmd Command) { d.queue.Submit(func() { - if err := cmd.Execute(d.db, d.interfaces); err != nil { + if err := cmd.Execute(d.db, d.cfg); err != nil { log.Printf("command error (%T): %v", cmd, err) } }) diff --git a/internal/dispatcher/subnet_commands.go b/internal/dispatcher/subnet_commands.go index dcb0398..c2a0cff 100644 --- a/internal/dispatcher/subnet_commands.go +++ b/internal/dispatcher/subnet_commands.go @@ -5,6 +5,7 @@ import ( "os" "strconv" + configuration "git.g3e.fr/syonad/two/internal/config/agent" "git.g3e.fr/syonad/two/internal/subnet" "git.g3e.fr/syonad/two/pkg/db/kv" "github.com/dgraph-io/badger/v4" @@ -19,8 +20,8 @@ type CreateSubnetCommand struct { CIDR string } -func (c CreateSubnetCommand) Execute(db *badger.DB, interfaces map[string]string) error { - localIface, ok := interfaces[c.IfaceType] +func (c CreateSubnetCommand) Execute(db *badger.DB, cfg *configuration.Config) error { + localIface, ok := cfg.Interfaces[c.IfaceType] if !ok { return fmt.Errorf("unknown iface_type %q: not found in config", c.IfaceType) } @@ -37,7 +38,7 @@ type DeleteSubnetCommand struct { Name string } -func (c DeleteSubnetCommand) Execute(db *badger.DB, _ map[string]string) error { +func (c DeleteSubnetCommand) Execute(db *badger.DB, _ *configuration.Config) error { kv.AddInDB(db, "subnet/"+c.Name+"/state", "deleting") if err := subnet.DeleteSubnet(db, c.Name); err != nil { fmt.Println(err) diff --git a/internal/dispatcher/vpc_commands.go b/internal/dispatcher/vpc_commands.go index 2c316a3..b2687fc 100644 --- a/internal/dispatcher/vpc_commands.go +++ b/internal/dispatcher/vpc_commands.go @@ -1,6 +1,7 @@ package dispatcher import ( + configuration "git.g3e.fr/syonad/two/internal/config/agent" "git.g3e.fr/syonad/two/internal/vpc" "git.g3e.fr/syonad/two/pkg/db/kv" "github.com/dgraph-io/badger/v4" @@ -10,7 +11,7 @@ type CreateVPCCommand struct { Name string } -func (c CreateVPCCommand) Execute(db *badger.DB, _ map[string]string) error { +func (c CreateVPCCommand) Execute(db *badger.DB, _ *configuration.Config) error { kv.AddInDB(db, "vpc/"+c.Name+"/state", "creating") return vpc.CreateVPC(db, c.Name) } @@ -19,7 +20,7 @@ type DeleteVPCCommand struct { Name string } -func (c DeleteVPCCommand) Execute(db *badger.DB, _ map[string]string) error { +func (c DeleteVPCCommand) Execute(db *badger.DB, _ *configuration.Config) error { kv.AddInDB(db, "vpc/"+c.Name+"/state", "deleting") if err := vpc.DeleteVPC(db, c.Name); err != nil { return err