common.go 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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/client"
  8. )
  9. const (
  10. labelNamespace = "com.docker.stack.namespace"
  11. )
  12. func getStackLabels(namespace string, labels map[string]string) map[string]string {
  13. if labels == nil {
  14. labels = make(map[string]string)
  15. }
  16. labels[labelNamespace] = namespace
  17. return labels
  18. }
  19. func getStackFilter(namespace string) filters.Args {
  20. filter := filters.NewArgs()
  21. filter.Add("label", labelNamespace+"="+namespace)
  22. return filter
  23. }
  24. func getServices(
  25. ctx context.Context,
  26. apiclient client.APIClient,
  27. namespace string,
  28. ) ([]swarm.Service, error) {
  29. return apiclient.ServiceList(
  30. ctx,
  31. types.ServiceListOptions{Filters: getStackFilter(namespace)})
  32. }
  33. func getNetworks(
  34. ctx context.Context,
  35. apiclient client.APIClient,
  36. namespace string,
  37. ) ([]types.NetworkResource, error) {
  38. return apiclient.NetworkList(
  39. ctx,
  40. types.NetworkListOptions{Filters: getStackFilter(namespace)})
  41. }