Allow to call back when a plugin is loaded.
Signed-off-by: Madhu Venugopal <madhu@docker.com>
This commit is contained in:
parent
774251695e
commit
1501e01cae
2 changed files with 16 additions and 2 deletions
|
@ -15,7 +15,7 @@ import (
|
||||||
|
|
||||||
const (
|
const (
|
||||||
versionMimetype = "appplication/vnd.docker.plugins.v1+json"
|
versionMimetype = "appplication/vnd.docker.plugins.v1+json"
|
||||||
defaultTimeOut = 120
|
defaultTimeOut = 30
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewClient(addr string) *Client {
|
func NewClient(addr string) *Client {
|
||||||
|
|
|
@ -16,7 +16,10 @@ type plugins struct {
|
||||||
plugins map[string]*Plugin
|
plugins map[string]*Plugin
|
||||||
}
|
}
|
||||||
|
|
||||||
var storage = plugins{plugins: make(map[string]*Plugin)}
|
var (
|
||||||
|
storage = plugins{plugins: make(map[string]*Plugin)}
|
||||||
|
extpointHandlers = make(map[string]func(string, *Client))
|
||||||
|
)
|
||||||
|
|
||||||
type Manifest struct {
|
type Manifest struct {
|
||||||
Implements []string
|
Implements []string
|
||||||
|
@ -39,6 +42,13 @@ func (p *Plugin) activate() error {
|
||||||
|
|
||||||
logrus.Debugf("%s's manifest: %v", p.Name, m)
|
logrus.Debugf("%s's manifest: %v", p.Name, m)
|
||||||
p.Manifest = m
|
p.Manifest = m
|
||||||
|
for _, iface := range m.Implements {
|
||||||
|
handler, handled := extpointHandlers[iface]
|
||||||
|
if !handled {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
handler(p.Name, p.Client)
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,3 +94,7 @@ func Get(name, imp string) (*Plugin, error) {
|
||||||
}
|
}
|
||||||
return nil, ErrNotImplements
|
return nil, ErrNotImplements
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Handle(iface string, fn func(string, *Client)) {
|
||||||
|
extpointHandlers[iface] = fn
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue