Plugins JSON spec.
Allow full configuration of external plugins via a JSON document. Signed-off-by: David Calavera <david.calavera@gmail.com>
This commit is contained in:
parent
b4f6e2c8b7
commit
7312c4b8bb
6 changed files with 145 additions and 43 deletions
|
@ -5,6 +5,7 @@ import (
|
|||
"sync"
|
||||
|
||||
"github.com/Sirupsen/logrus"
|
||||
"github.com/docker/docker/pkg/tlsconfig"
|
||||
)
|
||||
|
||||
var (
|
||||
|
@ -26,22 +27,36 @@ type Manifest struct {
|
|||
}
|
||||
|
||||
type Plugin struct {
|
||||
Name string
|
||||
Addr string
|
||||
Client *Client
|
||||
Manifest *Manifest
|
||||
Name string `json:"-"`
|
||||
Addr string
|
||||
TLSConfig tlsconfig.Options
|
||||
Client *Client `json:"-"`
|
||||
Manifest *Manifest `json:"-"`
|
||||
}
|
||||
|
||||
func newLocalPlugin(name, addr string) *Plugin {
|
||||
return &Plugin{
|
||||
Name: name,
|
||||
Addr: addr,
|
||||
TLSConfig: tlsconfig.Options{InsecureSkipVerify: true},
|
||||
}
|
||||
}
|
||||
|
||||
func (p *Plugin) activate() error {
|
||||
m := new(Manifest)
|
||||
p.Client = NewClient(p.Addr)
|
||||
err := p.Client.Call("Plugin.Activate", nil, m)
|
||||
c, err := NewClient(p.Addr, p.TLSConfig)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
p.Client = c
|
||||
|
||||
m := new(Manifest)
|
||||
if err = p.Client.Call("Plugin.Activate", nil, m); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
logrus.Debugf("%s's manifest: %v", p.Name, m)
|
||||
p.Manifest = m
|
||||
|
||||
for _, iface := range m.Implements {
|
||||
handler, handled := extpointHandlers[iface]
|
||||
if !handled {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue