hide swarm plugins behind experimental flag

Signed-off-by: Victor Vieux <victorvieux@gmail.com>
This commit is contained in:
Victor Vieux 2017-08-08 18:33:25 -07:00
parent cbbc28341c
commit 4930020210
4 changed files with 15 additions and 3 deletions

View File

@ -2030,7 +2030,7 @@ definitions:
properties: properties:
PluginSpec: PluginSpec:
type: "object" type: "object"
description: "Invalid when specified with `ContainerSpec`." description: "Invalid when specified with `ContainerSpec`. *(Experimental release only.)*"
properties: properties:
Name: Name:
description: "The name or 'alias' to use for the plugin." description: "The name or 'alias' to use for the plugin."

View File

@ -185,13 +185,17 @@ func (e *executor) Controller(t *api.Task) (exec.Controller, error) {
} }
switch runtimeKind { switch runtimeKind {
case string(swarmtypes.RuntimePlugin): case string(swarmtypes.RuntimePlugin):
info, _ := e.backend.SystemInfo()
if !info.ExperimentalBuild {
return ctlr, fmt.Errorf("runtime type %q only supported in experimental", swarmtypes.RuntimePlugin)
}
c, err := plugin.NewController(e.pluginBackend, t) c, err := plugin.NewController(e.pluginBackend, t)
if err != nil { if err != nil {
return ctlr, err return ctlr, err
} }
ctlr = c ctlr = c
default: default:
return ctlr, fmt.Errorf("unsupported runtime type: %q", r.Generic.Kind) return ctlr, fmt.Errorf("unsupported runtime type: %q", runtimeKind)
} }
case *api.TaskSpec_Container: case *api.TaskSpec_Container:
c, err := newController(e.backend, t, dependencyGetter) c, err := newController(e.backend, t, dependencyGetter)

View File

@ -139,9 +139,16 @@ func (c *Cluster) CreateService(s types.ServiceSpec, encodedAuth string, queryRe
case *swarmapi.TaskSpec_Generic: case *swarmapi.TaskSpec_Generic:
switch serviceSpec.Task.GetGeneric().Kind { switch serviceSpec.Task.GetGeneric().Kind {
case string(types.RuntimePlugin): case string(types.RuntimePlugin):
info, _ := c.config.Backend.SystemInfo()
if !info.ExperimentalBuild {
return fmt.Errorf("runtime type %q only supported in experimental", types.RuntimePlugin)
}
if s.TaskTemplate.PluginSpec == nil { if s.TaskTemplate.PluginSpec == nil {
return errors.New("plugin spec must be set") return errors.New("plugin spec must be set")
} }
default:
return fmt.Errorf("unsupported runtime type: %q", serviceSpec.Task.GetGeneric().Kind)
} }
r, err := state.controlClient.CreateService(ctx, &swarmapi.CreateServiceRequest{Spec: &serviceSpec}) r, err := state.controlClient.CreateService(ctx, &swarmapi.CreateServiceRequest{Spec: &serviceSpec})

View File

@ -603,7 +603,8 @@ func (s *DockerSwarmSuite) TestAPISwarmServicesStateReporting(c *check.C) {
// Test plugins deployed via swarm services // Test plugins deployed via swarm services
func (s *DockerSwarmSuite) TestAPISwarmServicesPlugin(c *check.C) { func (s *DockerSwarmSuite) TestAPISwarmServicesPlugin(c *check.C) {
testRequires(c, DaemonIsLinux, IsAmd64) testRequires(c, ExperimentalDaemon, DaemonIsLinux, IsAmd64)
reg := setupRegistry(c, false, "", "") reg := setupRegistry(c, false, "", "")
defer reg.Close() defer reg.Close()