From 6aaa85f0b0dd030f68512ca9004823926419f5fd Mon Sep 17 00:00:00 2001 From: Madhu Venugopal Date: Wed, 4 Jan 2017 12:38:14 -0800 Subject: [PATCH] Swarmkit has enabled the plugin filtering logic based on the drivers returned in "docker info". Currently info endpoint isnt using the GetAllByCap, but relies on existing networks to get the plugin names. This causes a basic issue when it comes to global network plugins which swarm-mode relies on, wherein swarmkit will not be able to schedule the network on the worker nodes due to the filtering logic. In order to break this chicken & egg issue, we must start to use the GetAllManagedPluginsByCap. We are unable to use GetAllByCap due to various issues with Plugin-V1's lazy loading approach causing issues especially during daemon restarts (which uses SystemInfo) Signed-off-by: Madhu Venugopal --- daemon/network.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/daemon/network.go b/daemon/network.go index 8fc9631e3c..daa1f3718c 100644 --- a/daemon/network.go +++ b/daemon/network.go @@ -407,6 +407,13 @@ func (daemon *Daemon) GetNetworkDriverList() []string { } pluginList := daemon.netController.BuiltinDrivers() + + managedPlugins := daemon.PluginStore.GetAllManagedPluginsByCap(driverapi.NetworkPluginEndpointType) + + for _, plugin := range managedPlugins { + pluginList = append(pluginList, plugin.Name()) + } + pluginMap := make(map[string]bool) for _, plugin := range pluginList { pluginMap[plugin] = true