common.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // +build experimental
  2. package stack
  3. import (
  4. "golang.org/x/net/context"
  5. "github.com/docker/engine-api/client"
  6. "github.com/docker/engine-api/types"
  7. "github.com/docker/engine-api/types/filters"
  8. "github.com/docker/engine-api/types/swarm"
  9. )
  10. const (
  11. labelNamespace = "com.docker.stack.namespace"
  12. )
  13. func getStackLabels(namespace string, labels map[string]string) map[string]string {
  14. if labels == nil {
  15. labels = make(map[string]string)
  16. }
  17. labels[labelNamespace] = namespace
  18. return labels
  19. }
  20. func getStackFilter(namespace string) filters.Args {
  21. filter := filters.NewArgs()
  22. filter.Add("label", labelNamespace+"="+namespace)
  23. return filter
  24. }
  25. func getServices(
  26. ctx context.Context,
  27. apiclient client.APIClient,
  28. namespace string,
  29. ) ([]swarm.Service, error) {
  30. return apiclient.ServiceList(
  31. ctx,
  32. types.ServiceListOptions{Filter: getStackFilter(namespace)})
  33. }
  34. func getNetworks(
  35. ctx context.Context,
  36. apiclient client.APIClient,
  37. namespace string,
  38. ) ([]types.NetworkResource, error) {
  39. return apiclient.NetworkList(
  40. ctx,
  41. types.NetworkListOptions{Filters: getStackFilter(namespace)})
  42. }