This allows `--cluster-domain` to be passed to virtual kubelet like a traditional kublet, and use this to generate search-domains for `/etc/resolv.conf` * Set default `cluster-domain` to `cluster-local` to match current kubelet Related: #641 Signed-off-by: Graham Hayes <gr@ham.ie>
75 lines
1.5 KiB
Go
75 lines
1.5 KiB
Go
package providers
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/virtual-kubelet/virtual-kubelet/errdefs"
|
|
"github.com/virtual-kubelet/virtual-kubelet/manager"
|
|
)
|
|
|
|
// Store is used for registering/fetching providers
|
|
type Store struct {
|
|
mu sync.Mutex
|
|
ls map[string]InitFunc
|
|
}
|
|
|
|
func NewStore() *Store {
|
|
return &Store{
|
|
ls: make(map[string]InitFunc),
|
|
}
|
|
}
|
|
|
|
// Register registers a providers init func by name
|
|
func (s *Store) Register(name string, f InitFunc) error {
|
|
if f == nil {
|
|
return errdefs.InvalidInput("provided init function cannot not be nil")
|
|
}
|
|
s.mu.Lock()
|
|
s.ls[name] = f
|
|
s.mu.Unlock()
|
|
return nil
|
|
}
|
|
|
|
// Get gets the registered init func for the given name
|
|
// The returned function may be nil if the given name is not registered.
|
|
func (s *Store) Get(name string) InitFunc {
|
|
s.mu.Lock()
|
|
f := s.ls[name]
|
|
s.mu.Unlock()
|
|
return f
|
|
}
|
|
|
|
// List lists all the registered providers
|
|
func (s *Store) List() []string {
|
|
s.mu.Lock()
|
|
defer s.mu.Unlock()
|
|
|
|
ls := make([]string, 0, len(s.ls))
|
|
for p := range s.ls {
|
|
ls = append(ls, p)
|
|
}
|
|
|
|
return ls
|
|
}
|
|
|
|
// Exists returns if there is an init function registered under the provided name
|
|
func (s *Store) Exists(name string) bool {
|
|
s.mu.Lock()
|
|
_, ok := s.ls[name]
|
|
s.mu.Unlock()
|
|
return ok
|
|
}
|
|
|
|
// InitConfig is the config passed to initialize a registered provider.
|
|
type InitConfig struct {
|
|
ConfigPath string
|
|
NodeName string
|
|
OperatingSystem string
|
|
InternalIP string
|
|
DaemonPort int32
|
|
KubeClusterDomain string
|
|
ResourceManager *manager.ResourceManager
|
|
}
|
|
|
|
type InitFunc func(InitConfig) (Provider, error)
|