github.com/pwn-term/docker@v0.0.0-20210616085119-6e977cce2565/libnetwork/cluster/provider.go (about)

     1  package cluster
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/docker/docker/api/types/network"
     7  )
     8  
     9  const (
    10  	// EventSocketChange control socket changed
    11  	EventSocketChange = iota
    12  	// EventNodeReady cluster node in ready state
    13  	EventNodeReady
    14  	// EventNodeLeave node is leaving the cluster
    15  	EventNodeLeave
    16  	// EventNetworkKeysAvailable network keys correctly configured in the networking layer
    17  	EventNetworkKeysAvailable
    18  )
    19  
    20  // ConfigEventType type of the event produced by the cluster
    21  type ConfigEventType uint8
    22  
    23  // Provider provides clustering config details
    24  type Provider interface {
    25  	IsManager() bool
    26  	IsAgent() bool
    27  	GetLocalAddress() string
    28  	GetListenAddress() string
    29  	GetAdvertiseAddress() string
    30  	GetDataPathAddress() string
    31  	GetRemoteAddressList() []string
    32  	ListenClusterEvents() <-chan ConfigEventType
    33  	AttachNetwork(string, string, []string) (*network.NetworkingConfig, error)
    34  	DetachNetwork(string, string) error
    35  	UpdateAttachment(string, string, *network.NetworkingConfig) error
    36  	WaitForDetachment(context.Context, string, string, string, string) error
    37  }