mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Remove daemon dependency on api packages
We are using interface in the api routers to not explicitely depend on the daemon struct (`daemon.Daemon`), but somehow, we do depend on the `daemon` package for the cluster functionalities. This removes this dependency by defining the correct interfaces. Signed-off-by: Vincent Demeester <vincent@sbr.pm>
This commit is contained in:
parent
d6706dddd5
commit
f4106b46db
4 changed files with 21 additions and 6 deletions
|
@ -20,3 +20,13 @@ type Backend interface {
|
||||||
DeleteNetwork(networkID string) error
|
DeleteNetwork(networkID string) error
|
||||||
NetworksPrune(ctx context.Context, pruneFilters filters.Args) (*types.NetworksPruneReport, error)
|
NetworksPrune(ctx context.Context, pruneFilters filters.Args) (*types.NetworksPruneReport, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ClusterBackend is all the methods that need to be implemented
|
||||||
|
// to provide cluster network specific functionality.
|
||||||
|
type ClusterBackend interface {
|
||||||
|
GetNetworks() ([]types.NetworkResource, error)
|
||||||
|
GetNetwork(name string) (types.NetworkResource, error)
|
||||||
|
GetNetworksByName(name string) ([]types.NetworkResource, error)
|
||||||
|
CreateNetwork(nc types.NetworkCreateRequest) (string, error)
|
||||||
|
RemoveNetwork(name string) error
|
||||||
|
}
|
||||||
|
|
|
@ -2,18 +2,17 @@ package network // import "github.com/docker/docker/api/server/router/network"
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/docker/docker/api/server/router"
|
"github.com/docker/docker/api/server/router"
|
||||||
"github.com/docker/docker/daemon/cluster"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// networkRouter is a router to talk with the network controller
|
// networkRouter is a router to talk with the network controller
|
||||||
type networkRouter struct {
|
type networkRouter struct {
|
||||||
backend Backend
|
backend Backend
|
||||||
cluster *cluster.Cluster
|
cluster ClusterBackend
|
||||||
routes []router.Route
|
routes []router.Route
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewRouter initializes a new network router
|
// NewRouter initializes a new network router
|
||||||
func NewRouter(b Backend, c *cluster.Cluster) router.Router {
|
func NewRouter(b Backend, c ClusterBackend) router.Router {
|
||||||
r := &networkRouter{
|
r := &networkRouter{
|
||||||
backend: b,
|
backend: b,
|
||||||
cluster: c,
|
cluster: c,
|
||||||
|
|
|
@ -6,6 +6,7 @@ import (
|
||||||
"github.com/docker/docker/api/types"
|
"github.com/docker/docker/api/types"
|
||||||
"github.com/docker/docker/api/types/events"
|
"github.com/docker/docker/api/types/events"
|
||||||
"github.com/docker/docker/api/types/filters"
|
"github.com/docker/docker/api/types/filters"
|
||||||
|
"github.com/docker/docker/api/types/swarm"
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -19,3 +20,9 @@ type Backend interface {
|
||||||
UnsubscribeFromEvents(chan interface{})
|
UnsubscribeFromEvents(chan interface{})
|
||||||
AuthenticateToRegistry(ctx context.Context, authConfig *types.AuthConfig) (string, string, error)
|
AuthenticateToRegistry(ctx context.Context, authConfig *types.AuthConfig) (string, string, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ClusterBackend is all the methods that need to be implemented
|
||||||
|
// to provide cluster system specific functionality.
|
||||||
|
type ClusterBackend interface {
|
||||||
|
Info() swarm.Info
|
||||||
|
}
|
||||||
|
|
|
@ -3,20 +3,19 @@ package system // import "github.com/docker/docker/api/server/router/system"
|
||||||
import (
|
import (
|
||||||
"github.com/docker/docker/api/server/router"
|
"github.com/docker/docker/api/server/router"
|
||||||
"github.com/docker/docker/builder/fscache"
|
"github.com/docker/docker/builder/fscache"
|
||||||
"github.com/docker/docker/daemon/cluster"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// systemRouter provides information about the Docker system overall.
|
// systemRouter provides information about the Docker system overall.
|
||||||
// It gathers information about host, daemon and container events.
|
// It gathers information about host, daemon and container events.
|
||||||
type systemRouter struct {
|
type systemRouter struct {
|
||||||
backend Backend
|
backend Backend
|
||||||
cluster *cluster.Cluster
|
cluster ClusterBackend
|
||||||
routes []router.Route
|
routes []router.Route
|
||||||
builder *fscache.FSCache
|
builder *fscache.FSCache
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewRouter initializes a new system router
|
// NewRouter initializes a new system router
|
||||||
func NewRouter(b Backend, c *cluster.Cluster, fscache *fscache.FSCache) router.Router {
|
func NewRouter(b Backend, c ClusterBackend, fscache *fscache.FSCache) router.Router {
|
||||||
r := &systemRouter{
|
r := &systemRouter{
|
||||||
backend: b,
|
backend: b,
|
||||||
cluster: c,
|
cluster: c,
|
||||||
|
|
Loading…
Add table
Reference in a new issue