diff --git a/daemon/cluster/executor/backend.go b/daemon/cluster/executor/backend.go index cfbc86ce36..c40f85716b 100644 --- a/daemon/cluster/executor/backend.go +++ b/daemon/cluster/executor/backend.go @@ -61,6 +61,7 @@ type Backend interface { PluginManager() *plugin.Manager PluginGetter() *plugin.Store GetAttachmentStore() *networkSettings.AttachmentStore + HasExperimental() bool } // VolumeBackend is used by an executor to perform volume operations diff --git a/daemon/cluster/executor/container/executor.go b/daemon/cluster/executor/container/executor.go index 940a943e4f..f54dc7b511 100644 --- a/daemon/cluster/executor/container/executor.go +++ b/daemon/cluster/executor/container/executor.go @@ -229,8 +229,7 @@ func (e *executor) Controller(t *api.Task) (exec.Controller, error) { } switch runtimeKind { case string(swarmtypes.RuntimePlugin): - info, _ := e.backend.SystemInfo() - if !info.ExperimentalBuild { + if !e.backend.HasExperimental() { return ctlr, fmt.Errorf("runtime type %q only supported in experimental", swarmtypes.RuntimePlugin) } c, err := plugin.NewController(e.pluginBackend, t) diff --git a/daemon/cluster/services.go b/daemon/cluster/services.go index d82c0f0f3a..933e2bcac3 100644 --- a/daemon/cluster/services.go +++ b/daemon/cluster/services.go @@ -144,8 +144,7 @@ func (c *Cluster) CreateService(s types.ServiceSpec, encodedAuth string, queryRe case *swarmapi.TaskSpec_Generic: switch serviceSpec.Task.GetGeneric().Kind { case string(types.RuntimePlugin): - info, _ := c.config.Backend.SystemInfo() - if !info.ExperimentalBuild { + if !c.config.Backend.HasExperimental() { return fmt.Errorf("runtime type %q only supported in experimental", types.RuntimePlugin) } if s.TaskTemplate.PluginSpec == nil {