| package daemon | |
| import ( | |
| "context" | |
| "testing" | |
| "github.com/docker/docker/api/types" | |
| "github.com/docker/docker/api/types/swarm" | |
| "gotest.tools/v3/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 testing.TB, configSpec swarm.ConfigSpec) string { | |
| t.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 testing.TB) []swarm.Config { | |
| t.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 testing.TB, id string) *swarm.Config { | |
| t.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 testing.TB, id string) { | |
| t.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 testing.TB, id string, f ...ConfigConstructor) { | |
| t.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) | |
| } |