| package daemon |
| |
| import ( |
| "context" |
| |
| "github.com/docker/docker/api/types" |
| "github.com/docker/docker/api/types/swarm" |
| "github.com/docker/docker/internal/test" |
| "gotest.tools/assert" |
| ) |
| |
| // ConfigConstructor defines a swarm config constructor |
| type ConfigConstructor func(*swarm.Config) |
| |
| // CreateConfig creates a config given the specified spec |
| func (d *Daemon) CreateConfig(t assert.TestingT, configSpec swarm.ConfigSpec) string { |
| if ht, ok := t.(test.HelperT); ok { |
| ht.Helper() |
| } |
| cli := d.NewClientT(t) |
| defer cli.Close() |
| |
| scr, err := cli.ConfigCreate(context.Background(), configSpec) |
| assert.NilError(t, err) |
| return scr.ID |
| } |
| |
| // ListConfigs returns the list of the current swarm configs |
| func (d *Daemon) ListConfigs(t assert.TestingT) []swarm.Config { |
| if ht, ok := t.(test.HelperT); ok { |
| ht.Helper() |
| } |
| cli := d.NewClientT(t) |
| defer cli.Close() |
| |
| configs, err := cli.ConfigList(context.Background(), types.ConfigListOptions{}) |
| assert.NilError(t, err) |
| return configs |
| } |
| |
| // GetConfig returns a swarm config identified by the specified id |
| func (d *Daemon) GetConfig(t assert.TestingT, id string) *swarm.Config { |
| if ht, ok := t.(test.HelperT); ok { |
| ht.Helper() |
| } |
| cli := d.NewClientT(t) |
| defer cli.Close() |
| |
| config, _, err := cli.ConfigInspectWithRaw(context.Background(), id) |
| assert.NilError(t, err) |
| return &config |
| } |
| |
| // DeleteConfig removes the swarm config identified by the specified id |
| func (d *Daemon) DeleteConfig(t assert.TestingT, id string) { |
| if ht, ok := t.(test.HelperT); ok { |
| ht.Helper() |
| } |
| cli := d.NewClientT(t) |
| defer cli.Close() |
| |
| err := cli.ConfigRemove(context.Background(), id) |
| assert.NilError(t, err) |
| } |
| |
| // UpdateConfig updates the swarm config identified by the specified id |
| // Currently, only label update is supported. |
| func (d *Daemon) UpdateConfig(t assert.TestingT, id string, f ...ConfigConstructor) { |
| if ht, ok := t.(test.HelperT); ok { |
| ht.Helper() |
| } |
| cli := d.NewClientT(t) |
| defer cli.Close() |
| |
| config := d.GetConfig(t, id) |
| for _, fn := range f { |
| fn(config) |
| } |
| |
| err := cli.ConfigUpdate(context.Background(), config.ID, config.Version, config.Spec) |
| assert.NilError(t, err) |
| } |