common.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package stack
  2. import (
  3. "golang.org/x/net/context"
  4. "github.com/docker/docker/api/types"
  5. "github.com/docker/docker/api/types/filters"
  6. "github.com/docker/docker/api/types/swarm"
  7. "github.com/docker/docker/cli/compose/convert"
  8. "github.com/docker/docker/client"
  9. "github.com/docker/docker/opts"
  10. )
  11. func getStackFilter(namespace string) filters.Args {
  12. filter := filters.NewArgs()
  13. filter.Add("label", convert.LabelNamespace+"="+namespace)
  14. return filter
  15. }
  16. func getStackFilterFromOpt(namespace string, opt opts.FilterOpt) filters.Args {
  17. filter := opt.Value()
  18. filter.Add("label", convert.LabelNamespace+"="+namespace)
  19. return filter
  20. }
  21. func getAllStacksFilter() filters.Args {
  22. filter := filters.NewArgs()
  23. filter.Add("label", convert.LabelNamespace)
  24. return filter
  25. }
  26. func getServices(
  27. ctx context.Context,
  28. apiclient client.APIClient,
  29. namespace string,
  30. ) ([]swarm.Service, error) {
  31. return apiclient.ServiceList(
  32. ctx,
  33. types.ServiceListOptions{Filters: getStackFilter(namespace)})
  34. }
  35. func getStackNetworks(
  36. ctx context.Context,
  37. apiclient client.APIClient,
  38. namespace string,
  39. ) ([]types.NetworkResource, error) {
  40. return apiclient.NetworkList(
  41. ctx,
  42. types.NetworkListOptions{Filters: getStackFilter(namespace)})
  43. }
  44. func getStackSecrets(
  45. ctx context.Context,
  46. apiclient client.APIClient,
  47. namespace string,
  48. ) ([]swarm.Secret, error) {
  49. return apiclient.SecretList(
  50. ctx,
  51. types.SecretListOptions{Filters: getStackFilter(namespace)})
  52. }