github.com/vieux/docker@v0.6.3-0.20161004191708-e097c2a938c7/cli/command/stack/common.go (about)

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