
Currently the driver configuration is pushed through a separate api. This makes driver configuration possible at any arbitrary time. This unncessarily complicates the driver implementation. More importantly the driver does not get access to it's configuration before it can do the handshake with libnetwork. This make the internal drivers a little bit different to external plugins which can get their configuration before the handshake with libnetwork. This PR attempts to fix that mismatch between internal drivers and external plugins. Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
66 lines
1.5 KiB
Go
66 lines
1.5 KiB
Go
package null
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/docker/libnetwork/driverapi"
|
|
"github.com/docker/libnetwork/types"
|
|
)
|
|
|
|
const networkType = "null"
|
|
|
|
type driver struct {
|
|
network string
|
|
sync.Mutex
|
|
}
|
|
|
|
// Init registers a new instance of null driver
|
|
func Init(dc driverapi.DriverCallback, config map[string]interface{}) error {
|
|
c := driverapi.Capability{
|
|
Scope: driverapi.LocalScope,
|
|
}
|
|
return dc.RegisterDriver(networkType, &driver{}, c)
|
|
}
|
|
|
|
func (d *driver) CreateNetwork(id string, option map[string]interface{}) error {
|
|
d.Lock()
|
|
defer d.Unlock()
|
|
|
|
if d.network != "" {
|
|
return types.ForbiddenErrorf("only one instance of \"%s\" network is allowed", networkType)
|
|
}
|
|
|
|
d.network = id
|
|
|
|
return nil
|
|
}
|
|
|
|
func (d *driver) DeleteNetwork(nid string) error {
|
|
return types.ForbiddenErrorf("network of type \"%s\" cannot be deleted", networkType)
|
|
}
|
|
|
|
func (d *driver) CreateEndpoint(nid, eid string, epInfo driverapi.EndpointInfo, epOptions map[string]interface{}) error {
|
|
return nil
|
|
}
|
|
|
|
func (d *driver) DeleteEndpoint(nid, eid string) error {
|
|
return nil
|
|
}
|
|
|
|
func (d *driver) EndpointOperInfo(nid, eid string) (map[string]interface{}, error) {
|
|
return make(map[string]interface{}, 0), nil
|
|
}
|
|
|
|
// Join method is invoked when a Sandbox is attached to an endpoint.
|
|
func (d *driver) Join(nid, eid string, sboxKey string, jinfo driverapi.JoinInfo, options map[string]interface{}) error {
|
|
return nil
|
|
}
|
|
|
|
// Leave method is invoked when a Sandbox detaches from an endpoint.
|
|
func (d *driver) Leave(nid, eid string) error {
|
|
return nil
|
|
}
|
|
|
|
func (d *driver) Type() string {
|
|
return networkType
|
|
}
|