1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- package daemon
- import (
- "context"
- "github.com/docker/docker/api/types"
- "github.com/docker/docker/client"
- "github.com/gotestyourself/gotestyourself/poll"
- )
- // PluginIsRunning provides a poller to check if the specified plugin is running
- func (d *Daemon) PluginIsRunning(name string) func(poll.LogT) poll.Result {
- return withClient(d, withPluginInspect(name, func(plugin *types.Plugin, t poll.LogT) poll.Result {
- if plugin.Enabled {
- return poll.Success()
- }
- return poll.Continue("plugin %q is not enabled", name)
- }))
- }
- // PluginIsNotRunning provides a poller to check if the specified plugin is not running
- func (d *Daemon) PluginIsNotRunning(name string) func(poll.LogT) poll.Result {
- return withClient(d, withPluginInspect(name, func(plugin *types.Plugin, t poll.LogT) poll.Result {
- if !plugin.Enabled {
- return poll.Success()
- }
- return poll.Continue("plugin %q is enabled", name)
- }))
- }
- // PluginIsNotPresent provides a poller to check if the specified plugin is not present
- func (d *Daemon) PluginIsNotPresent(name string) func(poll.LogT) poll.Result {
- return withClient(d, func(c client.APIClient, t poll.LogT) poll.Result {
- _, _, err := c.PluginInspectWithRaw(context.Background(), name)
- if client.IsErrNotFound(err) {
- return poll.Success()
- }
- if err != nil {
- return poll.Error(err)
- }
- return poll.Continue("plugin %q exists")
- })
- }
- // PluginReferenceIs provides a poller to check if the specified plugin has the specified reference
- func (d *Daemon) PluginReferenceIs(name, expectedRef string) func(poll.LogT) poll.Result {
- return withClient(d, withPluginInspect(name, func(plugin *types.Plugin, t poll.LogT) poll.Result {
- if plugin.PluginReference == expectedRef {
- return poll.Success()
- }
- return poll.Continue("plugin %q reference is not %q", name, expectedRef)
- }))
- }
- func withPluginInspect(name string, f func(*types.Plugin, poll.LogT) poll.Result) func(client.APIClient, poll.LogT) poll.Result {
- return func(c client.APIClient, t poll.LogT) poll.Result {
- plugin, _, err := c.PluginInspectWithRaw(context.Background(), name)
- if client.IsErrNotFound(err) {
- return poll.Continue("plugin %q not found", name)
- }
- if err != nil {
- return poll.Error(err)
- }
- return f(plugin, t)
- }
- }
- func withClient(d *Daemon, f func(client.APIClient, poll.LogT) poll.Result) func(poll.LogT) poll.Result {
- return func(t poll.LogT) poll.Result {
- c, err := d.NewClient()
- if err != nil {
- poll.Error(err)
- }
- return f(c, t)
- }
- }
|