common.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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 getServiceFilter(namespace string) filters.Args {
  17. filter := getStackFilter(namespace)
  18. filter.Add("runtimes", string(swarm.RuntimeContainer))
  19. return filter
  20. }
  21. func getStackFilterFromOpt(namespace string, opt opts.FilterOpt) filters.Args {
  22. filter := opt.Value()
  23. filter.Add("label", convert.LabelNamespace+"="+namespace)
  24. return filter
  25. }
  26. func getAllStacksFilter() filters.Args {
  27. filter := filters.NewArgs()
  28. filter.Add("label", convert.LabelNamespace)
  29. return filter
  30. }
  31. func getServices(
  32. ctx context.Context,
  33. apiclient client.APIClient,
  34. namespace string,
  35. ) ([]swarm.Service, error) {
  36. return apiclient.ServiceList(
  37. ctx,
  38. types.ServiceListOptions{Filters: getServiceFilter(namespace)})
  39. }
  40. func getStackNetworks(
  41. ctx context.Context,
  42. apiclient client.APIClient,
  43. namespace string,
  44. ) ([]types.NetworkResource, error) {
  45. return apiclient.NetworkList(
  46. ctx,
  47. types.NetworkListOptions{Filters: getStackFilter(namespace)})
  48. }
  49. func getStackSecrets(
  50. ctx context.Context,
  51. apiclient client.APIClient,
  52. namespace string,
  53. ) ([]swarm.Secret, error) {
  54. return apiclient.SecretList(
  55. ctx,
  56. types.SecretListOptions{Filters: getStackFilter(namespace)})
  57. }