1
0
Fork 0
mirror of https://gitlab.com/pnx-tools/dns-updater.git synced 2026-06-16 05:54:56 +02:00
dns-updater/provider/manager/manager.go

48 lines
979 B
Go

package manager
import (
"fmt"
"dnsupdater/provider"
"dnsupdater/provider/digitalocean"
)
var factories = map[string]provider.ProviderFactory{
"digitalocean": digitalocean.Factory,
}
type Manager struct {
services map[string]provider.Provider
}
func New() *Manager {
return &Manager{
services: make(map[string]provider.Provider),
}
}
func (m Manager) Get(name string) provider.Provider {
if service, ok := m.services[name]; ok {
return service
}
return nil
}
func (m Manager) RegisterFromConfig(providers map[string]map[string]interface{}) error {
for name, args := range providers {
if factory, ok := factories[name]; ok {
provider, err := factory(args)
if err != nil {
return fmt.Errorf("could not create provider '%s': %v", name, err)
}
m.Register(name, provider)
}
}
return nil
}
func (m Manager) Register(name string, provider provider.Provider) {
m.services[name] = provider
}