Merge pull request #34331 from twistlock/plugable_secrets_backend
[WIP] update swarmkit dependecies to support plugable secrets
This commit is contained in:
commit
964ba0eaa8
58 changed files with 3178 additions and 2025 deletions
|
@ -108,7 +108,7 @@ github.com/stevvooe/continuity cd7a8e21e2b6f84799f5dd4b65faf49c8d3ee02d
|
|||
github.com/tonistiigi/fsutil 0ac4c11b053b9c5c7c47558f81f96c7100ce50fb
|
||||
|
||||
# cluster
|
||||
github.com/docker/swarmkit 8bdecc57887ffc598b63d6433f58e0d2852112c3 https://github.com/dmcgowan/swarmkit.git
|
||||
github.com/docker/swarmkit ddb4539f883b18ea40af44ee6de63ac2adc8dc1e
|
||||
github.com/gogo/protobuf v0.4
|
||||
github.com/cloudflare/cfssl 7fb22c8cba7ecaf98e4082d22d65800cf45e042a
|
||||
github.com/google/certificate-transparency d90e65c3a07988180c5b1ece71791c0b6506826e
|
||||
|
|
16
vendor/github.com/docker/swarmkit/api/README.md
generated
vendored
16
vendor/github.com/docker/swarmkit/api/README.md
generated
vendored
|
@ -6,3 +6,19 @@ $ make generate
|
|||
```
|
||||
|
||||
Click [here](https://github.com/google/protobuf) for more information about protobuf.
|
||||
|
||||
The `api.pb.txt` file contains merged descriptors of all defined services and messages.
|
||||
Definitions present here are considered frozen after the release.
|
||||
|
||||
At release time, the current `api.pb.txt` file will be moved into place to
|
||||
freeze the API changes for the minor version. For example, when 1.0.0 is
|
||||
released, `api.pb.txt` should be moved to `1.0.txt`. Notice that we leave off
|
||||
the patch number, since the API will be completely locked down for a given
|
||||
patch series.
|
||||
|
||||
We may find that by default, protobuf descriptors are too noisy to lock down
|
||||
API changes. In that case, we may filter out certain fields in the descriptors,
|
||||
possibly regenerating for old versions.
|
||||
|
||||
This process is similar to the [process used to ensure backwards compatibility
|
||||
in Go](https://github.com/golang/go/tree/master/api).
|
||||
|
|
311
vendor/github.com/docker/swarmkit/api/ca.pb.go
generated
vendored
311
vendor/github.com/docker/swarmkit/api/ca.pb.go
generated
vendored
|
@ -1,7 +1,223 @@
|
|||
// Code generated by protoc-gen-gogo.
|
||||
// source: ca.proto
|
||||
// source: github.com/docker/swarmkit/api/ca.proto
|
||||
// DO NOT EDIT!
|
||||
|
||||
/*
|
||||
Package api is a generated protocol buffer package.
|
||||
|
||||
It is generated from these files:
|
||||
github.com/docker/swarmkit/api/ca.proto
|
||||
github.com/docker/swarmkit/api/control.proto
|
||||
github.com/docker/swarmkit/api/dispatcher.proto
|
||||
github.com/docker/swarmkit/api/health.proto
|
||||
github.com/docker/swarmkit/api/logbroker.proto
|
||||
github.com/docker/swarmkit/api/objects.proto
|
||||
github.com/docker/swarmkit/api/raft.proto
|
||||
github.com/docker/swarmkit/api/resource.proto
|
||||
github.com/docker/swarmkit/api/snapshot.proto
|
||||
github.com/docker/swarmkit/api/specs.proto
|
||||
github.com/docker/swarmkit/api/types.proto
|
||||
github.com/docker/swarmkit/api/watch.proto
|
||||
|
||||
It has these top-level messages:
|
||||
NodeCertificateStatusRequest
|
||||
NodeCertificateStatusResponse
|
||||
IssueNodeCertificateRequest
|
||||
IssueNodeCertificateResponse
|
||||
GetRootCACertificateRequest
|
||||
GetRootCACertificateResponse
|
||||
GetUnlockKeyRequest
|
||||
GetUnlockKeyResponse
|
||||
GetNodeRequest
|
||||
GetNodeResponse
|
||||
ListNodesRequest
|
||||
ListNodesResponse
|
||||
UpdateNodeRequest
|
||||
UpdateNodeResponse
|
||||
RemoveNodeRequest
|
||||
RemoveNodeResponse
|
||||
GetTaskRequest
|
||||
GetTaskResponse
|
||||
RemoveTaskRequest
|
||||
RemoveTaskResponse
|
||||
ListTasksRequest
|
||||
ListTasksResponse
|
||||
CreateServiceRequest
|
||||
CreateServiceResponse
|
||||
GetServiceRequest
|
||||
GetServiceResponse
|
||||
UpdateServiceRequest
|
||||
UpdateServiceResponse
|
||||
RemoveServiceRequest
|
||||
RemoveServiceResponse
|
||||
ListServicesRequest
|
||||
ListServicesResponse
|
||||
CreateNetworkRequest
|
||||
CreateNetworkResponse
|
||||
GetNetworkRequest
|
||||
GetNetworkResponse
|
||||
RemoveNetworkRequest
|
||||
RemoveNetworkResponse
|
||||
ListNetworksRequest
|
||||
ListNetworksResponse
|
||||
GetClusterRequest
|
||||
GetClusterResponse
|
||||
ListClustersRequest
|
||||
ListClustersResponse
|
||||
KeyRotation
|
||||
UpdateClusterRequest
|
||||
UpdateClusterResponse
|
||||
GetSecretRequest
|
||||
GetSecretResponse
|
||||
UpdateSecretRequest
|
||||
UpdateSecretResponse
|
||||
ListSecretsRequest
|
||||
ListSecretsResponse
|
||||
CreateSecretRequest
|
||||
CreateSecretResponse
|
||||
RemoveSecretRequest
|
||||
RemoveSecretResponse
|
||||
GetConfigRequest
|
||||
GetConfigResponse
|
||||
UpdateConfigRequest
|
||||
UpdateConfigResponse
|
||||
ListConfigsRequest
|
||||
ListConfigsResponse
|
||||
CreateConfigRequest
|
||||
CreateConfigResponse
|
||||
RemoveConfigRequest
|
||||
RemoveConfigResponse
|
||||
SessionRequest
|
||||
SessionMessage
|
||||
HeartbeatRequest
|
||||
HeartbeatResponse
|
||||
UpdateTaskStatusRequest
|
||||
UpdateTaskStatusResponse
|
||||
TasksRequest
|
||||
TasksMessage
|
||||
AssignmentsRequest
|
||||
Assignment
|
||||
AssignmentChange
|
||||
AssignmentsMessage
|
||||
HealthCheckRequest
|
||||
HealthCheckResponse
|
||||
LogSubscriptionOptions
|
||||
LogSelector
|
||||
LogContext
|
||||
LogAttr
|
||||
LogMessage
|
||||
SubscribeLogsRequest
|
||||
SubscribeLogsMessage
|
||||
ListenSubscriptionsRequest
|
||||
SubscriptionMessage
|
||||
PublishLogsMessage
|
||||
PublishLogsResponse
|
||||
Meta
|
||||
Node
|
||||
Service
|
||||
Endpoint
|
||||
Task
|
||||
NetworkAttachment
|
||||
Network
|
||||
Cluster
|
||||
Secret
|
||||
Config
|
||||
Resource
|
||||
Extension
|
||||
RaftMember
|
||||
JoinRequest
|
||||
JoinResponse
|
||||
LeaveRequest
|
||||
LeaveResponse
|
||||
ProcessRaftMessageRequest
|
||||
ProcessRaftMessageResponse
|
||||
ResolveAddressRequest
|
||||
ResolveAddressResponse
|
||||
InternalRaftRequest
|
||||
StoreAction
|
||||
AttachNetworkRequest
|
||||
AttachNetworkResponse
|
||||
DetachNetworkRequest
|
||||
DetachNetworkResponse
|
||||
StoreSnapshot
|
||||
ClusterSnapshot
|
||||
Snapshot
|
||||
NodeSpec
|
||||
ServiceSpec
|
||||
ReplicatedService
|
||||
GlobalService
|
||||
TaskSpec
|
||||
ResourceReference
|
||||
GenericRuntimeSpec
|
||||
NetworkAttachmentSpec
|
||||
ContainerSpec
|
||||
EndpointSpec
|
||||
NetworkSpec
|
||||
ClusterSpec
|
||||
SecretSpec
|
||||
ConfigSpec
|
||||
Version
|
||||
IndexEntry
|
||||
Annotations
|
||||
NamedGenericResource
|
||||
DiscreteGenericResource
|
||||
GenericResource
|
||||
Resources
|
||||
ResourceRequirements
|
||||
Platform
|
||||
PluginDescription
|
||||
EngineDescription
|
||||
NodeDescription
|
||||
NodeTLSInfo
|
||||
RaftMemberStatus
|
||||
NodeStatus
|
||||
Image
|
||||
Mount
|
||||
RestartPolicy
|
||||
UpdateConfig
|
||||
UpdateStatus
|
||||
ContainerStatus
|
||||
PortStatus
|
||||
TaskStatus
|
||||
NetworkAttachmentConfig
|
||||
IPAMConfig
|
||||
PortConfig
|
||||
Driver
|
||||
IPAMOptions
|
||||
Peer
|
||||
WeightedPeer
|
||||
IssuanceStatus
|
||||
AcceptancePolicy
|
||||
ExternalCA
|
||||
CAConfig
|
||||
OrchestrationConfig
|
||||
TaskDefaults
|
||||
DispatcherConfig
|
||||
RaftConfig
|
||||
EncryptionConfig
|
||||
SpreadOver
|
||||
PlacementPreference
|
||||
Placement
|
||||
JoinTokens
|
||||
RootCA
|
||||
Certificate
|
||||
EncryptionKey
|
||||
ManagerStatus
|
||||
FileTarget
|
||||
SecretReference
|
||||
ConfigReference
|
||||
BlacklistedCertificate
|
||||
HealthConfig
|
||||
MaybeEncryptedRecord
|
||||
RootRotation
|
||||
Privileges
|
||||
Object
|
||||
SelectBySlot
|
||||
SelectByCustom
|
||||
SelectBy
|
||||
WatchRequest
|
||||
WatchMessage
|
||||
*/
|
||||
package api
|
||||
|
||||
import proto "github.com/gogo/protobuf/proto"
|
||||
|
@ -33,6 +249,12 @@ var _ = proto.Marshal
|
|||
var _ = fmt.Errorf
|
||||
var _ = math.Inf
|
||||
|
||||
// This is a compile-time assertion to ensure that this generated file
|
||||
// is compatible with the proto package it is being compiled against.
|
||||
// A compilation error at this line likely means your copy of the
|
||||
// proto package needs to be updated.
|
||||
const _ = proto.GoGoProtoPackageIsVersion2 // please upgrade the proto package
|
||||
|
||||
type NodeCertificateStatusRequest struct {
|
||||
NodeID string `protobuf:"bytes,1,opt,name=node_id,json=nodeId,proto3" json:"node_id,omitempty"`
|
||||
}
|
||||
|
@ -401,7 +623,7 @@ var _CA_serviceDesc = grpc.ServiceDesc{
|
|||
},
|
||||
},
|
||||
Streams: []grpc.StreamDesc{},
|
||||
Metadata: "ca.proto",
|
||||
Metadata: "github.com/docker/swarmkit/api/ca.proto",
|
||||
}
|
||||
|
||||
// Client API for NodeCA service
|
||||
|
@ -498,7 +720,7 @@ var _NodeCA_serviceDesc = grpc.ServiceDesc{
|
|||
},
|
||||
},
|
||||
Streams: []grpc.StreamDesc{},
|
||||
Metadata: "ca.proto",
|
||||
Metadata: "github.com/docker/swarmkit/api/ca.proto",
|
||||
}
|
||||
|
||||
func (m *NodeCertificateStatusRequest) Marshal() (dAtA []byte, err error) {
|
||||
|
@ -2070,47 +2292,48 @@ var (
|
|||
ErrIntOverflowCa = fmt.Errorf("proto: integer overflow")
|
||||
)
|
||||
|
||||
func init() { proto.RegisterFile("ca.proto", fileDescriptorCa) }
|
||||
func init() { proto.RegisterFile("github.com/docker/swarmkit/api/ca.proto", fileDescriptorCa) }
|
||||
|
||||
var fileDescriptorCa = []byte{
|
||||
// 610 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0xcd, 0x6e, 0xd3, 0x40,
|
||||
0x10, 0xee, 0xba, 0x25, 0x6d, 0x27, 0xa1, 0x45, 0xdb, 0x56, 0x32, 0x69, 0xea, 0x54, 0xe6, 0xd0,
|
||||
0x72, 0xc0, 0x6d, 0x03, 0x27, 0xb8, 0x90, 0x04, 0xa9, 0x8a, 0x50, 0x11, 0xda, 0x08, 0xae, 0x95,
|
||||
0xe3, 0x2c, 0xc1, 0x8a, 0xe3, 0x35, 0xde, 0x75, 0x20, 0x37, 0x24, 0x10, 0x6f, 0x80, 0xe0, 0xc4,
|
||||
0x23, 0xf0, 0x1c, 0x11, 0x27, 0x24, 0x2e, 0x9c, 0x22, 0xea, 0x07, 0xe0, 0x19, 0x90, 0xd7, 0x36,
|
||||
0xcd, 0x8f, 0x13, 0xca, 0xc9, 0xbb, 0xb3, 0xdf, 0xf7, 0xcd, 0xcc, 0xb7, 0xe3, 0x85, 0x35, 0xcb,
|
||||
0x34, 0x3c, 0x9f, 0x09, 0x86, 0x71, 0x9b, 0x59, 0x5d, 0xea, 0x1b, 0xfc, 0xb5, 0xe9, 0xf7, 0xba,
|
||||
0xb6, 0x30, 0xfa, 0x27, 0xc5, 0xbc, 0x18, 0x78, 0x94, 0xc7, 0x80, 0x62, 0x9e, 0x7b, 0xd4, 0x4a,
|
||||
0x37, 0xdb, 0x1d, 0xd6, 0x61, 0x72, 0x79, 0x14, 0xad, 0x92, 0xe8, 0x96, 0xe7, 0x04, 0x1d, 0xdb,
|
||||
0x3d, 0x8a, 0x3f, 0x71, 0x50, 0xaf, 0x43, 0xe9, 0x09, 0x6b, 0xd3, 0x3a, 0xf5, 0x85, 0xfd, 0xc2,
|
||||
0xb6, 0x4c, 0x41, 0x9b, 0xc2, 0x14, 0x01, 0x27, 0xf4, 0x55, 0x40, 0xb9, 0xc0, 0xb7, 0x60, 0xd5,
|
||||
0x65, 0x6d, 0x7a, 0x6e, 0xb7, 0x55, 0xb4, 0x8f, 0x0e, 0xd7, 0x6b, 0x10, 0x8e, 0xca, 0xb9, 0x88,
|
||||
0xd2, 0x78, 0x44, 0x72, 0xd1, 0x51, 0xa3, 0xad, 0x7f, 0x41, 0xb0, 0x37, 0x47, 0x85, 0x7b, 0xcc,
|
||||
0xe5, 0x14, 0xdf, 0x87, 0x1c, 0x97, 0x11, 0xa9, 0x92, 0xaf, 0xe8, 0xc6, 0x6c, 0x43, 0x46, 0x83,
|
||||
0xf3, 0xc0, 0x74, 0xad, 0x94, 0x9b, 0x30, 0x70, 0x15, 0xf2, 0xd6, 0xa5, 0xb0, 0xaa, 0x48, 0x81,
|
||||
0x72, 0x96, 0xc0, 0x58, 0x7e, 0x32, 0xce, 0xd1, 0x7f, 0x20, 0xd8, 0x8d, 0xd4, 0xe9, 0x54, 0x95,
|
||||
0x69, 0x97, 0xf7, 0x60, 0xc5, 0x67, 0x0e, 0x95, 0xc5, 0x6d, 0x54, 0x4a, 0x59, 0xda, 0x11, 0x93,
|
||||
0x30, 0x87, 0xd6, 0x14, 0x15, 0x11, 0x89, 0xc6, 0x37, 0x61, 0xd9, 0xe2, 0xbe, 0x2c, 0xa8, 0x50,
|
||||
0x5b, 0x0d, 0x47, 0xe5, 0xe5, 0x7a, 0x93, 0x90, 0x28, 0x86, 0xb7, 0xe1, 0x9a, 0x60, 0x5d, 0xea,
|
||||
0xaa, 0xcb, 0x91, 0x69, 0x24, 0xde, 0xe0, 0x33, 0x28, 0x98, 0x7d, 0xd3, 0x76, 0xcc, 0x96, 0xed,
|
||||
0xd8, 0x62, 0xa0, 0xae, 0xc8, 0x74, 0xb7, 0xe7, 0xa5, 0x6b, 0x7a, 0xd4, 0x32, 0xaa, 0x63, 0x04,
|
||||
0x32, 0x41, 0xd7, 0x3f, 0x22, 0x28, 0x65, 0x77, 0x95, 0xb8, 0x7e, 0x95, 0xcb, 0xc3, 0x4f, 0x61,
|
||||
0x53, 0x82, 0x7a, 0xb4, 0xd7, 0xa2, 0x3e, 0x7f, 0x69, 0x7b, 0xb2, 0xa3, 0x8d, 0xca, 0xc1, 0xc2,
|
||||
0xba, 0xce, 0xfe, 0xc2, 0xc9, 0x46, 0xc4, 0xbf, 0xdc, 0xeb, 0x7b, 0xb0, 0x7b, 0x4a, 0x05, 0x61,
|
||||
0x4c, 0xd4, 0xab, 0xb3, 0x66, 0xeb, 0x0f, 0xa1, 0x94, 0x7d, 0x9c, 0x54, 0xbd, 0x3f, 0x79, 0xdf,
|
||||
0x51, 0xe5, 0x85, 0xc9, 0xeb, 0xdc, 0x81, 0xad, 0x53, 0x2a, 0x9e, 0xb9, 0x0e, 0xb3, 0xba, 0x8f,
|
||||
0xe9, 0x20, 0x15, 0xf6, 0x61, 0x7b, 0x32, 0x9c, 0x08, 0xee, 0x01, 0x04, 0x32, 0x78, 0xde, 0xa5,
|
||||
0x83, 0x44, 0x6f, 0x3d, 0x48, 0x61, 0xf8, 0x01, 0xac, 0xf6, 0xa9, 0xcf, 0x6d, 0xe6, 0x26, 0xb3,
|
||||
0xb5, 0x9b, 0xd5, 0xf8, 0xf3, 0x18, 0x52, 0x5b, 0x19, 0x8e, 0xca, 0x4b, 0x24, 0x65, 0x54, 0xde,
|
||||
0x2b, 0xa0, 0xd4, 0xab, 0xf8, 0x1d, 0x92, 0xb9, 0x67, 0x9a, 0xc2, 0x47, 0x59, 0x5a, 0x0b, 0xdc,
|
||||
0x29, 0x1e, 0x5f, 0x9d, 0x10, 0xb7, 0xa7, 0xaf, 0x7d, 0xfb, 0xfa, 0xfb, 0xb3, 0xa2, 0xdc, 0x40,
|
||||
0xf8, 0x0d, 0x14, 0xc6, 0x0d, 0xc0, 0x07, 0x73, 0xb4, 0xa6, 0x9d, 0x2b, 0x1e, 0xfe, 0x1b, 0x98,
|
||||
0x24, 0xdb, 0x91, 0xc9, 0x36, 0xe1, 0xba, 0x44, 0xde, 0xe9, 0x99, 0xae, 0xd9, 0xa1, 0x7e, 0xe5,
|
||||
0x93, 0x02, 0x72, 0xae, 0x12, 0x2b, 0xb2, 0xa6, 0x32, 0xdb, 0x8a, 0x05, 0x7f, 0x65, 0xb6, 0x15,
|
||||
0x8b, 0x06, 0x7e, 0xcc, 0x8a, 0x0f, 0x08, 0x76, 0x32, 0x9f, 0x24, 0x7c, 0x3c, 0x6f, 0xac, 0xe7,
|
||||
0xbd, 0x81, 0xc5, 0x93, 0xff, 0x60, 0x4c, 0x17, 0x52, 0x53, 0x87, 0x17, 0xda, 0xd2, 0xcf, 0x0b,
|
||||
0x6d, 0xe9, 0x6d, 0xa8, 0xa1, 0x61, 0xa8, 0xa1, 0xef, 0xa1, 0x86, 0x7e, 0x85, 0x1a, 0x6a, 0xe5,
|
||||
0xe4, 0x0b, 0x7c, 0xf7, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x69, 0xad, 0xed, 0x8f, 0xe6, 0x05,
|
||||
0x00, 0x00,
|
||||
// 638 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0xc1, 0x6e, 0xd3, 0x4c,
|
||||
0x10, 0xee, 0xba, 0xfd, 0xd3, 0xbf, 0xd3, 0xd0, 0xa2, 0xa5, 0x95, 0x4c, 0x9a, 0x3a, 0x95, 0x39,
|
||||
0xb4, 0x20, 0x61, 0xb7, 0x01, 0x09, 0x09, 0x2e, 0x24, 0x41, 0xaa, 0x2a, 0x54, 0x84, 0xb6, 0x82,
|
||||
0x6b, 0xe5, 0x38, 0xdb, 0x74, 0x15, 0xc7, 0x6b, 0xbc, 0xeb, 0x42, 0x6e, 0x48, 0x20, 0xde, 0x00,
|
||||
0xc1, 0x89, 0x47, 0xe0, 0x39, 0x2a, 0x4e, 0x48, 0x5c, 0x38, 0x55, 0xd4, 0x0f, 0xc0, 0x33, 0x20,
|
||||
0xaf, 0x6d, 0x9a, 0xb4, 0x4e, 0x5a, 0x4e, 0xf1, 0xce, 0x7c, 0xdf, 0x37, 0x33, 0xdf, 0x4e, 0x16,
|
||||
0xd6, 0xbb, 0x4c, 0x1e, 0x46, 0x6d, 0xcb, 0xe5, 0x7d, 0xbb, 0xc3, 0xdd, 0x1e, 0x0d, 0x6d, 0xf1,
|
||||
0xda, 0x09, 0xfb, 0x3d, 0x26, 0x6d, 0x27, 0x60, 0xb6, 0xeb, 0x58, 0x41, 0xc8, 0x25, 0xc7, 0x38,
|
||||
0xcd, 0x5a, 0x79, 0xd6, 0x3a, 0xda, 0xaa, 0xdc, 0xb9, 0x84, 0x2c, 0x07, 0x01, 0x15, 0x29, 0xff,
|
||||
0x52, 0xac, 0x08, 0xa8, 0x9b, 0x63, 0x97, 0xba, 0xbc, 0xcb, 0xd5, 0xa7, 0x9d, 0x7c, 0x65, 0xd1,
|
||||
0x07, 0x13, 0x14, 0x14, 0xa2, 0x1d, 0x1d, 0xd8, 0x81, 0x17, 0x75, 0x99, 0x9f, 0xfd, 0xa4, 0x44,
|
||||
0xb3, 0x05, 0xd5, 0x67, 0xbc, 0x43, 0x5b, 0x34, 0x94, 0xec, 0x80, 0xb9, 0x8e, 0xa4, 0x7b, 0xd2,
|
||||
0x91, 0x91, 0x20, 0xf4, 0x55, 0x44, 0x85, 0xc4, 0xb7, 0x60, 0xd6, 0xe7, 0x1d, 0xba, 0xcf, 0x3a,
|
||||
0x3a, 0x5a, 0x43, 0x1b, 0x73, 0x4d, 0x88, 0x4f, 0x6a, 0xa5, 0x84, 0xb2, 0xf3, 0x84, 0x94, 0x92,
|
||||
0xd4, 0x4e, 0xc7, 0xfc, 0x82, 0x60, 0x75, 0x8c, 0x8a, 0x08, 0xb8, 0x2f, 0x28, 0x7e, 0x08, 0x25,
|
||||
0xa1, 0x22, 0x4a, 0x65, 0xbe, 0x6e, 0x5a, 0x17, 0x2d, 0xb3, 0x76, 0x84, 0x88, 0x1c, 0xdf, 0xcd,
|
||||
0xb9, 0x19, 0x03, 0x37, 0x60, 0xde, 0x3d, 0x13, 0xd6, 0x35, 0x25, 0x50, 0x2b, 0x12, 0x18, 0xaa,
|
||||
0x4f, 0x86, 0x39, 0xe6, 0x0f, 0x04, 0x2b, 0x89, 0x3a, 0x3d, 0xd7, 0x65, 0x3e, 0xe5, 0x7d, 0x98,
|
||||
0x09, 0xb9, 0x47, 0x55, 0x73, 0x0b, 0xf5, 0x6a, 0x91, 0x76, 0xc2, 0x24, 0xdc, 0xa3, 0x4d, 0x4d,
|
||||
0x47, 0x44, 0xa1, 0xf1, 0x4d, 0x98, 0x76, 0x45, 0xa8, 0x1a, 0x2a, 0x37, 0x67, 0xe3, 0x93, 0xda,
|
||||
0x74, 0x6b, 0x8f, 0x90, 0x24, 0x86, 0x97, 0xe0, 0x3f, 0xc9, 0x7b, 0xd4, 0xd7, 0xa7, 0x13, 0xd3,
|
||||
0x48, 0x7a, 0xc0, 0xbb, 0x50, 0x76, 0x8e, 0x1c, 0xe6, 0x39, 0x6d, 0xe6, 0x31, 0x39, 0xd0, 0x67,
|
||||
0x54, 0xb9, 0xdb, 0xe3, 0xca, 0xed, 0x05, 0xd4, 0xb5, 0x1a, 0x43, 0x04, 0x32, 0x42, 0x37, 0x3f,
|
||||
0x22, 0xa8, 0x16, 0x4f, 0x95, 0xb9, 0x7e, 0x95, 0xcb, 0xc3, 0xcf, 0x61, 0x51, 0x81, 0xfa, 0xb4,
|
||||
0xdf, 0xa6, 0xa1, 0x38, 0x64, 0x81, 0x9a, 0x68, 0xa1, 0xbe, 0x3e, 0xb1, 0xaf, 0xdd, 0xbf, 0x70,
|
||||
0xb2, 0x90, 0xf0, 0xcf, 0xce, 0xe6, 0x2a, 0xac, 0x6c, 0x53, 0x49, 0x38, 0x97, 0xad, 0xc6, 0x45,
|
||||
0xb3, 0xcd, 0xc7, 0x50, 0x2d, 0x4e, 0x67, 0x5d, 0xaf, 0x8d, 0xde, 0x77, 0xd2, 0x79, 0x79, 0xf4,
|
||||
0x3a, 0x97, 0xe1, 0xc6, 0x36, 0x95, 0x2f, 0x7c, 0x8f, 0xbb, 0xbd, 0xa7, 0x74, 0x90, 0x0b, 0x87,
|
||||
0xb0, 0x34, 0x1a, 0xce, 0x04, 0x57, 0x01, 0x22, 0x15, 0xdc, 0xef, 0xd1, 0x41, 0xa6, 0x37, 0x17,
|
||||
0xe5, 0x30, 0xfc, 0x08, 0x66, 0x8f, 0x68, 0x28, 0x18, 0xf7, 0xb3, 0xdd, 0x5a, 0x29, 0x1a, 0xfc,
|
||||
0x65, 0x0a, 0x69, 0xce, 0x1c, 0x9f, 0xd4, 0xa6, 0x48, 0xce, 0xa8, 0xbf, 0xd7, 0x40, 0x6b, 0x35,
|
||||
0xf0, 0x3b, 0xa4, 0x6a, 0x5f, 0x18, 0x0a, 0xdb, 0x45, 0x5a, 0x13, 0xdc, 0xa9, 0x6c, 0x5e, 0x9d,
|
||||
0x90, 0x8e, 0x67, 0xfe, 0xff, 0xed, 0xeb, 0xef, 0xcf, 0x9a, 0x76, 0x1d, 0xe1, 0x37, 0x50, 0x1e,
|
||||
0x36, 0x00, 0xaf, 0x8f, 0xd1, 0x3a, 0xef, 0x5c, 0x65, 0xe3, 0x72, 0x60, 0x56, 0x6c, 0x59, 0x15,
|
||||
0x5b, 0x84, 0x6b, 0x0a, 0x79, 0xb7, 0xef, 0xf8, 0x4e, 0x97, 0x86, 0xf5, 0x4f, 0x1a, 0xa8, 0xbd,
|
||||
0xca, 0xac, 0x28, 0xda, 0xca, 0x62, 0x2b, 0x26, 0xfc, 0x2b, 0x8b, 0xad, 0x98, 0xb4, 0xf0, 0x43,
|
||||
0x56, 0x7c, 0x40, 0xb0, 0x5c, 0xf8, 0x24, 0xe1, 0xcd, 0x71, 0x6b, 0x3d, 0xee, 0x0d, 0xac, 0x6c,
|
||||
0xfd, 0x03, 0xe3, 0x7c, 0x23, 0x4d, 0xfd, 0xf8, 0xd4, 0x98, 0xfa, 0x79, 0x6a, 0x4c, 0xbd, 0x8d,
|
||||
0x0d, 0x74, 0x1c, 0x1b, 0xe8, 0x7b, 0x6c, 0xa0, 0x5f, 0xb1, 0x81, 0xda, 0x25, 0xf5, 0x02, 0xdf,
|
||||
0xfb, 0x13, 0x00, 0x00, 0xff, 0xff, 0xe1, 0xda, 0xca, 0xba, 0x67, 0x06, 0x00, 0x00,
|
||||
}
|
||||
|
|
6
vendor/github.com/docker/swarmkit/api/ca.proto
generated
vendored
6
vendor/github.com/docker/swarmkit/api/ca.proto
generated
vendored
|
@ -2,10 +2,10 @@ syntax = "proto3";
|
|||
|
||||
package docker.swarmkit.v1;
|
||||
|
||||
import "types.proto";
|
||||
import "specs.proto";
|
||||
import "github.com/docker/swarmkit/api/types.proto";
|
||||
import "github.com/docker/swarmkit/api/specs.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
import "plugin/plugin.proto";
|
||||
import "github.com/docker/swarmkit/protobuf/plugin/plugin.proto";
|
||||
|
||||
// CA defines the RPC methods for requesting certificates from a CA.
|
||||
|
||||
|
|
274
vendor/github.com/docker/swarmkit/api/control.pb.go
generated
vendored
274
vendor/github.com/docker/swarmkit/api/control.pb.go
generated
vendored
|
@ -1,5 +1,5 @@
|
|||
// Code generated by protoc-gen-gogo.
|
||||
// source: control.proto
|
||||
// source: github.com/docker/swarmkit/api/control.proto
|
||||
// DO NOT EDIT!
|
||||
|
||||
package api
|
||||
|
@ -3468,7 +3468,7 @@ var _Control_serviceDesc = grpc.ServiceDesc{
|
|||
},
|
||||
},
|
||||
Streams: []grpc.StreamDesc{},
|
||||
Metadata: "control.proto",
|
||||
Metadata: "github.com/docker/swarmkit/api/control.proto",
|
||||
}
|
||||
|
||||
func (m *GetNodeRequest) Marshal() (dAtA []byte, err error) {
|
||||
|
@ -15953,140 +15953,142 @@ var (
|
|||
ErrIntOverflowControl = fmt.Errorf("proto: integer overflow")
|
||||
)
|
||||
|
||||
func init() { proto.RegisterFile("control.proto", fileDescriptorControl) }
|
||||
func init() { proto.RegisterFile("github.com/docker/swarmkit/api/control.proto", fileDescriptorControl) }
|
||||
|
||||
var fileDescriptorControl = []byte{
|
||||
// 2106 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0xcd, 0x73, 0x1b, 0x49,
|
||||
0x15, 0xb7, 0x3e, 0x6c, 0xc9, 0x4f, 0xb6, 0x6c, 0xb7, 0x1d, 0x50, 0x29, 0xc1, 0x4e, 0x4d, 0x48,
|
||||
0xa2, 0x50, 0x41, 0x66, 0x15, 0x16, 0xc2, 0x52, 0x7c, 0xac, 0xed, 0x6c, 0x56, 0xeb, 0x8d, 0x93,
|
||||
0x1a, 0xc7, 0x5b, 0xdc, 0x54, 0xb2, 0xd4, 0x36, 0x13, 0xc9, 0x1a, 0x31, 0x33, 0xf2, 0xae, 0x8b,
|
||||
0x0b, 0x50, 0xcb, 0x81, 0x3f, 0x80, 0x2a, 0xae, 0x5c, 0x39, 0x70, 0xe0, 0xc4, 0x81, 0x3f, 0x20,
|
||||
0xc5, 0x89, 0x23, 0x27, 0xc3, 0xaa, 0x0a, 0x8a, 0x13, 0x7f, 0xc3, 0x56, 0x77, 0xbf, 0x9e, 0x2f,
|
||||
0xf5, 0xcc, 0xe8, 0xab, 0xca, 0x7b, 0xb2, 0xa6, 0xe7, 0xf7, 0xfa, 0xbd, 0xee, 0xf7, 0xeb, 0xdf,
|
||||
0x74, 0xbf, 0x36, 0xac, 0xb6, 0xcc, 0x9e, 0x63, 0x99, 0xdd, 0x6a, 0xdf, 0x32, 0x1d, 0x93, 0x90,
|
||||
0xb6, 0xd9, 0xea, 0x50, 0xab, 0x6a, 0x7f, 0xda, 0xb4, 0x2e, 0x3a, 0x86, 0x53, 0xbd, 0x7c, 0xa7,
|
||||
0x5c, 0xb0, 0xfb, 0xb4, 0x65, 0x0b, 0x40, 0x79, 0xd5, 0x3c, 0x7d, 0x43, 0x5b, 0x8e, 0x7c, 0x2c,
|
||||
0x38, 0x57, 0x7d, 0x2a, 0x1f, 0xb6, 0xce, 0xcd, 0x73, 0x93, 0xff, 0xdc, 0x65, 0xbf, 0xb0, 0x75,
|
||||
0xb3, 0xdf, 0x1d, 0x9c, 0x1b, 0xbd, 0x5d, 0xf1, 0x47, 0x34, 0x6a, 0xef, 0x42, 0xf1, 0x39, 0x75,
|
||||
0x8e, 0xcc, 0x36, 0xd5, 0xe9, 0x2f, 0x06, 0xd4, 0x76, 0xc8, 0x3d, 0xc8, 0xf5, 0xcc, 0x36, 0x6d,
|
||||
0x18, 0xed, 0x52, 0xea, 0x6e, 0xaa, 0xb2, 0xbc, 0x07, 0xc3, 0xeb, 0x9d, 0x25, 0x86, 0xa8, 0x1f,
|
||||
0xe8, 0x4b, 0xec, 0x55, 0xbd, 0xad, 0xfd, 0x04, 0xd6, 0x5c, 0x33, 0xbb, 0x6f, 0xf6, 0x6c, 0x4a,
|
||||
0x1e, 0x43, 0x96, 0xbd, 0xe4, 0x46, 0x85, 0x5a, 0xa9, 0x3a, 0x3a, 0x80, 0x2a, 0xc7, 0x73, 0x94,
|
||||
0xf6, 0xdf, 0x0c, 0xac, 0x7f, 0x6c, 0xd8, 0xbc, 0x0b, 0x5b, 0xba, 0xfe, 0x00, 0x72, 0x67, 0x46,
|
||||
0xd7, 0xa1, 0x96, 0x8d, 0xbd, 0x3c, 0x56, 0xf5, 0x12, 0x36, 0xab, 0x7e, 0x20, 0x6c, 0x74, 0x69,
|
||||
0x5c, 0xfe, 0x5d, 0x06, 0x72, 0xd8, 0x48, 0xb6, 0x60, 0xb1, 0xd7, 0xbc, 0xa0, 0xac, 0xc7, 0x4c,
|
||||
0x65, 0x59, 0x17, 0x0f, 0x64, 0x17, 0x0a, 0x46, 0xbb, 0xd1, 0xb7, 0xe8, 0x99, 0xf1, 0x19, 0xb5,
|
||||
0x4b, 0x69, 0xf6, 0x6e, 0xaf, 0x38, 0xbc, 0xde, 0x81, 0xfa, 0xc1, 0x2b, 0x6c, 0xd5, 0xc1, 0x68,
|
||||
0xcb, 0xdf, 0xe4, 0x15, 0x2c, 0x75, 0x9b, 0xa7, 0xb4, 0x6b, 0x97, 0x32, 0x77, 0x33, 0x95, 0x42,
|
||||
0xed, 0xe9, 0x24, 0x91, 0x55, 0x3f, 0xe6, 0xa6, 0xcf, 0x7a, 0x8e, 0x75, 0xa5, 0x63, 0x3f, 0xe4,
|
||||
0x05, 0x14, 0x2e, 0xe8, 0xc5, 0x29, 0xb5, 0xec, 0x9f, 0x1b, 0x7d, 0xbb, 0x94, 0xbd, 0x9b, 0xa9,
|
||||
0x14, 0x6b, 0x0f, 0xa3, 0xa6, 0xed, 0xb8, 0x4f, 0x5b, 0xd5, 0x17, 0x2e, 0x7e, 0x2f, 0xbd, 0xbe,
|
||||
0xa0, 0xfb, 0xed, 0xc9, 0xf7, 0x60, 0xd1, 0x32, 0xbb, 0xd4, 0x2e, 0x2d, 0xf2, 0x8e, 0xee, 0x44,
|
||||
0xce, 0xbf, 0xd9, 0xa5, 0xdc, 0x5a, 0xc0, 0xc9, 0x3d, 0x58, 0x65, 0x53, 0xe2, 0xcd, 0xc5, 0x12,
|
||||
0x9f, 0xa7, 0x15, 0xd6, 0x28, 0x47, 0x5f, 0xfe, 0x01, 0x14, 0x7c, 0x43, 0x20, 0xeb, 0x90, 0xe9,
|
||||
0xd0, 0x2b, 0x41, 0x0f, 0x9d, 0xfd, 0x64, 0xb3, 0x7c, 0xd9, 0xec, 0x0e, 0x68, 0x29, 0xcd, 0xdb,
|
||||
0xc4, 0xc3, 0x7b, 0xe9, 0xa7, 0x29, 0x6d, 0x1f, 0x36, 0x7c, 0xd3, 0x82, 0x5c, 0xa9, 0xc2, 0x22,
|
||||
0x63, 0x81, 0x48, 0x4a, 0x1c, 0x59, 0x04, 0x4c, 0xfb, 0x53, 0x0a, 0x36, 0x4e, 0xfa, 0xed, 0xa6,
|
||||
0x43, 0x27, 0x65, 0x2a, 0xf9, 0x31, 0xac, 0x70, 0xd0, 0x25, 0xb5, 0x6c, 0xc3, 0xec, 0xf1, 0x00,
|
||||
0x0b, 0xb5, 0xdb, 0x2a, 0x8f, 0x9f, 0x08, 0x88, 0x5e, 0x60, 0x06, 0xf8, 0x40, 0xbe, 0x03, 0x59,
|
||||
0xb6, 0xec, 0x4a, 0x19, 0x6e, 0x77, 0x27, 0x2e, 0x3f, 0x3a, 0x47, 0x6a, 0x7b, 0x40, 0xfc, 0xb1,
|
||||
0x4e, 0xb5, 0x3c, 0x8e, 0x60, 0x43, 0xa7, 0x17, 0xe6, 0xe5, 0xe4, 0xe3, 0xdd, 0x82, 0xc5, 0x33,
|
||||
0xd3, 0x6a, 0x89, 0x4c, 0xe4, 0x75, 0xf1, 0xa0, 0x6d, 0x01, 0xf1, 0xf7, 0x27, 0x62, 0xc2, 0xc5,
|
||||
0xff, 0xba, 0x69, 0x77, 0x7c, 0x2e, 0x9c, 0xa6, 0xdd, 0x09, 0xb9, 0x60, 0x08, 0xe6, 0x82, 0xbd,
|
||||
0x72, 0x17, 0xbf, 0x30, 0xf3, 0x46, 0xc7, 0x5e, 0xc6, 0x8d, 0x8e, 0xe3, 0x39, 0x4a, 0x7b, 0x2a,
|
||||
0x47, 0x37, 0xb1, 0x6b, 0x77, 0x1c, 0x7e, 0xef, 0xda, 0xdf, 0xb2, 0x42, 0x4c, 0x58, 0xe3, 0x14,
|
||||
0x62, 0xe2, 0x37, 0x1b, 0x15, 0x93, 0x7f, 0xdd, 0xa0, 0x98, 0xa8, 0x22, 0x53, 0x8a, 0xc9, 0x2e,
|
||||
0x14, 0x6c, 0x6a, 0x5d, 0x1a, 0x2d, 0xc6, 0x0e, 0x21, 0x26, 0x18, 0xc2, 0xb1, 0x68, 0xae, 0x1f,
|
||||
0xd8, 0x3a, 0x20, 0xa4, 0xde, 0xb6, 0xc9, 0x03, 0xc8, 0x23, 0x97, 0x84, 0x62, 0x2c, 0xef, 0x15,
|
||||
0x86, 0xd7, 0x3b, 0x39, 0x41, 0x26, 0x5b, 0xcf, 0x09, 0x36, 0xd9, 0xe4, 0x43, 0x28, 0xb6, 0xa9,
|
||||
0x6d, 0x58, 0xb4, 0xdd, 0xb0, 0x9d, 0xa6, 0x83, 0xfa, 0x50, 0xac, 0x7d, 0x23, 0x2a, 0xc5, 0xc7,
|
||||
0x0c, 0xc5, 0x05, 0x66, 0x15, 0x0d, 0x79, 0x8b, 0x42, 0x68, 0x72, 0xa3, 0x42, 0x43, 0xee, 0x00,
|
||||
0x0c, 0xfa, 0x0d, 0xc7, 0x6c, 0xb0, 0xf5, 0x53, 0xca, 0x73, 0x0a, 0xe7, 0x07, 0xfd, 0xd7, 0xe6,
|
||||
0x41, 0xd3, 0xa1, 0xa4, 0x0c, 0x79, 0x6b, 0xd0, 0x73, 0x0c, 0x96, 0x81, 0x65, 0x6e, 0xed, 0x3e,
|
||||
0xcf, 0x41, 0xa2, 0x70, 0xb2, 0x3d, 0x89, 0x62, 0x9c, 0x8b, 0x95, 0x28, 0x4e, 0x42, 0x01, 0xd3,
|
||||
0x0e, 0x61, 0x6b, 0xdf, 0xa2, 0x4d, 0x87, 0xe2, 0x84, 0x4b, 0x1a, 0x3e, 0x41, 0xfd, 0x10, 0x1c,
|
||||
0xdc, 0x51, 0x75, 0x83, 0x16, 0x3e, 0x09, 0x39, 0x82, 0x5b, 0xa1, 0xce, 0x30, 0xaa, 0x77, 0x21,
|
||||
0x87, 0x49, 0xc4, 0x0e, 0x6f, 0xc7, 0x74, 0xa8, 0x4b, 0xac, 0xf6, 0x06, 0x36, 0x9e, 0x53, 0x27,
|
||||
0x14, 0xd9, 0x63, 0x00, 0x8f, 0x33, 0xb8, 0xe6, 0x56, 0x87, 0xd7, 0x3b, 0xcb, 0x2e, 0x65, 0xf4,
|
||||
0x65, 0x97, 0x31, 0xe4, 0x21, 0xac, 0x19, 0x3d, 0x9b, 0x5a, 0x4e, 0xa3, 0x4d, 0xcf, 0x9a, 0x83,
|
||||
0xae, 0x63, 0xa3, 0xc2, 0x14, 0x45, 0xf3, 0x01, 0xb6, 0x6a, 0x87, 0x40, 0xfc, 0xbe, 0x66, 0x0b,
|
||||
0xfc, 0x2f, 0x69, 0xd8, 0x12, 0x62, 0x3a, 0x53, 0xf0, 0x07, 0xb0, 0x26, 0xd1, 0x13, 0x7c, 0x07,
|
||||
0x8a, 0x68, 0x23, 0x3f, 0x05, 0x4f, 0x02, 0x9f, 0x82, 0xf1, 0x52, 0x49, 0x5e, 0x40, 0xde, 0x32,
|
||||
0xbb, 0xdd, 0xd3, 0x66, 0xab, 0x53, 0xca, 0xde, 0x4d, 0x55, 0x8a, 0xb5, 0x77, 0x54, 0x86, 0xaa,
|
||||
0x41, 0x56, 0x75, 0x34, 0xd4, 0xdd, 0x2e, 0x34, 0x0d, 0xf2, 0xb2, 0x95, 0xe4, 0x21, 0x7b, 0xf4,
|
||||
0xf2, 0xe8, 0xd9, 0xfa, 0x02, 0x59, 0x81, 0xfc, 0x2b, 0xfd, 0xd9, 0x27, 0xf5, 0x97, 0x27, 0xc7,
|
||||
0xeb, 0x29, 0xc6, 0x9e, 0x50, 0x77, 0xb3, 0x25, 0xe1, 0x00, 0xb6, 0x84, 0xe8, 0xce, 0x92, 0x03,
|
||||
0xed, 0xeb, 0x70, 0x2b, 0xd4, 0x0b, 0xaa, 0xf7, 0xe7, 0x19, 0xd8, 0x64, 0xeb, 0x0f, 0xdb, 0x5d,
|
||||
0x01, 0xaf, 0x87, 0x05, 0x7c, 0x37, 0x4a, 0x26, 0x43, 0x96, 0xa3, 0x1a, 0xfe, 0xc7, 0xf4, 0xdc,
|
||||
0x35, 0xfc, 0x38, 0xa4, 0xe1, 0x3f, 0x9c, 0x30, 0x38, 0xa5, 0x8c, 0x8f, 0x68, 0x64, 0x56, 0xa1,
|
||||
0x91, 0x7e, 0x15, 0x5c, 0x9c, 0x9f, 0x0a, 0xbe, 0x84, 0xad, 0x60, 0xb8, 0x48, 0x9a, 0xef, 0x43,
|
||||
0x1e, 0x93, 0x28, 0xb5, 0x30, 0x96, 0x35, 0x2e, 0xd8, 0x53, 0xc4, 0x23, 0xea, 0x7c, 0x6a, 0x5a,
|
||||
0x9d, 0x09, 0x14, 0x11, 0x2d, 0x54, 0x8a, 0xe8, 0x76, 0xe6, 0x71, 0xba, 0x27, 0x9a, 0xe2, 0x38,
|
||||
0x2d, 0xad, 0x24, 0x56, 0x3b, 0xe1, 0x8a, 0x18, 0x8a, 0x8c, 0x40, 0x96, 0xcd, 0x34, 0xce, 0x17,
|
||||
0xff, 0xcd, 0x48, 0x8e, 0x36, 0x8c, 0xe4, 0x69, 0x8f, 0xe4, 0x68, 0xcb, 0x48, 0x8e, 0x80, 0x7a,
|
||||
0x1b, 0xc5, 0x6f, 0x4e, 0x31, 0xfe, 0x4c, 0xae, 0xbb, 0xb9, 0x87, 0xe9, 0xae, 0xc5, 0x50, 0xa4,
|
||||
0xda, 0xff, 0xd2, 0x62, 0x2d, 0x62, 0xfb, 0x14, 0x6b, 0x31, 0x64, 0x39, 0xba, 0x16, 0x7f, 0x7b,
|
||||
0x83, 0x6b, 0x31, 0x22, 0xb8, 0xa9, 0xd7, 0xe2, 0x1c, 0xd6, 0x9b, 0x17, 0x92, 0xb7, 0xde, 0x30,
|
||||
0x51, 0xb1, 0xeb, 0x4d, 0x66, 0xce, 0x05, 0x6b, 0xef, 0x73, 0x4a, 0xef, 0x77, 0x07, 0xb6, 0x43,
|
||||
0x2d, 0x9f, 0x46, 0xb7, 0x44, 0x4b, 0x48, 0xa3, 0x11, 0xc7, 0x78, 0x81, 0x00, 0x97, 0xbe, 0x6e,
|
||||
0x17, 0x1e, 0x7d, 0x11, 0x12, 0x47, 0x5f, 0x69, 0x25, 0xb1, 0x2e, 0x97, 0xf0, 0xc5, 0x14, 0x5c,
|
||||
0x0a, 0x59, 0x7e, 0xb5, 0xb8, 0x14, 0x11, 0xdc, 0x4d, 0x72, 0xc9, 0x0b, 0xc9, 0xe3, 0x12, 0x66,
|
||||
0x23, 0x96, 0x4b, 0x32, 0x75, 0x2e, 0x58, 0xfb, 0x7d, 0x0a, 0x0a, 0x87, 0xf4, 0x4a, 0x37, 0x9d,
|
||||
0xa6, 0xc3, 0xb6, 0x3e, 0xdf, 0x82, 0x0d, 0x46, 0x32, 0x6a, 0x35, 0xde, 0x98, 0x46, 0xaf, 0xe1,
|
||||
0x98, 0x1d, 0xda, 0xe3, 0xa1, 0xe5, 0xf5, 0x35, 0xf1, 0xe2, 0x23, 0xd3, 0xe8, 0xbd, 0x66, 0xcd,
|
||||
0xe4, 0x31, 0x90, 0x8b, 0x66, 0xaf, 0x79, 0x1e, 0x04, 0x8b, 0xcd, 0xe2, 0x3a, 0xbe, 0x51, 0xa2,
|
||||
0x07, 0xbd, 0xae, 0xd9, 0xea, 0x34, 0xd8, 0xa8, 0x33, 0x01, 0xf4, 0x09, 0x7f, 0x71, 0x48, 0xaf,
|
||||
0xb4, 0xdf, 0xb8, 0xfb, 0xc1, 0x59, 0x78, 0xce, 0xf6, 0x83, 0x12, 0x3d, 0xc9, 0x7e, 0x10, 0x6d,
|
||||
0x26, 0xd8, 0x0f, 0xa2, 0x77, 0xdf, 0x7e, 0xf0, 0x7d, 0xb6, 0x1f, 0x14, 0xb3, 0xca, 0xf7, 0x83,
|
||||
0x11, 0x86, 0xbe, 0xc9, 0xdf, 0xcb, 0xbe, 0xbd, 0xde, 0x59, 0xd0, 0x5d, 0x33, 0x6f, 0x7f, 0x37,
|
||||
0xa7, 0x85, 0xfa, 0x23, 0x58, 0xe7, 0x3b, 0xf6, 0x96, 0x45, 0x1d, 0x39, 0x9f, 0x8f, 0x60, 0xd9,
|
||||
0xe6, 0x0d, 0xde, 0x74, 0xae, 0x0c, 0xaf, 0x77, 0xf2, 0x02, 0x55, 0x3f, 0x60, 0xdf, 0x79, 0xfe,
|
||||
0xab, 0xad, 0x3d, 0xc7, 0xc3, 0x85, 0x30, 0xc7, 0x50, 0x6a, 0xb0, 0x24, 0x00, 0x18, 0x49, 0x59,
|
||||
0xbd, 0x67, 0xe0, 0x36, 0x88, 0xd4, 0xfe, 0x9a, 0x82, 0x4d, 0xb9, 0x71, 0x9d, 0x2e, 0x16, 0xb2,
|
||||
0x07, 0x45, 0x84, 0x4e, 0x90, 0xd7, 0x55, 0x61, 0x22, 0xd3, 0x5a, 0x0b, 0xa4, 0x75, 0x3b, 0x3a,
|
||||
0x70, 0xdf, 0xf6, 0xe4, 0x23, 0xef, 0x98, 0x32, 0xf3, 0x34, 0xfc, 0x27, 0x0d, 0x44, 0xec, 0xc4,
|
||||
0xd8, 0xa3, 0x2b, 0x9b, 0x1f, 0x86, 0x65, 0xb3, 0x1a, 0xbd, 0xe3, 0xf4, 0x1b, 0x8e, 0xaa, 0xe6,
|
||||
0xe7, 0xf3, 0x57, 0x4d, 0x3d, 0xa4, 0x9a, 0xef, 0x4d, 0x16, 0xdb, 0x8d, 0x88, 0xe6, 0xa1, 0x3c,
|
||||
0x76, 0x60, 0x44, 0x98, 0xb2, 0xef, 0xb2, 0x43, 0x12, 0x6f, 0x42, 0xc9, 0x8c, 0xcb, 0x99, 0x84,
|
||||
0x6a, 0x75, 0xd8, 0x94, 0x27, 0x76, 0x3f, 0x75, 0x6b, 0x81, 0xbd, 0xee, 0xd8, 0x5c, 0x0a, 0x76,
|
||||
0x35, 0x03, 0x97, 0x7e, 0x0a, 0x9b, 0xf2, 0xd0, 0x35, 0xe5, 0xea, 0xfe, 0x9a, 0x77, 0xf8, 0xf3,
|
||||
0x47, 0x83, 0xa2, 0xb1, 0x6f, 0xf6, 0xce, 0x8c, 0x73, 0x5f, 0xb7, 0x2d, 0xde, 0x10, 0xea, 0x56,
|
||||
0xa0, 0x58, 0xb7, 0xe2, 0xb5, 0x2b, 0x1a, 0xd2, 0xdc, 0x1b, 0xa1, 0x00, 0xc4, 0x8d, 0x10, 0x6d,
|
||||
0x10, 0xe9, 0x13, 0x8d, 0x69, 0x63, 0x61, 0xa2, 0x81, 0xd0, 0x49, 0x44, 0x43, 0x98, 0x4c, 0x20,
|
||||
0x1a, 0xc2, 0xb3, 0x4a, 0x34, 0xe6, 0x30, 0x0d, 0x52, 0x34, 0x44, 0xf3, 0x14, 0xa2, 0x11, 0x34,
|
||||
0xfc, 0x6a, 0x89, 0x86, 0x3a, 0xb6, 0x9b, 0x14, 0x0d, 0x37, 0x22, 0x4f, 0x34, 0x44, 0x22, 0x62,
|
||||
0x45, 0x03, 0x73, 0x26, 0xa1, 0x9e, 0x68, 0x04, 0xa9, 0x3b, 0x86, 0x68, 0xa8, 0xb8, 0x14, 0xec,
|
||||
0x6a, 0x06, 0x2e, 0xb9, 0xa2, 0x31, 0xf5, 0xea, 0x76, 0x45, 0x23, 0x18, 0x4d, 0xed, 0xd7, 0xb7,
|
||||
0x21, 0xb7, 0x2f, 0xee, 0x39, 0x89, 0x01, 0x39, 0xbc, 0x42, 0x24, 0x9a, 0x2a, 0xa8, 0xe0, 0xb5,
|
||||
0x64, 0xf9, 0x5e, 0x2c, 0x06, 0x45, 0xe9, 0xd6, 0xdf, 0xff, 0xfc, 0xff, 0x3f, 0xa4, 0xd7, 0x60,
|
||||
0x95, 0x83, 0xbe, 0x8d, 0xdb, 0x47, 0x62, 0xc2, 0xb2, 0x7b, 0x07, 0x45, 0xbe, 0x39, 0xce, 0xcd,
|
||||
0x5d, 0xf9, 0x7e, 0x02, 0x2a, 0xde, 0xa1, 0x05, 0xe0, 0x5d, 0x01, 0x91, 0xfb, 0xd1, 0x05, 0x3f,
|
||||
0xff, 0x08, 0x1f, 0x24, 0xc1, 0x12, 0x7d, 0x7a, 0x57, 0x3c, 0x6a, 0x9f, 0x23, 0x57, 0x4a, 0x6a,
|
||||
0x9f, 0x8a, 0x9b, 0xa2, 0x08, 0x9f, 0x22, 0x87, 0xaf, 0x9b, 0x76, 0x27, 0x32, 0x87, 0xbe, 0x2b,
|
||||
0x9e, 0xc8, 0x1c, 0x06, 0x2e, 0x73, 0xe2, 0x73, 0xc8, 0x8b, 0xf4, 0xd1, 0x39, 0xf4, 0x5f, 0x98,
|
||||
0x44, 0xe7, 0x30, 0x50, 0xe9, 0x4f, 0x9c, 0x4f, 0x3e, 0xbc, 0x98, 0xf9, 0xf4, 0x8f, 0xf0, 0x41,
|
||||
0x12, 0x2c, 0xd1, 0xa7, 0x57, 0x3b, 0x57, 0xfb, 0x1c, 0xa9, 0xe3, 0xab, 0x7d, 0x8e, 0x96, 0xe0,
|
||||
0xa3, 0x7c, 0x7e, 0x06, 0x2b, 0xfe, 0xba, 0x1f, 0x79, 0x38, 0x66, 0x21, 0xb3, 0x5c, 0x49, 0x06,
|
||||
0xc6, 0x7b, 0xfe, 0x25, 0xac, 0x06, 0x6e, 0x39, 0x88, 0xb2, 0x47, 0xd5, 0xad, 0x4a, 0xf9, 0xd1,
|
||||
0x18, 0xc8, 0x44, 0xe7, 0x81, 0x22, 0xb9, 0xda, 0xb9, 0xaa, 0x2c, 0xaf, 0x76, 0xae, 0xac, 0xb8,
|
||||
0xc7, 0x38, 0x0f, 0xd4, 0xc2, 0xd5, 0xce, 0x55, 0x45, 0x77, 0xb5, 0x73, 0x75, 0x61, 0x3d, 0x96,
|
||||
0x64, 0x58, 0x3f, 0x8a, 0x24, 0x59, 0xb0, 0xe6, 0x18, 0x49, 0xb2, 0x70, 0x01, 0x31, 0x9e, 0x64,
|
||||
0xb2, 0xd8, 0x15, 0x4d, 0xb2, 0x50, 0x85, 0x2e, 0x9a, 0x64, 0xe1, 0xba, 0x59, 0x22, 0xc9, 0xe4,
|
||||
0x80, 0x63, 0x48, 0x16, 0x1a, 0xf3, 0xa3, 0x31, 0x90, 0x63, 0xe6, 0x39, 0xd6, 0xb9, 0xaa, 0xc8,
|
||||
0x1b, 0x97, 0xe7, 0x31, 0x9d, 0x8b, 0x3c, 0xe3, 0x69, 0x3f, 0x32, 0xcf, 0xc1, 0x3a, 0x4a, 0x64,
|
||||
0x9e, 0x43, 0xa5, 0x86, 0x84, 0x3c, 0xcb, 0x42, 0x54, 0x74, 0x9e, 0x43, 0xd5, 0xb3, 0xe8, 0x3c,
|
||||
0x87, 0x6b, 0x5a, 0x89, 0xeb, 0x59, 0x0e, 0x38, 0x66, 0x3d, 0x87, 0xc6, 0xfc, 0x68, 0x0c, 0x64,
|
||||
0xe2, 0xc7, 0xc9, 0x2d, 0x81, 0xa8, 0x3f, 0x4e, 0xe1, 0x02, 0x4b, 0xf9, 0x7e, 0x02, 0x2a, 0x71,
|
||||
0x9e, 0xfd, 0xf5, 0x06, 0xf5, 0x3c, 0x2b, 0x6a, 0x29, 0xe5, 0x4a, 0x32, 0x30, 0xde, 0xf3, 0x00,
|
||||
0x0a, 0xbe, 0x53, 0x33, 0x79, 0x30, 0xde, 0x41, 0xbf, 0xfc, 0x30, 0x11, 0x97, 0x38, 0x60, 0xff,
|
||||
0xa1, 0x58, 0x3d, 0x60, 0xc5, 0x09, 0xbc, 0x5c, 0x49, 0x06, 0x26, 0x7a, 0xf6, 0x1f, 0x80, 0xd5,
|
||||
0x9e, 0x15, 0x87, 0xec, 0x72, 0x25, 0x19, 0x38, 0x0e, 0xab, 0xc4, 0x16, 0x3a, 0x92, 0x55, 0x81,
|
||||
0x3d, 0x7a, 0x24, 0xab, 0x82, 0xfb, 0xf0, 0x44, 0x56, 0xa1, 0xcf, 0x18, 0x56, 0x05, 0xdd, 0x56,
|
||||
0x92, 0x81, 0x63, 0xb1, 0x0a, 0x8f, 0x55, 0xd1, 0xac, 0x0a, 0x9e, 0x04, 0xa3, 0x59, 0x15, 0x3a,
|
||||
0x9f, 0x25, 0xb2, 0x2a, 0x6e, 0xc0, 0x8a, 0x23, 0x5a, 0x1c, 0xab, 0xc6, 0x9e, 0x6a, 0xff, 0x09,
|
||||
0x29, 0x8e, 0x55, 0x63, 0x78, 0x56, 0x1d, 0xb6, 0x22, 0x3c, 0xef, 0x95, 0xde, 0x7e, 0xb1, 0xbd,
|
||||
0xf0, 0xcf, 0x2f, 0xb6, 0x17, 0x7e, 0x35, 0xdc, 0x4e, 0xbd, 0x1d, 0x6e, 0xa7, 0xfe, 0x31, 0xdc,
|
||||
0x4e, 0xfd, 0x7b, 0xb8, 0x9d, 0x3a, 0x5d, 0xe2, 0xff, 0x12, 0xfa, 0xe4, 0xcb, 0x00, 0x00, 0x00,
|
||||
0xff, 0xff, 0x69, 0xfa, 0x48, 0xde, 0x8b, 0x2a, 0x00, 0x00,
|
||||
// 2137 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x5a, 0x4f, 0x73, 0x1b, 0x49,
|
||||
0x15, 0xb7, 0xfe, 0xd8, 0x92, 0x9f, 0x6c, 0xd9, 0xee, 0x38, 0xa0, 0x52, 0x82, 0x9d, 0x9a, 0x90,
|
||||
0x44, 0xd9, 0x32, 0x12, 0xab, 0xb0, 0x6c, 0x58, 0x8a, 0x3f, 0x6b, 0x3b, 0x9b, 0xd5, 0x7a, 0xe3,
|
||||
0xa4, 0xc6, 0xc9, 0x16, 0x37, 0x95, 0x2c, 0xb5, 0xbd, 0x13, 0xc9, 0x1a, 0x31, 0x33, 0xf2, 0xae,
|
||||
0x8b, 0x0b, 0x50, 0xcb, 0x81, 0x0f, 0x40, 0x15, 0x57, 0xae, 0x1c, 0x38, 0x70, 0xe2, 0xc0, 0x07,
|
||||
0x48, 0x71, 0xe2, 0xc8, 0xc9, 0xb0, 0xaa, 0x82, 0xe2, 0xc4, 0x67, 0xa0, 0xba, 0xfb, 0xf5, 0xfc,
|
||||
0x53, 0xcf, 0x8c, 0x24, 0xab, 0xca, 0x39, 0x59, 0xd3, 0xf3, 0x7b, 0xfd, 0x5e, 0xf7, 0xfb, 0xf5,
|
||||
0x6f, 0xba, 0x5f, 0x1b, 0x76, 0x4e, 0x0d, 0xe7, 0xf3, 0xe1, 0x71, 0xb5, 0x6d, 0x9e, 0xd5, 0x3a,
|
||||
0x66, 0xbb, 0x4b, 0xad, 0x9a, 0xfd, 0x45, 0xcb, 0x3a, 0xeb, 0x1a, 0x4e, 0xad, 0x35, 0x30, 0x6a,
|
||||
0x6d, 0xb3, 0xef, 0x58, 0x66, 0xaf, 0x3a, 0xb0, 0x4c, 0xc7, 0x24, 0x44, 0x40, 0xaa, 0x12, 0x52,
|
||||
0x3d, 0x7f, 0xb7, 0xfc, 0x4e, 0x42, 0x0f, 0xf6, 0x80, 0xb6, 0x6d, 0x61, 0x5f, 0x4e, 0xf2, 0x66,
|
||||
0x1e, 0xbf, 0xa6, 0x6d, 0x47, 0xa2, 0x93, 0x7a, 0x76, 0x2e, 0x06, 0x54, 0x62, 0x37, 0x4f, 0xcd,
|
||||
0x53, 0x93, 0xff, 0xac, 0xb1, 0x5f, 0xd8, 0xfa, 0x7e, 0x4c, 0x0f, 0x1c, 0x71, 0x3c, 0x3c, 0xa9,
|
||||
0x0d, 0x7a, 0xc3, 0x53, 0xa3, 0x8f, 0x7f, 0x84, 0xa1, 0xf6, 0x1e, 0x14, 0x9f, 0x52, 0xe7, 0xd0,
|
||||
0xec, 0x50, 0x9d, 0xfe, 0x7c, 0x48, 0x6d, 0x87, 0xdc, 0x85, 0x5c, 0xdf, 0xec, 0xd0, 0xa6, 0xd1,
|
||||
0x29, 0xa5, 0xee, 0xa4, 0x2a, 0xcb, 0xbb, 0x30, 0xba, 0xdc, 0x5e, 0x62, 0x88, 0xc6, 0xbe, 0xbe,
|
||||
0xc4, 0x5e, 0x35, 0x3a, 0xda, 0x4f, 0x60, 0xcd, 0x35, 0xb3, 0x07, 0x66, 0xdf, 0xa6, 0x64, 0x07,
|
||||
0xb2, 0xec, 0x25, 0x37, 0x2a, 0xd4, 0x4b, 0xd5, 0xf1, 0x19, 0xac, 0x72, 0x3c, 0x47, 0x69, 0xff,
|
||||
0xc9, 0xc0, 0xfa, 0xa7, 0x86, 0xcd, 0xbb, 0xb0, 0xa5, 0xeb, 0x8f, 0x20, 0x77, 0x62, 0xf4, 0x1c,
|
||||
0x6a, 0xd9, 0xd8, 0xcb, 0x8e, 0xaa, 0x97, 0xb0, 0x59, 0xf5, 0x23, 0x61, 0xa3, 0x4b, 0xe3, 0xf2,
|
||||
0x6f, 0x33, 0x90, 0xc3, 0x46, 0xb2, 0x09, 0x8b, 0xfd, 0xd6, 0x19, 0x65, 0x3d, 0x66, 0x2a, 0xcb,
|
||||
0xba, 0x78, 0x20, 0x35, 0x28, 0x18, 0x9d, 0xe6, 0xc0, 0xa2, 0x27, 0xc6, 0x97, 0xd4, 0x2e, 0xa5,
|
||||
0xd9, 0xbb, 0xdd, 0xe2, 0xe8, 0x72, 0x1b, 0x1a, 0xfb, 0x2f, 0xb0, 0x55, 0x07, 0xa3, 0x23, 0x7f,
|
||||
0x93, 0x17, 0xb0, 0xd4, 0x6b, 0x1d, 0xd3, 0x9e, 0x5d, 0xca, 0xdc, 0xc9, 0x54, 0x0a, 0xf5, 0xc7,
|
||||
0xd3, 0x44, 0x56, 0xfd, 0x94, 0x9b, 0x3e, 0xe9, 0x3b, 0xd6, 0x85, 0x8e, 0xfd, 0x90, 0x67, 0x50,
|
||||
0x38, 0xa3, 0x67, 0xc7, 0xd4, 0xb2, 0x3f, 0x37, 0x06, 0x76, 0x29, 0x7b, 0x27, 0x53, 0x29, 0xd6,
|
||||
0x1f, 0x44, 0x4d, 0xdb, 0xd1, 0x80, 0xb6, 0xab, 0xcf, 0x5c, 0xfc, 0x6e, 0x7a, 0x7d, 0x41, 0xf7,
|
||||
0xdb, 0x93, 0xef, 0xc3, 0xa2, 0x65, 0xf6, 0xa8, 0x5d, 0x5a, 0xe4, 0x1d, 0xdd, 0x8e, 0x9c, 0x7f,
|
||||
0xb3, 0x47, 0xb9, 0xb5, 0x80, 0x93, 0xbb, 0xb0, 0xca, 0xa6, 0xc4, 0x9b, 0x8b, 0x25, 0x3e, 0x4f,
|
||||
0x2b, 0xac, 0x51, 0x8e, 0xbe, 0xfc, 0x03, 0x28, 0xf8, 0x86, 0x40, 0xd6, 0x21, 0xd3, 0xa5, 0x17,
|
||||
0x82, 0x1e, 0x3a, 0xfb, 0xc9, 0x66, 0xf9, 0xbc, 0xd5, 0x1b, 0xd2, 0x52, 0x9a, 0xb7, 0x89, 0x87,
|
||||
0x0f, 0xd2, 0x8f, 0x53, 0xda, 0x1e, 0x6c, 0xf8, 0xa6, 0x05, 0xb9, 0x52, 0x85, 0x45, 0xc6, 0x02,
|
||||
0x91, 0x94, 0x38, 0xb2, 0x08, 0x98, 0xf6, 0xc7, 0x14, 0x6c, 0xbc, 0x1a, 0x74, 0x5a, 0x0e, 0x9d,
|
||||
0x96, 0xa9, 0xe4, 0xc7, 0xb0, 0xc2, 0x41, 0xe7, 0xd4, 0xb2, 0x0d, 0xb3, 0xcf, 0x03, 0x2c, 0xd4,
|
||||
0x6f, 0xa9, 0x3c, 0x7e, 0x26, 0x20, 0x7a, 0x81, 0x19, 0xe0, 0x03, 0xf9, 0x2e, 0x64, 0xd9, 0xc2,
|
||||
0x2e, 0x65, 0xb8, 0xdd, 0xed, 0xb8, 0xfc, 0xe8, 0x1c, 0xa9, 0xed, 0x02, 0xf1, 0xc7, 0x3a, 0xd3,
|
||||
0xf2, 0x38, 0x84, 0x0d, 0x9d, 0x9e, 0x99, 0xe7, 0xd3, 0x8f, 0x77, 0x13, 0x16, 0x4f, 0x4c, 0xab,
|
||||
0x2d, 0x32, 0x91, 0xd7, 0xc5, 0x83, 0xb6, 0x09, 0xc4, 0xdf, 0x9f, 0x88, 0x09, 0x17, 0xff, 0xcb,
|
||||
0x96, 0xdd, 0xf5, 0xb9, 0x70, 0x5a, 0x76, 0x37, 0xe4, 0x82, 0x21, 0x98, 0x0b, 0xf6, 0xca, 0x5d,
|
||||
0xfc, 0xc2, 0xcc, 0x1b, 0x1d, 0x7b, 0x19, 0x37, 0x3a, 0x8e, 0xe7, 0x28, 0xed, 0xb1, 0x1c, 0xdd,
|
||||
0xd4, 0xae, 0xdd, 0x71, 0xf8, 0xbd, 0x6b, 0x7f, 0xcd, 0x0a, 0x31, 0x61, 0x8d, 0x33, 0x88, 0x89,
|
||||
0xdf, 0x6c, 0x5c, 0x4c, 0xfe, 0x79, 0x8d, 0x62, 0xa2, 0x8a, 0x4c, 0x29, 0x26, 0x35, 0x28, 0xd8,
|
||||
0xd4, 0x3a, 0x37, 0xda, 0x8c, 0x1d, 0x42, 0x4c, 0x30, 0x84, 0x23, 0xd1, 0xdc, 0xd8, 0xb7, 0x75,
|
||||
0x40, 0x48, 0xa3, 0x63, 0x93, 0xfb, 0x90, 0x47, 0x2e, 0x09, 0xc5, 0x58, 0xde, 0x2d, 0x8c, 0x2e,
|
||||
0xb7, 0x73, 0x82, 0x4c, 0xb6, 0x9e, 0x13, 0x6c, 0xb2, 0xc9, 0xc7, 0x50, 0xec, 0x50, 0xdb, 0xb0,
|
||||
0x68, 0xa7, 0x69, 0x3b, 0x2d, 0x07, 0xf5, 0xa1, 0x58, 0xff, 0x56, 0x54, 0x8a, 0x8f, 0x18, 0x8a,
|
||||
0x0b, 0xcc, 0x2a, 0x1a, 0xf2, 0x16, 0x85, 0xd0, 0xe4, 0xc6, 0x85, 0x86, 0xdc, 0x06, 0x18, 0x0e,
|
||||
0x9a, 0x8e, 0xd9, 0x64, 0xeb, 0xa7, 0x94, 0xe7, 0x14, 0xce, 0x0f, 0x07, 0x2f, 0xcd, 0xfd, 0x96,
|
||||
0x43, 0x49, 0x19, 0xf2, 0xd6, 0xb0, 0xef, 0x18, 0x2c, 0x03, 0xcb, 0xdc, 0xda, 0x7d, 0x9e, 0x83,
|
||||
0x44, 0xe1, 0x64, 0x7b, 0x12, 0xc5, 0x38, 0x17, 0x2b, 0x51, 0x9c, 0x84, 0x02, 0xa6, 0x1d, 0xc0,
|
||||
0xe6, 0x9e, 0x45, 0x5b, 0x0e, 0xc5, 0x09, 0x97, 0x34, 0x7c, 0x84, 0xfa, 0x21, 0x38, 0xb8, 0xad,
|
||||
0xea, 0x06, 0x2d, 0x7c, 0x12, 0x72, 0x08, 0x37, 0x43, 0x9d, 0x61, 0x54, 0xef, 0x41, 0x0e, 0x93,
|
||||
0x88, 0x1d, 0xde, 0x8a, 0xe9, 0x50, 0x97, 0x58, 0xed, 0x35, 0x6c, 0x3c, 0xa5, 0x4e, 0x28, 0xb2,
|
||||
0x1d, 0x00, 0x8f, 0x33, 0xb8, 0xe6, 0x56, 0x47, 0x97, 0xdb, 0xcb, 0x2e, 0x65, 0xf4, 0x65, 0x97,
|
||||
0x31, 0xe4, 0x01, 0xac, 0x19, 0x7d, 0x9b, 0x5a, 0x4e, 0xb3, 0x43, 0x4f, 0x5a, 0xc3, 0x9e, 0x63,
|
||||
0xa3, 0xc2, 0x14, 0x45, 0xf3, 0x3e, 0xb6, 0x6a, 0x07, 0x40, 0xfc, 0xbe, 0xae, 0x16, 0xf8, 0x9f,
|
||||
0xd3, 0xb0, 0x29, 0xc4, 0xf4, 0x4a, 0xc1, 0xef, 0xc3, 0x9a, 0x44, 0x4f, 0xf1, 0x1d, 0x28, 0xa2,
|
||||
0x8d, 0xfc, 0x14, 0x3c, 0x0a, 0x7c, 0x0a, 0x26, 0x4b, 0x25, 0x79, 0x06, 0x79, 0xcb, 0xec, 0xf5,
|
||||
0x8e, 0x5b, 0xed, 0x6e, 0x29, 0x7b, 0x27, 0x55, 0x29, 0xd6, 0xdf, 0x55, 0x19, 0xaa, 0x06, 0x59,
|
||||
0xd5, 0xd1, 0x50, 0x77, 0xbb, 0xd0, 0x34, 0xc8, 0xcb, 0x56, 0x92, 0x87, 0xec, 0xe1, 0xf3, 0xc3,
|
||||
0x27, 0xeb, 0x0b, 0x64, 0x05, 0xf2, 0x2f, 0xf4, 0x27, 0x9f, 0x35, 0x9e, 0xbf, 0x3a, 0x5a, 0x4f,
|
||||
0x31, 0xf6, 0x84, 0xba, 0xbb, 0x5a, 0x12, 0xf6, 0x61, 0x53, 0x88, 0xee, 0x55, 0x72, 0xa0, 0x7d,
|
||||
0x13, 0x6e, 0x86, 0x7a, 0x41, 0xf5, 0xfe, 0x2a, 0x03, 0x37, 0xd8, 0xfa, 0xc3, 0x76, 0x57, 0xc0,
|
||||
0x1b, 0x61, 0x01, 0xaf, 0x45, 0xc9, 0x64, 0xc8, 0x72, 0x5c, 0xc3, 0xff, 0x90, 0x9e, 0xbb, 0x86,
|
||||
0x1f, 0x85, 0x34, 0xfc, 0x87, 0x53, 0x06, 0xa7, 0x94, 0xf1, 0x31, 0x8d, 0xcc, 0x2a, 0x34, 0xd2,
|
||||
0xaf, 0x82, 0x8b, 0xf3, 0x53, 0xc1, 0xe7, 0xb0, 0x19, 0x0c, 0x17, 0x49, 0xf3, 0x3e, 0xe4, 0x31,
|
||||
0x89, 0x52, 0x0b, 0x63, 0x59, 0xe3, 0x82, 0x3d, 0x45, 0x3c, 0xa4, 0xce, 0x17, 0xa6, 0xd5, 0x9d,
|
||||
0x42, 0x11, 0xd1, 0x42, 0xa5, 0x88, 0x6e, 0x67, 0x1e, 0xa7, 0xfb, 0xa2, 0x29, 0x8e, 0xd3, 0xd2,
|
||||
0x4a, 0x62, 0xb5, 0x57, 0x5c, 0x11, 0x43, 0x91, 0x11, 0xc8, 0xb2, 0x99, 0xc6, 0xf9, 0xe2, 0xbf,
|
||||
0x19, 0xc9, 0xd1, 0x86, 0x91, 0x3c, 0xed, 0x91, 0x1c, 0x6d, 0x19, 0xc9, 0x11, 0xd0, 0xe8, 0xa0,
|
||||
0xf8, 0xcd, 0x29, 0xc6, 0x9f, 0xc9, 0x75, 0x37, 0xf7, 0x30, 0xdd, 0xb5, 0x18, 0x8a, 0x54, 0xfb,
|
||||
0x6f, 0x5a, 0xac, 0x45, 0x6c, 0x9f, 0x61, 0x2d, 0x86, 0x2c, 0xc7, 0xd7, 0xe2, 0x6f, 0xae, 0x71,
|
||||
0x2d, 0x46, 0x04, 0x37, 0xf3, 0x5a, 0x9c, 0xc3, 0x7a, 0xf3, 0x42, 0xf2, 0xd6, 0x1b, 0x26, 0x2a,
|
||||
0x76, 0xbd, 0xc9, 0xcc, 0xb9, 0x60, 0xed, 0x43, 0x4e, 0xe9, 0xbd, 0xde, 0xd0, 0x76, 0xa8, 0xe5,
|
||||
0xd3, 0xe8, 0xb6, 0x68, 0x09, 0x69, 0x34, 0xe2, 0x18, 0x2f, 0x10, 0xe0, 0xd2, 0xd7, 0xed, 0xc2,
|
||||
0xa3, 0x2f, 0x42, 0xe2, 0xe8, 0x2b, 0xad, 0x24, 0xd6, 0xe5, 0x12, 0xbe, 0x98, 0x81, 0x4b, 0x21,
|
||||
0xcb, 0xb7, 0x8b, 0x4b, 0x11, 0xc1, 0x5d, 0x27, 0x97, 0xbc, 0x90, 0x3c, 0x2e, 0x61, 0x36, 0x62,
|
||||
0xb9, 0x24, 0x53, 0xe7, 0x82, 0xb5, 0xdf, 0xa5, 0xa0, 0x70, 0x40, 0x2f, 0x74, 0xd3, 0x69, 0x39,
|
||||
0x6c, 0xeb, 0xf3, 0x0e, 0x6c, 0x30, 0x92, 0x51, 0xab, 0xf9, 0xda, 0x34, 0xfa, 0x4d, 0xc7, 0xec,
|
||||
0xd2, 0x3e, 0x0f, 0x2d, 0xaf, 0xaf, 0x89, 0x17, 0x9f, 0x98, 0x46, 0xff, 0x25, 0x6b, 0x26, 0x3b,
|
||||
0x40, 0xce, 0x5a, 0xfd, 0xd6, 0x69, 0x10, 0x2c, 0x36, 0x8b, 0xeb, 0xf8, 0x46, 0x89, 0x1e, 0xf6,
|
||||
0x7b, 0x66, 0xbb, 0xdb, 0x64, 0xa3, 0xce, 0x04, 0xd0, 0xaf, 0xf8, 0x8b, 0x03, 0x7a, 0xa1, 0xfd,
|
||||
0xda, 0xdd, 0x0f, 0x5e, 0x85, 0xe7, 0x6c, 0x3f, 0x28, 0xd1, 0xd3, 0xec, 0x07, 0xd1, 0x66, 0x8a,
|
||||
0xfd, 0x20, 0x7a, 0xf7, 0xed, 0x07, 0x3f, 0x64, 0xfb, 0x41, 0x31, 0xab, 0x7c, 0x3f, 0x18, 0x61,
|
||||
0xe8, 0x9b, 0xfc, 0xdd, 0xec, 0x9b, 0xcb, 0xed, 0x05, 0xdd, 0x35, 0xf3, 0xf6, 0x77, 0x73, 0x5a,
|
||||
0xa8, 0x3f, 0x82, 0x75, 0xbe, 0x63, 0x6f, 0x5b, 0xd4, 0x91, 0xf3, 0xf9, 0x10, 0x96, 0x6d, 0xde,
|
||||
0xe0, 0x4d, 0xe7, 0xca, 0xe8, 0x72, 0x3b, 0x2f, 0x50, 0x8d, 0x7d, 0xf6, 0x9d, 0xe7, 0xbf, 0x3a,
|
||||
0xda, 0x53, 0x3c, 0x5c, 0x08, 0x73, 0x0c, 0xa5, 0x0e, 0x4b, 0x02, 0x80, 0x91, 0x94, 0xd5, 0x7b,
|
||||
0x06, 0x6e, 0x83, 0x48, 0xed, 0x2f, 0x29, 0xb8, 0x21, 0x37, 0xae, 0xb3, 0xc5, 0x42, 0x76, 0xa1,
|
||||
0x88, 0xd0, 0x29, 0xf2, 0xba, 0x2a, 0x4c, 0x64, 0x5a, 0xeb, 0x81, 0xb4, 0x6e, 0x45, 0x07, 0xee,
|
||||
0xdb, 0x9e, 0x7c, 0xe2, 0x1d, 0x53, 0xae, 0x3c, 0x0d, 0xff, 0x4e, 0x03, 0x11, 0x3b, 0x31, 0xf6,
|
||||
0xe8, 0xca, 0xe6, 0xc7, 0x61, 0xd9, 0xac, 0x46, 0xef, 0x38, 0xfd, 0x86, 0xe3, 0xaa, 0xf9, 0xd5,
|
||||
0xfc, 0x55, 0x53, 0x0f, 0xa9, 0xe6, 0x07, 0xd3, 0xc5, 0x76, 0x2d, 0xa2, 0x79, 0x20, 0x8f, 0x1d,
|
||||
0x18, 0x11, 0xa6, 0xec, 0x7b, 0xec, 0x90, 0xc4, 0x9b, 0x50, 0x32, 0xe3, 0x72, 0x26, 0xa1, 0x5a,
|
||||
0x03, 0x6e, 0xc8, 0x13, 0xbb, 0x9f, 0xba, 0xf5, 0xc0, 0x5e, 0x77, 0x62, 0x2e, 0x05, 0xbb, 0xba,
|
||||
0x02, 0x97, 0x7e, 0x0a, 0x37, 0xe4, 0xa1, 0x6b, 0xc6, 0xd5, 0xfd, 0x0d, 0xef, 0xf0, 0xe7, 0x8f,
|
||||
0x06, 0x45, 0x63, 0xcf, 0xec, 0x9f, 0x18, 0xa7, 0xbe, 0x6e, 0xdb, 0xbc, 0x21, 0xd4, 0xad, 0x40,
|
||||
0xb1, 0x6e, 0xc5, 0x6b, 0x57, 0x34, 0xa4, 0xb9, 0x37, 0x42, 0x01, 0x88, 0x1b, 0x21, 0xda, 0x20,
|
||||
0xd2, 0x27, 0x1a, 0xb3, 0xc6, 0xc2, 0x44, 0x03, 0xa1, 0xd3, 0x88, 0x86, 0x30, 0x99, 0x42, 0x34,
|
||||
0x84, 0x67, 0x95, 0x68, 0xcc, 0x61, 0x1a, 0xa4, 0x68, 0x88, 0xe6, 0x19, 0x44, 0x23, 0x68, 0xf8,
|
||||
0x76, 0x89, 0x86, 0x3a, 0xb6, 0xeb, 0x14, 0x0d, 0x37, 0x22, 0x4f, 0x34, 0x44, 0x22, 0x62, 0x45,
|
||||
0x03, 0x73, 0x26, 0xa1, 0x9e, 0x68, 0x04, 0xa9, 0x3b, 0x81, 0x68, 0xa8, 0xb8, 0x14, 0xec, 0xea,
|
||||
0x0a, 0x5c, 0x72, 0x45, 0x63, 0xe6, 0xd5, 0xed, 0x8a, 0x46, 0x30, 0x9a, 0xfa, 0xaf, 0x6e, 0x41,
|
||||
0x6e, 0x4f, 0x5c, 0xb4, 0x12, 0x03, 0x72, 0x78, 0x85, 0x48, 0x34, 0x55, 0x50, 0xc1, 0x6b, 0xc9,
|
||||
0xf2, 0xdd, 0x58, 0x0c, 0x8a, 0xd2, 0xcd, 0xbf, 0xfd, 0xe9, 0x7f, 0xbf, 0x4f, 0xaf, 0xc1, 0x2a,
|
||||
0x07, 0x7d, 0x07, 0xb7, 0x8f, 0xc4, 0x84, 0x65, 0xf7, 0x0e, 0x8a, 0x7c, 0x7b, 0x92, 0x9b, 0xbb,
|
||||
0xf2, 0xbd, 0x04, 0x54, 0xbc, 0x43, 0x0b, 0xc0, 0xbb, 0x02, 0x22, 0xf7, 0xa2, 0x0b, 0x7e, 0xfe,
|
||||
0x11, 0xde, 0x4f, 0x82, 0x25, 0xfa, 0xf4, 0xae, 0x78, 0xd4, 0x3e, 0xc7, 0xae, 0x94, 0xd4, 0x3e,
|
||||
0x15, 0x37, 0x45, 0x11, 0x3e, 0x45, 0x0e, 0x5f, 0xb6, 0xec, 0x6e, 0x64, 0x0e, 0x7d, 0x57, 0x3c,
|
||||
0x91, 0x39, 0x0c, 0x5c, 0xe6, 0xc4, 0xe7, 0x90, 0x17, 0xe9, 0xa3, 0x73, 0xe8, 0xbf, 0x30, 0x89,
|
||||
0xce, 0x61, 0xa0, 0xd2, 0x9f, 0x38, 0x9f, 0x7c, 0x78, 0x31, 0xf3, 0xe9, 0x1f, 0xe1, 0xfd, 0x24,
|
||||
0x58, 0xa2, 0x4f, 0xaf, 0x76, 0xae, 0xf6, 0x39, 0x56, 0xc7, 0x57, 0xfb, 0x1c, 0x2f, 0xc1, 0x47,
|
||||
0xf9, 0xfc, 0x12, 0x56, 0xfc, 0x75, 0x3f, 0xf2, 0x60, 0xc2, 0x42, 0x66, 0xb9, 0x92, 0x0c, 0x8c,
|
||||
0xf7, 0xfc, 0x0b, 0x58, 0x0d, 0xdc, 0x72, 0x10, 0x65, 0x8f, 0xaa, 0x5b, 0x95, 0xf2, 0xc3, 0x09,
|
||||
0x90, 0x89, 0xce, 0x03, 0x45, 0x72, 0xb5, 0x73, 0x55, 0x59, 0x5e, 0xed, 0x5c, 0x59, 0x71, 0x8f,
|
||||
0x71, 0x1e, 0xa8, 0x85, 0xab, 0x9d, 0xab, 0x8a, 0xee, 0x6a, 0xe7, 0xea, 0xc2, 0x7a, 0x2c, 0xc9,
|
||||
0xb0, 0x7e, 0x14, 0x49, 0xb2, 0x60, 0xcd, 0x31, 0x92, 0x64, 0xe1, 0x02, 0x62, 0x3c, 0xc9, 0x64,
|
||||
0xb1, 0x2b, 0x9a, 0x64, 0xa1, 0x0a, 0x5d, 0x34, 0xc9, 0xc2, 0x75, 0xb3, 0x44, 0x92, 0xc9, 0x01,
|
||||
0xc7, 0x90, 0x2c, 0x34, 0xe6, 0x87, 0x13, 0x20, 0x27, 0xcc, 0x73, 0xac, 0x73, 0x55, 0x91, 0x37,
|
||||
0x2e, 0xcf, 0x13, 0x3a, 0x17, 0x79, 0xc6, 0xd3, 0x7e, 0x64, 0x9e, 0x83, 0x75, 0x94, 0xc8, 0x3c,
|
||||
0x87, 0x4a, 0x0d, 0x09, 0x79, 0x96, 0x85, 0xa8, 0xe8, 0x3c, 0x87, 0xaa, 0x67, 0xd1, 0x79, 0x0e,
|
||||
0xd7, 0xb4, 0x12, 0xd7, 0xb3, 0x1c, 0x70, 0xcc, 0x7a, 0x0e, 0x8d, 0xf9, 0xe1, 0x04, 0xc8, 0xc4,
|
||||
0x8f, 0x93, 0x5b, 0x02, 0x51, 0x7f, 0x9c, 0xc2, 0x05, 0x96, 0xf2, 0xbd, 0x04, 0x54, 0xe2, 0x3c,
|
||||
0xfb, 0xeb, 0x0d, 0xea, 0x79, 0x56, 0xd4, 0x52, 0xca, 0x95, 0x64, 0x60, 0xbc, 0xe7, 0x21, 0x14,
|
||||
0x7c, 0xa7, 0x66, 0x72, 0x7f, 0xb2, 0x83, 0x7e, 0xf9, 0x41, 0x22, 0x2e, 0x71, 0xc0, 0xfe, 0x43,
|
||||
0xb1, 0x7a, 0xc0, 0x8a, 0x13, 0x78, 0xb9, 0x92, 0x0c, 0x4c, 0xf4, 0xec, 0x3f, 0x00, 0xab, 0x3d,
|
||||
0x2b, 0x0e, 0xd9, 0xe5, 0x4a, 0x32, 0x70, 0x12, 0x56, 0x89, 0x2d, 0x74, 0x24, 0xab, 0x02, 0x7b,
|
||||
0xf4, 0x48, 0x56, 0x05, 0xf7, 0xe1, 0x89, 0xac, 0x42, 0x9f, 0x31, 0xac, 0x0a, 0xba, 0xad, 0x24,
|
||||
0x03, 0x27, 0x62, 0x15, 0x1e, 0xab, 0xa2, 0x59, 0x15, 0x3c, 0x09, 0x46, 0xb3, 0x2a, 0x74, 0x3e,
|
||||
0x4b, 0x64, 0x55, 0xdc, 0x80, 0x15, 0x47, 0xb4, 0x38, 0x56, 0x4d, 0x3c, 0xd5, 0xfe, 0x13, 0x52,
|
||||
0x1c, 0xab, 0x26, 0xf0, 0xac, 0x3a, 0x6c, 0x45, 0x78, 0xde, 0x2d, 0xbd, 0xf9, 0x7a, 0x6b, 0xe1,
|
||||
0x1f, 0x5f, 0x6f, 0x2d, 0xfc, 0x72, 0xb4, 0x95, 0x7a, 0x33, 0xda, 0x4a, 0xfd, 0x7d, 0xb4, 0x95,
|
||||
0xfa, 0xd7, 0x68, 0x2b, 0x75, 0xbc, 0xc4, 0xff, 0x25, 0xf4, 0xd1, 0xff, 0x03, 0x00, 0x00, 0xff,
|
||||
0xff, 0x47, 0x18, 0x50, 0x6c, 0x2b, 0x2b, 0x00, 0x00,
|
||||
}
|
||||
|
|
8
vendor/github.com/docker/swarmkit/api/control.proto
generated
vendored
8
vendor/github.com/docker/swarmkit/api/control.proto
generated
vendored
|
@ -2,11 +2,11 @@ syntax = "proto3";
|
|||
|
||||
package docker.swarmkit.v1;
|
||||
|
||||
import "specs.proto";
|
||||
import "objects.proto";
|
||||
import "types.proto";
|
||||
import "github.com/docker/swarmkit/api/specs.proto";
|
||||
import "github.com/docker/swarmkit/api/objects.proto";
|
||||
import "github.com/docker/swarmkit/api/types.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
import "plugin/plugin.proto";
|
||||
import "github.com/docker/swarmkit/protobuf/plugin/plugin.proto";
|
||||
|
||||
// Control defines the RPC methods for controlling a cluster.
|
||||
service Control {
|
||||
|
|
135
vendor/github.com/docker/swarmkit/api/dispatcher.pb.go
generated
vendored
135
vendor/github.com/docker/swarmkit/api/dispatcher.pb.go
generated
vendored
|
@ -1,5 +1,5 @@
|
|||
// Code generated by protoc-gen-gogo.
|
||||
// source: dispatcher.proto
|
||||
// source: github.com/docker/swarmkit/api/dispatcher.proto
|
||||
// DO NOT EDIT!
|
||||
|
||||
package api
|
||||
|
@ -1100,7 +1100,7 @@ var _Dispatcher_serviceDesc = grpc.ServiceDesc{
|
|||
ServerStreams: true,
|
||||
},
|
||||
},
|
||||
Metadata: "dispatcher.proto",
|
||||
Metadata: "github.com/docker/swarmkit/api/dispatcher.proto",
|
||||
}
|
||||
|
||||
func (m *SessionRequest) Marshal() (dAtA []byte, err error) {
|
||||
|
@ -3778,70 +3778,73 @@ var (
|
|||
ErrIntOverflowDispatcher = fmt.Errorf("proto: integer overflow")
|
||||
)
|
||||
|
||||
func init() { proto.RegisterFile("dispatcher.proto", fileDescriptorDispatcher) }
|
||||
func init() {
|
||||
proto.RegisterFile("github.com/docker/swarmkit/api/dispatcher.proto", fileDescriptorDispatcher)
|
||||
}
|
||||
|
||||
var fileDescriptorDispatcher = []byte{
|
||||
// 983 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0x4f, 0x6f, 0x1b, 0x45,
|
||||
0x14, 0xf7, 0x38, 0xce, 0x26, 0x7e, 0x4e, 0x82, 0x19, 0xaa, 0xb0, 0xac, 0x54, 0xc7, 0x6c, 0x68,
|
||||
0x14, 0xa9, 0x61, 0x53, 0xcc, 0x9f, 0x0b, 0x51, 0x20, 0x8e, 0x2d, 0xc5, 0x6a, 0x93, 0x46, 0x13,
|
||||
0xb7, 0x3d, 0x5a, 0x6b, 0xef, 0x74, 0xb3, 0x38, 0xde, 0x59, 0x76, 0xc6, 0x2d, 0x3e, 0x20, 0x71,
|
||||
0xa0, 0x12, 0xe2, 0x84, 0x38, 0x45, 0x42, 0x7c, 0x05, 0xc4, 0xc7, 0x88, 0x38, 0x71, 0xe4, 0x14,
|
||||
0xa8, 0x3f, 0x00, 0x1f, 0x80, 0x13, 0xda, 0xd9, 0x59, 0xdb, 0x75, 0xed, 0xd4, 0xc9, 0xc9, 0x9e,
|
||||
0x37, 0xbf, 0xdf, 0x9b, 0xdf, 0xbc, 0xf7, 0xdb, 0x37, 0x90, 0x77, 0x3c, 0x1e, 0xd8, 0xa2, 0x75,
|
||||
0x4a, 0x43, 0x2b, 0x08, 0x99, 0x60, 0x18, 0x3b, 0xac, 0xd5, 0xa6, 0xa1, 0xc5, 0x9f, 0xdb, 0x61,
|
||||
0xa7, 0xed, 0x09, 0xeb, 0xd9, 0x47, 0x46, 0x4e, 0xf4, 0x02, 0xca, 0x63, 0x80, 0xb1, 0xcc, 0x9a,
|
||||
0x5f, 0xd1, 0x96, 0x48, 0x96, 0xb7, 0x5c, 0xe6, 0x32, 0xf9, 0x77, 0x3b, 0xfa, 0xa7, 0xa2, 0xef,
|
||||
0x04, 0x67, 0x5d, 0xd7, 0xf3, 0xb7, 0xe3, 0x1f, 0x15, 0x2c, 0xb8, 0x8c, 0xb9, 0x67, 0x74, 0x5b,
|
||||
0xae, 0x9a, 0xdd, 0xa7, 0xdb, 0x4e, 0x37, 0xb4, 0x85, 0xc7, 0xd4, 0xbe, 0xf9, 0x02, 0xc1, 0xca,
|
||||
0x09, 0xe5, 0xdc, 0x63, 0x3e, 0xa1, 0x5f, 0x77, 0x29, 0x17, 0xb8, 0x0a, 0x39, 0x87, 0xf2, 0x56,
|
||||
0xe8, 0x05, 0x11, 0x4e, 0x47, 0x45, 0xb4, 0x99, 0x2b, 0xad, 0x5b, 0xaf, 0x6b, 0xb4, 0x8e, 0x98,
|
||||
0x43, 0x2b, 0x43, 0x28, 0x19, 0xe5, 0xe1, 0x2d, 0x00, 0x1e, 0x27, 0x6e, 0x78, 0x8e, 0x9e, 0x2e,
|
||||
0xa2, 0xcd, 0x6c, 0x79, 0xb9, 0x7f, 0xb9, 0x96, 0x55, 0xc7, 0xd5, 0x2a, 0x24, 0xab, 0x00, 0x35,
|
||||
0xc7, 0xfc, 0x25, 0x3d, 0xd0, 0x71, 0x48, 0x39, 0xb7, 0x5d, 0x3a, 0x96, 0x00, 0x5d, 0x9d, 0x00,
|
||||
0x6f, 0x41, 0xc6, 0x67, 0x0e, 0x95, 0x07, 0xe5, 0x4a, 0xfa, 0x34, 0xb9, 0x44, 0xa2, 0xf0, 0x0e,
|
||||
0x2c, 0x76, 0x6c, 0xdf, 0x76, 0x69, 0xc8, 0xf5, 0xb9, 0xe2, 0xdc, 0x66, 0xae, 0x54, 0x9c, 0xc4,
|
||||
0x78, 0x42, 0x3d, 0xf7, 0x54, 0x50, 0xe7, 0x98, 0xd2, 0x90, 0x0c, 0x18, 0xf8, 0x09, 0xac, 0xfa,
|
||||
0x54, 0x3c, 0x67, 0x61, 0xbb, 0xd1, 0x64, 0x4c, 0x70, 0x11, 0xda, 0x41, 0xa3, 0x4d, 0x7b, 0x5c,
|
||||
0xcf, 0xc8, 0x5c, 0xef, 0x4f, 0xca, 0x55, 0xf5, 0x5b, 0x61, 0x4f, 0x96, 0xe6, 0x3e, 0xed, 0x91,
|
||||
0x5b, 0x2a, 0x41, 0x39, 0xe1, 0xdf, 0xa7, 0x3d, 0x8e, 0x57, 0x41, 0x23, 0x8c, 0x89, 0xfd, 0x3d,
|
||||
0x7d, 0xbe, 0x88, 0x36, 0x97, 0x88, 0x5a, 0x99, 0x5f, 0x42, 0xfe, 0x80, 0xda, 0xa1, 0x68, 0x52,
|
||||
0x5b, 0x24, 0x6d, 0xba, 0x56, 0x79, 0xcc, 0x63, 0x78, 0x7b, 0x24, 0x03, 0x0f, 0x98, 0xcf, 0x29,
|
||||
0xfe, 0x1c, 0xb4, 0x80, 0x86, 0x1e, 0x73, 0x54, 0x93, 0xdf, 0xb3, 0x62, 0xb7, 0x58, 0x89, 0x5b,
|
||||
0xac, 0x8a, 0x72, 0x4b, 0x79, 0xf1, 0xe2, 0x72, 0x2d, 0x75, 0xfe, 0xf7, 0x1a, 0x22, 0x8a, 0x62,
|
||||
0xfe, 0x94, 0x86, 0x77, 0x1f, 0x05, 0x8e, 0x2d, 0x68, 0xdd, 0xe6, 0xed, 0x13, 0x61, 0x8b, 0x2e,
|
||||
0xbf, 0x91, 0x36, 0xfc, 0x18, 0x16, 0xba, 0x32, 0x51, 0xd2, 0x8b, 0x9d, 0x49, 0xf5, 0x9b, 0x72,
|
||||
0x96, 0x35, 0x8c, 0xc4, 0x08, 0x92, 0x24, 0x33, 0x18, 0xe4, 0xc7, 0x37, 0xf1, 0x3a, 0x2c, 0x08,
|
||||
0x9b, 0xb7, 0x87, 0xb2, 0xa0, 0x7f, 0xb9, 0xa6, 0x45, 0xb0, 0x5a, 0x85, 0x68, 0xd1, 0x56, 0xcd,
|
||||
0xc1, 0x9f, 0x81, 0xc6, 0x25, 0x49, 0xb9, 0xa9, 0x30, 0x49, 0xcf, 0x88, 0x12, 0x85, 0x36, 0x0d,
|
||||
0xd0, 0x5f, 0x57, 0x19, 0xd7, 0xda, 0xdc, 0x81, 0xa5, 0x28, 0x7a, 0xb3, 0x12, 0x99, 0xbb, 0x8a,
|
||||
0x9d, 0x7c, 0x1b, 0x16, 0xcc, 0x47, 0x5a, 0xb9, 0x8e, 0x64, 0xc1, 0xf4, 0x69, 0x02, 0x49, 0x0c,
|
||||
0x33, 0xcb, 0x80, 0xf7, 0x38, 0xf7, 0x5c, 0xbf, 0x43, 0x7d, 0x71, 0x43, 0x0d, 0xbf, 0x23, 0x80,
|
||||
0x61, 0x12, 0x6c, 0x41, 0x26, 0xca, 0xad, 0xac, 0x33, 0x55, 0xc1, 0x41, 0x8a, 0x48, 0x1c, 0xfe,
|
||||
0x04, 0x34, 0x4e, 0x5b, 0x21, 0x15, 0xaa, 0xa8, 0xc6, 0x24, 0xc6, 0x89, 0x44, 0x1c, 0xa4, 0x88,
|
||||
0xc2, 0x46, 0xac, 0x16, 0xf3, 0x9f, 0x7a, 0xae, 0x3e, 0x37, 0x9d, 0xb5, 0x2f, 0x11, 0x11, 0x2b,
|
||||
0xc6, 0x96, 0x35, 0xc8, 0x78, 0x82, 0x76, 0xcc, 0x17, 0x69, 0xc8, 0x0f, 0x25, 0xef, 0x9f, 0xda,
|
||||
0xbe, 0x4b, 0xf1, 0x2e, 0x80, 0x3d, 0x88, 0x29, 0xf9, 0x13, 0x3b, 0x3c, 0x64, 0x92, 0x11, 0x06,
|
||||
0x3e, 0x04, 0xcd, 0x6e, 0xc9, 0xd1, 0x18, 0x5d, 0x64, 0xa5, 0xf4, 0xe9, 0xd5, 0xdc, 0xf8, 0xd4,
|
||||
0x91, 0xc0, 0x9e, 0x24, 0x13, 0x95, 0xc4, 0x6c, 0x8e, 0x4a, 0x8c, 0xf7, 0xf0, 0x06, 0x68, 0x8f,
|
||||
0x8e, 0x2b, 0x7b, 0xf5, 0x6a, 0x3e, 0x65, 0x18, 0x3f, 0xfe, 0x5a, 0x5c, 0x1d, 0x47, 0x28, 0x37,
|
||||
0x6f, 0x80, 0x46, 0xaa, 0x87, 0x0f, 0x1f, 0x57, 0xf3, 0x68, 0x32, 0x8e, 0xd0, 0x0e, 0x7b, 0x46,
|
||||
0xcd, 0xff, 0xd0, 0x2b, 0xfd, 0x4f, 0x5c, 0xf4, 0x05, 0x64, 0xa2, 0x57, 0x46, 0xd6, 0x60, 0xa5,
|
||||
0x74, 0xf7, 0xea, 0x7b, 0x24, 0x2c, 0xab, 0xde, 0x0b, 0x28, 0x91, 0x44, 0x7c, 0x1b, 0xc0, 0x0e,
|
||||
0x82, 0x33, 0x8f, 0xf2, 0x86, 0x60, 0xf1, 0x8c, 0x27, 0x59, 0x15, 0xa9, 0xb3, 0x68, 0x3b, 0xa4,
|
||||
0xbc, 0x7b, 0x26, 0x78, 0xc3, 0xf3, 0x65, 0x03, 0xb3, 0x24, 0xab, 0x22, 0x35, 0x1f, 0xef, 0xc2,
|
||||
0x42, 0x4b, 0x16, 0x27, 0x99, 0x9b, 0x1f, 0xcc, 0x52, 0x49, 0x92, 0x90, 0xcc, 0x3b, 0x90, 0x89,
|
||||
0xb4, 0xe0, 0x25, 0x58, 0xdc, 0x7f, 0x78, 0x78, 0xfc, 0xa0, 0x1a, 0xd5, 0x0b, 0xbf, 0x05, 0xb9,
|
||||
0xda, 0xd1, 0x3e, 0xa9, 0x1e, 0x56, 0x8f, 0xea, 0x7b, 0x0f, 0xf2, 0xa8, 0x74, 0x3e, 0x0f, 0x50,
|
||||
0x19, 0x3c, 0xb9, 0xf8, 0x1b, 0x58, 0x50, 0xf6, 0xc6, 0xe6, 0x64, 0x0b, 0x8e, 0xbe, 0x86, 0xc6,
|
||||
0x55, 0x18, 0x55, 0x11, 0x73, 0xfd, 0x8f, 0xdf, 0xfe, 0x3d, 0x4f, 0xdf, 0x86, 0x25, 0x89, 0xf9,
|
||||
0x30, 0x9a, 0xeb, 0x34, 0x84, 0xe5, 0x78, 0xa5, 0x5e, 0x8d, 0x7b, 0x08, 0x7f, 0x0b, 0xd9, 0xc1,
|
||||
0x0c, 0xc6, 0x13, 0xef, 0x3a, 0x3e, 0xe4, 0x8d, 0x3b, 0x6f, 0x40, 0xa9, 0xe1, 0x32, 0x8b, 0x00,
|
||||
0xfc, 0x33, 0x82, 0xfc, 0xf8, 0x78, 0xc2, 0x77, 0xaf, 0x31, 0x6a, 0x8d, 0xad, 0xd9, 0xc0, 0xd7,
|
||||
0x11, 0xd5, 0x85, 0x79, 0x39, 0xd8, 0x70, 0x71, 0xda, 0x00, 0x19, 0x9c, 0x3e, 0x1d, 0x91, 0xf4,
|
||||
0x61, 0x63, 0x86, 0x13, 0x7f, 0x48, 0xa3, 0x7b, 0x08, 0x7f, 0x8f, 0x20, 0x37, 0x62, 0x6d, 0xbc,
|
||||
0xf1, 0x06, 0xef, 0x27, 0x1a, 0x36, 0x66, 0xfb, 0x46, 0x66, 0x74, 0x44, 0x59, 0xbf, 0x78, 0x59,
|
||||
0x48, 0xfd, 0xf5, 0xb2, 0x90, 0xfa, 0xae, 0x5f, 0x40, 0x17, 0xfd, 0x02, 0xfa, 0xb3, 0x5f, 0x40,
|
||||
0xff, 0xf4, 0x0b, 0xa8, 0xa9, 0xc9, 0x27, 0xf8, 0xe3, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0x6c,
|
||||
0xba, 0x38, 0xbd, 0x2d, 0x0a, 0x00, 0x00,
|
||||
// 1007 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0x4f, 0x6f, 0xe3, 0x44,
|
||||
0x1c, 0xcd, 0xa4, 0xa9, 0xdb, 0xfc, 0xd2, 0x2d, 0x61, 0xb4, 0x2a, 0xc6, 0xd2, 0xa6, 0xc1, 0x65,
|
||||
0xab, 0x8a, 0x2d, 0xce, 0x12, 0xfe, 0x1d, 0xa8, 0x0a, 0x4d, 0x13, 0xa9, 0xd1, 0x6e, 0xbb, 0xd5,
|
||||
0xb4, 0xbb, 0x7b, 0xac, 0x1c, 0x7b, 0xd6, 0x35, 0x69, 0x3c, 0xc6, 0x33, 0xd9, 0x25, 0x07, 0x24,
|
||||
0x0e, 0xac, 0x84, 0x38, 0x21, 0x4e, 0x95, 0x10, 0x5f, 0x01, 0xf1, 0x31, 0x2a, 0x4e, 0x1c, 0x39,
|
||||
0x15, 0x36, 0x1f, 0x80, 0x0f, 0xc0, 0x09, 0x79, 0x3c, 0x4e, 0x42, 0x37, 0x69, 0xd3, 0x9e, 0x12,
|
||||
0xcf, 0xbc, 0xf7, 0xe6, 0xf9, 0xfd, 0x7e, 0xfe, 0x0d, 0x54, 0x3c, 0x5f, 0x1c, 0x77, 0x5b, 0x96,
|
||||
0xc3, 0x3a, 0x15, 0x97, 0x39, 0x6d, 0x1a, 0x55, 0xf8, 0x0b, 0x3b, 0xea, 0xb4, 0x7d, 0x51, 0xb1,
|
||||
0x43, 0xbf, 0xe2, 0xfa, 0x3c, 0xb4, 0x85, 0x73, 0x4c, 0x23, 0x2b, 0x8c, 0x98, 0x60, 0x18, 0x27,
|
||||
0x28, 0x2b, 0x45, 0x59, 0xcf, 0x3f, 0x30, 0xde, 0xbb, 0x42, 0x44, 0xf4, 0x42, 0xca, 0x13, 0xbe,
|
||||
0xb1, 0x7e, 0x05, 0x96, 0xb5, 0xbe, 0xa4, 0x8e, 0x48, 0xd1, 0xb7, 0x3d, 0xe6, 0x31, 0xf9, 0xb7,
|
||||
0x12, 0xff, 0x53, 0xab, 0x9f, 0x5e, 0xa2, 0x21, 0x11, 0xad, 0xee, 0xb3, 0x4a, 0x78, 0xd2, 0xf5,
|
||||
0xfc, 0x40, 0xfd, 0x28, 0x62, 0xc9, 0x63, 0xcc, 0x3b, 0xa1, 0x43, 0x90, 0xdb, 0x8d, 0x6c, 0xe1,
|
||||
0x33, 0xb5, 0x6f, 0xbe, 0x44, 0xb0, 0x78, 0x40, 0x39, 0xf7, 0x59, 0x40, 0xe8, 0x57, 0x5d, 0xca,
|
||||
0x05, 0x6e, 0x40, 0xc1, 0xa5, 0xdc, 0x89, 0xfc, 0x30, 0xc6, 0xe9, 0xa8, 0x8c, 0xd6, 0x0a, 0xd5,
|
||||
0x15, 0xeb, 0xf5, 0x14, 0xac, 0x3d, 0xe6, 0xd2, 0xfa, 0x10, 0x4a, 0x46, 0x79, 0x78, 0x1d, 0x80,
|
||||
0x27, 0xc2, 0x47, 0xbe, 0xab, 0x67, 0xcb, 0x68, 0x2d, 0x5f, 0xbb, 0xd5, 0x3f, 0x5f, 0xce, 0xab,
|
||||
0xe3, 0x9a, 0x75, 0x92, 0x57, 0x80, 0xa6, 0x6b, 0xfe, 0x9c, 0x1d, 0xf8, 0xd8, 0xa5, 0x9c, 0xdb,
|
||||
0x1e, 0xbd, 0x20, 0x80, 0x2e, 0x17, 0xc0, 0xeb, 0x90, 0x0b, 0x98, 0x4b, 0xe5, 0x41, 0x85, 0xaa,
|
||||
0x3e, 0xc9, 0x2e, 0x91, 0x28, 0xbc, 0x01, 0xf3, 0x1d, 0x3b, 0xb0, 0x3d, 0x1a, 0x71, 0x7d, 0xa6,
|
||||
0x3c, 0xb3, 0x56, 0xa8, 0x96, 0xc7, 0x31, 0x9e, 0x52, 0xdf, 0x3b, 0x16, 0xd4, 0xdd, 0xa7, 0x34,
|
||||
0x22, 0x03, 0x06, 0x7e, 0x0a, 0x4b, 0x01, 0x15, 0x2f, 0x58, 0xd4, 0x3e, 0x6a, 0x31, 0x26, 0xb8,
|
||||
0x88, 0xec, 0xf0, 0xa8, 0x4d, 0x7b, 0x5c, 0xcf, 0x49, 0xad, 0x77, 0xc6, 0x69, 0x35, 0x02, 0x27,
|
||||
0xea, 0xc9, 0x68, 0x1e, 0xd0, 0x1e, 0xb9, 0xad, 0x04, 0x6a, 0x29, 0xff, 0x01, 0xed, 0x71, 0xbc,
|
||||
0x04, 0x1a, 0x61, 0x4c, 0x6c, 0x6f, 0xe9, 0xb3, 0x65, 0xb4, 0xb6, 0x40, 0xd4, 0x93, 0xf9, 0x05,
|
||||
0x14, 0x77, 0xa8, 0x1d, 0x89, 0x16, 0xb5, 0x45, 0x5a, 0xa6, 0x6b, 0xc5, 0x63, 0xee, 0xc3, 0x9b,
|
||||
0x23, 0x0a, 0x3c, 0x64, 0x01, 0xa7, 0xf8, 0x33, 0xd0, 0x42, 0x1a, 0xf9, 0xcc, 0x55, 0x45, 0x7e,
|
||||
0xdb, 0x4a, 0xba, 0xc5, 0x4a, 0xbb, 0xc5, 0xaa, 0xab, 0x6e, 0xa9, 0xcd, 0x9f, 0x9d, 0x2f, 0x67,
|
||||
0x4e, 0xff, 0x5a, 0x46, 0x44, 0x51, 0xcc, 0x1f, 0xb3, 0xf0, 0xd6, 0xe3, 0xd0, 0xb5, 0x05, 0x3d,
|
||||
0xb4, 0x79, 0xfb, 0x40, 0xd8, 0xa2, 0xcb, 0x6f, 0xe4, 0x0d, 0x3f, 0x81, 0xb9, 0xae, 0x14, 0x4a,
|
||||
0x6b, 0xb1, 0x31, 0x2e, 0xbf, 0x09, 0x67, 0x59, 0xc3, 0x95, 0x04, 0x41, 0x52, 0x31, 0x83, 0x41,
|
||||
0xf1, 0xe2, 0x26, 0x5e, 0x81, 0x39, 0x61, 0xf3, 0xf6, 0xd0, 0x16, 0xf4, 0xcf, 0x97, 0xb5, 0x18,
|
||||
0xd6, 0xac, 0x13, 0x2d, 0xde, 0x6a, 0xba, 0xf8, 0x13, 0xd0, 0xb8, 0x24, 0xa9, 0x6e, 0x2a, 0x8d,
|
||||
0xf3, 0x33, 0xe2, 0x44, 0xa1, 0x4d, 0x03, 0xf4, 0xd7, 0x5d, 0x26, 0x59, 0x9b, 0x1b, 0xb0, 0x10,
|
||||
0xaf, 0xde, 0x2c, 0x22, 0x73, 0x53, 0xb1, 0xd3, 0x6f, 0xc3, 0x82, 0xd9, 0xd8, 0x2b, 0xd7, 0x91,
|
||||
0x0c, 0x4c, 0x9f, 0x64, 0x90, 0x24, 0x30, 0xb3, 0x06, 0x78, 0x8b, 0x73, 0xdf, 0x0b, 0x3a, 0x34,
|
||||
0x10, 0x37, 0xf4, 0xf0, 0x1b, 0x02, 0x18, 0x8a, 0x60, 0x0b, 0x72, 0xb1, 0xb6, 0x6a, 0x9d, 0x89,
|
||||
0x0e, 0x76, 0x32, 0x44, 0xe2, 0xf0, 0x47, 0xa0, 0x71, 0xea, 0x44, 0x54, 0xa8, 0x50, 0x8d, 0x71,
|
||||
0x8c, 0x03, 0x89, 0xd8, 0xc9, 0x10, 0x85, 0x8d, 0x59, 0x0e, 0x0b, 0x9e, 0xf9, 0x9e, 0x3e, 0x33,
|
||||
0x99, 0xb5, 0x2d, 0x11, 0x31, 0x2b, 0xc1, 0xd6, 0x34, 0xc8, 0xf9, 0x82, 0x76, 0xcc, 0x97, 0x59,
|
||||
0x28, 0x0e, 0x2d, 0x6f, 0x1f, 0xdb, 0x81, 0x47, 0xf1, 0x26, 0x80, 0x3d, 0x58, 0x53, 0xf6, 0xc7,
|
||||
0x56, 0x78, 0xc8, 0x24, 0x23, 0x0c, 0xbc, 0x0b, 0x9a, 0xed, 0xc8, 0xd1, 0x18, 0xbf, 0xc8, 0x62,
|
||||
0xf5, 0xe3, 0xcb, 0xb9, 0xc9, 0xa9, 0x23, 0x0b, 0x5b, 0x92, 0x4c, 0x94, 0x88, 0xd9, 0x1a, 0xb5,
|
||||
0x98, 0xec, 0xe1, 0x55, 0xd0, 0x1e, 0xef, 0xd7, 0xb7, 0x0e, 0x1b, 0xc5, 0x8c, 0x61, 0xfc, 0xf0,
|
||||
0x4b, 0x79, 0xe9, 0x22, 0x42, 0x75, 0xf3, 0x2a, 0x68, 0xa4, 0xb1, 0xfb, 0xe8, 0x49, 0xa3, 0x88,
|
||||
0xc6, 0xe3, 0x08, 0xed, 0xb0, 0xe7, 0xd4, 0xfc, 0x17, 0xfd, 0xaf, 0xfe, 0x69, 0x17, 0x7d, 0x0e,
|
||||
0xb9, 0xf8, 0xa2, 0x92, 0x19, 0x2c, 0x56, 0xef, 0x5d, 0xfe, 0x1e, 0x29, 0xcb, 0x3a, 0xec, 0x85,
|
||||
0x94, 0x48, 0x22, 0xbe, 0x03, 0x60, 0x87, 0xe1, 0x89, 0x4f, 0xf9, 0x91, 0x60, 0xc9, 0x8c, 0x27,
|
||||
0x79, 0xb5, 0x72, 0xc8, 0xe2, 0xed, 0x88, 0xf2, 0xee, 0x89, 0xe0, 0x47, 0x7e, 0x20, 0x0b, 0x98,
|
||||
0x27, 0x79, 0xb5, 0xd2, 0x0c, 0xf0, 0x26, 0xcc, 0x39, 0x32, 0x9c, 0x74, 0x6e, 0xbe, 0x3b, 0x4d,
|
||||
0x92, 0x24, 0x25, 0x99, 0x77, 0x21, 0x17, 0x7b, 0xc1, 0x0b, 0x30, 0xbf, 0xfd, 0x68, 0x77, 0xff,
|
||||
0x61, 0x23, 0xce, 0x0b, 0xbf, 0x01, 0x85, 0xe6, 0xde, 0x36, 0x69, 0xec, 0x36, 0xf6, 0x0e, 0xb7,
|
||||
0x1e, 0x16, 0x51, 0xf5, 0x74, 0x16, 0xa0, 0x3e, 0xb8, 0xd4, 0xf1, 0xd7, 0x30, 0xa7, 0xda, 0x1b,
|
||||
0x9b, 0xe3, 0x5b, 0x70, 0xf4, 0x36, 0x34, 0x2e, 0xc3, 0xa8, 0x44, 0xcc, 0x95, 0xdf, 0x7f, 0xfd,
|
||||
0xe7, 0x34, 0x7b, 0x07, 0x16, 0x24, 0xe6, 0xfd, 0x78, 0xae, 0xd3, 0x08, 0x6e, 0x25, 0x4f, 0xea,
|
||||
0xd6, 0xb8, 0x8f, 0xf0, 0x37, 0x90, 0x1f, 0xcc, 0x60, 0x3c, 0xf6, 0x5d, 0x2f, 0x0e, 0x79, 0xe3,
|
||||
0xee, 0x15, 0x28, 0x35, 0x5c, 0xa6, 0x31, 0x80, 0x7f, 0x42, 0x50, 0xbc, 0x38, 0x9e, 0xf0, 0xbd,
|
||||
0x6b, 0x8c, 0x5a, 0x63, 0x7d, 0x3a, 0xf0, 0x75, 0x4c, 0x75, 0x61, 0x56, 0x0e, 0x36, 0x5c, 0x9e,
|
||||
0x34, 0x40, 0x06, 0xa7, 0x4f, 0x46, 0xa4, 0x75, 0x58, 0x9d, 0xe2, 0xc4, 0xef, 0xb3, 0xe8, 0x3e,
|
||||
0xc2, 0xdf, 0x21, 0x28, 0x8c, 0xb4, 0x36, 0x5e, 0xbd, 0xa2, 0xf7, 0x53, 0x0f, 0xab, 0xd3, 0x7d,
|
||||
0x23, 0x53, 0x76, 0x44, 0x4d, 0x3f, 0x7b, 0x55, 0xca, 0xfc, 0xf9, 0xaa, 0x94, 0xf9, 0xb6, 0x5f,
|
||||
0x42, 0x67, 0xfd, 0x12, 0xfa, 0xa3, 0x5f, 0x42, 0x7f, 0xf7, 0x4b, 0xa8, 0xa5, 0xc9, 0x2b, 0xf8,
|
||||
0xc3, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0xe0, 0xf0, 0x6a, 0xcb, 0xae, 0x0a, 0x00, 0x00,
|
||||
}
|
||||
|
|
6
vendor/github.com/docker/swarmkit/api/dispatcher.proto
generated
vendored
6
vendor/github.com/docker/swarmkit/api/dispatcher.proto
generated
vendored
|
@ -2,10 +2,10 @@ syntax = "proto3";
|
|||
|
||||
package docker.swarmkit.v1;
|
||||
|
||||
import "types.proto";
|
||||
import "objects.proto";
|
||||
import "github.com/docker/swarmkit/api/types.proto";
|
||||
import "github.com/docker/swarmkit/api/objects.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
import "plugin/plugin.proto";
|
||||
import "github.com/docker/swarmkit/protobuf/plugin/plugin.proto";
|
||||
import "google/protobuf/duration.proto";
|
||||
|
||||
// Dispatcher is the API provided by a manager group for agents to connect to. Agents
|
||||
|
|
3
vendor/github.com/docker/swarmkit/api/gen.go
generated
vendored
3
vendor/github.com/docker/swarmkit/api/gen.go
generated
vendored
|
@ -1,3 +0,0 @@
|
|||
package api
|
||||
|
||||
//go:generate protoc -I.:../protobuf:../vendor:../vendor/github.com/gogo/protobuf --gogoswarm_out=plugins=grpc+deepcopy+storeobject+raftproxy+authenticatedwrapper,import_path=github.com/docker/swarmkit/api,Mgogoproto/gogo.proto=github.com/gogo/protobuf/gogoproto,Mgoogle/protobuf/descriptor.proto=github.com/gogo/protobuf/protoc-gen-gogo/descriptor,Mplugin/plugin.proto=github.com/docker/swarmkit/protobuf/plugin,Mgoogle/protobuf/duration.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/timestamp.proto=github.com/gogo/protobuf/types,Mgoogle/protobuf/any.proto=github.com/gogo/protobuf/types:. types.proto specs.proto objects.proto control.proto dispatcher.proto ca.proto snapshot.proto raft.proto health.proto resource.proto logbroker.proto watch.proto
|
46
vendor/github.com/docker/swarmkit/api/health.pb.go
generated
vendored
46
vendor/github.com/docker/swarmkit/api/health.pb.go
generated
vendored
|
@ -1,5 +1,5 @@
|
|||
// Code generated by protoc-gen-gogo.
|
||||
// source: health.proto
|
||||
// source: github.com/docker/swarmkit/api/health.proto
|
||||
// DO NOT EDIT!
|
||||
|
||||
package api
|
||||
|
@ -198,7 +198,7 @@ var _Health_serviceDesc = grpc.ServiceDesc{
|
|||
},
|
||||
},
|
||||
Streams: []grpc.StreamDesc{},
|
||||
Metadata: "health.proto",
|
||||
Metadata: "github.com/docker/swarmkit/api/health.proto",
|
||||
}
|
||||
|
||||
func (m *HealthCheckRequest) Marshal() (dAtA []byte, err error) {
|
||||
|
@ -696,26 +696,28 @@ var (
|
|||
ErrIntOverflowHealth = fmt.Errorf("proto: integer overflow")
|
||||
)
|
||||
|
||||
func init() { proto.RegisterFile("health.proto", fileDescriptorHealth) }
|
||||
func init() { proto.RegisterFile("github.com/docker/swarmkit/api/health.proto", fileDescriptorHealth) }
|
||||
|
||||
var fileDescriptorHealth = []byte{
|
||||
// 287 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0xc9, 0x48, 0x4d, 0xcc,
|
||||
0x29, 0xc9, 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x4a, 0xc9, 0x4f, 0xce, 0x4e, 0x2d,
|
||||
0xd2, 0x2b, 0x2e, 0x4f, 0x2c, 0xca, 0xcd, 0xce, 0x2c, 0xd1, 0x2b, 0x33, 0x94, 0x12, 0x49, 0xcf,
|
||||
0x4f, 0xcf, 0x07, 0x4b, 0xeb, 0x83, 0x58, 0x10, 0x95, 0x52, 0xc2, 0x05, 0x39, 0xa5, 0xe9, 0x99,
|
||||
0x79, 0xfa, 0x10, 0x0a, 0x22, 0xa8, 0xa4, 0xc7, 0x25, 0xe4, 0x01, 0x36, 0xce, 0x39, 0x23, 0x35,
|
||||
0x39, 0x3b, 0x28, 0xb5, 0xb0, 0x34, 0xb5, 0xb8, 0x44, 0x48, 0x82, 0x8b, 0xbd, 0x38, 0xb5, 0xa8,
|
||||
0x2c, 0x33, 0x39, 0x55, 0x82, 0x51, 0x81, 0x51, 0x83, 0x33, 0x08, 0xc6, 0x55, 0x5a, 0xc0, 0xc8,
|
||||
0x25, 0x8c, 0xa2, 0xa1, 0xb8, 0x20, 0x3f, 0xaf, 0x38, 0x55, 0xc8, 0x97, 0x8b, 0xad, 0xb8, 0x24,
|
||||
0xb1, 0xa4, 0xb4, 0x18, 0xac, 0x81, 0xcf, 0xc8, 0x54, 0x0f, 0xd3, 0x5d, 0x7a, 0x58, 0x34, 0xea,
|
||||
0x05, 0x83, 0x0c, 0xce, 0x4b, 0x0f, 0x06, 0x6b, 0x0e, 0x82, 0x1a, 0xa2, 0x64, 0xc5, 0xc5, 0x8b,
|
||||
0x22, 0x21, 0xc4, 0xcd, 0xc5, 0x1e, 0xea, 0xe7, 0xed, 0xe7, 0x1f, 0xee, 0x27, 0xc0, 0x00, 0xe2,
|
||||
0x04, 0xbb, 0x06, 0x85, 0x79, 0xfa, 0xb9, 0x0b, 0x30, 0x0a, 0xf1, 0x73, 0x71, 0xfb, 0xf9, 0x87,
|
||||
0xc4, 0xc3, 0x04, 0x98, 0x8c, 0x2a, 0xb9, 0xd8, 0x20, 0x16, 0x09, 0xe5, 0x73, 0xb1, 0x82, 0x2d,
|
||||
0x13, 0x52, 0x23, 0xe8, 0x1a, 0xb0, 0xbf, 0xa5, 0xd4, 0x89, 0x74, 0xb5, 0x92, 0xe8, 0xa9, 0x75,
|
||||
0xef, 0x66, 0x30, 0xf1, 0x73, 0xf1, 0x82, 0x15, 0xea, 0xe6, 0x26, 0xe6, 0x25, 0xa6, 0xa7, 0x16,
|
||||
0x39, 0x49, 0x9c, 0x78, 0x28, 0xc7, 0x70, 0xe3, 0xa1, 0x1c, 0x43, 0xc3, 0x23, 0x39, 0xc6, 0x13,
|
||||
0x8f, 0xe4, 0x18, 0x2f, 0x3c, 0x92, 0x63, 0x7c, 0xf0, 0x48, 0x8e, 0x31, 0x89, 0x0d, 0x1c, 0xdc,
|
||||
0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x59, 0xcd, 0x52, 0xee, 0xbd, 0x01, 0x00, 0x00,
|
||||
// 315 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0x4e, 0xcf, 0x2c, 0xc9,
|
||||
0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xc9, 0x4f, 0xce, 0x4e, 0x2d, 0xd2, 0x2f, 0x2e,
|
||||
0x4f, 0x2c, 0xca, 0xcd, 0xce, 0x2c, 0xd1, 0x4f, 0x2c, 0xc8, 0xd4, 0xcf, 0x48, 0x4d, 0xcc, 0x29,
|
||||
0xc9, 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x82, 0xa8, 0xd0, 0x83, 0xa9, 0xd0, 0x2b,
|
||||
0x33, 0x94, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, 0x4b, 0xeb, 0x83, 0x58, 0x10, 0x95, 0x52, 0xe6,
|
||||
0x78, 0x8c, 0x05, 0xab, 0x48, 0x2a, 0x4d, 0xd3, 0x2f, 0xc8, 0x29, 0x4d, 0xcf, 0xcc, 0x83, 0x52,
|
||||
0x10, 0x8d, 0x4a, 0x7a, 0x5c, 0x42, 0x1e, 0x60, 0x2b, 0x9d, 0x33, 0x52, 0x93, 0xb3, 0x83, 0x52,
|
||||
0x0b, 0x4b, 0x53, 0x8b, 0x4b, 0x84, 0x24, 0xb8, 0xd8, 0x8b, 0x53, 0x8b, 0xca, 0x32, 0x93, 0x53,
|
||||
0x25, 0x18, 0x15, 0x18, 0x35, 0x38, 0x83, 0x60, 0x5c, 0xa5, 0x05, 0x8c, 0x5c, 0xc2, 0x28, 0x1a,
|
||||
0x8a, 0x0b, 0xf2, 0xf3, 0x8a, 0x53, 0x85, 0x7c, 0xb9, 0xd8, 0x8a, 0x4b, 0x12, 0x4b, 0x4a, 0x8b,
|
||||
0xc1, 0x1a, 0xf8, 0x8c, 0x4c, 0xf5, 0x30, 0xdd, 0xae, 0x87, 0x45, 0xa3, 0x5e, 0x30, 0xc8, 0xe0,
|
||||
0xbc, 0xf4, 0x60, 0xb0, 0xe6, 0x20, 0xa8, 0x21, 0x4a, 0x56, 0x5c, 0xbc, 0x28, 0x12, 0x42, 0xdc,
|
||||
0x5c, 0xec, 0xa1, 0x7e, 0xde, 0x7e, 0xfe, 0xe1, 0x7e, 0x02, 0x0c, 0x20, 0x4e, 0xb0, 0x6b, 0x50,
|
||||
0x98, 0xa7, 0x9f, 0xbb, 0x00, 0xa3, 0x10, 0x3f, 0x17, 0xb7, 0x9f, 0x7f, 0x48, 0x3c, 0x4c, 0x80,
|
||||
0xc9, 0xa8, 0x92, 0x8b, 0x0d, 0x62, 0x91, 0x50, 0x3e, 0x17, 0x2b, 0xd8, 0x32, 0x21, 0x35, 0x82,
|
||||
0xae, 0x01, 0xfb, 0x5b, 0x4a, 0x9d, 0x48, 0x57, 0x2b, 0x89, 0x9e, 0x5a, 0xf7, 0x6e, 0x06, 0x13,
|
||||
0x3f, 0x17, 0x2f, 0x58, 0xa1, 0x6e, 0x6e, 0x62, 0x5e, 0x62, 0x7a, 0x6a, 0x91, 0x93, 0xc4, 0x89,
|
||||
0x87, 0x72, 0x0c, 0x37, 0x1e, 0xca, 0x31, 0x34, 0x3c, 0x92, 0x63, 0x3c, 0xf1, 0x48, 0x8e, 0xf1,
|
||||
0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x93, 0xd8, 0xc0, 0xc1, 0x6d, 0x0c, 0x08, 0x00,
|
||||
0x00, 0xff, 0xff, 0x7b, 0xf2, 0xdd, 0x23, 0x00, 0x02, 0x00, 0x00,
|
||||
}
|
||||
|
|
2
vendor/github.com/docker/swarmkit/api/health.proto
generated
vendored
2
vendor/github.com/docker/swarmkit/api/health.proto
generated
vendored
|
@ -12,7 +12,7 @@ syntax = "proto3";
|
|||
package docker.swarmkit.v1;
|
||||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "plugin/plugin.proto";
|
||||
import "github.com/docker/swarmkit/protobuf/plugin/plugin.proto";
|
||||
|
||||
service Health {
|
||||
rpc Check(HealthCheckRequest) returns (HealthCheckResponse) {
|
||||
|
|
130
vendor/github.com/docker/swarmkit/api/logbroker.pb.go
generated
vendored
130
vendor/github.com/docker/swarmkit/api/logbroker.pb.go
generated
vendored
|
@ -1,5 +1,5 @@
|
|||
// Code generated by protoc-gen-gogo.
|
||||
// source: logbroker.proto
|
||||
// source: github.com/docker/swarmkit/api/logbroker.proto
|
||||
// DO NOT EDIT!
|
||||
|
||||
package api
|
||||
|
@ -618,7 +618,7 @@ var _Logs_serviceDesc = grpc.ServiceDesc{
|
|||
ServerStreams: true,
|
||||
},
|
||||
},
|
||||
Metadata: "logbroker.proto",
|
||||
Metadata: "github.com/docker/swarmkit/api/logbroker.proto",
|
||||
}
|
||||
|
||||
// Client API for LogBroker service
|
||||
|
@ -790,7 +790,7 @@ var _LogBroker_serviceDesc = grpc.ServiceDesc{
|
|||
ClientStreams: true,
|
||||
},
|
||||
},
|
||||
Metadata: "logbroker.proto",
|
||||
Metadata: "github.com/docker/swarmkit/api/logbroker.proto",
|
||||
}
|
||||
|
||||
func (m *LogSubscriptionOptions) Marshal() (dAtA []byte, err error) {
|
||||
|
@ -3350,67 +3350,71 @@ var (
|
|||
ErrIntOverflowLogbroker = fmt.Errorf("proto: integer overflow")
|
||||
)
|
||||
|
||||
func init() { proto.RegisterFile("logbroker.proto", fileDescriptorLogbroker) }
|
||||
func init() {
|
||||
proto.RegisterFile("github.com/docker/swarmkit/api/logbroker.proto", fileDescriptorLogbroker)
|
||||
}
|
||||
|
||||
var fileDescriptorLogbroker = []byte{
|
||||
// 944 bytes of a gzipped FileDescriptorProto
|
||||
// 966 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x95, 0x41, 0x6f, 0x1b, 0x45,
|
||||
0x14, 0xc7, 0x3d, 0xeb, 0xc4, 0x8e, 0x9f, 0x9b, 0xc4, 0x1d, 0xa7, 0x91, 0x65, 0xa8, 0x6d, 0x6d,
|
||||
0xa5, 0x62, 0x45, 0xc5, 0x6e, 0x8d, 0x10, 0x48, 0x91, 0x10, 0x35, 0xae, 0x90, 0x85, 0x9b, 0xa0,
|
||||
0xb1, 0x23, 0xb8, 0x45, 0x6b, 0xef, 0x74, 0x59, 0x79, 0xbd, 0x63, 0x76, 0xc6, 0x09, 0x48, 0x1c,
|
||||
0x38, 0x14, 0x09, 0xe5, 0xc0, 0x0d, 0x09, 0x0e, 0x3d, 0xd1, 0x0b, 0x42, 0xe2, 0xc2, 0x8d, 0x0f,
|
||||
0x80, 0x22, 0x4e, 0x1c, 0x39, 0x59, 0x74, 0x3f, 0x00, 0x9f, 0x01, 0xed, 0xcc, 0xd8, 0xde, 0x60,
|
||||
0xbb, 0x45, 0xe5, 0x92, 0xcc, 0xec, 0xfc, 0xdf, 0xbe, 0xdf, 0xfb, 0xcf, 0x7b, 0x6b, 0xd8, 0xf5,
|
||||
0x98, 0xd3, 0x0f, 0xd8, 0x90, 0x06, 0xb5, 0x71, 0xc0, 0x04, 0xc3, 0xd8, 0x66, 0x83, 0x68, 0xc7,
|
||||
0xcf, 0xad, 0x60, 0x34, 0x74, 0x45, 0xed, 0xec, 0x5e, 0x71, 0xcf, 0x61, 0x0e, 0x93, 0xc7, 0xf5,
|
||||
0x68, 0xa5, 0x94, 0xc5, 0xb2, 0xc3, 0x98, 0xe3, 0xd1, 0xba, 0xdc, 0xf5, 0x27, 0x8f, 0xea, 0xc2,
|
||||
0x1d, 0x51, 0x2e, 0xac, 0xd1, 0x58, 0x0b, 0xf2, 0x63, 0x6f, 0xe2, 0xb8, 0x7e, 0x5d, 0xfd, 0x53,
|
||||
0x0f, 0xcd, 0x5f, 0x10, 0xec, 0x77, 0x98, 0xd3, 0x9d, 0xf4, 0xf9, 0x20, 0x70, 0xc7, 0xc2, 0x65,
|
||||
0xfe, 0xb1, 0xfc, 0xcb, 0xf1, 0x21, 0xa4, 0xb9, 0x08, 0xa8, 0x35, 0xe2, 0x05, 0x54, 0x49, 0x56,
|
||||
0x77, 0x1a, 0x37, 0x6b, 0xcb, 0x30, 0xb5, 0x28, 0x58, 0xaa, 0x9a, 0x46, 0x2e, 0x41, 0x66, 0x11,
|
||||
0x78, 0x1f, 0x52, 0x8f, 0x98, 0xe7, 0xb1, 0xf3, 0x82, 0x51, 0x41, 0xd5, 0x2d, 0xa2, 0x77, 0x18,
|
||||
0xc3, 0x86, 0xb0, 0x5c, 0xaf, 0x90, 0xac, 0xa0, 0x6a, 0x92, 0xc8, 0x35, 0xbe, 0x0b, 0x9b, 0xdc,
|
||||
0xf5, 0x07, 0xb4, 0xb0, 0x51, 0x41, 0xd5, 0x6c, 0xa3, 0x58, 0x53, 0x95, 0xd4, 0x66, 0x95, 0xd4,
|
||||
0x7a, 0xb3, 0x4a, 0x88, 0x12, 0x9a, 0xdf, 0x20, 0xc8, 0x46, 0x89, 0xa9, 0x47, 0x07, 0x82, 0x05,
|
||||
0xb8, 0x0e, 0x59, 0x4e, 0x83, 0x33, 0x77, 0x40, 0x4f, 0x5d, 0x5b, 0xe1, 0x66, 0x9a, 0x3b, 0xe1,
|
||||
0xb4, 0x0c, 0x5d, 0xf5, 0xb8, 0xdd, 0xe2, 0x04, 0xb4, 0xa4, 0x6d, 0x73, 0x7c, 0x1b, 0xb6, 0x7c,
|
||||
0x66, 0x2b, 0xb5, 0x21, 0xd5, 0xd9, 0x70, 0x5a, 0x4e, 0x1f, 0x31, 0x5b, 0x4a, 0xd3, 0xd1, 0xa1,
|
||||
0xd6, 0x09, 0x8b, 0x0f, 0xa5, 0x2e, 0xb9, 0xd0, 0xf5, 0x2c, 0x3e, 0x94, 0xba, 0xe8, 0xb0, 0x6d,
|
||||
0x73, 0xf3, 0x31, 0x02, 0xe8, 0x30, 0xe7, 0x3d, 0xe6, 0x0b, 0xfa, 0x99, 0xc0, 0x77, 0x00, 0x16,
|
||||
0x3c, 0x05, 0x54, 0x41, 0xd5, 0x4c, 0x73, 0x3b, 0x9c, 0x96, 0x33, 0x73, 0x1c, 0x92, 0x99, 0xd3,
|
||||
0xe0, 0x5b, 0x90, 0xd6, 0x30, 0xd2, 0xac, 0x4c, 0x13, 0xc2, 0x69, 0x39, 0xa5, 0x58, 0x48, 0x4a,
|
||||
0xa1, 0x44, 0x22, 0x4d, 0x22, 0xbd, 0xd3, 0x22, 0x05, 0x42, 0x52, 0x8a, 0xc3, 0xbc, 0x07, 0xe9,
|
||||
0x0e, 0x73, 0xee, 0x0b, 0x11, 0xe0, 0x1c, 0x24, 0x87, 0xf4, 0x73, 0x95, 0x9b, 0x44, 0x4b, 0xbc,
|
||||
0x07, 0x9b, 0x67, 0x96, 0x37, 0xa1, 0x2a, 0x09, 0x51, 0x1b, 0xf3, 0xc2, 0x90, 0xe4, 0x0f, 0x29,
|
||||
0xe7, 0x96, 0x43, 0xf1, 0x3b, 0x90, 0x1e, 0xa8, 0x22, 0x64, 0x68, 0xb6, 0x51, 0x5a, 0x73, 0xe9,
|
||||
0xba, 0xd4, 0xe6, 0xc6, 0xe5, 0xb4, 0x9c, 0x20, 0xb3, 0x20, 0xfc, 0x36, 0x64, 0xe6, 0x7d, 0x27,
|
||||
0x13, 0x3d, 0xff, 0x3e, 0x17, 0x62, 0xfc, 0x26, 0xa4, 0x54, 0xf3, 0xc8, 0xfa, 0x5e, 0xd4, 0x6d,
|
||||
0x44, 0x8b, 0xa3, 0x86, 0xb2, 0x2d, 0x61, 0xc9, 0xde, 0xb9, 0x46, 0xe4, 0x1a, 0xbf, 0x05, 0x9b,
|
||||
0x96, 0x10, 0x01, 0x2f, 0x6c, 0x56, 0x92, 0xd5, 0x6c, 0xe3, 0x95, 0x35, 0x6f, 0x8a, 0x7c, 0xd2,
|
||||
0xfc, 0x4a, 0x6f, 0x7e, 0x8f, 0x60, 0x4f, 0x8f, 0x42, 0x9f, 0x76, 0x98, 0xc3, 0x09, 0xfd, 0x74,
|
||||
0x42, 0xb9, 0xc0, 0x87, 0xb0, 0xc5, 0x75, 0xb3, 0x69, 0x5f, 0xca, 0xeb, 0xf0, 0xb4, 0x8c, 0xcc,
|
||||
0x03, 0x70, 0x0b, 0xd2, 0x4c, 0xcd, 0x94, 0x76, 0xe4, 0x60, 0x5d, 0xec, 0xf2, 0x14, 0x92, 0x59,
|
||||
0xa8, 0xf9, 0xf1, 0xbf, 0xd0, 0x66, 0x37, 0xf6, 0x2e, 0x6c, 0x8d, 0xd4, 0x52, 0x35, 0xfe, 0xfa,
|
||||
0x2b, 0xd3, 0x11, 0xba, 0xe4, 0x79, 0x94, 0xf9, 0x2a, 0x14, 0x3b, 0x2e, 0x17, 0xd4, 0x8f, 0xe7,
|
||||
0x9f, 0x95, 0x6e, 0xfe, 0x86, 0x20, 0x1f, 0x3f, 0x98, 0xe5, 0xdd, 0x07, 0x63, 0xde, 0xdb, 0xa9,
|
||||
0x70, 0x5a, 0x36, 0xda, 0x2d, 0x62, 0xb8, 0xf6, 0x15, 0xab, 0x8c, 0xff, 0x61, 0x55, 0xf2, 0xa5,
|
||||
0xad, 0x8a, 0x3a, 0x7d, 0xe0, 0x31, 0xae, 0x3e, 0x28, 0x5b, 0x44, 0x6d, 0xcc, 0x1f, 0x11, 0xe0,
|
||||
0x0f, 0x27, 0x7d, 0xcf, 0xe5, 0x9f, 0xc4, 0xfd, 0x3b, 0x84, 0x5d, 0x1e, 0x7b, 0xd9, 0x62, 0x60,
|
||||
0x71, 0x38, 0x2d, 0xef, 0xc4, 0xf3, 0xb4, 0x5b, 0x64, 0x27, 0x2e, 0x6d, 0xdb, 0x57, 0xcc, 0x37,
|
||||
0x5e, 0xc6, 0xfc, 0x05, 0x6b, 0x32, 0xce, 0x7a, 0x03, 0xf2, 0x31, 0x54, 0x42, 0xf9, 0x98, 0xf9,
|
||||
0x9c, 0x1e, 0x3c, 0x45, 0x90, 0x99, 0x8f, 0x00, 0xbe, 0x03, 0xb8, 0x73, 0xfc, 0xfe, 0x69, 0xb7,
|
||||
0x47, 0x1e, 0xdc, 0x7f, 0x78, 0x7a, 0x72, 0xf4, 0xc1, 0xd1, 0xf1, 0x47, 0x47, 0xb9, 0x44, 0x71,
|
||||
0xef, 0xe2, 0x49, 0x25, 0x37, 0x97, 0x9d, 0xf8, 0x43, 0x9f, 0x9d, 0xfb, 0xf8, 0x00, 0xae, 0xc7,
|
||||
0xd4, 0xdd, 0x5e, 0xeb, 0xf8, 0xa4, 0x97, 0x43, 0xc5, 0xfc, 0xc5, 0x93, 0xca, 0xee, 0x5c, 0xdc,
|
||||
0x15, 0x36, 0x9b, 0x88, 0x65, 0xed, 0x03, 0x42, 0x72, 0xc6, 0xb2, 0x96, 0x06, 0x41, 0xf1, 0xfa,
|
||||
0xd7, 0x3f, 0x94, 0x12, 0xbf, 0x3e, 0x2d, 0x2d, 0xc0, 0x1a, 0x8f, 0x11, 0x6c, 0x44, 0xdc, 0xf8,
|
||||
0x0b, 0xd8, 0xbe, 0xd2, 0xb3, 0xb8, 0xba, 0xca, 0x9d, 0x55, 0x13, 0x57, 0x7c, 0xb1, 0x52, 0x3b,
|
||||
0x6a, 0xde, 0xf8, 0xfd, 0xe7, 0xbf, 0xbf, 0x33, 0x76, 0x61, 0x5b, 0x2a, 0x5f, 0x1f, 0x59, 0xbe,
|
||||
0xe5, 0xd0, 0xe0, 0x2e, 0x6a, 0xfc, 0x64, 0x48, 0xb7, 0x9a, 0xf2, 0xf7, 0x14, 0x7f, 0x8b, 0x20,
|
||||
0xbf, 0xa2, 0xcd, 0x71, 0x6d, 0xe5, 0x85, 0xad, 0x9d, 0x87, 0xe2, 0x6b, 0xcf, 0x01, 0x8b, 0x0f,
|
||||
0x88, 0x79, 0x4b, 0x72, 0xdd, 0x84, 0x6b, 0x8a, 0xeb, 0x9c, 0x05, 0x43, 0x1a, 0x2c, 0x51, 0xe2,
|
||||
0xaf, 0x10, 0x64, 0x63, 0x77, 0x8d, 0x6f, 0xaf, 0x7a, 0xff, 0x72, 0xdf, 0xae, 0xe6, 0x58, 0xd1,
|
||||
0x34, 0xff, 0x89, 0xa3, 0x8a, 0x9a, 0x85, 0xcb, 0x67, 0xa5, 0xc4, 0x9f, 0xcf, 0x4a, 0x89, 0x2f,
|
||||
0xc3, 0x12, 0xba, 0x0c, 0x4b, 0xe8, 0x8f, 0xb0, 0x84, 0xfe, 0x0a, 0x4b, 0xa8, 0x9f, 0x92, 0x1f,
|
||||
0xee, 0x37, 0xfe, 0x09, 0x00, 0x00, 0xff, 0xff, 0x08, 0xa1, 0xea, 0xc7, 0x9d, 0x08, 0x00, 0x00,
|
||||
0x14, 0xc7, 0x3d, 0xeb, 0xc4, 0x8e, 0x9f, 0x9b, 0xc4, 0x9d, 0xa4, 0x91, 0x65, 0xa8, 0x6d, 0x6d,
|
||||
0xa5, 0x62, 0x45, 0x65, 0xdd, 0x1a, 0xa1, 0x22, 0x45, 0x42, 0xd4, 0xb8, 0x42, 0x16, 0x6e, 0x82,
|
||||
0xc6, 0x8e, 0xe0, 0x16, 0xad, 0xbd, 0xd3, 0xed, 0xca, 0xeb, 0x1d, 0xb3, 0x33, 0x4e, 0x40, 0xe2,
|
||||
0xc0, 0xa1, 0x48, 0x28, 0x07, 0x6e, 0x48, 0x70, 0xe8, 0x89, 0x5e, 0x10, 0x12, 0x17, 0x6e, 0x7c,
|
||||
0x00, 0x14, 0x71, 0xe2, 0xc8, 0xc9, 0xa2, 0xfb, 0x01, 0xf8, 0x0c, 0x68, 0x67, 0xd6, 0xeb, 0x0d,
|
||||
0xb6, 0x53, 0x54, 0x2e, 0xf6, 0x8c, 0xe7, 0xf7, 0xf6, 0xfd, 0xdf, 0x7f, 0xde, 0x5b, 0x83, 0x61,
|
||||
0x3b, 0xe2, 0xc9, 0xa4, 0x6f, 0x0c, 0xd8, 0xa8, 0x6e, 0xb1, 0xc1, 0x90, 0xfa, 0x75, 0x7e, 0x66,
|
||||
0xfa, 0xa3, 0xa1, 0x23, 0xea, 0xe6, 0xd8, 0xa9, 0xbb, 0xcc, 0xee, 0xfb, 0x6c, 0x48, 0x7d, 0x63,
|
||||
0xec, 0x33, 0xc1, 0x30, 0x56, 0x90, 0x31, 0x83, 0x8c, 0xd3, 0x7b, 0xa5, 0x5d, 0x9b, 0xd9, 0x4c,
|
||||
0x1e, 0xd7, 0xc3, 0x95, 0x22, 0x4b, 0x15, 0x9b, 0x31, 0xdb, 0xa5, 0x75, 0xb9, 0xeb, 0x4f, 0x1e,
|
||||
0xd7, 0x85, 0x33, 0xa2, 0x5c, 0x98, 0xa3, 0x71, 0x04, 0xdc, 0xbf, 0x22, 0x75, 0x1c, 0x34, 0x76,
|
||||
0x27, 0xb6, 0xe3, 0x45, 0x5f, 0x2a, 0x50, 0xff, 0x05, 0xc1, 0x5e, 0x87, 0xd9, 0xdd, 0x49, 0x9f,
|
||||
0x0f, 0x7c, 0x67, 0x2c, 0x1c, 0xe6, 0x1d, 0xc9, 0x4f, 0x8e, 0x0f, 0x20, 0xcb, 0x85, 0x4f, 0xcd,
|
||||
0x11, 0x2f, 0xa2, 0x6a, 0xba, 0xb6, 0xd5, 0xb8, 0x69, 0x2c, 0x0a, 0x36, 0xc2, 0x60, 0x49, 0x35,
|
||||
0xb5, 0x42, 0x8a, 0xcc, 0x22, 0xf0, 0x1e, 0x64, 0x1e, 0x33, 0xd7, 0x65, 0x67, 0x45, 0xad, 0x8a,
|
||||
0x6a, 0x1b, 0x24, 0xda, 0x61, 0x0c, 0x6b, 0xc2, 0x74, 0xdc, 0x62, 0xba, 0x8a, 0x6a, 0x69, 0x22,
|
||||
0xd7, 0xf8, 0x2e, 0xac, 0x73, 0xc7, 0x1b, 0xd0, 0xe2, 0x5a, 0x15, 0xd5, 0xf2, 0x8d, 0x92, 0xa1,
|
||||
0xaa, 0x35, 0x66, 0xc2, 0x8d, 0xde, 0xac, 0x5a, 0xa2, 0x40, 0xfd, 0x1b, 0x04, 0xf9, 0x30, 0x31,
|
||||
0x75, 0xe9, 0x40, 0x30, 0x1f, 0xd7, 0x21, 0xcf, 0xa9, 0x7f, 0xea, 0x0c, 0xe8, 0x89, 0x63, 0x29,
|
||||
0xb9, 0xb9, 0xe6, 0x56, 0x30, 0xad, 0x40, 0x57, 0xfd, 0xdc, 0x6e, 0x71, 0x02, 0x11, 0xd2, 0xb6,
|
||||
0x38, 0xbe, 0x0d, 0x1b, 0x1e, 0xb3, 0x14, 0xad, 0x49, 0x3a, 0x1f, 0x4c, 0x2b, 0xd9, 0x43, 0x66,
|
||||
0x49, 0x34, 0x1b, 0x1e, 0x46, 0x9c, 0x30, 0xf9, 0x50, 0x72, 0xe9, 0x39, 0xd7, 0x33, 0xf9, 0x50,
|
||||
0x72, 0xe1, 0x61, 0xdb, 0xe2, 0xfa, 0x53, 0x04, 0xd0, 0x61, 0xf6, 0xfb, 0xcc, 0x13, 0xf4, 0x33,
|
||||
0x81, 0xef, 0x00, 0xcc, 0xf5, 0x14, 0x51, 0x15, 0xd5, 0x72, 0xcd, 0xcd, 0x60, 0x5a, 0xc9, 0xc5,
|
||||
0x72, 0x48, 0x2e, 0x56, 0x83, 0x6f, 0x41, 0x36, 0x12, 0x23, 0xcd, 0xca, 0x35, 0x21, 0x98, 0x56,
|
||||
0x32, 0x4a, 0x0b, 0xc9, 0x28, 0x29, 0x21, 0x14, 0x29, 0x91, 0xde, 0x45, 0x90, 0x12, 0x42, 0x32,
|
||||
0x4a, 0x87, 0x7e, 0x0f, 0xb2, 0x1d, 0x66, 0x3f, 0x10, 0xc2, 0xc7, 0x05, 0x48, 0x0f, 0xe9, 0xe7,
|
||||
0x2a, 0x37, 0x09, 0x97, 0x78, 0x17, 0xd6, 0x4f, 0x4d, 0x77, 0x42, 0x55, 0x12, 0xa2, 0x36, 0xfa,
|
||||
0xb9, 0x26, 0x95, 0x3f, 0xa2, 0x9c, 0x9b, 0x36, 0xc5, 0xef, 0x42, 0x76, 0xa0, 0x8a, 0x90, 0xa1,
|
||||
0xf9, 0x46, 0x79, 0xc5, 0xa5, 0x47, 0xa5, 0x36, 0xd7, 0x2e, 0xa6, 0x95, 0x14, 0x99, 0x05, 0xe1,
|
||||
0x77, 0x20, 0x17, 0xf7, 0xa6, 0x4c, 0x74, 0xf5, 0x7d, 0xce, 0x61, 0xfc, 0x36, 0x64, 0x54, 0xf3,
|
||||
0xc8, 0xfa, 0x5e, 0xd6, 0x6d, 0x24, 0x82, 0xc3, 0x86, 0xb2, 0x4c, 0x61, 0xca, 0xde, 0xb9, 0x46,
|
||||
0xe4, 0x1a, 0xdf, 0x87, 0x75, 0x53, 0x08, 0x9f, 0x17, 0xd7, 0xab, 0xe9, 0x5a, 0xbe, 0xf1, 0xda,
|
||||
0x8a, 0x27, 0x85, 0x3e, 0x45, 0xfa, 0x15, 0xaf, 0x7f, 0x8f, 0x60, 0x37, 0x1a, 0x85, 0x3e, 0xed,
|
||||
0x30, 0x9b, 0x13, 0xfa, 0xe9, 0x84, 0x72, 0x81, 0x0f, 0x60, 0x83, 0x47, 0xcd, 0x16, 0xf9, 0x52,
|
||||
0x59, 0x25, 0x2f, 0xc2, 0x48, 0x1c, 0x80, 0x5b, 0x90, 0x65, 0x6a, 0xa6, 0x22, 0x47, 0xf6, 0x57,
|
||||
0xc5, 0x2e, 0x4e, 0x21, 0x99, 0x85, 0xea, 0x9f, 0xfc, 0x4b, 0xda, 0xec, 0xc6, 0xde, 0x83, 0x8d,
|
||||
0x91, 0x5a, 0xaa, 0xc6, 0x5f, 0x7d, 0x65, 0x51, 0x44, 0x54, 0x72, 0x1c, 0xa5, 0xbf, 0x0e, 0xa5,
|
||||
0x8e, 0xc3, 0x05, 0xf5, 0x92, 0xf9, 0x67, 0xa5, 0xeb, 0xbf, 0x21, 0xd8, 0x49, 0x1e, 0xcc, 0xf2,
|
||||
0xee, 0x81, 0x16, 0xf7, 0x76, 0x26, 0x98, 0x56, 0xb4, 0x76, 0x8b, 0x68, 0x8e, 0x75, 0xc9, 0x2a,
|
||||
0xed, 0x7f, 0x58, 0x95, 0x7e, 0x65, 0xab, 0xc2, 0x4e, 0x1f, 0xb8, 0x8c, 0xab, 0x17, 0xca, 0x06,
|
||||
0x51, 0x1b, 0xfd, 0x47, 0x04, 0xf8, 0xa3, 0x49, 0xdf, 0x75, 0xf8, 0x93, 0xa4, 0x7f, 0x07, 0xb0,
|
||||
0xcd, 0x13, 0x0f, 0x9b, 0x0f, 0x2c, 0x0e, 0xa6, 0x95, 0xad, 0x64, 0x9e, 0x76, 0x8b, 0x6c, 0x25,
|
||||
0xd1, 0xb6, 0x75, 0xc9, 0x7c, 0xed, 0x55, 0xcc, 0x9f, 0x6b, 0x4d, 0x27, 0xb5, 0xde, 0x80, 0x9d,
|
||||
0x84, 0x54, 0x42, 0xf9, 0x98, 0x79, 0x9c, 0xee, 0x3f, 0x47, 0x90, 0x8b, 0x47, 0x00, 0xdf, 0x01,
|
||||
0xdc, 0x39, 0xfa, 0xe0, 0xa4, 0xdb, 0x23, 0x0f, 0x1f, 0x3c, 0x3a, 0x39, 0x3e, 0xfc, 0xf0, 0xf0,
|
||||
0xe8, 0xe3, 0xc3, 0x42, 0xaa, 0xb4, 0x7b, 0xfe, 0xac, 0x5a, 0x88, 0xb1, 0x63, 0x6f, 0xe8, 0xb1,
|
||||
0x33, 0x0f, 0xef, 0xc3, 0xf5, 0x04, 0xdd, 0xed, 0xb5, 0x8e, 0x8e, 0x7b, 0x05, 0x54, 0xda, 0x39,
|
||||
0x7f, 0x56, 0xdd, 0x8e, 0xe1, 0xae, 0xb0, 0xd8, 0x44, 0x2c, 0xb2, 0x0f, 0x09, 0x29, 0x68, 0x8b,
|
||||
0x2c, 0xf5, 0xfd, 0xd2, 0xf5, 0xaf, 0x7f, 0x28, 0xa7, 0x7e, 0x7d, 0x5e, 0x9e, 0x0b, 0x6b, 0x3c,
|
||||
0x45, 0xb0, 0x16, 0xea, 0xc6, 0x5f, 0xc0, 0xe6, 0xa5, 0x9e, 0xc5, 0xb5, 0x65, 0xee, 0x2c, 0x9b,
|
||||
0xb8, 0xd2, 0xcb, 0xc9, 0xc8, 0x51, 0xfd, 0xc6, 0xef, 0x3f, 0xff, 0xfd, 0x9d, 0xb6, 0x0d, 0x9b,
|
||||
0x92, 0x7c, 0x73, 0x64, 0x7a, 0xa6, 0x4d, 0xfd, 0xbb, 0xa8, 0xf1, 0x93, 0x26, 0xdd, 0x6a, 0xca,
|
||||
0xff, 0x5c, 0xfc, 0x2d, 0x82, 0x9d, 0x25, 0x6d, 0x8e, 0x8d, 0xa5, 0x17, 0xb6, 0x72, 0x1e, 0x4a,
|
||||
0x6f, 0x5c, 0x21, 0x2c, 0x39, 0x20, 0xfa, 0x2d, 0xa9, 0xeb, 0x26, 0x5c, 0x53, 0xba, 0xce, 0x98,
|
||||
0x3f, 0xa4, 0xfe, 0x82, 0x4a, 0xfc, 0x15, 0x82, 0x7c, 0xe2, 0xae, 0xf1, 0xed, 0x65, 0xcf, 0x5f,
|
||||
0xec, 0xdb, 0xe5, 0x3a, 0x96, 0x34, 0xcd, 0x7f, 0xd2, 0x51, 0x43, 0xcd, 0xe2, 0xc5, 0x8b, 0x72,
|
||||
0xea, 0xcf, 0x17, 0xe5, 0xd4, 0x97, 0x41, 0x19, 0x5d, 0x04, 0x65, 0xf4, 0x47, 0x50, 0x46, 0x7f,
|
||||
0x05, 0x65, 0xd4, 0xcf, 0xc8, 0x17, 0xf7, 0x5b, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x95, 0x7b,
|
||||
0x3c, 0x04, 0xe0, 0x08, 0x00, 0x00,
|
||||
}
|
||||
|
|
2
vendor/github.com/docker/swarmkit/api/logbroker.proto
generated
vendored
2
vendor/github.com/docker/swarmkit/api/logbroker.proto
generated
vendored
|
@ -4,7 +4,7 @@ package docker.swarmkit.v1;
|
|||
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/protobuf/timestamp.proto";
|
||||
import "plugin/plugin.proto";
|
||||
import "github.com/docker/swarmkit/protobuf/plugin/plugin.proto";
|
||||
|
||||
// LogStream defines the stream from which the log message came.
|
||||
enum LogStream {
|
||||
|
|
195
vendor/github.com/docker/swarmkit/api/objects.pb.go
generated
vendored
195
vendor/github.com/docker/swarmkit/api/objects.pb.go
generated
vendored
|
@ -1,5 +1,5 @@
|
|||
// Code generated by protoc-gen-gogo.
|
||||
// source: objects.proto
|
||||
// source: github.com/docker/swarmkit/api/objects.proto
|
||||
// DO NOT EDIT!
|
||||
|
||||
package api
|
||||
|
@ -7686,102 +7686,103 @@ var (
|
|||
ErrIntOverflowObjects = fmt.Errorf("proto: integer overflow")
|
||||
)
|
||||
|
||||
func init() { proto.RegisterFile("objects.proto", fileDescriptorObjects) }
|
||||
func init() { proto.RegisterFile("github.com/docker/swarmkit/api/objects.proto", fileDescriptorObjects) }
|
||||
|
||||
var fileDescriptorObjects = []byte{
|
||||
// 1491 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0xcf, 0x6f, 0x1b, 0x4f,
|
||||
0x15, 0xef, 0xda, 0x1b, 0xff, 0x78, 0x4e, 0x4c, 0x98, 0x86, 0xb0, 0x35, 0xc1, 0x0e, 0xae, 0x40,
|
||||
0x15, 0xaa, 0x9c, 0x12, 0x0a, 0x4a, 0x03, 0xa5, 0xb5, 0x93, 0xa8, 0xb5, 0x4a, 0x69, 0x34, 0x2d,
|
||||
0x2d, 0xb7, 0x65, 0xb2, 0x3b, 0x75, 0x17, 0xaf, 0x77, 0x56, 0x3b, 0x63, 0x17, 0xdf, 0x38, 0x87,
|
||||
0x3f, 0x20, 0x37, 0x0e, 0xfd, 0x17, 0xe0, 0xc2, 0x85, 0x03, 0xa7, 0x1e, 0x39, 0x21, 0x4e, 0x11,
|
||||
0xf5, 0x7f, 0x81, 0xc4, 0xe1, 0xab, 0x99, 0x9d, 0xb5, 0x37, 0xf1, 0x3a, 0x49, 0xbf, 0xaa, 0xa2,
|
||||
0xef, 0x29, 0x33, 0x3b, 0x9f, 0xcf, 0x9b, 0xf7, 0xde, 0xbc, 0x5f, 0x31, 0xac, 0xb0, 0xa3, 0x3f,
|
||||
0x50, 0x47, 0xf0, 0x56, 0x18, 0x31, 0xc1, 0x10, 0x72, 0x99, 0xd3, 0xa7, 0x51, 0x8b, 0xbf, 0x27,
|
||||
0xd1, 0xa0, 0xef, 0x89, 0xd6, 0xe8, 0x27, 0xb5, 0x8a, 0x18, 0x87, 0x54, 0x03, 0x6a, 0x15, 0x1e,
|
||||
0x52, 0x27, 0xd9, 0x34, 0x7a, 0x8c, 0xf5, 0x7c, 0xba, 0xa5, 0x76, 0x47, 0xc3, 0xb7, 0x5b, 0xc2,
|
||||
0x1b, 0x50, 0x2e, 0xc8, 0x20, 0xd4, 0x80, 0xb5, 0x1e, 0xeb, 0x31, 0xb5, 0xdc, 0x92, 0x2b, 0xfd,
|
||||
0xf5, 0xd6, 0x79, 0x1a, 0x09, 0xc6, 0xfa, 0xe8, 0x66, 0xe8, 0x0f, 0x7b, 0x5e, 0xb0, 0x15, 0xff,
|
||||
0x89, 0x3f, 0x36, 0xff, 0x6e, 0x80, 0xf9, 0x9c, 0x0a, 0x82, 0x7e, 0x01, 0xc5, 0x11, 0x8d, 0xb8,
|
||||
0xc7, 0x02, 0xcb, 0xd8, 0x34, 0xee, 0x54, 0xb6, 0xbf, 0xd7, 0x9a, 0xd7, 0xb7, 0xf5, 0x3a, 0x86,
|
||||
0x74, 0xcc, 0x8f, 0xa7, 0x8d, 0x1b, 0x38, 0x61, 0xa0, 0x07, 0x00, 0x4e, 0x44, 0x89, 0xa0, 0xae,
|
||||
0x4d, 0x84, 0x95, 0x53, 0xfc, 0x5a, 0x2b, 0x56, 0xa5, 0x95, 0xa8, 0xd2, 0x7a, 0x95, 0x58, 0x80,
|
||||
0xcb, 0x1a, 0xdd, 0x16, 0x92, 0x3a, 0x0c, 0xdd, 0x84, 0x9a, 0xbf, 0x9c, 0xaa, 0xd1, 0x6d, 0xd1,
|
||||
0xfc, 0xab, 0x09, 0xe6, 0x6f, 0x98, 0x4b, 0xd1, 0x3a, 0xe4, 0x3c, 0x57, 0xa9, 0x5d, 0xee, 0x14,
|
||||
0x26, 0xa7, 0x8d, 0x5c, 0x77, 0x1f, 0xe7, 0x3c, 0x17, 0x6d, 0x83, 0x39, 0xa0, 0x82, 0x68, 0x85,
|
||||
0xac, 0x2c, 0x83, 0xa4, 0xed, 0xda, 0x1a, 0x85, 0x45, 0x3f, 0x07, 0x53, 0x3e, 0x83, 0xd6, 0x64,
|
||||
0x23, 0x8b, 0x23, 0xef, 0x7c, 0x19, 0x52, 0x27, 0xe1, 0x49, 0x3c, 0x3a, 0x80, 0x8a, 0x4b, 0xb9,
|
||||
0x13, 0x79, 0xa1, 0x90, 0x3e, 0x34, 0x15, 0xfd, 0xf6, 0x22, 0xfa, 0xfe, 0x0c, 0x8a, 0xd3, 0x3c,
|
||||
0xf4, 0x4b, 0x28, 0x70, 0x41, 0xc4, 0x90, 0x5b, 0x4b, 0x4a, 0x42, 0x7d, 0xa1, 0x02, 0x0a, 0xa5,
|
||||
0x55, 0xd0, 0x1c, 0xf4, 0x14, 0xaa, 0x03, 0x12, 0x90, 0x1e, 0x8d, 0x6c, 0x2d, 0xa5, 0xa0, 0xa4,
|
||||
0xfc, 0x20, 0xd3, 0xf4, 0x18, 0x19, 0x0b, 0xc2, 0x2b, 0x83, 0xf4, 0x16, 0x1d, 0x00, 0x10, 0x21,
|
||||
0x88, 0xf3, 0x6e, 0x40, 0x03, 0x61, 0x15, 0x95, 0x94, 0x1f, 0x66, 0xea, 0x42, 0xc5, 0x7b, 0x16,
|
||||
0xf5, 0xdb, 0x53, 0x30, 0x4e, 0x11, 0xd1, 0x13, 0xa8, 0x38, 0x34, 0x12, 0xde, 0x5b, 0xcf, 0x21,
|
||||
0x82, 0x5a, 0x25, 0x25, 0xa7, 0x91, 0x25, 0x67, 0x6f, 0x06, 0xd3, 0x46, 0xa5, 0x99, 0xe8, 0x1e,
|
||||
0x98, 0x11, 0xf3, 0xa9, 0x55, 0xde, 0x34, 0xee, 0x54, 0x17, 0x3f, 0x0b, 0x66, 0x3e, 0xc5, 0x0a,
|
||||
0xb9, 0xbb, 0x7e, 0x7c, 0xd2, 0x44, 0xb0, 0x5a, 0x32, 0x56, 0x0d, 0x15, 0x1a, 0xc6, 0x3d, 0xe3,
|
||||
0x77, 0xc6, 0xef, 0x8d, 0xe6, 0xff, 0xf3, 0x50, 0x7c, 0x49, 0xa3, 0x91, 0xe7, 0x7c, 0xd9, 0xc0,
|
||||
0x79, 0x70, 0x26, 0x70, 0x32, 0x6d, 0xd4, 0xd7, 0xce, 0xc5, 0xce, 0x0e, 0x94, 0x68, 0xe0, 0x86,
|
||||
0xcc, 0x0b, 0x84, 0x0e, 0x9c, 0x4c, 0x03, 0x0f, 0x34, 0x06, 0x4f, 0xd1, 0xe8, 0x00, 0x56, 0xe2,
|
||||
0x7c, 0xb0, 0xcf, 0x44, 0xcd, 0x66, 0x16, 0xfd, 0xb7, 0x0a, 0xa8, 0x9f, 0x7b, 0x79, 0x98, 0xda,
|
||||
0xa1, 0x7d, 0x58, 0x09, 0x23, 0x3a, 0xf2, 0xd8, 0x90, 0xdb, 0xca, 0x88, 0xc2, 0x95, 0x8c, 0xc0,
|
||||
0xcb, 0x09, 0x4b, 0xee, 0xd0, 0xaf, 0x60, 0x59, 0x92, 0xed, 0xa4, 0x8e, 0xc0, 0xa5, 0x75, 0x04,
|
||||
0xab, 0x92, 0xa7, 0x37, 0xe8, 0x05, 0x7c, 0xe7, 0x8c, 0x16, 0x53, 0x41, 0x95, 0xcb, 0x05, 0xdd,
|
||||
0x4c, 0x6b, 0xa2, 0x3f, 0xee, 0xa2, 0xe3, 0x93, 0x66, 0x15, 0x96, 0xd3, 0x21, 0xd0, 0xfc, 0x4b,
|
||||
0x0e, 0x4a, 0x89, 0x23, 0xd1, 0x7d, 0xfd, 0x66, 0xc6, 0x62, 0xaf, 0x25, 0x58, 0x65, 0x6f, 0xfc,
|
||||
0x5c, 0xf7, 0x61, 0x29, 0x64, 0x91, 0xe0, 0x56, 0x6e, 0x33, 0xbf, 0x28, 0x45, 0x0f, 0x59, 0x24,
|
||||
0xf6, 0x58, 0xf0, 0xd6, 0xeb, 0xe1, 0x18, 0x8c, 0xde, 0x40, 0x65, 0xe4, 0x45, 0x62, 0x48, 0x7c,
|
||||
0xdb, 0x0b, 0xb9, 0x95, 0x57, 0xdc, 0x1f, 0x5d, 0x74, 0x65, 0xeb, 0x75, 0x8c, 0xef, 0x1e, 0x76,
|
||||
0xaa, 0x93, 0xd3, 0x06, 0x4c, 0xb7, 0x1c, 0x83, 0x16, 0xd5, 0x0d, 0x79, 0xed, 0x39, 0x94, 0xa7,
|
||||
0x27, 0xe8, 0x2e, 0x40, 0x10, 0x67, 0xa4, 0x3d, 0x8d, 0xec, 0x95, 0xc9, 0x69, 0xa3, 0xac, 0xf3,
|
||||
0xb4, 0xbb, 0x8f, 0xcb, 0x1a, 0xd0, 0x75, 0x11, 0x02, 0x93, 0xb8, 0x6e, 0xa4, 0xe2, 0xbc, 0x8c,
|
||||
0xd5, 0xba, 0xf9, 0xe7, 0x22, 0x98, 0xaf, 0x08, 0xef, 0x5f, 0x77, 0x55, 0x95, 0x77, 0xce, 0x65,
|
||||
0xc6, 0x5d, 0x00, 0x1e, 0xc7, 0x9b, 0x34, 0xc7, 0x9c, 0x99, 0xa3, 0xa3, 0x50, 0x9a, 0xa3, 0x01,
|
||||
0xb1, 0x39, 0xdc, 0x67, 0x42, 0x25, 0x81, 0x89, 0xd5, 0x1a, 0xdd, 0x86, 0x62, 0xc0, 0x5c, 0x45,
|
||||
0x2f, 0x28, 0x3a, 0x4c, 0x4e, 0x1b, 0x05, 0x59, 0x2b, 0xba, 0xfb, 0xb8, 0x20, 0x8f, 0xba, 0xae,
|
||||
0x2c, 0x53, 0x24, 0x08, 0x98, 0x20, 0xb2, 0x06, 0x73, 0x5d, 0xee, 0x32, 0xa3, 0xbf, 0x3d, 0x83,
|
||||
0x25, 0x65, 0x2a, 0xc5, 0x44, 0xaf, 0xe1, 0x66, 0xa2, 0x6f, 0x5a, 0x60, 0xe9, 0x73, 0x04, 0x22,
|
||||
0x2d, 0x21, 0x75, 0x92, 0x6a, 0x0b, 0xe5, 0xc5, 0x6d, 0x41, 0x79, 0x30, 0xab, 0x2d, 0x74, 0x60,
|
||||
0xc5, 0xa5, 0xdc, 0x8b, 0xa8, 0xab, 0xca, 0x04, 0x55, 0x99, 0x59, 0xdd, 0xfe, 0xfe, 0x45, 0x42,
|
||||
0x28, 0x5e, 0xd6, 0x1c, 0xb5, 0x43, 0x6d, 0x28, 0xe9, 0xb8, 0xe1, 0x56, 0x45, 0xc5, 0xee, 0x15,
|
||||
0xdb, 0xc1, 0x94, 0x76, 0xa6, 0xcc, 0x2d, 0x7f, 0x56, 0x99, 0x7b, 0x00, 0xe0, 0xb3, 0x9e, 0xed,
|
||||
0x46, 0xde, 0x88, 0x46, 0xd6, 0x8a, 0x1e, 0x12, 0x32, 0xb8, 0xfb, 0x0a, 0x81, 0xcb, 0x3e, 0xeb,
|
||||
0xc5, 0xcb, 0xb9, 0xa2, 0x54, 0xfd, 0xcc, 0xa2, 0x44, 0xa0, 0x46, 0x38, 0xf7, 0x7a, 0x01, 0x75,
|
||||
0xed, 0x1e, 0x0d, 0x68, 0xe4, 0x39, 0x76, 0x44, 0x39, 0x1b, 0x46, 0x0e, 0xe5, 0xd6, 0xb7, 0x94,
|
||||
0x27, 0x32, 0xdb, 0xfc, 0x93, 0x18, 0x8c, 0x35, 0x16, 0x5b, 0x89, 0x98, 0x73, 0x07, 0x7c, 0xb7,
|
||||
0x76, 0x7c, 0xd2, 0x5c, 0x87, 0xb5, 0x74, 0x99, 0xda, 0x31, 0x1e, 0x1b, 0x4f, 0x8d, 0x43, 0xa3,
|
||||
0xf9, 0xcf, 0x1c, 0x7c, 0x7b, 0xce, 0xa7, 0xe8, 0x67, 0x50, 0xd4, 0x5e, 0xbd, 0x68, 0x58, 0xd3,
|
||||
0x3c, 0x9c, 0x60, 0xd1, 0x06, 0x94, 0x65, 0x8a, 0x53, 0xce, 0x69, 0x5c, 0xbc, 0xca, 0x78, 0xf6,
|
||||
0x01, 0x59, 0x50, 0x24, 0xbe, 0x47, 0xe4, 0x59, 0x5e, 0x9d, 0x25, 0x5b, 0x34, 0x84, 0xf5, 0xd8,
|
||||
0xf5, 0xf6, 0xac, 0xb5, 0xdb, 0x2c, 0x14, 0xdc, 0x32, 0x95, 0xfd, 0x8f, 0xae, 0x14, 0x09, 0xfa,
|
||||
0x71, 0x66, 0x1f, 0x5e, 0x84, 0x82, 0x1f, 0x04, 0x22, 0x1a, 0xe3, 0x35, 0x37, 0xe3, 0xa8, 0xf6,
|
||||
0x04, 0x6e, 0x2d, 0xa4, 0xa0, 0x55, 0xc8, 0xf7, 0xe9, 0x38, 0x2e, 0x4f, 0x58, 0x2e, 0xd1, 0x1a,
|
||||
0x2c, 0x8d, 0x88, 0x3f, 0xa4, 0xba, 0x9a, 0xc5, 0x9b, 0xdd, 0xdc, 0x8e, 0xd1, 0xfc, 0x90, 0x83,
|
||||
0xa2, 0x56, 0xe7, 0xba, 0x5b, 0xbe, 0xbe, 0x76, 0xae, 0xb0, 0x3d, 0x84, 0x65, 0xed, 0xd2, 0x38,
|
||||
0x23, 0xcd, 0x4b, 0x63, 0xba, 0x12, 0xe3, 0xe3, 0x6c, 0x7c, 0x08, 0xa6, 0x17, 0x92, 0x81, 0x6e,
|
||||
0xf7, 0x99, 0x37, 0x77, 0x0f, 0xdb, 0xcf, 0x5f, 0x84, 0x71, 0x61, 0x29, 0x4d, 0x4e, 0x1b, 0xa6,
|
||||
0xfc, 0x80, 0x15, 0x2d, 0xb3, 0x31, 0xfe, 0x6d, 0x09, 0x8a, 0x7b, 0xfe, 0x90, 0x0b, 0x1a, 0x5d,
|
||||
0xb7, 0x93, 0xf4, 0xb5, 0x73, 0x4e, 0xda, 0x83, 0x62, 0xc4, 0x98, 0xb0, 0x1d, 0x72, 0x91, 0x7f,
|
||||
0x30, 0x63, 0x62, 0xaf, 0xdd, 0xa9, 0x4a, 0xa2, 0xac, 0xed, 0xf1, 0x1e, 0x17, 0x24, 0x75, 0x8f,
|
||||
0xa0, 0x37, 0xb0, 0x9e, 0x74, 0xc4, 0x23, 0xc6, 0x04, 0x17, 0x11, 0x09, 0xed, 0x3e, 0x1d, 0xcb,
|
||||
0x59, 0x29, 0xbf, 0x68, 0x36, 0x3e, 0x08, 0x9c, 0x68, 0xac, 0x9c, 0xf7, 0x8c, 0x8e, 0xf1, 0x9a,
|
||||
0x16, 0xd0, 0x49, 0xf8, 0xcf, 0xe8, 0x98, 0xa3, 0x47, 0xb0, 0x41, 0xa7, 0x30, 0x29, 0xd1, 0xf6,
|
||||
0xc9, 0x40, 0xf6, 0x7a, 0xdb, 0xf1, 0x99, 0xd3, 0x57, 0xed, 0xc6, 0xc4, 0xb7, 0x68, 0x5a, 0xd4,
|
||||
0xaf, 0x63, 0xc4, 0x9e, 0x04, 0x20, 0x0e, 0xd6, 0x91, 0x4f, 0x9c, 0xbe, 0xef, 0x71, 0xf9, 0xef,
|
||||
0x4f, 0x6a, 0xdc, 0x95, 0x1d, 0x43, 0xea, 0xb6, 0x73, 0x81, 0xb7, 0x5a, 0x9d, 0x19, 0x37, 0x35,
|
||||
0x3c, 0xeb, 0x8c, 0xfa, 0xee, 0x51, 0xf6, 0x29, 0xea, 0x40, 0x65, 0x18, 0xc8, 0xeb, 0x63, 0x1f,
|
||||
0x94, 0xaf, 0xea, 0x03, 0x88, 0x59, 0xd2, 0xf2, 0xda, 0x08, 0x36, 0x2e, 0xba, 0x3c, 0x23, 0x37,
|
||||
0x1f, 0xa7, 0x73, 0xb3, 0xb2, 0xfd, 0xe3, 0xac, 0xfb, 0xb2, 0x45, 0xa6, 0xf2, 0x38, 0x33, 0x6c,
|
||||
0xff, 0x61, 0x40, 0xe1, 0x25, 0x75, 0x22, 0x2a, 0xbe, 0x68, 0xd4, 0xee, 0x9c, 0x89, 0xda, 0x7a,
|
||||
0xf6, 0x20, 0x2c, 0x6f, 0x9d, 0x0b, 0xda, 0x1a, 0x94, 0xbc, 0x40, 0xd0, 0x28, 0x20, 0xbe, 0x8a,
|
||||
0xda, 0x12, 0x9e, 0xee, 0x33, 0x0d, 0xf8, 0x60, 0x40, 0x21, 0x9e, 0x14, 0xaf, 0xdb, 0x80, 0xf8,
|
||||
0xd6, 0xf3, 0x06, 0x64, 0x2a, 0xf9, 0x3f, 0x03, 0x4a, 0x49, 0xc3, 0xfa, 0xa2, 0x6a, 0x9e, 0x9b,
|
||||
0xbc, 0xf2, 0x5f, 0x7b, 0xf2, 0x42, 0x60, 0xf6, 0xbd, 0x40, 0xcf, 0x88, 0x58, 0xad, 0x51, 0x0b,
|
||||
0x8a, 0x21, 0x19, 0xfb, 0x8c, 0xb8, 0xba, 0x50, 0xae, 0xcd, 0xfd, 0xb0, 0xd0, 0x0e, 0xc6, 0x38,
|
||||
0x01, 0xed, 0xae, 0x1d, 0x9f, 0x34, 0x57, 0xa1, 0x9a, 0xb6, 0xfc, 0x9d, 0xd1, 0xfc, 0xb7, 0x01,
|
||||
0xe5, 0x83, 0x3f, 0x0a, 0x1a, 0xa8, 0x79, 0xe0, 0x1b, 0x69, 0xfc, 0xe6, 0xfc, 0x8f, 0x0f, 0xe5,
|
||||
0x33, 0xbf, 0x2b, 0x64, 0x3d, 0x6a, 0xc7, 0xfa, 0xf8, 0xa9, 0x7e, 0xe3, 0x3f, 0x9f, 0xea, 0x37,
|
||||
0xfe, 0x34, 0xa9, 0x1b, 0x1f, 0x27, 0x75, 0xe3, 0x5f, 0x93, 0xba, 0xf1, 0xdf, 0x49, 0xdd, 0x38,
|
||||
0x2a, 0x28, 0xff, 0xfc, 0xf4, 0xab, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe4, 0x48, 0xcb, 0x39, 0xc2,
|
||||
0x12, 0x00, 0x00,
|
||||
// 1513 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x58, 0x4d, 0x6f, 0x1b, 0x4f,
|
||||
0x19, 0xef, 0xda, 0x1b, 0xbf, 0x3c, 0x4e, 0x4c, 0x98, 0x7f, 0x08, 0x5b, 0x13, 0xec, 0xe0, 0x0a,
|
||||
0x54, 0x55, 0x95, 0x53, 0x42, 0x81, 0x34, 0x50, 0x5a, 0x3b, 0x89, 0x5a, 0xab, 0x94, 0x46, 0xd3,
|
||||
0xd2, 0x72, 0x5b, 0x26, 0xbb, 0x53, 0x77, 0xf1, 0x7a, 0x67, 0xb5, 0x33, 0x76, 0xf1, 0x8d, 0x73,
|
||||
0xf8, 0x00, 0xb9, 0x71, 0xe8, 0x57, 0x80, 0x0b, 0x17, 0x0e, 0x9c, 0x7a, 0xe4, 0x84, 0x38, 0x45,
|
||||
0xd4, 0xdf, 0x02, 0x89, 0x03, 0x9a, 0xd9, 0x59, 0x7b, 0x13, 0xaf, 0x93, 0x14, 0x55, 0xd1, 0xff,
|
||||
0x94, 0x99, 0x9d, 0xdf, 0xef, 0x79, 0x9b, 0xe7, 0x65, 0x62, 0xb8, 0xdb, 0xf3, 0xc4, 0xbb, 0xe1,
|
||||
0x51, 0xcb, 0x61, 0x83, 0x2d, 0x97, 0x39, 0x7d, 0x1a, 0x6d, 0xf1, 0xf7, 0x24, 0x1a, 0xf4, 0x3d,
|
||||
0xb1, 0x45, 0x42, 0x6f, 0x8b, 0x1d, 0xfd, 0x8e, 0x3a, 0x82, 0xb7, 0xc2, 0x88, 0x09, 0x86, 0x50,
|
||||
0x0c, 0x69, 0x25, 0x90, 0xd6, 0xe8, 0x87, 0xb5, 0x3b, 0x97, 0x48, 0x10, 0xe3, 0x90, 0x6a, 0xfe,
|
||||
0xa5, 0x58, 0x1e, 0x52, 0x27, 0xc1, 0x36, 0x7a, 0x8c, 0xf5, 0x7c, 0xba, 0xa5, 0x76, 0x47, 0xc3,
|
||||
0xb7, 0x5b, 0xc2, 0x1b, 0x50, 0x2e, 0xc8, 0x20, 0xd4, 0x80, 0xb5, 0x1e, 0xeb, 0x31, 0xb5, 0xdc,
|
||||
0x92, 0x2b, 0xfd, 0xf5, 0xe6, 0x79, 0x1a, 0x09, 0xc6, 0xfa, 0xe8, 0xa7, 0x17, 0x68, 0x9f, 0xc2,
|
||||
0x43, 0x7f, 0xd8, 0xf3, 0x02, 0xfd, 0x27, 0x26, 0x36, 0xff, 0x6a, 0x80, 0xf9, 0x9c, 0x0a, 0x82,
|
||||
0x7e, 0x06, 0xc5, 0x11, 0x8d, 0xb8, 0xc7, 0x02, 0xcb, 0xd8, 0x34, 0x6e, 0x57, 0xb6, 0xbf, 0xd3,
|
||||
0x9a, 0x8f, 0x48, 0xeb, 0x75, 0x0c, 0xe9, 0x98, 0x1f, 0x4f, 0x1b, 0x37, 0x70, 0xc2, 0x40, 0x0f,
|
||||
0x00, 0x9c, 0x88, 0x12, 0x41, 0x5d, 0x9b, 0x08, 0x2b, 0xa7, 0xf8, 0xb5, 0x56, 0x6c, 0x6e, 0x2b,
|
||||
0xd1, 0xdf, 0x7a, 0x95, 0x78, 0x89, 0xcb, 0x1a, 0xdd, 0x16, 0x92, 0x3a, 0x0c, 0xdd, 0x84, 0x9a,
|
||||
0xbf, 0x9c, 0xaa, 0xd1, 0x6d, 0xd1, 0xfc, 0xb3, 0x09, 0xe6, 0xaf, 0x98, 0x4b, 0xd1, 0x3a, 0xe4,
|
||||
0x3c, 0x57, 0x99, 0x5d, 0xee, 0x14, 0x26, 0xa7, 0x8d, 0x5c, 0x77, 0x1f, 0xe7, 0x3c, 0x17, 0x6d,
|
||||
0x83, 0x39, 0xa0, 0x82, 0x68, 0x83, 0xac, 0x2c, 0x87, 0xa4, 0xef, 0xda, 0x1b, 0x85, 0x45, 0x3f,
|
||||
0x01, 0x53, 0x5e, 0x95, 0xb6, 0x64, 0x23, 0x8b, 0x23, 0x75, 0xbe, 0x0c, 0xa9, 0x93, 0xf0, 0x24,
|
||||
0x1e, 0x1d, 0x40, 0xc5, 0xa5, 0xdc, 0x89, 0xbc, 0x50, 0xc8, 0x18, 0x9a, 0x8a, 0x7e, 0x6b, 0x11,
|
||||
0x7d, 0x7f, 0x06, 0xc5, 0x69, 0x1e, 0xfa, 0x39, 0x14, 0xb8, 0x20, 0x62, 0xc8, 0xad, 0x25, 0x25,
|
||||
0xa1, 0xbe, 0xd0, 0x00, 0x85, 0xd2, 0x26, 0x68, 0x0e, 0x7a, 0x0a, 0xd5, 0x01, 0x09, 0x48, 0x8f,
|
||||
0x46, 0xb6, 0x96, 0x52, 0x50, 0x52, 0xbe, 0x97, 0xe9, 0x7a, 0x8c, 0x8c, 0x05, 0xe1, 0x95, 0x41,
|
||||
0x7a, 0x8b, 0x0e, 0x00, 0x88, 0x10, 0xc4, 0x79, 0x37, 0xa0, 0x81, 0xb0, 0x8a, 0x4a, 0xca, 0xf7,
|
||||
0x33, 0x6d, 0xa1, 0xe2, 0x3d, 0x8b, 0xfa, 0xed, 0x29, 0x18, 0xa7, 0x88, 0xe8, 0x09, 0x54, 0x1c,
|
||||
0x1a, 0x09, 0xef, 0xad, 0xe7, 0x10, 0x41, 0xad, 0x92, 0x92, 0xd3, 0xc8, 0x92, 0xb3, 0x37, 0x83,
|
||||
0x69, 0xa7, 0xd2, 0x4c, 0x74, 0x0f, 0xcc, 0x88, 0xf9, 0xd4, 0x2a, 0x6f, 0x1a, 0xb7, 0xab, 0x8b,
|
||||
0xaf, 0x05, 0x33, 0x9f, 0x62, 0x85, 0xdc, 0x5d, 0x3f, 0x3e, 0x69, 0x22, 0x58, 0x2d, 0x19, 0xab,
|
||||
0x86, 0x4a, 0x0d, 0xe3, 0x9e, 0xf1, 0x1b, 0xe3, 0xb7, 0x46, 0xf3, 0xbf, 0x79, 0x28, 0xbe, 0xa4,
|
||||
0xd1, 0xc8, 0x73, 0xbe, 0x6c, 0xe2, 0x3c, 0x38, 0x93, 0x38, 0x99, 0x3e, 0x6a, 0xb5, 0x73, 0xb9,
|
||||
0xb3, 0x03, 0x25, 0x1a, 0xb8, 0x21, 0xf3, 0x02, 0xa1, 0x13, 0x27, 0xd3, 0xc1, 0x03, 0x8d, 0xc1,
|
||||
0x53, 0x34, 0x3a, 0x80, 0x95, 0xb8, 0x1e, 0xec, 0x33, 0x59, 0xb3, 0x99, 0x45, 0xff, 0xb5, 0x02,
|
||||
0xea, 0xeb, 0x5e, 0x1e, 0xa6, 0x76, 0x68, 0x1f, 0x56, 0xc2, 0x88, 0x8e, 0x3c, 0x36, 0xe4, 0xb6,
|
||||
0x72, 0xa2, 0x70, 0x25, 0x27, 0xf0, 0x72, 0xc2, 0x92, 0x3b, 0xf4, 0x0b, 0x58, 0x96, 0x64, 0x3b,
|
||||
0xe9, 0x23, 0x70, 0x69, 0x1f, 0xc1, 0x15, 0x49, 0xd0, 0x1b, 0xf4, 0x02, 0xbe, 0x75, 0xc6, 0x8a,
|
||||
0xa9, 0xa0, 0xca, 0xe5, 0x82, 0xbe, 0x4a, 0x5b, 0xa2, 0x3f, 0xee, 0xa2, 0xe3, 0x93, 0x66, 0x15,
|
||||
0x96, 0xd3, 0x29, 0xd0, 0xfc, 0x53, 0x0e, 0x4a, 0x49, 0x20, 0xd1, 0x7d, 0x7d, 0x67, 0xc6, 0xe2,
|
||||
0xa8, 0x25, 0x58, 0xe5, 0x6f, 0x7c, 0x5d, 0xf7, 0x61, 0x29, 0x64, 0x91, 0xe0, 0x56, 0x6e, 0x33,
|
||||
0xbf, 0xa8, 0x44, 0x0f, 0x59, 0x24, 0xf6, 0x58, 0xf0, 0xd6, 0xeb, 0xe1, 0x18, 0x8c, 0xde, 0x40,
|
||||
0x65, 0xe4, 0x45, 0x62, 0x48, 0x7c, 0xdb, 0x0b, 0xb9, 0x95, 0x57, 0xdc, 0x1f, 0x5c, 0xa4, 0xb2,
|
||||
0xf5, 0x3a, 0xc6, 0x77, 0x0f, 0x3b, 0xd5, 0xc9, 0x69, 0x03, 0xa6, 0x5b, 0x8e, 0x41, 0x8b, 0xea,
|
||||
0x86, 0xbc, 0xf6, 0x1c, 0xca, 0xd3, 0x13, 0x74, 0x17, 0x20, 0x88, 0x2b, 0xd2, 0x9e, 0x66, 0xf6,
|
||||
0xca, 0xe4, 0xb4, 0x51, 0xd6, 0x75, 0xda, 0xdd, 0xc7, 0x65, 0x0d, 0xe8, 0xba, 0x08, 0x81, 0x49,
|
||||
0x5c, 0x37, 0x52, 0x79, 0x5e, 0xc6, 0x6a, 0xdd, 0xfc, 0x63, 0x11, 0xcc, 0x57, 0x84, 0xf7, 0xaf,
|
||||
0xbb, 0xab, 0x4a, 0x9d, 0x73, 0x95, 0x71, 0x17, 0x80, 0xc7, 0xf9, 0x26, 0xdd, 0x31, 0x67, 0xee,
|
||||
0xe8, 0x2c, 0x94, 0xee, 0x68, 0x40, 0xec, 0x0e, 0xf7, 0x99, 0x50, 0x45, 0x60, 0x62, 0xb5, 0x46,
|
||||
0xb7, 0xa0, 0x18, 0x30, 0x57, 0xd1, 0x0b, 0x8a, 0x0e, 0x93, 0xd3, 0x46, 0x41, 0xf6, 0x8a, 0xee,
|
||||
0x3e, 0x2e, 0xc8, 0xa3, 0xae, 0x2b, 0xdb, 0x14, 0x09, 0x02, 0x26, 0x88, 0xec, 0xc1, 0x5c, 0xb7,
|
||||
0xbb, 0xcc, 0xec, 0x6f, 0xcf, 0x60, 0x49, 0x9b, 0x4a, 0x31, 0xd1, 0x6b, 0xf8, 0x2a, 0xb1, 0x37,
|
||||
0x2d, 0xb0, 0xf4, 0x39, 0x02, 0x91, 0x96, 0x90, 0x3a, 0x49, 0x8d, 0x85, 0xf2, 0xe2, 0xb1, 0xa0,
|
||||
0x22, 0x98, 0x35, 0x16, 0x3a, 0xb0, 0xe2, 0x52, 0xee, 0x45, 0xd4, 0x55, 0x6d, 0x82, 0xaa, 0xca,
|
||||
0xac, 0x6e, 0x7f, 0xf7, 0x22, 0x21, 0x14, 0x2f, 0x6b, 0x8e, 0xda, 0xa1, 0x36, 0x94, 0x74, 0xde,
|
||||
0x70, 0xab, 0xa2, 0x72, 0xf7, 0x8a, 0xe3, 0x60, 0x4a, 0x3b, 0xd3, 0xe6, 0x96, 0x3f, 0xab, 0xcd,
|
||||
0x3d, 0x00, 0xf0, 0x59, 0xcf, 0x76, 0x23, 0x6f, 0x44, 0x23, 0x6b, 0x45, 0x3f, 0x12, 0x32, 0xb8,
|
||||
0xfb, 0x0a, 0x81, 0xcb, 0x3e, 0xeb, 0xc5, 0xcb, 0xb9, 0xa6, 0x54, 0xfd, 0xcc, 0xa6, 0x44, 0xa0,
|
||||
0x46, 0x38, 0xf7, 0x7a, 0x01, 0x75, 0xed, 0x1e, 0x0d, 0x68, 0xe4, 0x39, 0x76, 0x44, 0x39, 0x1b,
|
||||
0x46, 0x0e, 0xe5, 0xd6, 0x37, 0x54, 0x24, 0x32, 0xc7, 0xfc, 0x93, 0x18, 0x8c, 0x35, 0x16, 0x5b,
|
||||
0x89, 0x98, 0x73, 0x07, 0x7c, 0xb7, 0x76, 0x7c, 0xd2, 0x5c, 0x87, 0xb5, 0x74, 0x9b, 0xda, 0x31,
|
||||
0x1e, 0x1b, 0x4f, 0x8d, 0x43, 0xa3, 0xf9, 0xf7, 0x1c, 0x7c, 0x73, 0x2e, 0xa6, 0xe8, 0xc7, 0x50,
|
||||
0xd4, 0x51, 0xbd, 0xe8, 0xb1, 0xa6, 0x79, 0x38, 0xc1, 0xa2, 0x0d, 0x28, 0xcb, 0x12, 0xa7, 0x9c,
|
||||
0xd3, 0xb8, 0x79, 0x95, 0xf1, 0xec, 0x03, 0xb2, 0xa0, 0x48, 0x7c, 0x8f, 0xc8, 0xb3, 0xbc, 0x3a,
|
||||
0x4b, 0xb6, 0x68, 0x08, 0xeb, 0x71, 0xe8, 0xed, 0xd9, 0x68, 0xb7, 0x59, 0x28, 0xb8, 0x65, 0x2a,
|
||||
0xff, 0x1f, 0x5d, 0x29, 0x13, 0xf4, 0xe5, 0xcc, 0x3e, 0xbc, 0x08, 0x05, 0x3f, 0x08, 0x44, 0x34,
|
||||
0xc6, 0x6b, 0x6e, 0xc6, 0x51, 0xed, 0x09, 0xdc, 0x5c, 0x48, 0x41, 0xab, 0x90, 0xef, 0xd3, 0x71,
|
||||
0xdc, 0x9e, 0xb0, 0x5c, 0xa2, 0x35, 0x58, 0x1a, 0x11, 0x7f, 0x48, 0x75, 0x37, 0x8b, 0x37, 0xbb,
|
||||
0xb9, 0x1d, 0xa3, 0xf9, 0x21, 0x07, 0x45, 0x6d, 0xce, 0x75, 0x8f, 0x7c, 0xad, 0x76, 0xae, 0xb1,
|
||||
0x3d, 0x84, 0x65, 0x1d, 0xd2, 0xb8, 0x22, 0xcd, 0x4b, 0x73, 0xba, 0x12, 0xe3, 0xe3, 0x6a, 0x7c,
|
||||
0x08, 0xa6, 0x17, 0x92, 0x81, 0x1e, 0xf7, 0x99, 0x9a, 0xbb, 0x87, 0xed, 0xe7, 0x2f, 0xc2, 0xb8,
|
||||
0xb1, 0x94, 0x26, 0xa7, 0x0d, 0x53, 0x7e, 0xc0, 0x8a, 0x96, 0x39, 0x18, 0xff, 0xb2, 0x04, 0xc5,
|
||||
0x3d, 0x7f, 0xc8, 0x05, 0x8d, 0xae, 0x3b, 0x48, 0x5a, 0xed, 0x5c, 0x90, 0xf6, 0xa0, 0x18, 0x31,
|
||||
0x26, 0x6c, 0x87, 0x5c, 0x14, 0x1f, 0xcc, 0x98, 0xd8, 0x6b, 0x77, 0xaa, 0x92, 0x28, 0x7b, 0x7b,
|
||||
0xbc, 0xc7, 0x05, 0x49, 0xdd, 0x23, 0xe8, 0x0d, 0xac, 0x27, 0x13, 0xf1, 0x88, 0x31, 0xc1, 0x45,
|
||||
0x44, 0x42, 0xbb, 0x4f, 0xc7, 0xf2, 0xad, 0x94, 0x5f, 0xf4, 0x36, 0x3e, 0x08, 0x9c, 0x68, 0xac,
|
||||
0x82, 0xf7, 0x8c, 0x8e, 0xf1, 0x9a, 0x16, 0xd0, 0x49, 0xf8, 0xcf, 0xe8, 0x98, 0xa3, 0x47, 0xb0,
|
||||
0x41, 0xa7, 0x30, 0x29, 0xd1, 0xf6, 0xc9, 0x40, 0xce, 0x7a, 0xdb, 0xf1, 0x99, 0xd3, 0x57, 0xe3,
|
||||
0xc6, 0xc4, 0x37, 0x69, 0x5a, 0xd4, 0x2f, 0x63, 0xc4, 0x9e, 0x04, 0x20, 0x0e, 0xd6, 0x91, 0x4f,
|
||||
0x9c, 0xbe, 0xef, 0x71, 0xf9, 0xef, 0x4f, 0xea, 0xb9, 0x2b, 0x27, 0x86, 0xb4, 0x6d, 0xe7, 0x82,
|
||||
0x68, 0xb5, 0x3a, 0x33, 0x6e, 0xea, 0xf1, 0xac, 0x2b, 0xea, 0xdb, 0x47, 0xd9, 0xa7, 0xa8, 0x03,
|
||||
0x95, 0x61, 0x20, 0xd5, 0xc7, 0x31, 0x28, 0x5f, 0x35, 0x06, 0x10, 0xb3, 0xa4, 0xe7, 0xb5, 0x11,
|
||||
0x6c, 0x5c, 0xa4, 0x3c, 0xa3, 0x36, 0x1f, 0xa7, 0x6b, 0xb3, 0xb2, 0x7d, 0x27, 0x4b, 0x5f, 0xb6,
|
||||
0xc8, 0x54, 0x1d, 0x67, 0xa6, 0xed, 0xdf, 0x0c, 0x28, 0xbc, 0xa4, 0x4e, 0x44, 0xc5, 0x17, 0xcd,
|
||||
0xda, 0x9d, 0x33, 0x59, 0x5b, 0xcf, 0x7e, 0x08, 0x4b, 0xad, 0x73, 0x49, 0x5b, 0x83, 0x92, 0x17,
|
||||
0x08, 0x1a, 0x05, 0xc4, 0x57, 0x59, 0x5b, 0xc2, 0xd3, 0x7d, 0xa6, 0x03, 0x1f, 0x0c, 0x28, 0xc4,
|
||||
0x2f, 0xc5, 0xeb, 0x76, 0x20, 0xd6, 0x7a, 0xde, 0x81, 0x4c, 0x23, 0xff, 0x63, 0x40, 0x29, 0x19,
|
||||
0x58, 0x5f, 0xd4, 0xcc, 0x73, 0x2f, 0xaf, 0xfc, 0xff, 0xfd, 0xf2, 0x42, 0x60, 0xf6, 0xbd, 0x40,
|
||||
0xbf, 0x11, 0xb1, 0x5a, 0xa3, 0x16, 0x14, 0x43, 0x32, 0xf6, 0x19, 0x71, 0x75, 0xa3, 0x5c, 0x9b,
|
||||
0xfb, 0x61, 0xa1, 0x1d, 0x8c, 0x71, 0x02, 0xda, 0x5d, 0x3b, 0x3e, 0x69, 0xae, 0x42, 0x35, 0xed,
|
||||
0xf9, 0x3b, 0xa3, 0xf9, 0x4f, 0x03, 0xca, 0x07, 0xbf, 0x17, 0x34, 0x50, 0xef, 0x81, 0xaf, 0xa5,
|
||||
0xf3, 0x9b, 0xf3, 0x3f, 0x3e, 0x94, 0xcf, 0xfc, 0xae, 0x90, 0x75, 0xa9, 0x1d, 0xeb, 0xe3, 0xa7,
|
||||
0xfa, 0x8d, 0x7f, 0x7d, 0xaa, 0xdf, 0xf8, 0xc3, 0xa4, 0x6e, 0x7c, 0x9c, 0xd4, 0x8d, 0x7f, 0x4c,
|
||||
0xea, 0xc6, 0xbf, 0x27, 0x75, 0xe3, 0xa8, 0xa0, 0xe2, 0xf3, 0xa3, 0xff, 0x05, 0x00, 0x00, 0xff,
|
||||
0xff, 0x34, 0x0b, 0x7d, 0x79, 0x43, 0x13, 0x00, 0x00,
|
||||
}
|
||||
|
|
6
vendor/github.com/docker/swarmkit/api/objects.proto
generated
vendored
6
vendor/github.com/docker/swarmkit/api/objects.proto
generated
vendored
|
@ -2,12 +2,12 @@ syntax = "proto3";
|
|||
|
||||
package docker.swarmkit.v1;
|
||||
|
||||
import "types.proto";
|
||||
import "specs.proto";
|
||||
import "github.com/docker/swarmkit/api/types.proto";
|
||||
import "github.com/docker/swarmkit/api/specs.proto";
|
||||
import "google/protobuf/timestamp.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/protobuf/any.proto";
|
||||
import "plugin/plugin.proto";
|
||||
import "github.com/docker/swarmkit/protobuf/plugin/plugin.proto";
|
||||
|
||||
// This file contains definitions for all first-class objects in the cluster
|
||||
// API. Such types typically have a corresponding specification, with the
|
||||
|
|
131
vendor/github.com/docker/swarmkit/api/raft.pb.go
generated
vendored
131
vendor/github.com/docker/swarmkit/api/raft.pb.go
generated
vendored
|
@ -1,5 +1,5 @@
|
|||
// Code generated by protoc-gen-gogo.
|
||||
// source: raft.proto
|
||||
// source: github.com/docker/swarmkit/api/raft.proto
|
||||
// DO NOT EDIT!
|
||||
|
||||
package api
|
||||
|
@ -907,7 +907,7 @@ var _Raft_serviceDesc = grpc.ServiceDesc{
|
|||
},
|
||||
},
|
||||
Streams: []grpc.StreamDesc{},
|
||||
Metadata: "raft.proto",
|
||||
Metadata: "github.com/docker/swarmkit/api/raft.proto",
|
||||
}
|
||||
|
||||
// Client API for RaftMembership service
|
||||
|
@ -1008,7 +1008,7 @@ var _RaftMembership_serviceDesc = grpc.ServiceDesc{
|
|||
},
|
||||
},
|
||||
Streams: []grpc.StreamDesc{},
|
||||
Metadata: "raft.proto",
|
||||
Metadata: "github.com/docker/swarmkit/api/raft.proto",
|
||||
}
|
||||
|
||||
func (m *RaftMember) Marshal() (dAtA []byte, err error) {
|
||||
|
@ -3571,68 +3571,69 @@ var (
|
|||
ErrIntOverflowRaft = fmt.Errorf("proto: integer overflow")
|
||||
)
|
||||
|
||||
func init() { proto.RegisterFile("raft.proto", fileDescriptorRaft) }
|
||||
func init() { proto.RegisterFile("github.com/docker/swarmkit/api/raft.proto", fileDescriptorRaft) }
|
||||
|
||||
var fileDescriptorRaft = []byte{
|
||||
// 953 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x96, 0x4d, 0x6f, 0x1b, 0x45,
|
||||
0x18, 0xc7, 0x77, 0xd7, 0x5b, 0x27, 0x79, 0xdc, 0xbc, 0x68, 0x42, 0xc2, 0x76, 0x29, 0x8e, 0xbb,
|
||||
0x45, 0xc2, 0x2d, 0x64, 0x2d, 0x0c, 0x12, 0xa8, 0xd0, 0x43, 0xec, 0x58, 0xb2, 0x69, 0xeb, 0x54,
|
||||
0x9b, 0x04, 0x7a, 0x0b, 0xeb, 0xdd, 0x89, 0xbb, 0xd8, 0xde, 0x31, 0x33, 0x63, 0x07, 0x2e, 0xa8,
|
||||
0x47, 0x94, 0x2b, 0x07, 0x10, 0x52, 0x4f, 0x70, 0xee, 0x07, 0xe0, 0x03, 0xa0, 0x88, 0x13, 0x37,
|
||||
0x38, 0x45, 0xd4, 0x1f, 0x00, 0xbe, 0x02, 0x9a, 0xd9, 0x5d, 0x3b, 0x38, 0x6b, 0x37, 0x17, 0x7b,
|
||||
0x3c, 0xf3, 0xfb, 0x3f, 0xff, 0x79, 0xe6, 0xe5, 0x19, 0x03, 0x50, 0xf7, 0x98, 0xdb, 0x7d, 0x4a,
|
||||
0x38, 0x41, 0xc8, 0x27, 0x5e, 0x07, 0x53, 0x9b, 0x9d, 0xb8, 0xb4, 0xd7, 0x09, 0xb8, 0x3d, 0x7c,
|
||||
0xcf, 0x5c, 0x26, 0xad, 0x2f, 0xb1, 0xc7, 0x59, 0x84, 0x98, 0x39, 0xfe, 0x4d, 0x1f, 0x27, 0x3f,
|
||||
0xb6, 0xdb, 0x01, 0x7f, 0x3a, 0x68, 0xd9, 0x1e, 0xe9, 0x95, 0x3c, 0x42, 0x31, 0x61, 0x25, 0xcc,
|
||||
0x3d, 0xbf, 0x24, 0x42, 0xca, 0x8f, 0x7e, 0xab, 0x34, 0x09, 0x6f, 0xbe, 0xd6, 0x26, 0x6d, 0x22,
|
||||
0x9b, 0x25, 0xd1, 0x8a, 0x7b, 0xd7, 0xfb, 0xdd, 0x41, 0x3b, 0x08, 0x4b, 0xd1, 0x57, 0xd4, 0x69,
|
||||
0xbd, 0x50, 0x01, 0x1c, 0xf7, 0x98, 0x3f, 0xc2, 0xbd, 0x16, 0xa6, 0xe8, 0x36, 0x2c, 0x88, 0x38,
|
||||
0x47, 0x81, 0x6f, 0xa8, 0x05, 0xb5, 0xa8, 0x57, 0x60, 0x74, 0xbe, 0x95, 0x15, 0x40, 0x63, 0xd7,
|
||||
0xc9, 0x8a, 0xa1, 0x86, 0x2f, 0xa0, 0x90, 0xf8, 0x58, 0x40, 0x5a, 0x41, 0x2d, 0x2e, 0x45, 0x50,
|
||||
0x93, 0xf8, 0x58, 0x40, 0x62, 0xa8, 0xe1, 0x23, 0x04, 0xba, 0xeb, 0xfb, 0xd4, 0xc8, 0x08, 0xc2,
|
||||
0x91, 0x6d, 0x54, 0x81, 0x2c, 0xe3, 0x2e, 0x1f, 0x30, 0x43, 0x2f, 0xa8, 0xc5, 0x5c, 0xf9, 0x2d,
|
||||
0xfb, 0xf2, 0x3a, 0xd8, 0x93, 0xd9, 0xec, 0x4b, 0xb6, 0xa2, 0x9f, 0x9d, 0x6f, 0x29, 0x4e, 0xac,
|
||||
0xb4, 0x6e, 0x41, 0xee, 0x53, 0x12, 0x84, 0x0e, 0xfe, 0x6a, 0x80, 0x19, 0x1f, 0xdb, 0xa8, 0x13,
|
||||
0x1b, 0xeb, 0x27, 0x15, 0xae, 0x47, 0x0c, 0xeb, 0x93, 0x90, 0xe1, 0xab, 0x65, 0xf5, 0x11, 0x2c,
|
||||
0xf4, 0xa4, 0x2d, 0x33, 0xb4, 0x42, 0xa6, 0x98, 0x2b, 0xe7, 0xe7, 0xcf, 0xce, 0x49, 0x70, 0xf4,
|
||||
0x0e, 0xac, 0x52, 0xdc, 0x23, 0x43, 0xec, 0x1f, 0x25, 0x11, 0x32, 0x85, 0x4c, 0x51, 0xaf, 0x68,
|
||||
0x6b, 0x8a, 0xb3, 0x12, 0x0f, 0x45, 0x22, 0x66, 0x55, 0xe0, 0xfa, 0x43, 0xec, 0x0e, 0x71, 0x92,
|
||||
0x40, 0x19, 0x74, 0xb1, 0x62, 0x72, 0x62, 0xaf, 0xf6, 0x94, 0xac, 0xb5, 0x0a, 0xcb, 0x71, 0x8c,
|
||||
0x28, 0x41, 0xeb, 0x21, 0xdc, 0x78, 0x4c, 0x89, 0x87, 0x19, 0x8b, 0x58, 0xc6, 0xdc, 0xf6, 0xd8,
|
||||
0xe1, 0x8e, 0x48, 0x4c, 0xf6, 0xc4, 0x26, 0xab, 0x76, 0x74, 0x64, 0xec, 0x04, 0x4c, 0xc6, 0xef,
|
||||
0xe9, 0xcf, 0x7e, 0xb0, 0x14, 0xeb, 0x26, 0x98, 0x69, 0xd1, 0x62, 0xaf, 0x4f, 0x60, 0xc3, 0xc1,
|
||||
0x8c, 0x74, 0x87, 0x78, 0xc7, 0xf7, 0xa9, 0x80, 0x62, 0x9f, 0xab, 0xac, 0xb2, 0xf5, 0x2e, 0x6c,
|
||||
0x4e, 0xab, 0xe3, 0x4d, 0x4a, 0xdb, 0xc9, 0x2e, 0xac, 0x37, 0x42, 0x8e, 0x69, 0xe8, 0x76, 0x45,
|
||||
0x9c, 0xc4, 0x69, 0x13, 0xb4, 0xb1, 0x49, 0x76, 0x74, 0xbe, 0xa5, 0x35, 0x76, 0x1d, 0x2d, 0xf0,
|
||||
0xd1, 0x7d, 0xc8, 0xba, 0x1e, 0x0f, 0x48, 0x18, 0xef, 0xe0, 0x56, 0xda, 0x6a, 0xee, 0x73, 0x42,
|
||||
0xf1, 0x8e, 0xc4, 0x92, 0xa3, 0x15, 0x89, 0xac, 0xdf, 0x74, 0xc8, 0x5d, 0x18, 0x45, 0x1f, 0x8f,
|
||||
0xc3, 0x09, 0xab, 0x95, 0xf2, 0xed, 0x57, 0x84, 0x7b, 0x10, 0x84, 0x7e, 0x12, 0x0c, 0xd9, 0xf1,
|
||||
0xbe, 0x6a, 0x72, 0xc9, 0x8d, 0x34, 0xa9, 0xb8, 0x31, 0x75, 0x25, 0xda, 0x53, 0xf4, 0x21, 0x2c,
|
||||
0x30, 0x4c, 0x87, 0x81, 0x87, 0xe5, 0x95, 0xc9, 0x95, 0xdf, 0x48, 0x75, 0x8b, 0x90, 0xba, 0xe2,
|
||||
0x24, 0xb4, 0x30, 0xe2, 0x2e, 0xeb, 0xc4, 0x57, 0x2a, 0xd5, 0xe8, 0xc0, 0x65, 0x1d, 0x61, 0x24,
|
||||
0x38, 0x61, 0x14, 0x62, 0x7e, 0x42, 0x68, 0xc7, 0xb8, 0x36, 0xdb, 0xa8, 0x19, 0x21, 0xc2, 0x28,
|
||||
0xa6, 0x85, 0xd0, 0xeb, 0x0e, 0x18, 0xc7, 0xd4, 0xc8, 0xce, 0x16, 0x56, 0x23, 0x44, 0x08, 0x63,
|
||||
0x1a, 0x7d, 0x00, 0x59, 0x86, 0x3d, 0x8a, 0xb9, 0xb1, 0x20, 0x75, 0x66, 0x7a, 0x66, 0x82, 0xa8,
|
||||
0x8b, 0x8b, 0x2e, 0x5b, 0xe8, 0x1e, 0x2c, 0x52, 0xcc, 0xc8, 0x80, 0x7a, 0xd8, 0x58, 0x94, 0xba,
|
||||
0x9b, 0xa9, 0x97, 0x23, 0x66, 0xea, 0x8a, 0x33, 0xe6, 0xd1, 0x7d, 0x58, 0xc2, 0x5f, 0x73, 0x1c,
|
||||
0x32, 0xb1, 0x79, 0x4b, 0x52, 0xfc, 0x66, 0x9a, 0xb8, 0x96, 0x40, 0x75, 0xc5, 0x99, 0x28, 0xc4,
|
||||
0x84, 0x3d, 0x12, 0x1e, 0x07, 0x6d, 0x03, 0x66, 0x4f, 0xb8, 0x2a, 0x09, 0x31, 0xe1, 0x88, 0xad,
|
||||
0x2c, 0x42, 0x96, 0xbb, 0xb4, 0x8d, 0xf9, 0xdd, 0x7f, 0x55, 0x58, 0x9d, 0x3a, 0x17, 0xe8, 0x6d,
|
||||
0x58, 0x38, 0x6c, 0x3e, 0x68, 0xee, 0x7d, 0xde, 0x5c, 0x53, 0x4c, 0xf3, 0xf4, 0x79, 0x61, 0x73,
|
||||
0x8a, 0x38, 0x0c, 0x3b, 0x21, 0x39, 0x09, 0x51, 0x19, 0xd6, 0xf7, 0x0f, 0xf6, 0x9c, 0xda, 0xd1,
|
||||
0x4e, 0xf5, 0xa0, 0xb1, 0xd7, 0x3c, 0xaa, 0x3a, 0xb5, 0x9d, 0x83, 0xda, 0x9a, 0x6a, 0xde, 0x38,
|
||||
0x7d, 0x5e, 0xd8, 0x98, 0x12, 0x55, 0x29, 0x76, 0x39, 0xbe, 0xa4, 0x39, 0x7c, 0xbc, 0x2b, 0x34,
|
||||
0x5a, 0xaa, 0xe6, 0xb0, 0xef, 0xa7, 0x69, 0x9c, 0xda, 0xa3, 0xbd, 0xcf, 0x6a, 0x6b, 0x99, 0x54,
|
||||
0x8d, 0x23, 0x8b, 0x98, 0xf9, 0xfa, 0x77, 0x3f, 0xe7, 0x95, 0x5f, 0x7f, 0xc9, 0x4f, 0x67, 0x57,
|
||||
0xfe, 0x5e, 0x03, 0x5d, 0xdc, 0x50, 0x74, 0xaa, 0x02, 0xba, 0x5c, 0x3c, 0xd0, 0x76, 0xda, 0x0a,
|
||||
0xce, 0x2c, 0x59, 0xa6, 0x7d, 0x55, 0x3c, 0xae, 0x49, 0x1b, 0xbf, 0xbf, 0xf8, 0xe7, 0x47, 0x6d,
|
||||
0x15, 0x96, 0x25, 0xbf, 0xdd, 0x73, 0x43, 0xb7, 0x8d, 0x29, 0xfa, 0x16, 0x56, 0xfe, 0x5f, 0x6c,
|
||||
0xd0, 0x9d, 0x59, 0x47, 0xe8, 0x52, 0x39, 0x33, 0xef, 0x5e, 0x05, 0x9d, 0xeb, 0x5f, 0xfe, 0x53,
|
||||
0x85, 0x95, 0x49, 0xf1, 0x66, 0x4f, 0x83, 0x3e, 0xfa, 0x02, 0x74, 0xf1, 0x34, 0xa1, 0xd4, 0xd2,
|
||||
0x74, 0xe1, 0x61, 0x33, 0x0b, 0xb3, 0x81, 0xf9, 0x49, 0x7b, 0x70, 0x4d, 0x3e, 0x0e, 0x28, 0x35,
|
||||
0xc2, 0xc5, 0xb7, 0xc7, 0xbc, 0x35, 0x87, 0x98, 0x6b, 0x52, 0x31, 0xce, 0x5e, 0xe6, 0x95, 0xbf,
|
||||
0x5e, 0xe6, 0x95, 0x67, 0xa3, 0xbc, 0x7a, 0x36, 0xca, 0xab, 0x7f, 0x8c, 0xf2, 0xea, 0xdf, 0xa3,
|
||||
0xbc, 0xfa, 0x24, 0xf3, 0x44, 0x6f, 0x65, 0xe5, 0x7f, 0x8b, 0xf7, 0xff, 0x0b, 0x00, 0x00, 0xff,
|
||||
0xff, 0x9a, 0xef, 0x6e, 0xdb, 0xf3, 0x08, 0x00, 0x00,
|
||||
// 974 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x96, 0x4f, 0x6f, 0x1b, 0x45,
|
||||
0x18, 0xc6, 0x77, 0xd7, 0x5b, 0x27, 0x79, 0xd3, 0x26, 0xd1, 0x94, 0x84, 0xed, 0x52, 0x1c, 0x77,
|
||||
0x8b, 0x84, 0x13, 0x9a, 0xb5, 0x30, 0x48, 0x45, 0x85, 0x1e, 0x62, 0xc7, 0x92, 0x4d, 0x5b, 0xa7,
|
||||
0xda, 0x24, 0xd0, 0x5b, 0x58, 0xef, 0x4e, 0xdc, 0xc5, 0xf6, 0x8e, 0x99, 0x19, 0x3b, 0x70, 0x41,
|
||||
0x3d, 0xa2, 0x5c, 0x39, 0x80, 0x90, 0x7a, 0x82, 0x73, 0x3f, 0x00, 0x1f, 0x00, 0x45, 0x9c, 0xb8,
|
||||
0xc1, 0x29, 0xa2, 0xfe, 0x00, 0xf0, 0x15, 0xd0, 0xcc, 0xee, 0x3a, 0xc6, 0x59, 0x3b, 0xb9, 0x24,
|
||||
0xa3, 0x9d, 0xdf, 0xf3, 0x3e, 0xef, 0x3b, 0x7f, 0xde, 0x31, 0x6c, 0xb4, 0x02, 0xfe, 0xbc, 0xdf,
|
||||
0xb4, 0x3d, 0xd2, 0x2d, 0xfa, 0xc4, 0x6b, 0x63, 0x5a, 0x64, 0xc7, 0x2e, 0xed, 0xb6, 0x03, 0x5e,
|
||||
0x74, 0x7b, 0x41, 0x91, 0xba, 0x47, 0xdc, 0xee, 0x51, 0xc2, 0x09, 0x42, 0xd1, 0xbc, 0x9d, 0xcc,
|
||||
0xdb, 0x83, 0xf7, 0xcd, 0x7b, 0x97, 0xc8, 0x49, 0xf3, 0x4b, 0xec, 0x71, 0x16, 0x45, 0x30, 0x37,
|
||||
0x2f, 0xa1, 0xf9, 0x37, 0x3d, 0x9c, 0xb0, 0x5b, 0x63, 0xac, 0x47, 0x28, 0x26, 0xac, 0x88, 0xb9,
|
||||
0xe7, 0xcb, 0x84, 0xe4, 0x9f, 0x5e, 0x73, 0x2c, 0x39, 0xf3, 0x8d, 0x16, 0x69, 0x11, 0x39, 0x2c,
|
||||
0x8a, 0x51, 0xfc, 0xf5, 0xfe, 0x0c, 0x43, 0x49, 0x34, 0xfb, 0x47, 0xc5, 0x5e, 0xa7, 0xdf, 0x0a,
|
||||
0xc2, 0xf8, 0x5f, 0x24, 0xb4, 0x5e, 0xa9, 0x00, 0x8e, 0x7b, 0xc4, 0x9f, 0xe0, 0x6e, 0x13, 0x53,
|
||||
0x74, 0x17, 0xe6, 0x84, 0xd7, 0x61, 0xe0, 0x1b, 0x6a, 0x5e, 0x2d, 0xe8, 0x65, 0x18, 0x9e, 0xad,
|
||||
0x67, 0x05, 0x50, 0xdf, 0x71, 0xb2, 0x62, 0xaa, 0xee, 0x0b, 0x28, 0x24, 0x3e, 0x16, 0x90, 0x96,
|
||||
0x57, 0x0b, 0x0b, 0x11, 0xd4, 0x20, 0x3e, 0x16, 0x90, 0x98, 0xaa, 0xfb, 0x08, 0x81, 0xee, 0xfa,
|
||||
0x3e, 0x35, 0x32, 0x82, 0x70, 0xe4, 0x18, 0x95, 0x21, 0xcb, 0xb8, 0xcb, 0xfb, 0xcc, 0xd0, 0xf3,
|
||||
0x6a, 0x61, 0xb1, 0xf4, 0x8e, 0x7d, 0x71, 0xa5, 0xed, 0xf3, 0x6c, 0xf6, 0x24, 0x5b, 0xd6, 0x4f,
|
||||
0xcf, 0xd6, 0x15, 0x27, 0x56, 0x5a, 0x77, 0x60, 0xf1, 0x53, 0x12, 0x84, 0x0e, 0xfe, 0xaa, 0x8f,
|
||||
0x19, 0x1f, 0xd9, 0xa8, 0xe7, 0x36, 0xd6, 0x4f, 0x2a, 0x5c, 0x8f, 0x18, 0xd6, 0x23, 0x21, 0xc3,
|
||||
0x57, 0xab, 0xea, 0x23, 0x98, 0xeb, 0x4a, 0x5b, 0x66, 0x68, 0xf9, 0x4c, 0x61, 0xb1, 0x94, 0x9b,
|
||||
0x9d, 0x9d, 0x93, 0xe0, 0xe8, 0x3d, 0x58, 0xa6, 0xb8, 0x4b, 0x06, 0xd8, 0x3f, 0x4c, 0x22, 0x64,
|
||||
0xf2, 0x99, 0x82, 0x5e, 0xd6, 0x56, 0x14, 0x67, 0x29, 0x9e, 0x8a, 0x44, 0xcc, 0x2a, 0xc3, 0xf5,
|
||||
0xc7, 0xd8, 0x1d, 0xe0, 0xa4, 0x80, 0x12, 0xe8, 0x62, 0xc5, 0x64, 0x62, 0x97, 0x7b, 0x4a, 0xd6,
|
||||
0x5a, 0x86, 0x1b, 0x71, 0x8c, 0xa8, 0x40, 0xeb, 0x31, 0xdc, 0x7a, 0x4a, 0x89, 0x87, 0x19, 0x8b,
|
||||
0x58, 0xc6, 0xdc, 0xd6, 0xc8, 0x61, 0x43, 0x14, 0x26, 0xbf, 0xc4, 0x26, 0xcb, 0x76, 0x74, 0xac,
|
||||
0xec, 0x04, 0x4c, 0xe6, 0x1f, 0xe8, 0x2f, 0x7e, 0xb0, 0x14, 0xeb, 0x36, 0x98, 0x69, 0xd1, 0x62,
|
||||
0xaf, 0x4f, 0x60, 0xd5, 0xc1, 0x8c, 0x74, 0x06, 0x78, 0xdb, 0xf7, 0xa9, 0x80, 0x62, 0x9f, 0xab,
|
||||
0xac, 0xb2, 0x75, 0x0f, 0xd6, 0x26, 0xd5, 0xf1, 0x26, 0xa5, 0xed, 0x64, 0x07, 0x6e, 0xd6, 0x43,
|
||||
0x8e, 0x69, 0xe8, 0x76, 0x44, 0x9c, 0xc4, 0x69, 0x0d, 0xb4, 0x91, 0x49, 0x76, 0x78, 0xb6, 0xae,
|
||||
0xd5, 0x77, 0x1c, 0x2d, 0xf0, 0xd1, 0x43, 0xc8, 0xba, 0x1e, 0x0f, 0x48, 0x18, 0xef, 0xe0, 0x7a,
|
||||
0xda, 0x6a, 0xee, 0x71, 0x42, 0xf1, 0xb6, 0xc4, 0x92, 0xa3, 0x15, 0x89, 0xac, 0xdf, 0x74, 0x58,
|
||||
0x1c, 0x9b, 0x45, 0x1f, 0x8f, 0xc2, 0x09, 0xab, 0xa5, 0xd2, 0xdd, 0x4b, 0xc2, 0x3d, 0x0a, 0x42,
|
||||
0x3f, 0x09, 0x86, 0xec, 0x78, 0x5f, 0x35, 0xb9, 0xe4, 0x46, 0x9a, 0x54, 0xdc, 0x98, 0x9a, 0x12,
|
||||
0xed, 0x29, 0xba, 0x0f, 0x73, 0x0c, 0xd3, 0x41, 0xe0, 0x61, 0x79, 0x65, 0x16, 0x4b, 0x6f, 0xa5,
|
||||
0xba, 0x45, 0x48, 0x4d, 0x71, 0x12, 0x5a, 0x18, 0x71, 0x97, 0xb5, 0xe3, 0x2b, 0x95, 0x6a, 0xb4,
|
||||
0xef, 0xb2, 0xb6, 0x30, 0x12, 0x9c, 0x30, 0x0a, 0x31, 0x3f, 0x26, 0xb4, 0x6d, 0x5c, 0x9b, 0x6e,
|
||||
0xd4, 0x88, 0x10, 0x61, 0x14, 0xd3, 0x42, 0xe8, 0x75, 0xfa, 0x8c, 0x63, 0x6a, 0x64, 0xa7, 0x0b,
|
||||
0x2b, 0x11, 0x22, 0x84, 0x31, 0x8d, 0x3e, 0x84, 0x2c, 0xc3, 0x1e, 0xc5, 0xdc, 0x98, 0x93, 0x3a,
|
||||
0x33, 0xbd, 0x32, 0x41, 0xd4, 0xc4, 0x45, 0x97, 0x23, 0xf4, 0x00, 0xe6, 0x29, 0x66, 0xa4, 0x4f,
|
||||
0x3d, 0x6c, 0xcc, 0x4b, 0xdd, 0xed, 0xd4, 0xcb, 0x11, 0x33, 0x35, 0xc5, 0x19, 0xf1, 0xe8, 0x21,
|
||||
0x2c, 0xe0, 0xaf, 0x39, 0x0e, 0x99, 0xd8, 0xbc, 0x05, 0x29, 0x7e, 0x3b, 0x4d, 0x5c, 0x4d, 0xa0,
|
||||
0x9a, 0xe2, 0x9c, 0x2b, 0x44, 0xc2, 0x1e, 0x09, 0x8f, 0x82, 0x96, 0x01, 0xd3, 0x13, 0xae, 0x48,
|
||||
0x42, 0x24, 0x1c, 0xb1, 0xe5, 0x79, 0xc8, 0x72, 0x97, 0xb6, 0x30, 0xdf, 0xfc, 0x57, 0x85, 0xe5,
|
||||
0x89, 0x73, 0x81, 0xde, 0x85, 0xb9, 0x83, 0xc6, 0xa3, 0xc6, 0xee, 0xe7, 0x8d, 0x15, 0xc5, 0x34,
|
||||
0x4f, 0x5e, 0xe6, 0xd7, 0x26, 0x88, 0x83, 0xb0, 0x1d, 0x92, 0xe3, 0x10, 0x95, 0xe0, 0xe6, 0xde,
|
||||
0xfe, 0xae, 0x53, 0x3d, 0xdc, 0xae, 0xec, 0xd7, 0x77, 0x1b, 0x87, 0x15, 0xa7, 0xba, 0xbd, 0x5f,
|
||||
0x5d, 0x51, 0xcd, 0x5b, 0x27, 0x2f, 0xf3, 0xab, 0x13, 0xa2, 0x0a, 0xc5, 0x2e, 0xc7, 0x17, 0x34,
|
||||
0x07, 0x4f, 0x77, 0x84, 0x46, 0x4b, 0xd5, 0x1c, 0xf4, 0xfc, 0x34, 0x8d, 0x53, 0x7d, 0xb2, 0xfb,
|
||||
0x59, 0x75, 0x25, 0x93, 0xaa, 0x71, 0x64, 0x13, 0x33, 0xdf, 0xfc, 0xee, 0xe7, 0x9c, 0xf2, 0xeb,
|
||||
0x2f, 0xb9, 0xc9, 0xea, 0x4a, 0xdf, 0x6b, 0xa0, 0x8b, 0x1b, 0x8a, 0x4e, 0x54, 0x40, 0x17, 0x9b,
|
||||
0x07, 0xda, 0x4a, 0x5b, 0xc1, 0xa9, 0x2d, 0xcb, 0xb4, 0xaf, 0x8a, 0xc7, 0x3d, 0x69, 0xf5, 0xf7,
|
||||
0x57, 0xff, 0xfc, 0xa8, 0x2d, 0xc3, 0x0d, 0xc9, 0x6f, 0x75, 0xdd, 0xd0, 0x6d, 0x61, 0x8a, 0xbe,
|
||||
0x85, 0xa5, 0xff, 0x37, 0x1b, 0xb4, 0x31, 0xed, 0x08, 0x5d, 0x68, 0x67, 0xe6, 0xe6, 0x55, 0xd0,
|
||||
0x99, 0xfe, 0xa5, 0x3f, 0x55, 0x58, 0x3a, 0x6f, 0xde, 0xec, 0x79, 0xd0, 0x43, 0x5f, 0x80, 0x2e,
|
||||
0x9e, 0x26, 0x94, 0xda, 0x9a, 0xc6, 0x1e, 0x36, 0x33, 0x3f, 0x1d, 0x98, 0x5d, 0xb4, 0x07, 0xd7,
|
||||
0xe4, 0xe3, 0x80, 0x52, 0x23, 0x8c, 0xbf, 0x3d, 0xe6, 0x9d, 0x19, 0xc4, 0x4c, 0x93, 0xb2, 0x71,
|
||||
0xfa, 0x3a, 0xa7, 0xfc, 0xf5, 0x3a, 0xa7, 0xbc, 0x18, 0xe6, 0xd4, 0xd3, 0x61, 0x4e, 0xfd, 0x63,
|
||||
0x98, 0x53, 0xff, 0x1e, 0xe6, 0xd4, 0x67, 0x99, 0x67, 0x7a, 0x33, 0x2b, 0x7f, 0x5b, 0x7c, 0xf0,
|
||||
0x5f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x64, 0x01, 0xa3, 0x4f, 0x74, 0x09, 0x00, 0x00,
|
||||
}
|
||||
|
|
6
vendor/github.com/docker/swarmkit/api/raft.proto
generated
vendored
6
vendor/github.com/docker/swarmkit/api/raft.proto
generated
vendored
|
@ -2,11 +2,11 @@ syntax = "proto3";
|
|||
|
||||
package docker.swarmkit.v1;
|
||||
|
||||
import "objects.proto";
|
||||
import "types.proto";
|
||||
import "github.com/docker/swarmkit/api/objects.proto";
|
||||
import "github.com/docker/swarmkit/api/types.proto";
|
||||
import "github.com/coreos/etcd/raft/raftpb/raft.proto";
|
||||
import weak "gogoproto/gogo.proto";
|
||||
import weak "plugin/plugin.proto";
|
||||
import weak "github.com/docker/swarmkit/protobuf/plugin/plugin.proto";
|
||||
|
||||
// Raft defines the RPC communication between raft nodes.
|
||||
service Raft {
|
||||
|
|
58
vendor/github.com/docker/swarmkit/api/resource.pb.go
generated
vendored
58
vendor/github.com/docker/swarmkit/api/resource.pb.go
generated
vendored
|
@ -1,5 +1,5 @@
|
|||
// Code generated by protoc-gen-gogo.
|
||||
// source: resource.proto
|
||||
// source: github.com/docker/swarmkit/api/resource.proto
|
||||
// DO NOT EDIT!
|
||||
|
||||
package api
|
||||
|
@ -262,7 +262,7 @@ var _ResourceAllocator_serviceDesc = grpc.ServiceDesc{
|
|||
},
|
||||
},
|
||||
Streams: []grpc.StreamDesc{},
|
||||
Metadata: "resource.proto",
|
||||
Metadata: "github.com/docker/swarmkit/api/resource.proto",
|
||||
}
|
||||
|
||||
func (m *AttachNetworkRequest) Marshal() (dAtA []byte, err error) {
|
||||
|
@ -1061,31 +1061,35 @@ var (
|
|||
ErrIntOverflowResource = fmt.Errorf("proto: integer overflow")
|
||||
)
|
||||
|
||||
func init() { proto.RegisterFile("resource.proto", fileDescriptorResource) }
|
||||
func init() {
|
||||
proto.RegisterFile("github.com/docker/swarmkit/api/resource.proto", fileDescriptorResource)
|
||||
}
|
||||
|
||||
var fileDescriptorResource = []byte{
|
||||
// 368 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x2b, 0x4a, 0x2d, 0xce,
|
||||
0x2f, 0x2d, 0x4a, 0x4e, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x4a, 0xc9, 0x4f, 0xce,
|
||||
0x4e, 0x2d, 0xd2, 0x2b, 0x2e, 0x4f, 0x2c, 0xca, 0xcd, 0xce, 0x2c, 0xd1, 0x2b, 0x33, 0x94, 0xe2,
|
||||
0x2e, 0xa9, 0x2c, 0x48, 0x2d, 0x86, 0x28, 0x90, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, 0x33, 0xf5,
|
||||
0x41, 0x2c, 0xa8, 0xa8, 0x70, 0x41, 0x4e, 0x69, 0x7a, 0x66, 0x9e, 0x3e, 0x84, 0x82, 0x08, 0x2a,
|
||||
0xf5, 0x33, 0x72, 0x89, 0x38, 0x96, 0x94, 0x24, 0x26, 0x67, 0xf8, 0xa5, 0x96, 0x94, 0xe7, 0x17,
|
||||
0x65, 0x07, 0xa5, 0x16, 0x96, 0xa6, 0x16, 0x97, 0x08, 0x39, 0x73, 0xb1, 0x25, 0xe7, 0xe7, 0xa5,
|
||||
0x65, 0xa6, 0x4b, 0x30, 0x2a, 0x30, 0x6a, 0x70, 0x1b, 0x69, 0xeb, 0x61, 0xda, 0xaa, 0x07, 0xd5,
|
||||
0x03, 0x31, 0x20, 0x37, 0x35, 0xaf, 0xc4, 0x19, 0xac, 0x25, 0x08, 0xaa, 0x55, 0xc8, 0x88, 0x8b,
|
||||
0x27, 0x39, 0x3f, 0xaf, 0x24, 0x31, 0x33, 0x2f, 0xb5, 0x28, 0x3e, 0x33, 0x45, 0x82, 0x49, 0x81,
|
||||
0x51, 0x83, 0xd3, 0x89, 0xff, 0xd1, 0x3d, 0x79, 0x6e, 0x67, 0x98, 0xb8, 0xa7, 0x4b, 0x10, 0x37,
|
||||
0x5c, 0x91, 0x67, 0x8a, 0x92, 0x1f, 0x97, 0x28, 0x9a, 0x83, 0x8a, 0x0b, 0xf2, 0xf3, 0x8a, 0x53,
|
||||
0x85, 0x4c, 0xb9, 0x78, 0x13, 0xe1, 0x16, 0x81, 0x4c, 0x63, 0x04, 0x9b, 0x26, 0xf0, 0xe8, 0x9e,
|
||||
0x3c, 0x0f, 0xc2, 0x05, 0x9e, 0x2e, 0x41, 0x3c, 0x08, 0x65, 0x9e, 0x29, 0x4a, 0xbe, 0x5c, 0x22,
|
||||
0x2e, 0xa9, 0x58, 0x3c, 0x48, 0xa6, 0x71, 0xe2, 0x5c, 0xa2, 0x68, 0xc6, 0x41, 0x9c, 0x67, 0xb4,
|
||||
0x9a, 0x89, 0x4b, 0x30, 0x08, 0x1a, 0x51, 0x8e, 0x39, 0x39, 0xf9, 0xc9, 0x89, 0x25, 0xf9, 0x45,
|
||||
0x42, 0x9d, 0x8c, 0x5c, 0xbc, 0x28, 0xde, 0x11, 0xd2, 0xc0, 0x16, 0x90, 0xd8, 0xa2, 0x40, 0x4a,
|
||||
0x93, 0x08, 0x95, 0x10, 0xcb, 0x95, 0x94, 0x4f, 0xad, 0x7b, 0x37, 0x83, 0x49, 0x96, 0x8b, 0x07,
|
||||
0xac, 0x54, 0x17, 0x24, 0x97, 0x5a, 0xc4, 0xc5, 0x0b, 0xe1, 0xe5, 0x26, 0xe6, 0x25, 0xa6, 0xa7,
|
||||
0x42, 0xdc, 0x82, 0xe2, 0x76, 0xec, 0x6e, 0xc1, 0x16, 0x5a, 0xd8, 0xdd, 0x82, 0x35, 0x20, 0x88,
|
||||
0x72, 0x8b, 0x93, 0xc4, 0x89, 0x87, 0x72, 0x0c, 0x37, 0x1e, 0xca, 0x31, 0x34, 0x3c, 0x92, 0x63,
|
||||
0x3c, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x93, 0xd8, 0xc0,
|
||||
0x09, 0xd3, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x1c, 0x48, 0x12, 0x41, 0xf6, 0x02, 0x00, 0x00,
|
||||
// 397 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x92, 0xcf, 0x4e, 0xf2, 0x40,
|
||||
0x14, 0xc5, 0x19, 0x16, 0x24, 0xdf, 0x50, 0xf2, 0x69, 0x03, 0x91, 0x90, 0x58, 0x48, 0xdd, 0xa0,
|
||||
0x86, 0x36, 0x62, 0x8c, 0x6b, 0xfe, 0x6c, 0xba, 0x90, 0x45, 0x5f, 0xc0, 0x0c, 0xed, 0x50, 0x1a,
|
||||
0x68, 0xa7, 0x4e, 0xa7, 0x12, 0x77, 0x6e, 0x5d, 0xb9, 0xf5, 0x1d, 0x4c, 0x7c, 0x0e, 0xe2, 0xca,
|
||||
0xa5, 0x2b, 0x22, 0x7d, 0x00, 0x9f, 0xc1, 0xd0, 0x29, 0x10, 0x70, 0xa2, 0xc4, 0x55, 0xa7, 0xd3,
|
||||
0x73, 0xce, 0xfd, 0xdd, 0x7b, 0x0b, 0x1b, 0x8e, 0xcb, 0x86, 0x51, 0x5f, 0xb3, 0x88, 0xa7, 0xdb,
|
||||
0xc4, 0x1a, 0x61, 0xaa, 0x87, 0x13, 0x44, 0xbd, 0x91, 0xcb, 0x74, 0x14, 0xb8, 0x3a, 0xc5, 0x21,
|
||||
0x89, 0xa8, 0x85, 0xb5, 0x80, 0x12, 0x46, 0x64, 0x99, 0x6b, 0xb4, 0xa5, 0x46, 0xbb, 0x3d, 0xab,
|
||||
0x9c, 0xfc, 0x12, 0xc1, 0xee, 0x02, 0x1c, 0x72, 0x7f, 0xa5, 0xe8, 0x10, 0x87, 0x24, 0x47, 0x7d,
|
||||
0x71, 0x4a, 0x6f, 0x2f, 0x7f, 0x48, 0x48, 0x14, 0xfd, 0x68, 0xa0, 0x07, 0xe3, 0xc8, 0x71, 0xfd,
|
||||
0xf4, 0xc1, 0x8d, 0xea, 0x23, 0x80, 0xc5, 0x16, 0x63, 0xc8, 0x1a, 0xf6, 0x30, 0x9b, 0x10, 0x3a,
|
||||
0x32, 0xf1, 0x4d, 0x84, 0x43, 0x26, 0x77, 0x60, 0xce, 0x22, 0xfe, 0xc0, 0x75, 0xca, 0xa0, 0x06,
|
||||
0xea, 0xf9, 0xe6, 0xa9, 0xf6, 0x1d, 0x5c, 0x4b, 0x3d, 0x3c, 0xc0, 0xc3, 0x3e, 0xeb, 0x24, 0x16,
|
||||
0x33, 0xb5, 0xca, 0x4d, 0x28, 0x59, 0xc4, 0x67, 0xc8, 0xf5, 0x31, 0xbd, 0x76, 0xed, 0x72, 0xb6,
|
||||
0x06, 0xea, 0xff, 0xda, 0xff, 0xe3, 0x59, 0x35, 0xdf, 0x59, 0xde, 0x1b, 0x5d, 0x33, 0xbf, 0x12,
|
||||
0x19, 0xb6, 0xda, 0x83, 0xa5, 0x2d, 0xa0, 0x30, 0x20, 0x7e, 0x88, 0xe5, 0x0b, 0x58, 0x40, 0xab,
|
||||
0x42, 0x8b, 0x34, 0x90, 0xa4, 0xed, 0xc5, 0xb3, 0xaa, 0xb4, 0x26, 0x30, 0xba, 0xa6, 0xb4, 0x96,
|
||||
0x19, 0xb6, 0x7a, 0x05, 0x8b, 0x5d, 0x2c, 0x68, 0xf0, 0x8f, 0x71, 0x07, 0xb0, 0xb4, 0x15, 0xc7,
|
||||
0xf1, 0x9a, 0xcf, 0x59, 0xb8, 0x6f, 0xa6, 0xbb, 0x6e, 0x8d, 0xc7, 0xc4, 0x42, 0x8c, 0x50, 0xf9,
|
||||
0x01, 0xc0, 0xc2, 0x46, 0x3b, 0x72, 0x5d, 0x34, 0x48, 0xd1, 0x0a, 0x2a, 0xc7, 0x3b, 0x28, 0x79,
|
||||
0x71, 0xf5, 0xe8, 0xf5, 0xe5, 0xf3, 0x29, 0x7b, 0x08, 0xa5, 0x44, 0xda, 0x58, 0x7c, 0xc3, 0x14,
|
||||
0x16, 0xf8, 0x9b, 0x87, 0x7c, 0xe4, 0x60, 0xce, 0xb2, 0xc1, 0x2e, 0x66, 0x11, 0x4d, 0x4b, 0xcc,
|
||||
0x22, 0x1c, 0xc4, 0x4e, 0x2c, 0xed, 0xf2, 0x74, 0xae, 0x64, 0xde, 0xe7, 0x4a, 0xe6, 0x3e, 0x56,
|
||||
0xc0, 0x34, 0x56, 0xc0, 0x5b, 0xac, 0x80, 0x8f, 0x58, 0x01, 0xfd, 0x5c, 0xf2, 0x63, 0x9e, 0x7f,
|
||||
0x05, 0x00, 0x00, 0xff, 0xff, 0xc1, 0x7a, 0x29, 0xfc, 0x58, 0x03, 0x00, 0x00,
|
||||
}
|
||||
|
|
4
vendor/github.com/docker/swarmkit/api/resource.proto
generated
vendored
4
vendor/github.com/docker/swarmkit/api/resource.proto
generated
vendored
|
@ -2,9 +2,9 @@ syntax = "proto3";
|
|||
|
||||
package docker.swarmkit.v1;
|
||||
|
||||
import "types.proto";
|
||||
import "github.com/docker/swarmkit/api/types.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
import "plugin/plugin.proto";
|
||||
import "github.com/docker/swarmkit/protobuf/plugin/plugin.proto";
|
||||
|
||||
// Allocator is the API provided by a manager group for agents to control the allocation of certain entities.
|
||||
//
|
||||
|
|
69
vendor/github.com/docker/swarmkit/api/snapshot.pb.go
generated
vendored
69
vendor/github.com/docker/swarmkit/api/snapshot.pb.go
generated
vendored
|
@ -1,5 +1,5 @@
|
|||
// Code generated by protoc-gen-gogo.
|
||||
// source: snapshot.proto
|
||||
// source: github.com/docker/swarmkit/api/snapshot.proto
|
||||
// DO NOT EDIT!
|
||||
|
||||
package api
|
||||
|
@ -1305,38 +1305,41 @@ var (
|
|||
ErrIntOverflowSnapshot = fmt.Errorf("proto: integer overflow")
|
||||
)
|
||||
|
||||
func init() { proto.RegisterFile("snapshot.proto", fileDescriptorSnapshot) }
|
||||
func init() {
|
||||
proto.RegisterFile("github.com/docker/swarmkit/api/snapshot.proto", fileDescriptorSnapshot)
|
||||
}
|
||||
|
||||
var fileDescriptorSnapshot = []byte{
|
||||
// 469 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x93, 0xbf, 0x6f, 0xd3, 0x40,
|
||||
0x14, 0xc7, 0x7d, 0xce, 0x0f, 0xa7, 0xaf, 0x6a, 0x29, 0x27, 0x86, 0x53, 0x28, 0x26, 0x04, 0x86,
|
||||
0x4c, 0x06, 0x02, 0x12, 0x08, 0xa9, 0x0c, 0xa9, 0x18, 0x18, 0xe8, 0x70, 0x41, 0x15, 0xab, 0xe3,
|
||||
0x5c, 0x52, 0x63, 0xe2, 0x8b, 0xee, 0x5d, 0x53, 0x46, 0xf8, 0xef, 0x32, 0x32, 0x32, 0x21, 0x92,
|
||||
0x85, 0x7f, 0x03, 0xdd, 0x9d, 0x6d, 0x22, 0xe1, 0x74, 0xb3, 0x4e, 0x9f, 0xcf, 0x7b, 0xdf, 0x3b,
|
||||
0xbf, 0x07, 0xc7, 0x98, 0xc7, 0x4b, 0xbc, 0x92, 0x3a, 0x5a, 0x2a, 0xa9, 0x25, 0xa5, 0x53, 0x99,
|
||||
0x64, 0x42, 0x45, 0x78, 0x13, 0xab, 0x45, 0x96, 0xea, 0x68, 0xf5, 0xbc, 0x7b, 0x24, 0x27, 0x9f,
|
||||
0x45, 0xa2, 0xd1, 0x21, 0x5d, 0x50, 0xf1, 0xac, 0xc0, 0xbb, 0xf7, 0xe6, 0x72, 0x2e, 0xed, 0xe7,
|
||||
0x53, 0xf3, 0xe5, 0x4e, 0xfb, 0xdf, 0x9b, 0x70, 0x34, 0xd6, 0x52, 0x89, 0x71, 0x51, 0x9c, 0x46,
|
||||
0xd0, 0xca, 0xe5, 0x54, 0x20, 0x23, 0xbd, 0xc6, 0xe0, 0x70, 0xc8, 0xa2, 0xff, 0xdb, 0x44, 0x17,
|
||||
0x72, 0x2a, 0xb8, 0xc3, 0xe8, 0x2b, 0xe8, 0xa0, 0x50, 0xab, 0x34, 0x11, 0xc8, 0x7c, 0xab, 0xdc,
|
||||
0xaf, 0x53, 0xc6, 0x8e, 0xe1, 0x15, 0x6c, 0xc4, 0x5c, 0xe8, 0x1b, 0xa9, 0x32, 0x64, 0x8d, 0xfd,
|
||||
0xe2, 0x85, 0x63, 0x78, 0x05, 0x9b, 0x84, 0x3a, 0xc6, 0x0c, 0x59, 0x73, 0x7f, 0xc2, 0x8f, 0x31,
|
||||
0x66, 0xdc, 0x61, 0xa6, 0x51, 0xf2, 0xe5, 0x1a, 0xb5, 0x50, 0xc8, 0x5a, 0xfb, 0x1b, 0x9d, 0x3b,
|
||||
0x86, 0x57, 0x30, 0x7d, 0x09, 0x01, 0x8a, 0x44, 0x09, 0x8d, 0xac, 0x6d, 0xbd, 0x6e, 0xfd, 0xcd,
|
||||
0x0c, 0xc2, 0x4b, 0x94, 0xbe, 0x81, 0x03, 0x25, 0x50, 0x5e, 0x2b, 0xf3, 0x22, 0x81, 0xf5, 0x4e,
|
||||
0xeb, 0x3c, 0x5e, 0x40, 0xfc, 0x1f, 0x4e, 0xcf, 0x00, 0xc4, 0x57, 0x2d, 0x72, 0x4c, 0x65, 0x8e,
|
||||
0xac, 0x63, 0xe5, 0x07, 0x75, 0xf2, 0xbb, 0x92, 0xe2, 0x3b, 0x82, 0x09, 0x9c, 0xc8, 0x7c, 0x96,
|
||||
0xce, 0x91, 0x1d, 0xec, 0x0f, 0x7c, 0x6e, 0x11, 0x5e, 0xa2, 0xfd, 0x14, 0xee, 0x14, 0x77, 0xaf,
|
||||
0x86, 0xe0, 0x35, 0x04, 0x0b, 0xb1, 0x98, 0x98, 0x17, 0x73, 0x63, 0x10, 0xd6, 0xde, 0x20, 0x9e,
|
||||
0xe9, 0x0f, 0x16, 0xe3, 0x25, 0x4e, 0x4f, 0x21, 0x50, 0x62, 0x21, 0x57, 0x62, 0x6a, 0xa7, 0xa1,
|
||||
0x39, 0xf2, 0x4f, 0x3c, 0x5e, 0x1e, 0xf5, 0xff, 0x10, 0xe8, 0x54, 0x4d, 0xde, 0x42, 0xb0, 0x12,
|
||||
0xca, 0x24, 0x67, 0xa4, 0x47, 0x06, 0xc7, 0xc3, 0x27, 0xb5, 0xcf, 0x5b, 0x4e, 0xfd, 0xa5, 0x63,
|
||||
0x79, 0x29, 0xd1, 0xf7, 0x00, 0x45, 0xd7, 0xab, 0x74, 0xc9, 0xfc, 0x1e, 0x19, 0x1c, 0x0e, 0x1f,
|
||||
0xdf, 0xf2, 0x67, 0xcb, 0x4a, 0xa3, 0xe6, 0xfa, 0xd7, 0x43, 0x8f, 0xef, 0xc8, 0xf4, 0x0c, 0x5a,
|
||||
0x68, 0xb6, 0x80, 0x35, 0x6c, 0x95, 0x47, 0xb5, 0x41, 0x76, 0xd7, 0xa4, 0xa8, 0xe1, 0xac, 0xfe,
|
||||
0x5d, 0x08, 0x8a, 0x74, 0xb4, 0x0d, 0xfe, 0xe5, 0xb3, 0x13, 0x6f, 0xc4, 0xd6, 0x9b, 0xd0, 0xfb,
|
||||
0xb9, 0x09, 0xbd, 0x6f, 0xdb, 0x90, 0xac, 0xb7, 0x21, 0xf9, 0xb1, 0x0d, 0xc9, 0xef, 0x6d, 0x48,
|
||||
0x3e, 0xf9, 0x93, 0xb6, 0xdd, 0xbd, 0x17, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x8d, 0x0f, 0xc4,
|
||||
0x6e, 0xd2, 0x03, 0x00, 0x00,
|
||||
// 493 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x93, 0xbf, 0x8f, 0xd3, 0x30,
|
||||
0x14, 0xc7, 0x93, 0xf4, 0x47, 0x7a, 0x3e, 0x01, 0x87, 0xc5, 0x60, 0x95, 0x23, 0x94, 0xc2, 0x50,
|
||||
0x24, 0x48, 0xa0, 0x20, 0x81, 0x90, 0x8e, 0xa1, 0x27, 0x06, 0x06, 0x6e, 0x70, 0xd1, 0x89, 0x35,
|
||||
0x4d, 0xdd, 0x36, 0x84, 0xc4, 0x95, 0x9f, 0xdb, 0x63, 0x84, 0xff, 0xae, 0x23, 0x23, 0x13, 0xe2,
|
||||
0xba, 0xf0, 0x6f, 0x20, 0xdb, 0x71, 0xa8, 0x44, 0x7a, 0xb7, 0x45, 0xd6, 0xe7, 0xf3, 0xde, 0xd7,
|
||||
0xce, 0x7b, 0xe8, 0xe9, 0x3c, 0x95, 0x8b, 0xd5, 0x24, 0x4c, 0x78, 0x1e, 0x4d, 0x79, 0x92, 0x31,
|
||||
0x11, 0xc1, 0x45, 0x2c, 0xf2, 0x2c, 0x95, 0x51, 0xbc, 0x4c, 0x23, 0x28, 0xe2, 0x25, 0x2c, 0xb8,
|
||||
0x0c, 0x97, 0x82, 0x4b, 0x8e, 0xb1, 0x61, 0x42, 0xcb, 0x84, 0xeb, 0xe7, 0xdd, 0x27, 0xd7, 0x94,
|
||||
0xe0, 0x93, 0xcf, 0x2c, 0x91, 0x60, 0x2a, 0x74, 0x1f, 0x5f, 0x43, 0x8b, 0x78, 0x56, 0x36, 0xeb,
|
||||
0xde, 0x99, 0xf3, 0x39, 0xd7, 0x9f, 0x91, 0xfa, 0x32, 0xa7, 0xfd, 0xef, 0x4d, 0x74, 0x63, 0x2c,
|
||||
0xb9, 0x60, 0xe3, 0x32, 0x1a, 0x0e, 0x51, 0xab, 0xe0, 0x53, 0x06, 0xc4, 0xed, 0x35, 0x06, 0x87,
|
||||
0x43, 0x12, 0xfe, 0x1f, 0x32, 0x3c, 0xe3, 0x53, 0x46, 0x0d, 0x86, 0x5f, 0xa1, 0x0e, 0x30, 0xb1,
|
||||
0x4e, 0x13, 0x06, 0xc4, 0xd3, 0xca, 0xdd, 0x3a, 0x65, 0x6c, 0x18, 0x5a, 0xc1, 0x4a, 0x2c, 0x98,
|
||||
0xbc, 0xe0, 0x22, 0x03, 0xd2, 0xd8, 0x2f, 0x9e, 0x19, 0x86, 0x56, 0xb0, 0x4a, 0x28, 0x63, 0xc8,
|
||||
0x80, 0x34, 0xf7, 0x27, 0xfc, 0x18, 0x43, 0x46, 0x0d, 0xa6, 0x1a, 0x25, 0x5f, 0x56, 0x20, 0x99,
|
||||
0x00, 0xd2, 0xda, 0xdf, 0xe8, 0xd4, 0x30, 0xb4, 0x82, 0xf1, 0x4b, 0xe4, 0x03, 0x4b, 0x04, 0x93,
|
||||
0x40, 0xda, 0xda, 0xeb, 0xd6, 0xdf, 0x4c, 0x21, 0xd4, 0xa2, 0xf8, 0x0d, 0x3a, 0x10, 0x0c, 0xf8,
|
||||
0x4a, 0xa8, 0x17, 0xf1, 0xb5, 0x77, 0x5c, 0xe7, 0xd1, 0x12, 0xa2, 0xff, 0x70, 0x7c, 0x82, 0x10,
|
||||
0xfb, 0x2a, 0x59, 0x01, 0x29, 0x2f, 0x80, 0x74, 0xb4, 0x7c, 0xaf, 0x4e, 0x7e, 0x67, 0x29, 0xba,
|
||||
0x23, 0xa8, 0xc0, 0x09, 0x2f, 0x66, 0xe9, 0x1c, 0xc8, 0xc1, 0xfe, 0xc0, 0xa7, 0x1a, 0xa1, 0x16,
|
||||
0xed, 0xa7, 0xe8, 0x56, 0x79, 0xf7, 0x6a, 0x08, 0x5e, 0x23, 0x3f, 0x67, 0xf9, 0x44, 0xbd, 0x98,
|
||||
0x19, 0x83, 0xa0, 0xf6, 0x06, 0xf1, 0x4c, 0x7e, 0xd0, 0x18, 0xb5, 0x38, 0x3e, 0x46, 0xbe, 0x60,
|
||||
0x39, 0x5f, 0xb3, 0xa9, 0x9e, 0x86, 0xe6, 0xc8, 0x3b, 0x72, 0xa8, 0x3d, 0xea, 0xff, 0x71, 0x51,
|
||||
0xa7, 0x6a, 0xf2, 0x16, 0xf9, 0x6b, 0x26, 0x54, 0x72, 0xe2, 0xf6, 0xdc, 0xc1, 0xcd, 0xe1, 0xa3,
|
||||
0xda, 0xe7, 0xb5, 0x3b, 0x73, 0x6e, 0x58, 0x6a, 0x25, 0xfc, 0x1e, 0xa1, 0xb2, 0xeb, 0x22, 0x5d,
|
||||
0x12, 0xaf, 0xe7, 0x0e, 0x0e, 0x87, 0x0f, 0xaf, 0xf8, 0xb3, 0xb6, 0xd2, 0xa8, 0xb9, 0xf9, 0x75,
|
||||
0xdf, 0xa1, 0x3b, 0x32, 0x3e, 0x41, 0x2d, 0x50, 0x5b, 0x40, 0x1a, 0xba, 0xca, 0x83, 0xda, 0x20,
|
||||
0xbb, 0x6b, 0x52, 0xd6, 0x30, 0x56, 0xff, 0x36, 0xf2, 0xcb, 0x74, 0xb8, 0x8d, 0xbc, 0xf3, 0x67,
|
||||
0x47, 0xce, 0x88, 0x6c, 0x2e, 0x03, 0xe7, 0xe7, 0x65, 0xe0, 0x7c, 0xdb, 0x06, 0xee, 0x66, 0x1b,
|
||||
0xb8, 0x3f, 0xb6, 0x81, 0xfb, 0x7b, 0x1b, 0xb8, 0x9f, 0xbc, 0x49, 0x5b, 0xef, 0xde, 0x8b, 0xbf,
|
||||
0x01, 0x00, 0x00, 0xff, 0xff, 0xfd, 0xbe, 0x47, 0xec, 0x2f, 0x04, 0x00, 0x00,
|
||||
}
|
||||
|
|
4
vendor/github.com/docker/swarmkit/api/snapshot.proto
generated
vendored
4
vendor/github.com/docker/swarmkit/api/snapshot.proto
generated
vendored
|
@ -2,8 +2,8 @@ syntax = "proto3";
|
|||
|
||||
package docker.swarmkit.v1;
|
||||
|
||||
import "objects.proto";
|
||||
import "raft.proto";
|
||||
import "github.com/docker/swarmkit/api/objects.proto";
|
||||
import "github.com/docker/swarmkit/api/raft.proto";
|
||||
import weak "gogoproto/gogo.proto";
|
||||
|
||||
// StoreSnapshot is used to store snapshots of the store.
|
||||
|
|
760
vendor/github.com/docker/swarmkit/api/specs.pb.go
generated
vendored
760
vendor/github.com/docker/swarmkit/api/specs.pb.go
generated
vendored
File diff suppressed because it is too large
Load diff
22
vendor/github.com/docker/swarmkit/api/specs.proto
generated
vendored
22
vendor/github.com/docker/swarmkit/api/specs.proto
generated
vendored
|
@ -2,7 +2,7 @@ syntax = "proto3";
|
|||
|
||||
package docker.swarmkit.v1;
|
||||
|
||||
import "types.proto";
|
||||
import "github.com/docker/swarmkit/api/types.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
import "google/protobuf/duration.proto";
|
||||
import "google/protobuf/any.proto";
|
||||
|
@ -128,6 +128,21 @@ message TaskSpec {
|
|||
// using the same reconciliation-based mechanism that performs rolling
|
||||
// updates.
|
||||
uint64 force_update = 9;
|
||||
|
||||
// ResourceReferences provides a generic way to specify resources that
|
||||
// are used by this task, and should be sent down to agents along with
|
||||
// the task. Inside the runtime field there may be more specific
|
||||
// information about how to use the resource, but ResourceReferences
|
||||
// establishes the relationship at the store level, and instructs the
|
||||
// dispatcher to send the related objects.
|
||||
//
|
||||
// ResourceReferences is a list of ResourceReferences used by the task.
|
||||
repeated ResourceReference resource_references = 11 [(gogoproto.nullable) = false];
|
||||
}
|
||||
|
||||
message ResourceReference {
|
||||
string resource_id = 1;
|
||||
ResourceType resource_type = 2;
|
||||
}
|
||||
|
||||
message GenericRuntimeSpec {
|
||||
|
@ -278,6 +293,11 @@ message ContainerSpec {
|
|||
// task will exit and a new task will be rescheduled elsewhere. A container
|
||||
// is considered unhealthy after `Retries` number of consecutive failures.
|
||||
HealthConfig healthcheck = 16;
|
||||
|
||||
// Run a custom init inside the container, if null, use the daemon's configured settings
|
||||
oneof init {
|
||||
bool init_value = 23;
|
||||
}
|
||||
}
|
||||
|
||||
// EndpointSpec defines the properties that can be configured to
|
||||
|
|
1052
vendor/github.com/docker/swarmkit/api/types.pb.go
generated
vendored
1052
vendor/github.com/docker/swarmkit/api/types.pb.go
generated
vendored
File diff suppressed because it is too large
Load diff
15
vendor/github.com/docker/swarmkit/api/types.proto
generated
vendored
15
vendor/github.com/docker/swarmkit/api/types.proto
generated
vendored
|
@ -57,6 +57,12 @@ message GenericResource {
|
|||
}
|
||||
}
|
||||
|
||||
enum ResourceType {
|
||||
TASK = 0;
|
||||
SECRET = 1;
|
||||
CONFIG = 2;
|
||||
}
|
||||
|
||||
message Resources {
|
||||
// Amount of CPUs (e.g. 2000000000 = 2 CPU cores)
|
||||
int64 nano_cpus = 1 [(gogoproto.customname) = "NanoCPUs"];
|
||||
|
@ -508,6 +514,15 @@ message TaskStatus {
|
|||
// HostPorts provides a list of ports allocated at the host
|
||||
// level.
|
||||
PortStatus port_status = 6;
|
||||
|
||||
// AppliedBy gives the node ID of the manager that applied this task
|
||||
// status update to the Task object.
|
||||
string applied_by = 7;
|
||||
|
||||
// AppliedAt gives a timestamp of when this status update was applied to
|
||||
// the Task object.
|
||||
// Note: can't use stdtime because this field is nullable.
|
||||
google.protobuf.Timestamp applied_at = 8;
|
||||
}
|
||||
|
||||
// NetworkAttachmentConfig specifies how a service should be attached to a particular network.
|
||||
|
|
156
vendor/github.com/docker/swarmkit/api/watch.pb.go
generated
vendored
156
vendor/github.com/docker/swarmkit/api/watch.pb.go
generated
vendored
|
@ -1,5 +1,5 @@
|
|||
// Code generated by protoc-gen-gogo.
|
||||
// source: watch.proto
|
||||
// source: github.com/docker/swarmkit/api/watch.proto
|
||||
// DO NOT EDIT!
|
||||
|
||||
package api
|
||||
|
@ -1442,7 +1442,7 @@ var _Watch_serviceDesc = grpc.ServiceDesc{
|
|||
ServerStreams: true,
|
||||
},
|
||||
},
|
||||
Metadata: "watch.proto",
|
||||
Metadata: "github.com/docker/swarmkit/api/watch.proto",
|
||||
}
|
||||
|
||||
func (m *Object) Marshal() (dAtA []byte, err error) {
|
||||
|
@ -4519,81 +4519,83 @@ var (
|
|||
ErrIntOverflowWatch = fmt.Errorf("proto: integer overflow")
|
||||
)
|
||||
|
||||
func init() { proto.RegisterFile("watch.proto", fileDescriptorWatch) }
|
||||
func init() { proto.RegisterFile("github.com/docker/swarmkit/api/watch.proto", fileDescriptorWatch) }
|
||||
|
||||
var fileDescriptorWatch = []byte{
|
||||
// 1155 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x96, 0xbb, 0x73, 0x1b, 0xd5,
|
||||
0x17, 0xc7, 0xb5, 0x8a, 0xbc, 0x92, 0x8e, 0xac, 0xc4, 0x73, 0xed, 0x24, 0xfb, 0xd3, 0x2f, 0x48,
|
||||
0x42, 0x0c, 0xe0, 0x21, 0x41, 0x01, 0x13, 0xc2, 0x00, 0x81, 0x19, 0x4b, 0x16, 0x23, 0x91, 0xb1,
|
||||
0xec, 0xb9, 0xb6, 0xe3, 0x52, 0xb3, 0xde, 0x3d, 0x56, 0x16, 0xed, 0x43, 0xdc, 0x5d, 0xc9, 0x71,
|
||||
0x47, 0x41, 0xc1, 0xa4, 0x67, 0x86, 0x26, 0x15, 0xd4, 0x34, 0x74, 0xf0, 0x0f, 0x64, 0xa8, 0x28,
|
||||
0xa1, 0xd1, 0x10, 0x95, 0x14, 0xfc, 0x05, 0x14, 0xcc, 0x7d, 0xac, 0x1f, 0xca, 0xca, 0x21, 0x95,
|
||||
0xee, 0xbd, 0xfb, 0xf9, 0x9e, 0x7b, 0xf6, 0xbc, 0x56, 0x50, 0x38, 0x32, 0x23, 0xeb, 0x61, 0x7d,
|
||||
0xc8, 0x82, 0x28, 0x20, 0xc4, 0x0e, 0xac, 0x01, 0xb2, 0x7a, 0x78, 0x64, 0x32, 0x6f, 0xe0, 0x44,
|
||||
0xf5, 0xf1, 0xbb, 0xa5, 0x42, 0x38, 0x44, 0x2b, 0x94, 0x40, 0xa9, 0x18, 0x1c, 0x7c, 0x81, 0x56,
|
||||
0x14, 0x6f, 0x0b, 0xd1, 0xf1, 0x10, 0xe3, 0xcd, 0x4a, 0x3f, 0xe8, 0x07, 0x62, 0x79, 0x9b, 0xaf,
|
||||
0xd4, 0xe9, 0xf2, 0xd0, 0x1d, 0xf5, 0x1d, 0xff, 0xb6, 0xfc, 0x91, 0x87, 0xb5, 0xaf, 0x33, 0xa0,
|
||||
0x6f, 0x09, 0x4b, 0xa4, 0x0e, 0x19, 0x3f, 0xb0, 0xd1, 0xd0, 0xaa, 0xda, 0x6a, 0x61, 0xcd, 0xa8,
|
||||
0x3f, 0xef, 0x41, 0xbd, 0x1b, 0xd8, 0xd8, 0x4e, 0x51, 0xc1, 0x91, 0x0f, 0x20, 0x1b, 0x22, 0x1b,
|
||||
0x3b, 0x16, 0x1a, 0x69, 0x21, 0xf9, 0x7f, 0x92, 0x64, 0x47, 0x22, 0xed, 0x14, 0x8d, 0x69, 0x2e,
|
||||
0xf4, 0x31, 0x3a, 0x0a, 0xd8, 0xc0, 0xb8, 0x34, 0x5f, 0xd8, 0x95, 0x08, 0x17, 0x2a, 0x9a, 0x7b,
|
||||
0x18, 0x99, 0xe1, 0xc0, 0xc8, 0xcc, 0xf7, 0x70, 0xd7, 0x0c, 0xb9, 0x44, 0x70, 0xfc, 0x22, 0xcb,
|
||||
0x1d, 0x85, 0x11, 0x32, 0x63, 0x61, 0xfe, 0x45, 0x4d, 0x89, 0xf0, 0x8b, 0x14, 0x4d, 0xee, 0x80,
|
||||
0x1e, 0xa2, 0xc5, 0x30, 0x32, 0x74, 0xa1, 0x2b, 0x25, 0xbf, 0x19, 0x27, 0xda, 0x29, 0xaa, 0x58,
|
||||
0xf2, 0x11, 0xe4, 0x18, 0x86, 0xc1, 0x88, 0x59, 0x68, 0x64, 0x85, 0xee, 0x46, 0x92, 0x8e, 0x2a,
|
||||
0xa6, 0x9d, 0xa2, 0x27, 0x3c, 0xf9, 0x04, 0xf2, 0xf8, 0x28, 0x42, 0x3f, 0x74, 0x02, 0xdf, 0xc8,
|
||||
0x09, 0xf1, 0x2b, 0x49, 0xe2, 0x56, 0x0c, 0xb5, 0x53, 0xf4, 0x54, 0xc1, 0x1d, 0xb6, 0x02, 0xff,
|
||||
0xd0, 0xe9, 0x1b, 0xf9, 0xf9, 0x0e, 0x37, 0x05, 0xc1, 0x1d, 0x96, 0x6c, 0x23, 0x17, 0xe7, 0xbe,
|
||||
0xb6, 0x0d, 0x8b, 0x3b, 0xe8, 0xa2, 0x15, 0x35, 0x8e, 0x77, 0xdc, 0x20, 0x22, 0xb7, 0x00, 0x54,
|
||||
0xb6, 0x7a, 0x8e, 0x2d, 0x2a, 0x22, 0xdf, 0x28, 0x4e, 0x27, 0x95, 0xbc, 0x4a, 0x67, 0x67, 0x83,
|
||||
0xe6, 0x15, 0xd0, 0xb1, 0x09, 0x81, 0x4c, 0xe8, 0x06, 0x91, 0x28, 0x83, 0x0c, 0x15, 0xeb, 0xda,
|
||||
0x36, 0x5c, 0x8e, 0x2d, 0x36, 0x47, 0x61, 0x14, 0x78, 0x9c, 0x1a, 0x38, 0xbe, 0xb2, 0x46, 0xc5,
|
||||
0x9a, 0xac, 0xc0, 0x82, 0xe3, 0xdb, 0xf8, 0x48, 0x48, 0xf3, 0x54, 0x6e, 0xf8, 0xe9, 0xd8, 0x74,
|
||||
0x47, 0x28, 0xca, 0x23, 0x4f, 0xe5, 0xa6, 0xf6, 0x97, 0x0e, 0xb9, 0xd8, 0x24, 0x31, 0x20, 0x7d,
|
||||
0xe2, 0x98, 0x3e, 0x9d, 0x54, 0xd2, 0x9d, 0x8d, 0x76, 0x8a, 0xa6, 0x1d, 0x9b, 0xdc, 0x84, 0xbc,
|
||||
0x63, 0xf7, 0x86, 0x0c, 0x0f, 0x1d, 0x65, 0xb6, 0xb1, 0x38, 0x9d, 0x54, 0x72, 0x9d, 0x8d, 0x6d,
|
||||
0x71, 0xc6, 0xc3, 0xee, 0xd8, 0x72, 0x4d, 0x56, 0x20, 0xe3, 0x9b, 0x9e, 0xba, 0x48, 0x54, 0xb6,
|
||||
0xe9, 0x21, 0x79, 0x15, 0x0a, 0xfc, 0x37, 0x36, 0x92, 0x51, 0x0f, 0x81, 0x1f, 0x2a, 0xe1, 0x3d,
|
||||
0xd0, 0x2d, 0xf1, 0x5a, 0xaa, 0xb2, 0x6a, 0xc9, 0x15, 0x72, 0x36, 0x00, 0x22, 0xf0, 0x32, 0x14,
|
||||
0x1d, 0x28, 0xca, 0x55, 0x7c, 0x85, 0xfe, 0x12, 0x46, 0x16, 0xa5, 0x54, 0x39, 0x52, 0x3f, 0x97,
|
||||
0xa9, 0x6c, 0x42, 0xa6, 0x78, 0xa5, 0x9c, 0xe6, 0xea, 0x75, 0xc8, 0xf2, 0xee, 0xe5, 0x70, 0x4e,
|
||||
0xc0, 0x30, 0x9d, 0x54, 0x74, 0xde, 0xd8, 0x82, 0xd4, 0xf9, 0xc3, 0x8e, 0x4d, 0xee, 0xaa, 0x94,
|
||||
0xca, 0x72, 0xaa, 0x5e, 0xe4, 0x18, 0x2f, 0x18, 0x1e, 0x3a, 0xce, 0x93, 0x0d, 0x28, 0xda, 0x18,
|
||||
0x3a, 0x0c, 0xed, 0x5e, 0x18, 0x99, 0x11, 0x1a, 0x50, 0xd5, 0x56, 0x2f, 0x27, 0xd7, 0x32, 0xef,
|
||||
0xd5, 0x1d, 0x0e, 0xf1, 0x97, 0x52, 0x2a, 0xb1, 0x27, 0x6b, 0x90, 0x61, 0x81, 0x8b, 0x46, 0x41,
|
||||
0x88, 0x6f, 0xcc, 0x1b, 0x45, 0x34, 0x70, 0xc5, 0x38, 0xe2, 0x2c, 0xe9, 0x00, 0x78, 0xe8, 0x1d,
|
||||
0x20, 0x0b, 0x1f, 0x3a, 0x43, 0x63, 0x51, 0x28, 0xdf, 0x9c, 0xa7, 0xdc, 0x19, 0xa2, 0x55, 0xdf,
|
||||
0x3c, 0xc1, 0x79, 0x72, 0x4f, 0xc5, 0x64, 0x13, 0xae, 0x32, 0x3c, 0x44, 0x86, 0xbe, 0x85, 0x76,
|
||||
0x4f, 0x4d, 0x1f, 0x1e, 0xb1, 0xa2, 0x88, 0xd8, 0xf5, 0xe9, 0xa4, 0xb2, 0x4c, 0x4f, 0x00, 0x35,
|
||||
0xa8, 0x44, 0xf8, 0x96, 0xd9, 0x73, 0xc7, 0x36, 0xf9, 0x1c, 0x56, 0xce, 0x98, 0x93, 0xc3, 0x82,
|
||||
0x5b, 0xbb, 0x2c, 0xac, 0x5d, 0x9b, 0x4e, 0x2a, 0xe4, 0xd4, 0x9a, 0x9c, 0x2a, 0xc2, 0x18, 0x61,
|
||||
0xb3, 0xa7, 0xbc, 0x61, 0x64, 0x13, 0x5d, 0x89, 0x0b, 0x56, 0xb4, 0xd1, 0xf9, 0x1b, 0x64, 0x77,
|
||||
0xf3, 0x1b, 0x96, 0x92, 0x6e, 0x90, 0x63, 0x60, 0xf6, 0x06, 0x75, 0x6a, 0x37, 0x32, 0x90, 0x6e,
|
||||
0x1c, 0xd7, 0xfe, 0x48, 0xc3, 0xe2, 0x3e, 0xff, 0x1e, 0x51, 0xfc, 0x72, 0x84, 0x61, 0x44, 0x5a,
|
||||
0x90, 0x45, 0x3f, 0x62, 0x0e, 0x86, 0x86, 0x56, 0xbd, 0xb4, 0x5a, 0x58, 0xbb, 0x99, 0x14, 0xdb,
|
||||
0xb3, 0x12, 0xb9, 0x69, 0xf9, 0x11, 0x3b, 0xa6, 0xb1, 0x96, 0xdc, 0x83, 0x02, 0xc3, 0x70, 0xe4,
|
||||
0x61, 0xef, 0x90, 0x05, 0xde, 0x45, 0x1f, 0x8e, 0x07, 0xc8, 0xf8, 0x68, 0xa3, 0x20, 0xf9, 0xcf,
|
||||
0x58, 0xe0, 0x91, 0x5b, 0x40, 0x1c, 0xdf, 0x72, 0x47, 0x36, 0xf6, 0x02, 0xd7, 0xee, 0xc9, 0x4f,
|
||||
0xa0, 0x68, 0xde, 0x1c, 0x5d, 0x52, 0x4f, 0xb6, 0x5c, 0x5b, 0x0e, 0xb5, 0xd2, 0xb7, 0x1a, 0xc0,
|
||||
0xa9, 0x0f, 0x89, 0xf3, 0xe7, 0x63, 0xd0, 0x4d, 0x2b, 0xe2, 0x33, 0x37, 0x2d, 0x0a, 0xe6, 0xb5,
|
||||
0xb9, 0x2f, 0xb5, 0x2e, 0xb0, 0xfb, 0x8e, 0x6f, 0x53, 0x25, 0x21, 0x77, 0x21, 0x7b, 0xe8, 0xb8,
|
||||
0x11, 0xb2, 0xd0, 0xb8, 0x24, 0x42, 0x72, 0xe3, 0xa2, 0x36, 0xa1, 0x31, 0x5c, 0xfb, 0x25, 0x8e,
|
||||
0xed, 0x26, 0x86, 0xa1, 0xd9, 0x47, 0xf2, 0x29, 0xe8, 0x38, 0x46, 0x3f, 0x8a, 0x43, 0xfb, 0xc6,
|
||||
0x5c, 0x2f, 0x94, 0xa2, 0xde, 0xe2, 0x38, 0x55, 0x2a, 0xf2, 0x3e, 0x64, 0xc7, 0x32, 0x5a, 0xff,
|
||||
0x25, 0xa0, 0x31, 0x5b, 0xfa, 0x49, 0x83, 0x05, 0x61, 0xe8, 0x4c, 0x18, 0xb4, 0x97, 0x0f, 0xc3,
|
||||
0x1a, 0xe8, 0x2a, 0x11, 0xe9, 0xf9, 0xdf, 0x1e, 0x99, 0x12, 0xaa, 0x48, 0xf2, 0x21, 0xc0, 0x4c,
|
||||
0x02, 0x2f, 0xd6, 0xe5, 0x83, 0x38, 0xab, 0x6f, 0xfd, 0xa3, 0xc1, 0x95, 0x19, 0x57, 0xc8, 0x1d,
|
||||
0x58, 0xd9, 0x5f, 0xdf, 0x6d, 0xb6, 0x7b, 0xeb, 0xcd, 0xdd, 0xce, 0x56, 0xb7, 0xb7, 0xd7, 0xbd,
|
||||
0xdf, 0xdd, 0xda, 0xef, 0x2e, 0xa5, 0x4a, 0xa5, 0xc7, 0x4f, 0xaa, 0xd7, 0x66, 0xf0, 0x3d, 0x7f,
|
||||
0xe0, 0x07, 0x47, 0xdc, 0xf1, 0xe5, 0x73, 0xaa, 0x26, 0x6d, 0xad, 0xef, 0xb6, 0x96, 0xb4, 0xd2,
|
||||
0xff, 0x1e, 0x3f, 0xa9, 0x5e, 0x9d, 0x11, 0x35, 0x19, 0xca, 0xc9, 0x74, 0x5e, 0xb3, 0xb7, 0xbd,
|
||||
0xc1, 0x35, 0xe9, 0x44, 0xcd, 0xde, 0xd0, 0x4e, 0xd2, 0xd0, 0xd6, 0xe6, 0xd6, 0x83, 0xd6, 0x52,
|
||||
0x26, 0x51, 0x43, 0xd1, 0x0b, 0xc6, 0x58, 0xba, 0xfe, 0xcd, 0xf7, 0xe5, 0xd4, 0xcf, 0x3f, 0x94,
|
||||
0x67, 0x5f, 0x75, 0xcd, 0x83, 0x05, 0x71, 0x44, 0xec, 0x78, 0x51, 0x7d, 0x51, 0x23, 0x96, 0xaa,
|
||||
0x2f, 0xaa, 0xa7, 0xda, 0xd5, 0x5f, 0x7f, 0xfc, 0xfb, 0xbb, 0xf4, 0x15, 0x28, 0x0a, 0xe2, 0x6d,
|
||||
0xcf, 0xf4, 0xcd, 0x3e, 0xb2, 0x77, 0xb4, 0x86, 0xf1, 0xf4, 0x59, 0x39, 0xf5, 0xfb, 0xb3, 0x72,
|
||||
0xea, 0xab, 0x69, 0x59, 0x7b, 0x3a, 0x2d, 0x6b, 0xbf, 0x4d, 0xcb, 0xda, 0x9f, 0xd3, 0xb2, 0x76,
|
||||
0xa0, 0x8b, 0x3f, 0x90, 0xef, 0xfd, 0x1b, 0x00, 0x00, 0xff, 0xff, 0xf8, 0x53, 0xd9, 0x73, 0xb7,
|
||||
0x0a, 0x00, 0x00,
|
||||
// 1186 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x96, 0xbd, 0x73, 0x1b, 0xc5,
|
||||
0x1b, 0xc7, 0x75, 0x8a, 0x7c, 0x92, 0x1e, 0xdb, 0x89, 0x67, 0xe3, 0x24, 0xf7, 0xd3, 0x2f, 0xc8,
|
||||
0x42, 0x0c, 0x90, 0x49, 0x82, 0x0c, 0x26, 0x24, 0x03, 0x04, 0x66, 0x2c, 0x59, 0x8c, 0x44, 0xc6,
|
||||
0x2f, 0xb3, 0xb6, 0x93, 0x52, 0x73, 0xbe, 0x7b, 0xac, 0x1c, 0xba, 0xbb, 0x15, 0x7b, 0x27, 0x39,
|
||||
0xee, 0x28, 0x28, 0x98, 0xf4, 0xcc, 0xd0, 0xa4, 0x82, 0x9a, 0x86, 0x0e, 0xfe, 0x81, 0x0c, 0x15,
|
||||
0x25, 0x34, 0x1a, 0xa2, 0x92, 0x82, 0xbf, 0x80, 0x82, 0xd9, 0x97, 0xf3, 0x8b, 0x72, 0xb2, 0x49,
|
||||
0xa5, 0xbd, 0xbd, 0xcf, 0xf7, 0xd9, 0x67, 0x9f, 0xb7, 0x13, 0xdc, 0xec, 0x7a, 0xf1, 0xe3, 0xc1,
|
||||
0x5e, 0xcd, 0x61, 0xc1, 0xb2, 0xcb, 0x9c, 0x1e, 0xf2, 0xe5, 0xe8, 0xc0, 0xe6, 0x41, 0xcf, 0x8b,
|
||||
0x97, 0xed, 0xbe, 0xb7, 0x7c, 0x60, 0xc7, 0xce, 0xe3, 0x5a, 0x9f, 0xb3, 0x98, 0x11, 0xa2, 0x80,
|
||||
0x5a, 0x02, 0xd4, 0x86, 0xef, 0x95, 0xce, 0xd3, 0x47, 0x7d, 0x74, 0x22, 0xa5, 0x2f, 0xdd, 0x3e,
|
||||
0x87, 0x65, 0x7b, 0x5f, 0xa0, 0x13, 0x27, 0xf4, 0x79, 0x96, 0xe3, 0xc3, 0x3e, 0x26, 0xec, 0x62,
|
||||
0x97, 0x75, 0x99, 0x5c, 0x2e, 0x8b, 0x95, 0xde, 0xbd, 0x77, 0x86, 0x05, 0x49, 0xec, 0x0d, 0xf6,
|
||||
0x97, 0xfb, 0xfe, 0xa0, 0xeb, 0x85, 0xfa, 0x47, 0x09, 0xab, 0x5f, 0xe7, 0xc0, 0xdc, 0x94, 0xce,
|
||||
0x90, 0x1a, 0xe4, 0x42, 0xe6, 0xa2, 0x65, 0x54, 0x8c, 0x1b, 0xb3, 0x2b, 0x56, 0xed, 0xe5, 0x10,
|
||||
0xd4, 0x36, 0x98, 0x8b, 0xad, 0x0c, 0x95, 0x1c, 0xb9, 0x07, 0xf9, 0x08, 0xf9, 0xd0, 0x73, 0xd0,
|
||||
0xca, 0x4a, 0xc9, 0xff, 0xd3, 0x24, 0xdb, 0x0a, 0x69, 0x65, 0x68, 0x42, 0x0b, 0x61, 0x88, 0xf1,
|
||||
0x01, 0xe3, 0x3d, 0xeb, 0xc2, 0x74, 0xe1, 0x86, 0x42, 0x84, 0x50, 0xd3, 0xc2, 0xc3, 0xd8, 0x8e,
|
||||
0x7a, 0x56, 0x6e, 0xba, 0x87, 0x3b, 0x76, 0x24, 0x24, 0x92, 0x13, 0x07, 0x39, 0xfe, 0x20, 0x8a,
|
||||
0x91, 0x5b, 0x33, 0xd3, 0x0f, 0x6a, 0x28, 0x44, 0x1c, 0xa4, 0x69, 0x72, 0x07, 0xcc, 0x08, 0x1d,
|
||||
0x8e, 0xb1, 0x65, 0x4a, 0x5d, 0x29, 0xfd, 0x66, 0x82, 0x68, 0x65, 0xa8, 0x66, 0xc9, 0x47, 0x50,
|
||||
0xe0, 0x18, 0xb1, 0x01, 0x77, 0xd0, 0xca, 0x4b, 0xdd, 0xf5, 0x34, 0x1d, 0xd5, 0x4c, 0x2b, 0x43,
|
||||
0x8f, 0x78, 0xf2, 0x09, 0x14, 0xf1, 0x49, 0x8c, 0x61, 0xe4, 0xb1, 0xd0, 0x2a, 0x48, 0xf1, 0x6b,
|
||||
0x69, 0xe2, 0x66, 0x02, 0xb5, 0x32, 0xf4, 0x58, 0x21, 0x1c, 0x76, 0x58, 0xb8, 0xef, 0x75, 0xad,
|
||||
0xe2, 0x74, 0x87, 0x1b, 0x92, 0x10, 0x0e, 0x2b, 0xb6, 0x5e, 0x48, 0x72, 0x5f, 0xdd, 0x82, 0xb9,
|
||||
0x6d, 0xf4, 0xd1, 0x89, 0xeb, 0x87, 0xdb, 0x3e, 0x8b, 0xc9, 0x6d, 0x00, 0x9d, 0xad, 0x8e, 0xe7,
|
||||
0xca, 0x8a, 0x28, 0xd6, 0xe7, 0xc7, 0xa3, 0xa5, 0xa2, 0x4e, 0x67, 0x7b, 0x8d, 0x16, 0x35, 0xd0,
|
||||
0x76, 0x09, 0x81, 0x5c, 0xe4, 0xb3, 0x58, 0x96, 0x41, 0x8e, 0xca, 0x75, 0x75, 0x0b, 0x2e, 0x26,
|
||||
0x16, 0x1b, 0x83, 0x28, 0x66, 0x81, 0xa0, 0x7a, 0x5e, 0xa8, 0xad, 0x51, 0xb9, 0x26, 0x8b, 0x30,
|
||||
0xe3, 0x85, 0x2e, 0x3e, 0x91, 0xd2, 0x22, 0x55, 0x0f, 0x62, 0x77, 0x68, 0xfb, 0x03, 0x94, 0xe5,
|
||||
0x51, 0xa4, 0xea, 0xa1, 0xfa, 0x97, 0x09, 0x85, 0xc4, 0x24, 0xb1, 0x20, 0x7b, 0xe4, 0x98, 0x39,
|
||||
0x1e, 0x2d, 0x65, 0xdb, 0x6b, 0xad, 0x0c, 0xcd, 0x7a, 0x2e, 0xb9, 0x05, 0x45, 0xcf, 0xed, 0xf4,
|
||||
0x39, 0xee, 0x7b, 0xda, 0x6c, 0x7d, 0x6e, 0x3c, 0x5a, 0x2a, 0xb4, 0xd7, 0xb6, 0xe4, 0x9e, 0x08,
|
||||
0xbb, 0xe7, 0xaa, 0x35, 0x59, 0x84, 0x5c, 0x68, 0x07, 0xfa, 0x20, 0x59, 0xd9, 0x76, 0x80, 0xe4,
|
||||
0x75, 0x98, 0x15, 0xbf, 0x89, 0x91, 0x9c, 0x7e, 0x09, 0x62, 0x53, 0x0b, 0xef, 0x83, 0xe9, 0xc8,
|
||||
0x6b, 0xe9, 0xca, 0xaa, 0xa6, 0x57, 0xc8, 0xc9, 0x00, 0xc8, 0xc0, 0xab, 0x50, 0xb4, 0x61, 0x5e,
|
||||
0xad, 0x92, 0x23, 0xcc, 0x57, 0x30, 0x32, 0xa7, 0xa4, 0xda, 0x91, 0xda, 0xa9, 0x4c, 0xe5, 0x53,
|
||||
0x32, 0x25, 0x2a, 0xe5, 0x38, 0x57, 0x6f, 0x42, 0x5e, 0x74, 0xaf, 0x80, 0x0b, 0x12, 0x86, 0xf1,
|
||||
0x68, 0xc9, 0x14, 0x8d, 0x2d, 0x49, 0x53, 0xbc, 0x6c, 0xbb, 0xe4, 0xae, 0x4e, 0xa9, 0x2a, 0xa7,
|
||||
0xca, 0x59, 0x8e, 0x89, 0x82, 0x11, 0xa1, 0x13, 0x3c, 0x59, 0x83, 0x79, 0x17, 0x23, 0x8f, 0xa3,
|
||||
0xdb, 0x89, 0x62, 0x3b, 0x46, 0x0b, 0x2a, 0xc6, 0x8d, 0x8b, 0xe9, 0xb5, 0x2c, 0x7a, 0x75, 0x5b,
|
||||
0x40, 0xe2, 0x52, 0x5a, 0x25, 0x9f, 0xc9, 0x0a, 0xe4, 0x38, 0xf3, 0xd1, 0x9a, 0x95, 0xe2, 0xeb,
|
||||
0xd3, 0x46, 0x11, 0x65, 0xbe, 0x1c, 0x47, 0x82, 0x25, 0x6d, 0x80, 0x00, 0x83, 0x3d, 0xe4, 0xd1,
|
||||
0x63, 0xaf, 0x6f, 0xcd, 0x49, 0xe5, 0xdb, 0xd3, 0x94, 0xdb, 0x7d, 0x74, 0x6a, 0xeb, 0x47, 0xb8,
|
||||
0x48, 0xee, 0xb1, 0x98, 0xac, 0xc3, 0x15, 0x8e, 0xfb, 0xc8, 0x31, 0x74, 0xd0, 0xed, 0xe8, 0xe9,
|
||||
0x23, 0x22, 0x36, 0x2f, 0x23, 0x76, 0x6d, 0x3c, 0x5a, 0xba, 0x4c, 0x8f, 0x00, 0x3d, 0xa8, 0x64,
|
||||
0xf8, 0x2e, 0xf3, 0x97, 0xb6, 0x5d, 0xf2, 0x39, 0x2c, 0x9e, 0x30, 0xa7, 0x86, 0x85, 0xb0, 0x76,
|
||||
0x51, 0x5a, 0xbb, 0x3a, 0x1e, 0x2d, 0x91, 0x63, 0x6b, 0x6a, 0xaa, 0x48, 0x63, 0x84, 0x4f, 0xee,
|
||||
0x8a, 0x86, 0x51, 0x4d, 0x74, 0x29, 0x29, 0x58, 0xd9, 0x46, 0xa7, 0x4f, 0x50, 0xdd, 0x2d, 0x4e,
|
||||
0x58, 0x48, 0x3b, 0x41, 0x8d, 0x81, 0xc9, 0x13, 0xf4, 0xae, 0x5b, 0xcf, 0x41, 0xb6, 0x7e, 0x58,
|
||||
0xfd, 0x23, 0x0b, 0x73, 0x8f, 0xc4, 0x07, 0x91, 0xe2, 0x97, 0x03, 0x8c, 0x62, 0xd2, 0x84, 0x3c,
|
||||
0x86, 0x31, 0xf7, 0x30, 0xb2, 0x8c, 0xca, 0x85, 0x1b, 0xb3, 0x2b, 0xb7, 0xd2, 0x62, 0x7b, 0x52,
|
||||
0xa2, 0x1e, 0x9a, 0x61, 0xcc, 0x0f, 0x69, 0xa2, 0x25, 0xf7, 0x61, 0x96, 0x63, 0x34, 0x08, 0xb0,
|
||||
0xb3, 0xcf, 0x59, 0x70, 0xd6, 0x87, 0xe3, 0x21, 0x72, 0x31, 0xda, 0x28, 0x28, 0xfe, 0x33, 0xce,
|
||||
0x02, 0x72, 0x1b, 0x88, 0x17, 0x3a, 0xfe, 0xc0, 0xc5, 0x0e, 0xf3, 0xdd, 0x8e, 0xfa, 0x8a, 0xca,
|
||||
0xe6, 0x2d, 0xd0, 0x05, 0xfd, 0x66, 0xd3, 0x77, 0xd5, 0x50, 0x2b, 0x7d, 0x6b, 0x00, 0x1c, 0xfb,
|
||||
0x90, 0x3a, 0x7f, 0x3e, 0x06, 0xd3, 0x76, 0x62, 0x31, 0x73, 0xb3, 0xb2, 0x60, 0xde, 0x98, 0x7a,
|
||||
0xa9, 0x55, 0x89, 0x3d, 0xf0, 0x42, 0x97, 0x6a, 0x09, 0xb9, 0x0b, 0xf9, 0x7d, 0xcf, 0x8f, 0x91,
|
||||
0x47, 0xd6, 0x05, 0x19, 0x92, 0xeb, 0x67, 0xb5, 0x09, 0x4d, 0xe0, 0xea, 0x2f, 0x49, 0x6c, 0xd7,
|
||||
0x31, 0x8a, 0xec, 0x2e, 0x92, 0x4f, 0xc1, 0xc4, 0x21, 0x86, 0x71, 0x12, 0xda, 0xb7, 0xa6, 0x7a,
|
||||
0xa1, 0x15, 0xb5, 0xa6, 0xc0, 0xa9, 0x56, 0x91, 0x0f, 0x20, 0x3f, 0x54, 0xd1, 0xfa, 0x2f, 0x01,
|
||||
0x4d, 0xd8, 0xd2, 0x4f, 0x06, 0xcc, 0x48, 0x43, 0x27, 0xc2, 0x60, 0xbc, 0x7a, 0x18, 0x56, 0xc0,
|
||||
0xd4, 0x89, 0xc8, 0x4e, 0xff, 0xf6, 0xa8, 0x94, 0x50, 0x4d, 0x92, 0x0f, 0x01, 0x26, 0x12, 0x78,
|
||||
0xb6, 0xae, 0xc8, 0x92, 0xac, 0xde, 0xfc, 0xc7, 0x80, 0x4b, 0x13, 0xae, 0x90, 0x3b, 0xb0, 0xf8,
|
||||
0x68, 0x75, 0xa7, 0xd1, 0xea, 0xac, 0x36, 0x76, 0xda, 0x9b, 0x1b, 0x9d, 0xdd, 0x8d, 0x07, 0x1b,
|
||||
0x9b, 0x8f, 0x36, 0x16, 0x32, 0xa5, 0xd2, 0xd3, 0x67, 0x95, 0xab, 0x13, 0xf8, 0x6e, 0xd8, 0x0b,
|
||||
0xd9, 0x81, 0x70, 0xfc, 0xf2, 0x29, 0x55, 0x83, 0x36, 0x57, 0x77, 0x9a, 0x0b, 0x46, 0xe9, 0x7f,
|
||||
0x4f, 0x9f, 0x55, 0xae, 0x4c, 0x88, 0x1a, 0x1c, 0xd5, 0x64, 0x3a, 0xad, 0xd9, 0xdd, 0x5a, 0x13,
|
||||
0x9a, 0x6c, 0xaa, 0x66, 0xb7, 0xef, 0xa6, 0x69, 0x68, 0x73, 0x7d, 0xf3, 0x61, 0x73, 0x21, 0x97,
|
||||
0xaa, 0xa1, 0x18, 0xb0, 0x21, 0x96, 0xae, 0x7d, 0xf3, 0x7d, 0x39, 0xf3, 0xf3, 0x0f, 0xe5, 0xc9,
|
||||
0xab, 0xae, 0x04, 0x30, 0x23, 0xb7, 0x88, 0x9b, 0x2c, 0x2a, 0xe7, 0x35, 0x62, 0xa9, 0x72, 0x5e,
|
||||
0x3d, 0x55, 0xaf, 0xfc, 0xfa, 0xe3, 0xdf, 0xdf, 0x65, 0x2f, 0xc1, 0xbc, 0x24, 0xde, 0x09, 0xec,
|
||||
0xd0, 0xee, 0x22, 0x7f, 0xd7, 0xa8, 0x5b, 0xcf, 0x5f, 0x94, 0x33, 0xbf, 0xbf, 0x28, 0x67, 0xbe,
|
||||
0x1a, 0x97, 0x8d, 0xe7, 0xe3, 0xb2, 0xf1, 0xdb, 0xb8, 0x6c, 0xfc, 0x39, 0x2e, 0x1b, 0x7b, 0xa6,
|
||||
0xfc, 0x03, 0xf9, 0xfe, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xe6, 0x76, 0x89, 0xef, 0x57, 0x0b,
|
||||
0x00, 0x00,
|
||||
}
|
||||
|
|
8
vendor/github.com/docker/swarmkit/api/watch.proto
generated
vendored
8
vendor/github.com/docker/swarmkit/api/watch.proto
generated
vendored
|
@ -2,11 +2,11 @@ syntax = "proto3";
|
|||
|
||||
package docker.swarmkit.v1;
|
||||
|
||||
import "specs.proto";
|
||||
import "objects.proto";
|
||||
import "types.proto";
|
||||
import "github.com/docker/swarmkit/api/specs.proto";
|
||||
import "github.com/docker/swarmkit/api/objects.proto";
|
||||
import "github.com/docker/swarmkit/api/types.proto";
|
||||
import "gogoproto/gogo.proto";
|
||||
import "plugin/plugin.proto";
|
||||
import "github.com/docker/swarmkit/protobuf/plugin/plugin.proto";
|
||||
|
||||
message Object {
|
||||
oneof Object {
|
||||
|
|
46
vendor/github.com/docker/swarmkit/ca/config.go
generated
vendored
46
vendor/github.com/docker/swarmkit/ca/config.go
generated
vendored
|
@ -68,14 +68,11 @@ type SecurityConfig struct {
|
|||
renewalMu sync.Mutex
|
||||
|
||||
rootCA *RootCA
|
||||
externalCA *ExternalCA
|
||||
keyReadWriter *KeyReadWriter
|
||||
|
||||
certificate *tls.Certificate
|
||||
issuerInfo *IssuerInfo
|
||||
|
||||
externalCAClientRootPool *x509.CertPool
|
||||
|
||||
ServerTLSCreds *MutableTLSCreds
|
||||
ClientTLSCreds *MutableTLSCreds
|
||||
|
||||
|
@ -90,7 +87,7 @@ type CertificateUpdate struct {
|
|||
Err error
|
||||
}
|
||||
|
||||
func validateRootCAAndTLSCert(rootCA *RootCA, externalCARootPool *x509.CertPool, tlsKeyPair *tls.Certificate) error {
|
||||
func validateRootCAAndTLSCert(rootCA *RootCA, tlsKeyPair *tls.Certificate) error {
|
||||
var (
|
||||
leafCert *x509.Certificate
|
||||
intermediatePool *x509.CertPool
|
||||
|
@ -116,10 +113,6 @@ func validateRootCAAndTLSCert(rootCA *RootCA, externalCARootPool *x509.CertPool,
|
|||
if _, err := leafCert.Verify(opts); err != nil {
|
||||
return errors.Wrap(err, "new root CA does not match existing TLS credentials")
|
||||
}
|
||||
opts.Roots = externalCARootPool
|
||||
if _, err := leafCert.Verify(opts); err != nil {
|
||||
return errors.Wrap(err, "new external root pool does not match existing TLS credentials")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -139,16 +132,7 @@ func NewSecurityConfig(rootCA *RootCA, krw *KeyReadWriter, tlsKeyPair *tls.Certi
|
|||
return nil, nil, err
|
||||
}
|
||||
|
||||
// Make a new TLS config for the external CA client without a
|
||||
// ServerName value set.
|
||||
externalCATLSConfig := &tls.Config{
|
||||
Certificates: []tls.Certificate{*tlsKeyPair},
|
||||
RootCAs: rootCA.Pool,
|
||||
MinVersion: tls.VersionTLS12,
|
||||
}
|
||||
|
||||
q := watch.NewQueue()
|
||||
|
||||
return &SecurityConfig{
|
||||
rootCA: rootCA,
|
||||
keyReadWriter: krw,
|
||||
|
@ -157,10 +141,8 @@ func NewSecurityConfig(rootCA *RootCA, krw *KeyReadWriter, tlsKeyPair *tls.Certi
|
|||
issuerInfo: issuerInfo,
|
||||
queue: q,
|
||||
|
||||
externalCA: NewExternalCA(rootCA, externalCATLSConfig),
|
||||
ClientTLSCreds: clientTLSCreds,
|
||||
ServerTLSCreds: serverTLSCreds,
|
||||
externalCAClientRootPool: rootCA.Pool,
|
||||
ClientTLSCreds: clientTLSCreds,
|
||||
ServerTLSCreds: serverTLSCreds,
|
||||
}, q.Close, nil
|
||||
}
|
||||
|
||||
|
@ -172,11 +154,6 @@ func (s *SecurityConfig) RootCA() *RootCA {
|
|||
return s.rootCA
|
||||
}
|
||||
|
||||
// ExternalCA returns the external CA.
|
||||
func (s *SecurityConfig) ExternalCA() *ExternalCA {
|
||||
return s.externalCA
|
||||
}
|
||||
|
||||
// KeyWriter returns the object that can write keys to disk
|
||||
func (s *SecurityConfig) KeyWriter() KeyWriter {
|
||||
return s.keyReadWriter
|
||||
|
@ -188,19 +165,16 @@ func (s *SecurityConfig) KeyReader() KeyReader {
|
|||
}
|
||||
|
||||
// UpdateRootCA replaces the root CA with a new root CA
|
||||
func (s *SecurityConfig) UpdateRootCA(rootCA *RootCA, externalCARootPool *x509.CertPool) error {
|
||||
func (s *SecurityConfig) UpdateRootCA(rootCA *RootCA) error {
|
||||
s.mu.Lock()
|
||||
defer s.mu.Unlock()
|
||||
|
||||
// refuse to update the root CA if the current TLS credentials do not validate against it
|
||||
if err := validateRootCAAndTLSCert(rootCA, externalCARootPool, s.certificate); err != nil {
|
||||
if err := validateRootCAAndTLSCert(rootCA, s.certificate); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
s.rootCA = rootCA
|
||||
s.externalCAClientRootPool = externalCARootPool
|
||||
s.externalCA.UpdateRootCA(rootCA)
|
||||
|
||||
return s.updateTLSCredentials(s.certificate, s.issuerInfo)
|
||||
}
|
||||
|
||||
|
@ -233,14 +207,6 @@ func (s *SecurityConfig) updateTLSCredentials(certificate *tls.Certificate, issu
|
|||
return errors.Wrap(err, "failed to update the client credentials")
|
||||
}
|
||||
|
||||
// Update the external CA to use the new client TLS
|
||||
// config using a copy without a serverName specified.
|
||||
s.externalCA.UpdateTLSConfig(&tls.Config{
|
||||
Certificates: certs,
|
||||
RootCAs: s.externalCAClientRootPool,
|
||||
MinVersion: tls.VersionTLS12,
|
||||
})
|
||||
|
||||
if err := s.ServerTLSCreds.loadNewTLSConfig(serverConfig); err != nil {
|
||||
return errors.Wrap(err, "failed to update the server TLS credentials")
|
||||
}
|
||||
|
@ -507,7 +473,7 @@ func updateRootThenUpdateCert(ctx context.Context, s *SecurityConfig, connBroker
|
|||
return nil, nil, err
|
||||
}
|
||||
// validate against the existing security config creds
|
||||
if err := s.UpdateRootCA(&rootCA, rootCA.Pool); err != nil {
|
||||
if err := s.UpdateRootCA(&rootCA); err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
if err := SaveRootCA(rootCA, rootPaths); err != nil {
|
||||
|
|
44
vendor/github.com/docker/swarmkit/ca/external.go
generated
vendored
44
vendor/github.com/docker/swarmkit/ca/external.go
generated
vendored
|
@ -47,18 +47,28 @@ var ErrNoExternalCAURLs = errors.New("no external CA URLs")
|
|||
type ExternalCA struct {
|
||||
ExternalRequestTimeout time.Duration
|
||||
|
||||
mu sync.Mutex
|
||||
rootCA *RootCA
|
||||
urls []string
|
||||
client *http.Client
|
||||
mu sync.Mutex
|
||||
intermediates []byte
|
||||
urls []string
|
||||
client *http.Client
|
||||
}
|
||||
|
||||
// NewExternalCATLSConfig takes a TLS certificate and root pool and returns a TLS config that can be updated
|
||||
// without killing existing connections
|
||||
func NewExternalCATLSConfig(certs []tls.Certificate, rootPool *x509.CertPool) *tls.Config {
|
||||
return &tls.Config{
|
||||
Certificates: certs,
|
||||
RootCAs: rootPool,
|
||||
MinVersion: tls.VersionTLS12,
|
||||
}
|
||||
}
|
||||
|
||||
// NewExternalCA creates a new ExternalCA which uses the given tlsConfig to
|
||||
// authenticate to any of the given URLS of CFSSL API endpoints.
|
||||
func NewExternalCA(rootCA *RootCA, tlsConfig *tls.Config, urls ...string) *ExternalCA {
|
||||
func NewExternalCA(intermediates []byte, tlsConfig *tls.Config, urls ...string) *ExternalCA {
|
||||
return &ExternalCA{
|
||||
ExternalRequestTimeout: 5 * time.Second,
|
||||
rootCA: rootCA,
|
||||
intermediates: intermediates,
|
||||
urls: urls,
|
||||
client: &http.Client{
|
||||
Transport: &http.Transport{
|
||||
|
@ -68,19 +78,6 @@ func NewExternalCA(rootCA *RootCA, tlsConfig *tls.Config, urls ...string) *Exter
|
|||
}
|
||||
}
|
||||
|
||||
// Copy returns a copy of the external CA that can be updated independently
|
||||
func (eca *ExternalCA) Copy() *ExternalCA {
|
||||
eca.mu.Lock()
|
||||
defer eca.mu.Unlock()
|
||||
|
||||
return &ExternalCA{
|
||||
ExternalRequestTimeout: eca.ExternalRequestTimeout,
|
||||
rootCA: eca.rootCA,
|
||||
urls: eca.urls,
|
||||
client: eca.client,
|
||||
}
|
||||
}
|
||||
|
||||
// UpdateTLSConfig updates the HTTP Client for this ExternalCA by creating
|
||||
// a new client which uses the given tlsConfig.
|
||||
func (eca *ExternalCA) UpdateTLSConfig(tlsConfig *tls.Config) {
|
||||
|
@ -102,13 +99,6 @@ func (eca *ExternalCA) UpdateURLs(urls ...string) {
|
|||
eca.urls = urls
|
||||
}
|
||||
|
||||
// UpdateRootCA changes the root CA used to append intermediates
|
||||
func (eca *ExternalCA) UpdateRootCA(rca *RootCA) {
|
||||
eca.mu.Lock()
|
||||
eca.rootCA = rca
|
||||
eca.mu.Unlock()
|
||||
}
|
||||
|
||||
// Sign signs a new certificate by proxying the given certificate signing
|
||||
// request to an external CFSSL API server.
|
||||
func (eca *ExternalCA) Sign(ctx context.Context, req signer.SignRequest) (cert []byte, err error) {
|
||||
|
@ -117,7 +107,7 @@ func (eca *ExternalCA) Sign(ctx context.Context, req signer.SignRequest) (cert [
|
|||
eca.mu.Lock()
|
||||
urls := eca.urls
|
||||
client := eca.client
|
||||
intermediates := eca.rootCA.Intermediates
|
||||
intermediates := eca.intermediates
|
||||
eca.mu.Unlock()
|
||||
|
||||
if len(urls) == 0 {
|
||||
|
|
284
vendor/github.com/docker/swarmkit/ca/server.go
generated
vendored
284
vendor/github.com/docker/swarmkit/ca/server.go
generated
vendored
|
@ -25,13 +25,6 @@ const (
|
|||
defaultRootReconciliationInterval = 3 * time.Second
|
||||
)
|
||||
|
||||
// APISecurityConfigUpdater knows how to update a SecurityConfig from an api.Cluster object
|
||||
type APISecurityConfigUpdater interface {
|
||||
UpdateRootCA(ctx context.Context, cluster *api.Cluster) error
|
||||
}
|
||||
|
||||
var _ APISecurityConfigUpdater = &Server{}
|
||||
|
||||
// Server is the CA and NodeCA API gRPC server.
|
||||
// TODO(aaronl): At some point we may want to have separate implementations of
|
||||
// CA, NodeCA, and other hypothetical future CA services. At the moment,
|
||||
|
@ -43,6 +36,10 @@ type Server struct {
|
|||
cancel func()
|
||||
store *store.MemoryStore
|
||||
securityConfig *SecurityConfig
|
||||
clusterID string
|
||||
localRootCA *RootCA
|
||||
externalCA *ExternalCA
|
||||
externalCAPool *x509.CertPool
|
||||
joinTokens *api.JoinTokens
|
||||
reconciliationRetryInterval time.Duration
|
||||
|
||||
|
@ -60,10 +57,12 @@ type Server struct {
|
|||
// the security config as a result
|
||||
lastSeenClusterRootCA *api.RootCA
|
||||
lastSeenExternalCAs []*api.ExternalCA
|
||||
secConfigMu sync.Mutex
|
||||
|
||||
// before we update the security config with the new root CA, we need to be able to save the root certs
|
||||
rootPaths CertPaths
|
||||
// This mutex protects the components of the CA server used to issue new certificates
|
||||
// (and any attributes used to update those components): `lastSeenClusterRootCA` and
|
||||
// `lastSeenExternalCA`, which are used to update `externalCA` and the `rootCA` object
|
||||
// of the SecurityConfig
|
||||
signingMu sync.Mutex
|
||||
|
||||
// lets us monitor and finish root rotations
|
||||
rootReconciler *rootRotationReconciler
|
||||
|
@ -78,18 +77,36 @@ func DefaultCAConfig() api.CAConfig {
|
|||
}
|
||||
|
||||
// NewServer creates a CA API server.
|
||||
func NewServer(store *store.MemoryStore, securityConfig *SecurityConfig, rootCAPaths CertPaths) *Server {
|
||||
func NewServer(store *store.MemoryStore, securityConfig *SecurityConfig) *Server {
|
||||
return &Server{
|
||||
store: store,
|
||||
securityConfig: securityConfig,
|
||||
localRootCA: securityConfig.RootCA(),
|
||||
externalCA: NewExternalCA(nil, nil),
|
||||
pending: make(map[string]*api.Node),
|
||||
started: make(chan struct{}),
|
||||
reconciliationRetryInterval: defaultReconciliationRetryInterval,
|
||||
rootReconciliationRetryInterval: defaultRootReconciliationInterval,
|
||||
rootPaths: rootCAPaths,
|
||||
clusterID: securityConfig.ClientTLSCreds.Organization(),
|
||||
}
|
||||
}
|
||||
|
||||
// ExternalCA returns the current external CA - this is exposed to support unit testing only, and the external CA
|
||||
// should really be a private field
|
||||
func (s *Server) ExternalCA() *ExternalCA {
|
||||
s.signingMu.Lock()
|
||||
defer s.signingMu.Unlock()
|
||||
return s.externalCA
|
||||
}
|
||||
|
||||
// RootCA returns the current local root CA - this is exposed to support unit testing only, and the root CA
|
||||
// should really be a private field
|
||||
func (s *Server) RootCA() *RootCA {
|
||||
s.signingMu.Lock()
|
||||
defer s.signingMu.Unlock()
|
||||
return s.localRootCA
|
||||
}
|
||||
|
||||
// SetReconciliationRetryInterval changes the time interval between
|
||||
// reconciliation attempts. This function must be called before Run.
|
||||
func (s *Server) SetReconciliationRetryInterval(reconciliationRetryInterval time.Duration) {
|
||||
|
@ -114,7 +131,7 @@ func (s *Server) GetUnlockKey(ctx context.Context, request *api.GetUnlockKeyRequ
|
|||
// a cached value.
|
||||
resp := api.GetUnlockKeyResponse{}
|
||||
s.store.View(func(tx store.ReadTx) {
|
||||
cluster := store.GetCluster(tx, s.securityConfig.ClientTLSCreds.Organization())
|
||||
cluster := store.GetCluster(tx, s.clusterID)
|
||||
resp.Version = cluster.Meta.Version
|
||||
if cluster.Spec.EncryptionConfig.AutoLockManagers {
|
||||
for _, encryptionKey := range cluster.UnlockKeys {
|
||||
|
@ -222,7 +239,7 @@ func (s *Server) IssueNodeCertificate(ctx context.Context, request *api.IssueNod
|
|||
return nil, grpc.Errorf(codes.InvalidArgument, codes.InvalidArgument.String())
|
||||
}
|
||||
|
||||
if _, err := s.isRunningLocked(); err != nil {
|
||||
if err := s.isReadyLocked(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
@ -233,8 +250,7 @@ func (s *Server) IssueNodeCertificate(ctx context.Context, request *api.IssueNod
|
|||
)
|
||||
|
||||
s.store.View(func(readTx store.ReadTx) {
|
||||
clusters, err = store.FindClusters(readTx, store.ByName("default"))
|
||||
|
||||
clusters, err = store.FindClusters(readTx, store.ByName(store.DefaultClusterName))
|
||||
})
|
||||
|
||||
// Not having a cluster object yet means we can't check
|
||||
|
@ -254,14 +270,14 @@ func (s *Server) IssueNodeCertificate(ctx context.Context, request *api.IssueNod
|
|||
|
||||
// If the remote node is a worker (either forwarded by a manager, or calling directly),
|
||||
// issue a renew worker certificate entry with the correct ID
|
||||
nodeID, err := AuthorizeForwardedRoleAndOrg(ctx, []string{WorkerRole}, []string{ManagerRole}, s.securityConfig.ClientTLSCreds.Organization(), blacklistedCerts)
|
||||
nodeID, err := AuthorizeForwardedRoleAndOrg(ctx, []string{WorkerRole}, []string{ManagerRole}, s.clusterID, blacklistedCerts)
|
||||
if err == nil {
|
||||
return s.issueRenewCertificate(ctx, nodeID, request.CSR)
|
||||
}
|
||||
|
||||
// If the remote node is a manager (either forwarded by another manager, or calling directly),
|
||||
// issue a renew certificate entry with the correct ID
|
||||
nodeID, err = AuthorizeForwardedRoleAndOrg(ctx, []string{ManagerRole}, []string{ManagerRole}, s.securityConfig.ClientTLSCreds.Organization(), blacklistedCerts)
|
||||
nodeID, err = AuthorizeForwardedRoleAndOrg(ctx, []string{ManagerRole}, []string{ManagerRole}, s.clusterID, blacklistedCerts)
|
||||
if err == nil {
|
||||
return s.issueRenewCertificate(ctx, nodeID, request.CSR)
|
||||
}
|
||||
|
@ -393,8 +409,11 @@ func (s *Server) GetRootCACertificate(ctx context.Context, request *api.GetRootC
|
|||
"method": "GetRootCACertificate",
|
||||
})
|
||||
|
||||
s.signingMu.Lock()
|
||||
defer s.signingMu.Unlock()
|
||||
|
||||
return &api.GetRootCACertificateResponse{
|
||||
Certificate: s.securityConfig.RootCA().Certs,
|
||||
Certificate: s.localRootCA.Certs,
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
@ -409,47 +428,51 @@ func (s *Server) Run(ctx context.Context) error {
|
|||
s.wg.Add(1)
|
||||
s.ctx, s.cancel = context.WithCancel(log.WithModule(ctx, "ca"))
|
||||
ctx = s.ctx
|
||||
// we need to set it on the server, because `Server.UpdateRootCA` can be called from outside the Run function
|
||||
s.rootReconciler = &rootRotationReconciler{
|
||||
ctx: log.WithField(ctx, "method", "(*Server).rootRotationReconciler"),
|
||||
clusterID: s.securityConfig.ClientTLSCreds.Organization(),
|
||||
store: s.store,
|
||||
batchUpdateInterval: s.rootReconciliationRetryInterval,
|
||||
}
|
||||
rootReconciler := s.rootReconciler
|
||||
s.mu.Unlock()
|
||||
defer s.wg.Done()
|
||||
defer func() {
|
||||
s.mu.Lock()
|
||||
s.rootReconciler = nil
|
||||
s.mu.Unlock()
|
||||
}()
|
||||
|
||||
// Retrieve the channels to keep track of changes in the cluster
|
||||
// Retrieve all the currently registered nodes
|
||||
var nodes []*api.Node
|
||||
|
||||
var (
|
||||
nodes []*api.Node
|
||||
cluster *api.Cluster
|
||||
err error
|
||||
)
|
||||
updates, cancel, err := store.ViewAndWatch(
|
||||
s.store,
|
||||
func(readTx store.ReadTx) error {
|
||||
clusters, err := store.FindClusters(readTx, store.ByName(store.DefaultClusterName))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if len(clusters) != 1 {
|
||||
cluster = store.GetCluster(readTx, s.clusterID)
|
||||
if cluster == nil {
|
||||
return errors.New("could not find cluster object")
|
||||
}
|
||||
s.UpdateRootCA(ctx, clusters[0]) // call once to ensure that the join tokens are always set
|
||||
nodes, err = store.FindNodes(readTx, store.All)
|
||||
return err
|
||||
},
|
||||
api.EventCreateNode{},
|
||||
api.EventUpdateNode{},
|
||||
api.EventDeleteNode{},
|
||||
api.EventUpdateCluster{
|
||||
Cluster: &api.Cluster{ID: s.clusterID},
|
||||
Checks: []api.ClusterCheckFunc{api.ClusterCheckID},
|
||||
},
|
||||
)
|
||||
|
||||
// Do this after updateCluster has been called, so isRunning never
|
||||
// returns true without joinTokens being set correctly.
|
||||
// call once to ensure that the join tokens and local/external CA signer are always set
|
||||
rootReconciler := &rootRotationReconciler{
|
||||
ctx: log.WithField(ctx, "method", "(*Server).rootRotationReconciler"),
|
||||
clusterID: s.clusterID,
|
||||
store: s.store,
|
||||
batchUpdateInterval: s.rootReconciliationRetryInterval,
|
||||
}
|
||||
|
||||
s.UpdateRootCA(ctx, cluster, rootReconciler)
|
||||
|
||||
// Do this after updateCluster has been called, so Ready() and isRunning never returns true without
|
||||
// the join tokens and external CA/security config's root CA being set correctly
|
||||
s.mu.Lock()
|
||||
close(s.started)
|
||||
s.mu.Unlock()
|
||||
|
@ -475,6 +498,9 @@ func (s *Server) Run(ctx context.Context) error {
|
|||
ticker := time.NewTicker(s.reconciliationRetryInterval)
|
||||
defer ticker.Stop()
|
||||
|
||||
externalTLSCredsChange, externalTLSWatchCancel := s.securityConfig.Watch()
|
||||
defer externalTLSWatchCancel()
|
||||
|
||||
// Watch for new nodes being created, new nodes being updated, and changes
|
||||
// to the cluster
|
||||
for {
|
||||
|
@ -499,8 +525,29 @@ func (s *Server) Run(ctx context.Context) error {
|
|||
rootReconciler.UpdateNode(v.Node)
|
||||
case api.EventDeleteNode:
|
||||
rootReconciler.DeleteNode(v.Node)
|
||||
case api.EventUpdateCluster:
|
||||
if v.Cluster.ID == s.clusterID {
|
||||
s.UpdateRootCA(ctx, v.Cluster, rootReconciler)
|
||||
}
|
||||
}
|
||||
case <-externalTLSCredsChange:
|
||||
// The TLS certificates can rotate independently of the root CA (and hence which roots the
|
||||
// external CA trusts) and external CA URLs. It's possible that the root CA update is received
|
||||
// before the external TLS cred change notification. During that period, it is possible that
|
||||
// the TLS creds will expire or otherwise fail to authorize against external CAs. However, in
|
||||
// that case signing will just fail with a recoverable connectivity error - the state of the
|
||||
// certificate issuance is left as pending, and on the next tick, the server will try to sign
|
||||
// all nodes with pending certs again (by which time the TLS cred change will have been
|
||||
// received).
|
||||
|
||||
// Note that if the external CA changes, the new external CA *MUST* trust the current server's
|
||||
// certificate issuer, and this server's certificates should not be extremely close to expiry,
|
||||
// otherwise this server would not be able to get new TLS certificates and will no longer be
|
||||
// able to function.
|
||||
s.signingMu.Lock()
|
||||
s.externalCA.UpdateTLSConfig(NewExternalCATLSConfig(
|
||||
s.securityConfig.ClientTLSCreds.Config().Certificates, s.externalCAPool))
|
||||
s.signingMu.Unlock()
|
||||
case <-ticker.C:
|
||||
for _, node := range s.pending {
|
||||
if err := s.evaluateAndSignNodeCert(ctx, node); err != nil {
|
||||
|
@ -527,6 +574,7 @@ func (s *Server) Stop() error {
|
|||
}
|
||||
s.cancel()
|
||||
s.started = make(chan struct{})
|
||||
s.joinTokens = nil
|
||||
s.mu.Unlock()
|
||||
|
||||
// Wait for Run to complete
|
||||
|
@ -553,6 +601,18 @@ func (s *Server) isRunningLocked() (context.Context, error) {
|
|||
return ctx, nil
|
||||
}
|
||||
|
||||
func (s *Server) isReadyLocked() error {
|
||||
s.mu.Lock()
|
||||
defer s.mu.Unlock()
|
||||
if !s.isRunning() {
|
||||
return grpc.Errorf(codes.Aborted, "CA signer is stopped")
|
||||
}
|
||||
if s.joinTokens == nil {
|
||||
return grpc.Errorf(codes.Aborted, "CA signer is still starting")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *Server) isRunning() bool {
|
||||
if s.ctx == nil {
|
||||
return false
|
||||
|
@ -565,33 +625,59 @@ func (s *Server) isRunning() bool {
|
|||
return true
|
||||
}
|
||||
|
||||
// filterExternalCAURLS returns a list of external CA urls filtered by the desired cert.
|
||||
func filterExternalCAURLS(ctx context.Context, desiredCert, defaultCert []byte, apiExternalCAs []*api.ExternalCA) (urls []string) {
|
||||
desiredCert = NormalizePEMs(desiredCert)
|
||||
|
||||
// TODO(aaronl): In the future, this will be abstracted with an ExternalCA interface that has different
|
||||
// implementations for different CA types. At the moment, only CFSSL is supported.
|
||||
for i, extCA := range apiExternalCAs {
|
||||
// We want to support old external CA specifications which did not have a CA cert. If there is no cert specified,
|
||||
// we assume it's the old cert
|
||||
certForExtCA := extCA.CACert
|
||||
if len(certForExtCA) == 0 {
|
||||
certForExtCA = defaultCert
|
||||
}
|
||||
certForExtCA = NormalizePEMs(certForExtCA)
|
||||
if extCA.Protocol != api.ExternalCA_CAProtocolCFSSL {
|
||||
log.G(ctx).Debugf("skipping external CA %d (url: %s) due to unknown protocol type", i, extCA.URL)
|
||||
continue
|
||||
}
|
||||
if !bytes.Equal(certForExtCA, desiredCert) {
|
||||
log.G(ctx).Debugf("skipping external CA %d (url: %s) because it has the wrong CA cert", i, extCA.URL)
|
||||
continue
|
||||
}
|
||||
urls = append(urls, extCA.URL)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// UpdateRootCA is called when there are cluster changes, and it ensures that the local RootCA is
|
||||
// always aware of changes in clusterExpiry and the Root CA key material - this can be called by
|
||||
// anything to update the root CA material
|
||||
func (s *Server) UpdateRootCA(ctx context.Context, cluster *api.Cluster) error {
|
||||
func (s *Server) UpdateRootCA(ctx context.Context, cluster *api.Cluster, reconciler *rootRotationReconciler) error {
|
||||
s.mu.Lock()
|
||||
s.joinTokens = cluster.RootCA.JoinTokens.Copy()
|
||||
reconciler := s.rootReconciler
|
||||
s.mu.Unlock()
|
||||
rCA := cluster.RootCA.Copy()
|
||||
if reconciler != nil {
|
||||
reconciler.UpdateRootCA(rCA)
|
||||
}
|
||||
|
||||
s.secConfigMu.Lock()
|
||||
defer s.secConfigMu.Unlock()
|
||||
s.signingMu.Lock()
|
||||
defer s.signingMu.Unlock()
|
||||
firstSeenCluster := s.lastSeenClusterRootCA == nil && s.lastSeenExternalCAs == nil
|
||||
rootCAChanged := len(rCA.CACert) != 0 && !equality.RootCAEqualStable(s.lastSeenClusterRootCA, rCA)
|
||||
externalCAChanged := !equality.ExternalCAsEqualStable(s.lastSeenExternalCAs, cluster.Spec.CAConfig.ExternalCAs)
|
||||
logger := log.G(ctx).WithFields(logrus.Fields{
|
||||
ctx = log.WithLogger(ctx, log.G(ctx).WithFields(logrus.Fields{
|
||||
"cluster.id": cluster.ID,
|
||||
"method": "(*Server).UpdateRootCA",
|
||||
})
|
||||
}))
|
||||
|
||||
if rootCAChanged {
|
||||
setOrUpdate := "set"
|
||||
if !firstSeenCluster {
|
||||
logger.Debug("Updating security config due to change in cluster Root CA")
|
||||
log.G(ctx).Debug("Updating signing root CA and external CA due to change in cluster Root CA")
|
||||
setOrUpdate = "updated"
|
||||
}
|
||||
expiry := DefaultNodeCertExpiration
|
||||
|
@ -599,91 +685,55 @@ func (s *Server) UpdateRootCA(ctx context.Context, cluster *api.Cluster) error {
|
|||
// NodeCertExpiry exists, let's try to parse the duration out of it
|
||||
clusterExpiry, err := gogotypes.DurationFromProto(cluster.Spec.CAConfig.NodeCertExpiry)
|
||||
if err != nil {
|
||||
logger.WithError(err).Warn("failed to parse certificate expiration, using default")
|
||||
log.G(ctx).WithError(err).Warn("failed to parse certificate expiration, using default")
|
||||
} else {
|
||||
// We were able to successfully parse the expiration out of the cluster.
|
||||
expiry = clusterExpiry
|
||||
}
|
||||
} else {
|
||||
// NodeCertExpiry seems to be nil
|
||||
logger.Warn("no certificate expiration specified, using default")
|
||||
log.G(ctx).Warn("no certificate expiration specified, using default")
|
||||
}
|
||||
// Attempt to update our local RootCA with the new parameters
|
||||
var intermediates []byte
|
||||
signingCert := rCA.CACert
|
||||
signingKey := rCA.CAKey
|
||||
if rCA.RootRotation != nil {
|
||||
signingCert = rCA.RootRotation.CrossSignedCACert
|
||||
signingKey = rCA.RootRotation.CAKey
|
||||
intermediates = rCA.RootRotation.CrossSignedCACert
|
||||
}
|
||||
if signingKey == nil {
|
||||
signingCert = nil
|
||||
}
|
||||
updatedRootCA, err := NewRootCA(rCA.CACert, signingCert, signingKey, expiry, intermediates)
|
||||
updatedRootCA, err := RootCAFromAPI(ctx, rCA, expiry)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "invalid Root CA object in cluster")
|
||||
}
|
||||
externalCARootPool := updatedRootCA.Pool
|
||||
|
||||
s.localRootCA = &updatedRootCA
|
||||
s.externalCAPool = updatedRootCA.Pool
|
||||
externalCACert := rCA.CACert
|
||||
if rCA.RootRotation != nil {
|
||||
externalCACert = rCA.RootRotation.CACert
|
||||
// the external CA has to trust the new CA cert
|
||||
externalCARootPool = x509.NewCertPool()
|
||||
externalCARootPool.AppendCertsFromPEM(rCA.CACert)
|
||||
externalCARootPool.AppendCertsFromPEM(rCA.RootRotation.CACert)
|
||||
s.externalCAPool = x509.NewCertPool()
|
||||
s.externalCAPool.AppendCertsFromPEM(rCA.CACert)
|
||||
s.externalCAPool.AppendCertsFromPEM(rCA.RootRotation.CACert)
|
||||
}
|
||||
s.lastSeenExternalCAs = cluster.Spec.CAConfig.Copy().ExternalCAs
|
||||
urls := filterExternalCAURLS(ctx, externalCACert, rCA.CACert, s.lastSeenExternalCAs)
|
||||
// Replace the external CA with the relevant intermediates, URLS, and TLS config
|
||||
s.externalCA = NewExternalCA(updatedRootCA.Intermediates,
|
||||
NewExternalCATLSConfig(s.securityConfig.ClientTLSCreds.Config().Certificates, s.externalCAPool), urls...)
|
||||
|
||||
// Attempt to update our local RootCA with the new parameters
|
||||
if err := s.securityConfig.UpdateRootCA(&updatedRootCA, externalCARootPool); err != nil {
|
||||
return errors.Wrap(err, "updating Root CA failed")
|
||||
}
|
||||
if err := SaveRootCA(updatedRootCA, s.rootPaths); err != nil {
|
||||
return errors.Wrap(err, "unable to save new root CA certificates")
|
||||
}
|
||||
// only update the server cache if we've successfully updated the root CA
|
||||
logger.Debugf("Root CA %s successfully", setOrUpdate)
|
||||
log.G(ctx).Debugf("Root CA %s successfully", setOrUpdate)
|
||||
s.lastSeenClusterRootCA = rCA
|
||||
}
|
||||
|
||||
// we want to update if the external CA changed, or if the root CA changed because the root CA could affect what
|
||||
// certificate for external CAs we want to filter by
|
||||
if rootCAChanged || externalCAChanged {
|
||||
} else if externalCAChanged {
|
||||
// we want to update only if the external CA URLS have changed, since if the root CA has changed we already
|
||||
// run similar logic
|
||||
if !firstSeenCluster {
|
||||
logger.Debug("Updating security config external CA URLs due to change in cluster Root CA or cluster spec")
|
||||
log.G(ctx).Debug("Updating security config external CA URLs due to change in cluster spec's list of external CAs")
|
||||
}
|
||||
wantedExternalCACert := rCA.CACert // we want to only add external CA URLs that use this cert
|
||||
if rCA.RootRotation != nil {
|
||||
// we're rotating to a new root, so we only want external CAs with the new root cert
|
||||
wantedExternalCACert = rCA.RootRotation.CACert
|
||||
}
|
||||
wantedExternalCACert = NormalizePEMs(wantedExternalCACert)
|
||||
// Update our security config with the list of External CA URLs
|
||||
// from the new cluster state.
|
||||
|
||||
// TODO(aaronl): In the future, this will be abstracted with an
|
||||
// ExternalCA interface that has different implementations for
|
||||
// different CA types. At the moment, only CFSSL is supported.
|
||||
var cfsslURLs []string
|
||||
for i, extCA := range cluster.Spec.CAConfig.ExternalCAs {
|
||||
// We want to support old external CA specifications which did not have a CA cert. If there is no cert specified,
|
||||
// we assume it's the old cert
|
||||
certForExtCA := extCA.CACert
|
||||
if len(certForExtCA) == 0 {
|
||||
certForExtCA = rCA.CACert
|
||||
}
|
||||
certForExtCA = NormalizePEMs(certForExtCA)
|
||||
if extCA.Protocol != api.ExternalCA_CAProtocolCFSSL {
|
||||
logger.Debugf("skipping external CA %d (url: %s) due to unknown protocol type", i, extCA.URL)
|
||||
continue
|
||||
}
|
||||
if !bytes.Equal(certForExtCA, wantedExternalCACert) {
|
||||
logger.Debugf("skipping external CA %d (url: %s) because it has the wrong CA cert", i, extCA.URL)
|
||||
continue
|
||||
}
|
||||
cfsslURLs = append(cfsslURLs, extCA.URL)
|
||||
}
|
||||
|
||||
s.securityConfig.externalCA.UpdateURLs(cfsslURLs...)
|
||||
// Update our external CA with the list of External CA URLs from the new cluster state
|
||||
s.lastSeenExternalCAs = cluster.Spec.CAConfig.Copy().ExternalCAs
|
||||
urls := filterExternalCAURLS(ctx, wantedExternalCACert, rCA.CACert, s.lastSeenExternalCAs)
|
||||
s.externalCA.UpdateURLs(urls...)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@ -714,8 +764,10 @@ func (s *Server) evaluateAndSignNodeCert(ctx context.Context, node *api.Node) er
|
|||
|
||||
// signNodeCert does the bulk of the work for signing a certificate
|
||||
func (s *Server) signNodeCert(ctx context.Context, node *api.Node) error {
|
||||
rootCA := s.securityConfig.RootCA()
|
||||
externalCA := s.securityConfig.externalCA
|
||||
s.signingMu.Lock()
|
||||
rootCA := s.localRootCA
|
||||
externalCA := s.externalCA
|
||||
s.signingMu.Unlock()
|
||||
|
||||
node = node.Copy()
|
||||
nodeID := node.ID
|
||||
|
@ -736,7 +788,7 @@ func (s *Server) signNodeCert(ctx context.Context, node *api.Node) error {
|
|||
rawCSR = node.Certificate.CSR
|
||||
cn = node.Certificate.CN
|
||||
ou = role
|
||||
org = s.securityConfig.ClientTLSCreds.Organization()
|
||||
org = s.clusterID
|
||||
)
|
||||
|
||||
// Try using the external CA first.
|
||||
|
@ -847,3 +899,19 @@ func isFinalState(status api.IssuanceStatus) bool {
|
|||
|
||||
return false
|
||||
}
|
||||
|
||||
// RootCAFromAPI creates a RootCA object from an api.RootCA object
|
||||
func RootCAFromAPI(ctx context.Context, apiRootCA *api.RootCA, expiry time.Duration) (RootCA, error) {
|
||||
var intermediates []byte
|
||||
signingCert := apiRootCA.CACert
|
||||
signingKey := apiRootCA.CAKey
|
||||
if apiRootCA.RootRotation != nil {
|
||||
signingCert = apiRootCA.RootRotation.CrossSignedCACert
|
||||
signingKey = apiRootCA.RootRotation.CAKey
|
||||
intermediates = apiRootCA.RootRotation.CrossSignedCACert
|
||||
}
|
||||
if signingKey == nil {
|
||||
signingCert = nil
|
||||
}
|
||||
return NewRootCA(apiRootCA.CACert, signingCert, signingKey, expiry, intermediates)
|
||||
}
|
||||
|
|
7
vendor/github.com/docker/swarmkit/manager/controlapi/ca_rotation.go
generated
vendored
7
vendor/github.com/docker/swarmkit/manager/controlapi/ca_rotation.go
generated
vendored
|
@ -63,7 +63,6 @@ func newRootRotationObject(ctx context.Context, securityConfig *ca.SecurityConfi
|
|||
return nil, grpc.Errorf(codes.InvalidArgument, "rotating from one external CA to a different external CA is not supported")
|
||||
default:
|
||||
// We need the same credentials but to connect to the original URLs (in case we are in the middle of a root rotation already)
|
||||
externalCA := securityConfig.ExternalCA().Copy()
|
||||
var urls []string
|
||||
for _, c := range extCAs {
|
||||
if c.Protocol == api.ExternalCA_CAProtocolCFSSL {
|
||||
|
@ -74,7 +73,11 @@ func newRootRotationObject(ctx context.Context, securityConfig *ca.SecurityConfi
|
|||
return nil, grpc.Errorf(codes.InvalidArgument,
|
||||
"must provide an external CA for the current external root CA to generate a cross-signed certificate")
|
||||
}
|
||||
externalCA.UpdateURLs(urls...)
|
||||
rootPool := x509.NewCertPool()
|
||||
rootPool.AppendCertsFromPEM(apiRootCA.CACert)
|
||||
|
||||
externalCAConfig := ca.NewExternalCATLSConfig(securityConfig.ClientTLSCreds.Config().Certificates, rootPool)
|
||||
externalCA := ca.NewExternalCA(nil, externalCAConfig, urls...)
|
||||
crossSignedCert, err = externalCA.CrossSignRootCA(ctx, newCARootCA)
|
||||
}
|
||||
|
||||
|
|
19
vendor/github.com/docker/swarmkit/manager/controlapi/cluster.go
generated
vendored
19
vendor/github.com/docker/swarmkit/manager/controlapi/cluster.go
generated
vendored
|
@ -104,17 +104,14 @@ func (s *Server) UpdateCluster(ctx context.Context, request *api.UpdateClusterRe
|
|||
if cluster == nil {
|
||||
return grpc.Errorf(codes.NotFound, "cluster %s not found", request.ClusterID)
|
||||
}
|
||||
// This ensures that we always have the latest security config, so our ca.SecurityConfig.RootCA and
|
||||
// ca.SecurityConfig.externalCA objects are up-to-date with the current api.Cluster.RootCA and
|
||||
// api.Cluster.Spec.ExternalCA objects, respectively. Note that if, during this update, the cluster gets
|
||||
// updated again with different CA info and the security config gets changed under us, that's still fine because
|
||||
// this cluster update would fail anyway due to its version being too low on write.
|
||||
if err := s.scu.UpdateRootCA(ctx, cluster); err != nil {
|
||||
// This ensures that we have the current rootCA with which to generate tokens (expiration doesn't matter
|
||||
// for generating the tokens)
|
||||
rootCA, err := ca.RootCAFromAPI(ctx, &cluster.RootCA, ca.DefaultNodeCertExpiration)
|
||||
if err != nil {
|
||||
log.G(ctx).WithField(
|
||||
"method", "(*controlapi.Server).UpdateCluster").WithError(err).Error("could not update security config")
|
||||
return grpc.Errorf(codes.Internal, "could not update security config")
|
||||
"method", "(*controlapi.Server).UpdateCluster").WithError(err).Error("invalid cluster root CA")
|
||||
return grpc.Errorf(codes.Internal, "error loading cluster rootCA for update")
|
||||
}
|
||||
rootCA := s.securityConfig.RootCA()
|
||||
|
||||
cluster.Meta.Version = *request.ClusterVersion
|
||||
cluster.Spec = *request.Spec.Copy()
|
||||
|
@ -122,10 +119,10 @@ func (s *Server) UpdateCluster(ctx context.Context, request *api.UpdateClusterRe
|
|||
expireBlacklistedCerts(cluster)
|
||||
|
||||
if request.Rotation.WorkerJoinToken {
|
||||
cluster.RootCA.JoinTokens.Worker = ca.GenerateJoinToken(rootCA)
|
||||
cluster.RootCA.JoinTokens.Worker = ca.GenerateJoinToken(&rootCA)
|
||||
}
|
||||
if request.Rotation.ManagerJoinToken {
|
||||
cluster.RootCA.JoinTokens.Manager = ca.GenerateJoinToken(rootCA)
|
||||
cluster.RootCA.JoinTokens.Manager = ca.GenerateJoinToken(&rootCA)
|
||||
}
|
||||
|
||||
updatedRootCA, err := validateCAConfig(ctx, s.securityConfig, cluster)
|
||||
|
|
6
vendor/github.com/docker/swarmkit/manager/controlapi/secret.go
generated
vendored
6
vendor/github.com/docker/swarmkit/manager/controlapi/secret.go
generated
vendored
|
@ -158,6 +158,12 @@ func (s *Server) CreateSecret(ctx context.Context, request *api.CreateSecretRequ
|
|||
return nil, err
|
||||
}
|
||||
|
||||
if request.Spec.Driver != nil { // Check that the requested driver is valid
|
||||
if _, err := s.dr.NewSecretDriver(request.Spec.Driver); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
secret := secretFromSecretSpec(request.Spec) // the store will handle name conflicts
|
||||
err := s.store.Update(func(tx store.Tx) error {
|
||||
return store.CreateSecret(tx, secret)
|
||||
|
|
8
vendor/github.com/docker/swarmkit/manager/controlapi/server.go
generated
vendored
8
vendor/github.com/docker/swarmkit/manager/controlapi/server.go
generated
vendored
|
@ -5,6 +5,7 @@ import (
|
|||
|
||||
"github.com/docker/docker/pkg/plugingetter"
|
||||
"github.com/docker/swarmkit/ca"
|
||||
"github.com/docker/swarmkit/manager/drivers"
|
||||
"github.com/docker/swarmkit/manager/state/raft"
|
||||
"github.com/docker/swarmkit/manager/state/store"
|
||||
)
|
||||
|
@ -18,18 +19,17 @@ type Server struct {
|
|||
store *store.MemoryStore
|
||||
raft *raft.Node
|
||||
securityConfig *ca.SecurityConfig
|
||||
scu ca.APISecurityConfigUpdater
|
||||
pg plugingetter.PluginGetter
|
||||
dr *drivers.DriverProvider
|
||||
}
|
||||
|
||||
// NewServer creates a Cluster API server.
|
||||
func NewServer(store *store.MemoryStore, raft *raft.Node, securityConfig *ca.SecurityConfig,
|
||||
scu ca.APISecurityConfigUpdater, pg plugingetter.PluginGetter) *Server {
|
||||
func NewServer(store *store.MemoryStore, raft *raft.Node, securityConfig *ca.SecurityConfig, pg plugingetter.PluginGetter, dr *drivers.DriverProvider) *Server {
|
||||
return &Server{
|
||||
store: store,
|
||||
dr: dr,
|
||||
raft: raft,
|
||||
securityConfig: securityConfig,
|
||||
scu: scu,
|
||||
pg: pg,
|
||||
}
|
||||
}
|
||||
|
|
163
vendor/github.com/docker/swarmkit/manager/dispatcher/assignments.go
generated
vendored
163
vendor/github.com/docker/swarmkit/manager/dispatcher/assignments.go
generated
vendored
|
@ -11,20 +11,9 @@ import (
|
|||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
// Used as a key in tasksUsingDependency and changes. Only using the
|
||||
// ID could cause (rare) collisions between different types of
|
||||
// objects, so we also include the type of object in the key.
|
||||
type objectType int
|
||||
|
||||
const (
|
||||
typeTask objectType = iota
|
||||
typeSecret
|
||||
typeConfig
|
||||
)
|
||||
|
||||
type typeAndID struct {
|
||||
id string
|
||||
objType objectType
|
||||
objType api.ResourceType
|
||||
}
|
||||
|
||||
type assignmentSet struct {
|
||||
|
@ -45,39 +34,78 @@ func newAssignmentSet(log *logrus.Entry, dp *drivers.DriverProvider) *assignment
|
|||
}
|
||||
}
|
||||
|
||||
func assignSecret(a *assignmentSet, readTx store.ReadTx, mapKey typeAndID, t *api.Task) {
|
||||
a.tasksUsingDependency[mapKey] = make(map[string]struct{})
|
||||
secret, err := a.secret(readTx, t, mapKey.id)
|
||||
if err != nil {
|
||||
a.log.WithFields(logrus.Fields{
|
||||
"resource.type": "secret",
|
||||
"secret.id": mapKey.id,
|
||||
"error": err,
|
||||
}).Debug("failed to fetch secret")
|
||||
return
|
||||
}
|
||||
a.changes[mapKey] = &api.AssignmentChange{
|
||||
Assignment: &api.Assignment{
|
||||
Item: &api.Assignment_Secret{
|
||||
Secret: secret,
|
||||
},
|
||||
},
|
||||
Action: api.AssignmentChange_AssignmentActionUpdate,
|
||||
}
|
||||
}
|
||||
|
||||
func assignConfig(a *assignmentSet, readTx store.ReadTx, mapKey typeAndID) {
|
||||
a.tasksUsingDependency[mapKey] = make(map[string]struct{})
|
||||
config := store.GetConfig(readTx, mapKey.id)
|
||||
if config == nil {
|
||||
a.log.WithFields(logrus.Fields{
|
||||
"resource.type": "config",
|
||||
"config.id": mapKey.id,
|
||||
}).Debug("config not found")
|
||||
return
|
||||
}
|
||||
a.changes[mapKey] = &api.AssignmentChange{
|
||||
Assignment: &api.Assignment{
|
||||
Item: &api.Assignment_Config{
|
||||
Config: config,
|
||||
},
|
||||
},
|
||||
Action: api.AssignmentChange_AssignmentActionUpdate,
|
||||
}
|
||||
}
|
||||
|
||||
func (a *assignmentSet) addTaskDependencies(readTx store.ReadTx, t *api.Task) {
|
||||
for _, resourceRef := range t.Spec.ResourceReferences {
|
||||
mapKey := typeAndID{objType: resourceRef.ResourceType, id: resourceRef.ResourceID}
|
||||
if len(a.tasksUsingDependency[mapKey]) == 0 {
|
||||
switch resourceRef.ResourceType {
|
||||
case api.ResourceType_SECRET:
|
||||
assignSecret(a, readTx, mapKey, t)
|
||||
case api.ResourceType_CONFIG:
|
||||
assignConfig(a, readTx, mapKey)
|
||||
default:
|
||||
a.log.WithField(
|
||||
"resource.type", resourceRef.ResourceType,
|
||||
).Debug("invalid resource type for a task dependency, skipping")
|
||||
continue
|
||||
}
|
||||
}
|
||||
a.tasksUsingDependency[mapKey][t.ID] = struct{}{}
|
||||
}
|
||||
|
||||
var secrets []*api.SecretReference
|
||||
container := t.Spec.GetContainer()
|
||||
if container != nil {
|
||||
secrets = container.Secrets
|
||||
}
|
||||
|
||||
for _, secretRef := range secrets {
|
||||
secretID := secretRef.SecretID
|
||||
mapKey := typeAndID{objType: typeSecret, id: secretID}
|
||||
mapKey := typeAndID{objType: api.ResourceType_SECRET, id: secretID}
|
||||
|
||||
if len(a.tasksUsingDependency[mapKey]) == 0 {
|
||||
a.tasksUsingDependency[mapKey] = make(map[string]struct{})
|
||||
|
||||
secret, err := a.secret(readTx, secretID)
|
||||
if err != nil {
|
||||
a.log.WithFields(logrus.Fields{
|
||||
"secret.id": secretID,
|
||||
"secret.name": secretRef.SecretName,
|
||||
"error": err,
|
||||
}).Error("failed to fetch secret")
|
||||
continue
|
||||
}
|
||||
|
||||
// If the secret was found, add this secret to
|
||||
// our set that we send down.
|
||||
a.changes[mapKey] = &api.AssignmentChange{
|
||||
Assignment: &api.Assignment{
|
||||
Item: &api.Assignment_Secret{
|
||||
Secret: secret,
|
||||
},
|
||||
},
|
||||
Action: api.AssignmentChange_AssignmentActionUpdate,
|
||||
}
|
||||
assignSecret(a, readTx, mapKey, t)
|
||||
}
|
||||
a.tasksUsingDependency[mapKey][t.ID] = struct{}{}
|
||||
}
|
||||
|
@ -88,30 +116,10 @@ func (a *assignmentSet) addTaskDependencies(readTx store.ReadTx, t *api.Task) {
|
|||
}
|
||||
for _, configRef := range configs {
|
||||
configID := configRef.ConfigID
|
||||
mapKey := typeAndID{objType: typeConfig, id: configID}
|
||||
mapKey := typeAndID{objType: api.ResourceType_CONFIG, id: configID}
|
||||
|
||||
if len(a.tasksUsingDependency[mapKey]) == 0 {
|
||||
a.tasksUsingDependency[mapKey] = make(map[string]struct{})
|
||||
|
||||
config := store.GetConfig(readTx, configID)
|
||||
if config == nil {
|
||||
a.log.WithFields(logrus.Fields{
|
||||
"config.id": configID,
|
||||
"config.name": configRef.ConfigName,
|
||||
}).Debug("config not found")
|
||||
continue
|
||||
}
|
||||
|
||||
// If the config was found, add this config to
|
||||
// our set that we send down.
|
||||
a.changes[mapKey] = &api.AssignmentChange{
|
||||
Assignment: &api.Assignment{
|
||||
Item: &api.Assignment_Config{
|
||||
Config: config,
|
||||
},
|
||||
},
|
||||
Action: api.AssignmentChange_AssignmentActionUpdate,
|
||||
}
|
||||
assignConfig(a, readTx, mapKey)
|
||||
}
|
||||
a.tasksUsingDependency[mapKey][t.ID] = struct{}{}
|
||||
}
|
||||
|
@ -133,6 +141,35 @@ func (a *assignmentSet) releaseDependency(mapKey typeAndID, assignment *api.Assi
|
|||
|
||||
func (a *assignmentSet) releaseTaskDependencies(t *api.Task) bool {
|
||||
var modified bool
|
||||
|
||||
for _, resourceRef := range t.Spec.ResourceReferences {
|
||||
var assignment *api.Assignment
|
||||
switch resourceRef.ResourceType {
|
||||
case api.ResourceType_SECRET:
|
||||
assignment = &api.Assignment{
|
||||
Item: &api.Assignment_Secret{
|
||||
Secret: &api.Secret{ID: resourceRef.ResourceID},
|
||||
},
|
||||
}
|
||||
case api.ResourceType_CONFIG:
|
||||
assignment = &api.Assignment{
|
||||
Item: &api.Assignment_Config{
|
||||
Config: &api.Config{ID: resourceRef.ResourceID},
|
||||
},
|
||||
}
|
||||
default:
|
||||
a.log.WithField(
|
||||
"resource.type", resourceRef.ResourceType,
|
||||
).Debug("invalid resource type for a task dependency, skipping")
|
||||
continue
|
||||
}
|
||||
|
||||
mapKey := typeAndID{objType: resourceRef.ResourceType, id: resourceRef.ResourceID}
|
||||
if a.releaseDependency(mapKey, assignment, t.ID) {
|
||||
modified = true
|
||||
}
|
||||
}
|
||||
|
||||
container := t.Spec.GetContainer()
|
||||
|
||||
var secrets []*api.SecretReference
|
||||
|
@ -142,7 +179,7 @@ func (a *assignmentSet) releaseTaskDependencies(t *api.Task) bool {
|
|||
|
||||
for _, secretRef := range secrets {
|
||||
secretID := secretRef.SecretID
|
||||
mapKey := typeAndID{objType: typeSecret, id: secretID}
|
||||
mapKey := typeAndID{objType: api.ResourceType_SECRET, id: secretID}
|
||||
assignment := &api.Assignment{
|
||||
Item: &api.Assignment_Secret{
|
||||
Secret: &api.Secret{ID: secretID},
|
||||
|
@ -160,7 +197,7 @@ func (a *assignmentSet) releaseTaskDependencies(t *api.Task) bool {
|
|||
|
||||
for _, configRef := range configs {
|
||||
configID := configRef.ConfigID
|
||||
mapKey := typeAndID{objType: typeConfig, id: configID}
|
||||
mapKey := typeAndID{objType: api.ResourceType_CONFIG, id: configID}
|
||||
assignment := &api.Assignment{
|
||||
Item: &api.Assignment_Config{
|
||||
Config: &api.Config{ID: configID},
|
||||
|
@ -205,7 +242,7 @@ func (a *assignmentSet) addOrUpdateTask(readTx store.ReadTx, t *api.Task) bool {
|
|||
a.addTaskDependencies(readTx, t)
|
||||
}
|
||||
a.tasksMap[t.ID] = t
|
||||
a.changes[typeAndID{objType: typeTask, id: t.ID}] = &api.AssignmentChange{
|
||||
a.changes[typeAndID{objType: api.ResourceType_TASK, id: t.ID}] = &api.AssignmentChange{
|
||||
Assignment: &api.Assignment{
|
||||
Item: &api.Assignment_Task{
|
||||
Task: t,
|
||||
|
@ -221,7 +258,7 @@ func (a *assignmentSet) removeTask(t *api.Task) bool {
|
|||
return false
|
||||
}
|
||||
|
||||
a.changes[typeAndID{objType: typeTask, id: t.ID}] = &api.AssignmentChange{
|
||||
a.changes[typeAndID{objType: api.ResourceType_TASK, id: t.ID}] = &api.AssignmentChange{
|
||||
Assignment: &api.Assignment{
|
||||
Item: &api.Assignment_Task{
|
||||
Task: &api.Task{ID: t.ID},
|
||||
|
@ -254,7 +291,7 @@ func (a *assignmentSet) message() api.AssignmentsMessage {
|
|||
|
||||
// secret populates the secret value from raft store. For external secrets, the value is populated
|
||||
// from the secret driver.
|
||||
func (a *assignmentSet) secret(readTx store.ReadTx, secretID string) (*api.Secret, error) {
|
||||
func (a *assignmentSet) secret(readTx store.ReadTx, task *api.Task, secretID string) (*api.Secret, error) {
|
||||
secret := store.GetSecret(readTx, secretID)
|
||||
if secret == nil {
|
||||
return nil, fmt.Errorf("secret not found")
|
||||
|
@ -266,7 +303,7 @@ func (a *assignmentSet) secret(readTx store.ReadTx, secretID string) (*api.Secre
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
value, err := d.Get(&secret.Spec)
|
||||
value, err := d.Get(&secret.Spec, task)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
7
vendor/github.com/docker/swarmkit/manager/dispatcher/dispatcher.go
generated
vendored
7
vendor/github.com/docker/swarmkit/manager/dispatcher/dispatcher.go
generated
vendored
|
@ -18,6 +18,7 @@ import (
|
|||
"github.com/docker/swarmkit/log"
|
||||
"github.com/docker/swarmkit/manager/drivers"
|
||||
"github.com/docker/swarmkit/manager/state/store"
|
||||
"github.com/docker/swarmkit/protobuf/ptypes"
|
||||
"github.com/docker/swarmkit/remotes"
|
||||
"github.com/docker/swarmkit/watch"
|
||||
gogotypes "github.com/gogo/protobuf/types"
|
||||
|
@ -127,6 +128,7 @@ type Dispatcher struct {
|
|||
cancel context.CancelFunc
|
||||
clusterUpdateQueue *watch.Queue
|
||||
dp *drivers.DriverProvider
|
||||
securityConfig *ca.SecurityConfig
|
||||
|
||||
taskUpdates map[string]*api.TaskStatus // indexed by task ID
|
||||
taskUpdatesLock sync.Mutex
|
||||
|
@ -144,7 +146,7 @@ type Dispatcher struct {
|
|||
}
|
||||
|
||||
// New returns Dispatcher with cluster interface(usually raft.Node).
|
||||
func New(cluster Cluster, c *Config, dp *drivers.DriverProvider) *Dispatcher {
|
||||
func New(cluster Cluster, c *Config, dp *drivers.DriverProvider, securityConfig *ca.SecurityConfig) *Dispatcher {
|
||||
d := &Dispatcher{
|
||||
dp: dp,
|
||||
nodes: newNodeStore(c.HeartbeatPeriod, c.HeartbeatEpsilon, c.GracePeriodMultiplier, c.RateLimitPeriod),
|
||||
|
@ -153,6 +155,7 @@ func New(cluster Cluster, c *Config, dp *drivers.DriverProvider) *Dispatcher {
|
|||
cluster: cluster,
|
||||
processUpdatesTrigger: make(chan struct{}, 1),
|
||||
config: c,
|
||||
securityConfig: securityConfig,
|
||||
}
|
||||
|
||||
d.processUpdatesCond = sync.NewCond(&d.processUpdatesLock)
|
||||
|
@ -630,6 +633,8 @@ func (d *Dispatcher) processUpdates(ctx context.Context) {
|
|||
}
|
||||
|
||||
task.Status = *status
|
||||
task.Status.AppliedBy = d.securityConfig.ClientTLSCreds.NodeID()
|
||||
task.Status.AppliedAt = ptypes.MustTimestampProto(time.Now())
|
||||
if err := store.UpdateTask(tx, task); err != nil {
|
||||
logger.WithError(err).Error("failed to update task status")
|
||||
return nil
|
||||
|
|
69
vendor/github.com/docker/swarmkit/manager/drivers/secrets.go
generated
vendored
69
vendor/github.com/docker/swarmkit/manager/drivers/secrets.go
generated
vendored
|
@ -26,12 +26,45 @@ func NewSecretDriver(plugin plugingetter.CompatPlugin) *SecretDriver {
|
|||
}
|
||||
|
||||
// Get gets a secret from the secret provider
|
||||
func (d *SecretDriver) Get(spec *api.SecretSpec) ([]byte, error) {
|
||||
func (d *SecretDriver) Get(spec *api.SecretSpec, task *api.Task) ([]byte, error) {
|
||||
if spec == nil {
|
||||
return nil, fmt.Errorf("spec is nil")
|
||||
return nil, fmt.Errorf("secret spec is nil")
|
||||
}
|
||||
if task == nil {
|
||||
return nil, fmt.Errorf("task is nil")
|
||||
}
|
||||
|
||||
var secretResp SecretsProviderResponse
|
||||
secretReq := &SecretsProviderRequest{Name: spec.Annotations.Name}
|
||||
secretReq := &SecretsProviderRequest{
|
||||
SecretName: spec.Annotations.Name,
|
||||
ServiceName: task.ServiceAnnotations.Name,
|
||||
ServiceLabels: task.ServiceAnnotations.Labels,
|
||||
}
|
||||
container := task.Spec.GetContainer()
|
||||
if container != nil {
|
||||
secretReq.ServiceHostname = container.Hostname
|
||||
}
|
||||
|
||||
if task.Endpoint != nil && task.Endpoint.Spec != nil {
|
||||
secretReq.ServiceEndpointSpec = &EndpointSpec{
|
||||
Mode: int32(task.Endpoint.Spec.Mode),
|
||||
}
|
||||
for _, p := range task.Endpoint.Spec.Ports {
|
||||
if p == nil {
|
||||
continue
|
||||
}
|
||||
secretReq.ServiceEndpointSpec.Ports =
|
||||
append(secretReq.ServiceEndpointSpec.Ports,
|
||||
PortConfig{
|
||||
Name: p.Name,
|
||||
Protocol: int32(p.Protocol),
|
||||
PublishedPort: p.PublishedPort,
|
||||
TargetPort: p.TargetPort,
|
||||
PublishMode: int32(p.PublishMode),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
err := d.plugin.Client().Call(SecretsProviderAPI, secretReq, &secretResp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -40,16 +73,38 @@ func (d *SecretDriver) Get(spec *api.SecretSpec) ([]byte, error) {
|
|||
return nil, fmt.Errorf(secretResp.Err)
|
||||
}
|
||||
// Assign the secret value
|
||||
return []byte(secretResp.Value), nil
|
||||
return secretResp.Value, nil
|
||||
}
|
||||
|
||||
// SecretsProviderRequest is the secrets provider request.
|
||||
type SecretsProviderRequest struct {
|
||||
Name string `json:"name"` // Name is the name of the secret plugin
|
||||
SecretName string `json:",omitempty"` // SecretName is the name of the secret to request from the plugin
|
||||
ServiceHostname string `json:",omitempty"` // ServiceHostname is the hostname of the service, can be used for x509 certificate
|
||||
ServiceName string `json:",omitempty"` // ServiceName is the name of the service that requested the secret
|
||||
ServiceLabels map[string]string `json:",omitempty"` // ServiceLabels capture environment names and other metadata
|
||||
ServiceEndpointSpec *EndpointSpec `json:",omitempty"` // ServiceEndpointSpec holds the specification for endpoints
|
||||
}
|
||||
|
||||
// SecretsProviderResponse is the secrets provider response.
|
||||
type SecretsProviderResponse struct {
|
||||
Value string `json:"value"` // Value is the value of the secret
|
||||
Err string `json:"err"` // Err is the error response of the plugin
|
||||
Value []byte `json:",omitempty"` // Value is the value of the secret
|
||||
Err string `json:",omitempty"` // Err is the error response of the plugin
|
||||
}
|
||||
|
||||
// EndpointSpec represents the spec of an endpoint.
|
||||
type EndpointSpec struct {
|
||||
Mode int32 `json:",omitempty"`
|
||||
Ports []PortConfig `json:",omitempty"`
|
||||
}
|
||||
|
||||
// PortConfig represents the config of a port.
|
||||
type PortConfig struct {
|
||||
Name string `json:",omitempty"`
|
||||
Protocol int32 `json:",omitempty"`
|
||||
// TargetPort is the port inside the container
|
||||
TargetPort uint32 `json:",omitempty"`
|
||||
// PublishedPort is the port on the swarm hosts
|
||||
PublishedPort uint32 `json:",omitempty"`
|
||||
// PublishMode is the mode in which port is published
|
||||
PublishMode int32 `json:",omitempty"`
|
||||
}
|
||||
|
|
37
vendor/github.com/docker/swarmkit/manager/logbroker/broker.go
generated
vendored
37
vendor/github.com/docker/swarmkit/manager/logbroker/broker.go
generated
vendored
|
@ -57,12 +57,12 @@ func New(store *store.MemoryStore) *LogBroker {
|
|||
}
|
||||
}
|
||||
|
||||
// Run the log broker
|
||||
func (lb *LogBroker) Run(ctx context.Context) error {
|
||||
// Start starts the log broker
|
||||
func (lb *LogBroker) Start(ctx context.Context) error {
|
||||
lb.mu.Lock()
|
||||
defer lb.mu.Unlock()
|
||||
|
||||
if lb.cancelAll != nil {
|
||||
lb.mu.Unlock()
|
||||
return errAlreadyRunning
|
||||
}
|
||||
|
||||
|
@ -71,12 +71,7 @@ func (lb *LogBroker) Run(ctx context.Context) error {
|
|||
lb.subscriptionQueue = watch.NewQueue()
|
||||
lb.registeredSubscriptions = make(map[string]*subscription)
|
||||
lb.subscriptionsByNode = make(map[string]map[*subscription]struct{})
|
||||
lb.mu.Unlock()
|
||||
|
||||
select {
|
||||
case <-lb.pctx.Done():
|
||||
return lb.pctx.Err()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Stop stops the log broker
|
||||
|
@ -234,8 +229,15 @@ func (lb *LogBroker) SubscribeLogs(request *api.SubscribeLogsRequest, stream api
|
|||
return err
|
||||
}
|
||||
|
||||
lb.mu.Lock()
|
||||
pctx := lb.pctx
|
||||
lb.mu.Unlock()
|
||||
if pctx == nil {
|
||||
return errNotRunning
|
||||
}
|
||||
|
||||
subscription := lb.newSubscription(request.Selector, request.Options)
|
||||
subscription.Run(lb.pctx)
|
||||
subscription.Run(pctx)
|
||||
defer subscription.Stop()
|
||||
|
||||
log := log.G(ctx).WithFields(
|
||||
|
@ -257,8 +259,8 @@ func (lb *LogBroker) SubscribeLogs(request *api.SubscribeLogsRequest, stream api
|
|||
select {
|
||||
case <-ctx.Done():
|
||||
return ctx.Err()
|
||||
case <-lb.pctx.Done():
|
||||
return lb.pctx.Err()
|
||||
case <-pctx.Done():
|
||||
return pctx.Err()
|
||||
case event := <-publishCh:
|
||||
publish := event.(*logMessage)
|
||||
if publish.completed {
|
||||
|
@ -308,6 +310,13 @@ func (lb *LogBroker) ListenSubscriptions(request *api.ListenSubscriptionsRequest
|
|||
return err
|
||||
}
|
||||
|
||||
lb.mu.Lock()
|
||||
pctx := lb.pctx
|
||||
lb.mu.Unlock()
|
||||
if pctx == nil {
|
||||
return errNotRunning
|
||||
}
|
||||
|
||||
lb.nodeConnected(remote.NodeID)
|
||||
defer lb.nodeDisconnected(remote.NodeID)
|
||||
|
||||
|
@ -329,7 +338,7 @@ func (lb *LogBroker) ListenSubscriptions(request *api.ListenSubscriptionsRequest
|
|||
select {
|
||||
case <-stream.Context().Done():
|
||||
return stream.Context().Err()
|
||||
case <-lb.pctx.Done():
|
||||
case <-pctx.Done():
|
||||
return nil
|
||||
default:
|
||||
}
|
||||
|
@ -362,7 +371,7 @@ func (lb *LogBroker) ListenSubscriptions(request *api.ListenSubscriptionsRequest
|
|||
}
|
||||
case <-stream.Context().Done():
|
||||
return stream.Context().Err()
|
||||
case <-lb.pctx.Done():
|
||||
case <-pctx.Done():
|
||||
return nil
|
||||
}
|
||||
}
|
||||
|
|
65
vendor/github.com/docker/swarmkit/manager/manager.go
generated
vendored
65
vendor/github.com/docker/swarmkit/manager/manager.go
generated
vendored
|
@ -16,6 +16,7 @@ import (
|
|||
"github.com/cloudflare/cfssl/helpers"
|
||||
"github.com/docker/docker/pkg/plugingetter"
|
||||
"github.com/docker/go-events"
|
||||
gmetrics "github.com/docker/go-metrics"
|
||||
"github.com/docker/swarmkit/api"
|
||||
"github.com/docker/swarmkit/ca"
|
||||
"github.com/docker/swarmkit/connectionbroker"
|
||||
|
@ -87,7 +88,11 @@ type Config struct {
|
|||
// cluster to join.
|
||||
JoinRaft string
|
||||
|
||||
// Top-level state directory
|
||||
// ForceJoin causes us to invoke raft's Join RPC even if already part
|
||||
// of a cluster.
|
||||
ForceJoin bool
|
||||
|
||||
// StateDir is the top-level state directory
|
||||
StateDir string
|
||||
|
||||
// ForceNewCluster defines if we have to force a new cluster
|
||||
|
@ -130,6 +135,7 @@ type Manager struct {
|
|||
caserver *ca.Server
|
||||
dispatcher *dispatcher.Dispatcher
|
||||
logbroker *logbroker.LogBroker
|
||||
watchServer *watchapi.Server
|
||||
replicatedOrchestrator *replicated.Orchestrator
|
||||
globalOrchestrator *global.Orchestrator
|
||||
taskReaper *taskreaper.TaskReaper
|
||||
|
@ -159,6 +165,16 @@ type Manager struct {
|
|||
errServe chan error
|
||||
}
|
||||
|
||||
var (
|
||||
leaderMetric gmetrics.Gauge
|
||||
)
|
||||
|
||||
func init() {
|
||||
ns := gmetrics.NewNamespace("swarm", "manager", nil)
|
||||
leaderMetric = ns.NewGauge("leader", "Indicates if this manager node is a leader", "")
|
||||
gmetrics.Register(ns)
|
||||
}
|
||||
|
||||
type closeOnceListener struct {
|
||||
once sync.Once
|
||||
net.Listener
|
||||
|
@ -202,6 +218,7 @@ func New(config *Config) (*Manager, error) {
|
|||
newNodeOpts := raft.NodeOptions{
|
||||
ID: config.SecurityConfig.ClientTLSCreds.NodeID(),
|
||||
JoinAddr: config.JoinRaft,
|
||||
ForceJoin: config.ForceJoin,
|
||||
Config: raftCfg,
|
||||
StateDir: raftStateDir,
|
||||
ForceNewCluster: config.ForceNewCluster,
|
||||
|
@ -218,9 +235,10 @@ func New(config *Config) (*Manager, error) {
|
|||
|
||||
m := &Manager{
|
||||
config: *config,
|
||||
caserver: ca.NewServer(raftNode.MemoryStore(), config.SecurityConfig, config.RootCAPaths),
|
||||
dispatcher: dispatcher.New(raftNode, dispatcher.DefaultConfig(), drivers.New(config.PluginGetter)),
|
||||
caserver: ca.NewServer(raftNode.MemoryStore(), config.SecurityConfig),
|
||||
dispatcher: dispatcher.New(raftNode, dispatcher.DefaultConfig(), drivers.New(config.PluginGetter), config.SecurityConfig),
|
||||
logbroker: logbroker.New(raftNode.MemoryStore()),
|
||||
watchServer: watchapi.NewServer(raftNode.MemoryStore()),
|
||||
server: grpc.NewServer(opts...),
|
||||
localserver: grpc.NewServer(opts...),
|
||||
raftNode: raftNode,
|
||||
|
@ -397,14 +415,13 @@ func (m *Manager) Run(parent context.Context) error {
|
|||
return err
|
||||
}
|
||||
|
||||
baseControlAPI := controlapi.NewServer(m.raftNode.MemoryStore(), m.raftNode, m.config.SecurityConfig, m.caserver, m.config.PluginGetter)
|
||||
baseWatchAPI := watchapi.NewServer(m.raftNode.MemoryStore())
|
||||
baseControlAPI := controlapi.NewServer(m.raftNode.MemoryStore(), m.raftNode, m.config.SecurityConfig, m.config.PluginGetter, drivers.New(m.config.PluginGetter))
|
||||
baseResourceAPI := resourceapi.New(m.raftNode.MemoryStore())
|
||||
healthServer := health.NewHealthServer()
|
||||
localHealthServer := health.NewHealthServer()
|
||||
|
||||
authenticatedControlAPI := api.NewAuthenticatedWrapperControlServer(baseControlAPI, authorize)
|
||||
authenticatedWatchAPI := api.NewAuthenticatedWrapperWatchServer(baseWatchAPI, authorize)
|
||||
authenticatedWatchAPI := api.NewAuthenticatedWrapperWatchServer(m.watchServer, authorize)
|
||||
authenticatedResourceAPI := api.NewAuthenticatedWrapperResourceAllocatorServer(baseResourceAPI, authorize)
|
||||
authenticatedLogsServerAPI := api.NewAuthenticatedWrapperLogsServer(m.logbroker, authorize)
|
||||
authenticatedLogBrokerAPI := api.NewAuthenticatedWrapperLogBrokerServer(m.logbroker, authorize)
|
||||
|
@ -477,7 +494,7 @@ func (m *Manager) Run(parent context.Context) error {
|
|||
grpc_prometheus.Register(m.server)
|
||||
|
||||
api.RegisterControlServer(m.localserver, localProxyControlAPI)
|
||||
api.RegisterWatchServer(m.localserver, baseWatchAPI)
|
||||
api.RegisterWatchServer(m.localserver, m.watchServer)
|
||||
api.RegisterLogsServer(m.localserver, localProxyLogsAPI)
|
||||
api.RegisterHealthServer(m.localserver, localHealthServer)
|
||||
api.RegisterDispatcherServer(m.localserver, localProxyDispatcherAPI)
|
||||
|
@ -490,6 +507,10 @@ func (m *Manager) Run(parent context.Context) error {
|
|||
healthServer.SetServingStatus("Raft", api.HealthCheckResponse_NOT_SERVING)
|
||||
localHealthServer.SetServingStatus("ControlAPI", api.HealthCheckResponse_NOT_SERVING)
|
||||
|
||||
if err := m.watchServer.Start(ctx); err != nil {
|
||||
log.G(ctx).WithError(err).Error("watch server failed to start")
|
||||
}
|
||||
|
||||
go m.serveListener(ctx, m.remoteListener)
|
||||
go m.serveListener(ctx, m.controlListener)
|
||||
|
||||
|
@ -565,8 +586,8 @@ func (m *Manager) Run(parent context.Context) error {
|
|||
const stopTimeout = 8 * time.Second
|
||||
|
||||
// Stop stops the manager. It immediately closes all open connections and
|
||||
// active RPCs as well as stopping the scheduler. If clearData is set, the
|
||||
// raft logs, snapshots, and keys will be erased.
|
||||
// active RPCs as well as stopping the manager's subsystems. If clearData is
|
||||
// set, the raft logs, snapshots, and keys will be erased.
|
||||
func (m *Manager) Stop(ctx context.Context, clearData bool) {
|
||||
log.G(ctx).Info("Stopping manager")
|
||||
// It's not safe to start shutting down while the manager is still
|
||||
|
@ -600,6 +621,7 @@ func (m *Manager) Stop(ctx context.Context, clearData bool) {
|
|||
|
||||
m.dispatcher.Stop()
|
||||
m.logbroker.Stop()
|
||||
m.watchServer.Stop()
|
||||
m.caserver.Stop()
|
||||
|
||||
if m.allocator != nil {
|
||||
|
@ -709,16 +731,14 @@ func (m *Manager) updateKEK(ctx context.Context, cluster *api.Cluster) error {
|
|||
|
||||
func (m *Manager) watchForClusterChanges(ctx context.Context) error {
|
||||
clusterID := m.config.SecurityConfig.ClientTLSCreds.Organization()
|
||||
var cluster *api.Cluster
|
||||
clusterWatch, clusterWatchCancel, err := store.ViewAndWatch(m.raftNode.MemoryStore(),
|
||||
func(tx store.ReadTx) error {
|
||||
cluster := store.GetCluster(tx, clusterID)
|
||||
cluster = store.GetCluster(tx, clusterID)
|
||||
if cluster == nil {
|
||||
return fmt.Errorf("unable to get current cluster")
|
||||
}
|
||||
if err := m.caserver.UpdateRootCA(ctx, cluster); err != nil {
|
||||
log.G(ctx).WithError(err).Error("could not update security config")
|
||||
}
|
||||
return m.updateKEK(ctx, cluster)
|
||||
return nil
|
||||
},
|
||||
api.EventUpdateCluster{
|
||||
Cluster: &api.Cluster{ID: clusterID},
|
||||
|
@ -728,14 +748,15 @@ func (m *Manager) watchForClusterChanges(ctx context.Context) error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := m.updateKEK(ctx, cluster); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
go func() {
|
||||
for {
|
||||
select {
|
||||
case event := <-clusterWatch:
|
||||
clusterEvent := event.(api.EventUpdateCluster)
|
||||
if err := m.caserver.UpdateRootCA(ctx, clusterEvent.Cluster); err != nil {
|
||||
log.G(ctx).WithError(err).Error("could not update security config")
|
||||
}
|
||||
m.updateKEK(ctx, clusterEvent.Cluster)
|
||||
case <-ctx.Done():
|
||||
clusterWatchCancel()
|
||||
|
@ -863,8 +884,10 @@ func (m *Manager) handleLeadershipEvents(ctx context.Context, leadershipCh chan
|
|||
|
||||
if newState == raft.IsLeader {
|
||||
m.becomeLeader(ctx)
|
||||
leaderMetric.Set(1)
|
||||
} else if newState == raft.IsFollower {
|
||||
m.becomeFollower()
|
||||
leaderMetric.Set(0)
|
||||
}
|
||||
m.mu.Unlock()
|
||||
case <-ctx.Done():
|
||||
|
@ -1001,11 +1024,9 @@ func (m *Manager) becomeLeader(ctx context.Context) {
|
|||
}
|
||||
}(m.dispatcher)
|
||||
|
||||
go func(lb *logbroker.LogBroker) {
|
||||
if err := lb.Run(ctx); err != nil {
|
||||
log.G(ctx).WithError(err).Error("LogBroker exited with an error")
|
||||
}
|
||||
}(m.logbroker)
|
||||
if err := m.logbroker.Start(ctx); err != nil {
|
||||
log.G(ctx).WithError(err).Error("LogBroker failed to start")
|
||||
}
|
||||
|
||||
go func(server *ca.Server) {
|
||||
if err := server.Run(ctx); err != nil {
|
||||
|
|
132
vendor/github.com/docker/swarmkit/manager/orchestrator/global/global.go
generated
vendored
132
vendor/github.com/docker/swarmkit/manager/orchestrator/global/global.go
generated
vendored
|
@ -156,25 +156,12 @@ func (g *Orchestrator) Run(ctx context.Context) error {
|
|||
g.reconcileOneNode(ctx, v.Node)
|
||||
case api.EventUpdateNode:
|
||||
g.updateNode(v.Node)
|
||||
switch v.Node.Status.State {
|
||||
// NodeStatus_DISCONNECTED is a transient state, no need to make any change
|
||||
case api.NodeStatus_DOWN:
|
||||
g.foreachTaskFromNode(ctx, v.Node, g.shutdownTask)
|
||||
case api.NodeStatus_READY:
|
||||
// node could come back to READY from DOWN or DISCONNECT
|
||||
g.reconcileOneNode(ctx, v.Node)
|
||||
}
|
||||
g.reconcileOneNode(ctx, v.Node)
|
||||
case api.EventDeleteNode:
|
||||
g.foreachTaskFromNode(ctx, v.Node, g.deleteTask)
|
||||
delete(g.nodes, v.Node.ID)
|
||||
case api.EventUpdateTask:
|
||||
g.handleTaskChange(ctx, v.Task)
|
||||
case api.EventDeleteTask:
|
||||
// CLI allows deleting task
|
||||
if _, exists := g.globalServices[v.Task.ServiceID]; !exists {
|
||||
continue
|
||||
}
|
||||
g.reconcileServicesOneNode(ctx, []string{v.Task.ServiceID}, v.Task.NodeID)
|
||||
}
|
||||
case <-g.stopChan:
|
||||
return nil
|
||||
|
@ -216,7 +203,7 @@ func (g *Orchestrator) handleTaskChange(ctx context.Context, t *api.Task) {
|
|||
if _, exists := g.globalServices[t.ServiceID]; !exists {
|
||||
return
|
||||
}
|
||||
// if a task's DesiredState has past running, which
|
||||
// if a task's DesiredState has passed running, it
|
||||
// means the task has been processed
|
||||
if t.DesiredState > api.TaskStateRunning {
|
||||
return
|
||||
|
@ -264,33 +251,41 @@ func (g *Orchestrator) foreachTaskFromNode(ctx context.Context, node *api.Node,
|
|||
}
|
||||
|
||||
func (g *Orchestrator) reconcileServices(ctx context.Context, serviceIDs []string) {
|
||||
nodeCompleted := make(map[string]map[string]struct{})
|
||||
nodeTasks := make(map[string]map[string][]*api.Task)
|
||||
|
||||
g.store.View(func(tx store.ReadTx) {
|
||||
for _, serviceID := range serviceIDs {
|
||||
service := g.globalServices[serviceID].Service
|
||||
if service == nil {
|
||||
continue
|
||||
}
|
||||
|
||||
tasks, err := store.FindTasks(tx, store.ByServiceID(serviceID))
|
||||
if err != nil {
|
||||
log.G(ctx).WithError(err).Errorf("global orchestrator: reconcileServices failed finding tasks for service %s", serviceID)
|
||||
continue
|
||||
}
|
||||
|
||||
// a node may have completed this service
|
||||
nodeCompleted[serviceID] = make(map[string]struct{})
|
||||
// nodeID -> task list
|
||||
nodeTasks[serviceID] = make(map[string][]*api.Task)
|
||||
|
||||
for _, t := range tasks {
|
||||
if t.DesiredState <= api.TaskStateRunning {
|
||||
// Collect all running instances of this service
|
||||
nodeTasks[serviceID][t.NodeID] = append(nodeTasks[serviceID][t.NodeID], t)
|
||||
nodeTasks[serviceID][t.NodeID] = append(nodeTasks[serviceID][t.NodeID], t)
|
||||
}
|
||||
|
||||
// Keep all runnable instances of this service,
|
||||
// and instances that were not be restarted due
|
||||
// to restart policy but may be updated if the
|
||||
// service spec changed.
|
||||
for nodeID, slot := range nodeTasks[serviceID] {
|
||||
updatable := g.restarts.UpdatableTasksInSlot(ctx, slot, g.globalServices[serviceID].Service)
|
||||
if len(updatable) != 0 {
|
||||
nodeTasks[serviceID][nodeID] = updatable
|
||||
} else {
|
||||
// for finished tasks, check restartPolicy
|
||||
if isTaskCompleted(t, orchestrator.RestartCondition(t)) {
|
||||
nodeCompleted[serviceID][t.NodeID] = struct{}{}
|
||||
}
|
||||
delete(nodeTasks[serviceID], nodeID)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -311,9 +306,7 @@ func (g *Orchestrator) reconcileServices(ctx context.Context, serviceIDs []strin
|
|||
ntasks := nodeTasks[serviceID][nodeID]
|
||||
delete(nodeTasks[serviceID], nodeID)
|
||||
|
||||
// if restart policy considers this node has finished its task
|
||||
// it should remove all running tasks
|
||||
if _, exists := nodeCompleted[serviceID][nodeID]; exists || !meetsConstraints {
|
||||
if !meetsConstraints {
|
||||
g.shutdownTasks(ctx, batch, ntasks)
|
||||
continue
|
||||
}
|
||||
|
@ -357,7 +350,7 @@ func (g *Orchestrator) reconcileServices(ctx context.Context, serviceIDs []strin
|
|||
|
||||
// updateNode updates g.nodes based on the current node value
|
||||
func (g *Orchestrator) updateNode(node *api.Node) {
|
||||
if node.Spec.Availability == api.NodeAvailabilityDrain {
|
||||
if node.Spec.Availability == api.NodeAvailabilityDrain || node.Status.State == api.NodeStatus_DOWN {
|
||||
delete(g.nodes, node.ID)
|
||||
} else {
|
||||
g.nodes[node.ID] = node
|
||||
|
@ -381,27 +374,27 @@ func (g *Orchestrator) updateService(service *api.Service) {
|
|||
// reconcileOneNode checks all global services on one node
|
||||
func (g *Orchestrator) reconcileOneNode(ctx context.Context, node *api.Node) {
|
||||
if node.Spec.Availability == api.NodeAvailabilityDrain {
|
||||
log.G(ctx).Debugf("global orchestrator: node %s in drain state, removing tasks from it", node.ID)
|
||||
log.G(ctx).Debugf("global orchestrator: node %s in drain state, shutting down its tasks", node.ID)
|
||||
g.foreachTaskFromNode(ctx, node, g.shutdownTask)
|
||||
return
|
||||
}
|
||||
|
||||
var serviceIDs []string
|
||||
for id := range g.globalServices {
|
||||
serviceIDs = append(serviceIDs, id)
|
||||
if node.Status.State == api.NodeStatus_DOWN {
|
||||
log.G(ctx).Debugf("global orchestrator: node %s is down, shutting down its tasks", node.ID)
|
||||
g.foreachTaskFromNode(ctx, node, g.shutdownTask)
|
||||
return
|
||||
}
|
||||
g.reconcileServicesOneNode(ctx, serviceIDs, node.ID)
|
||||
}
|
||||
|
||||
// reconcileServicesOneNode checks the specified services on one node
|
||||
func (g *Orchestrator) reconcileServicesOneNode(ctx context.Context, serviceIDs []string, nodeID string) {
|
||||
node, exists := g.nodes[nodeID]
|
||||
if node.Spec.Availability == api.NodeAvailabilityPause {
|
||||
// the node is paused, so we won't add or update tasks
|
||||
return
|
||||
}
|
||||
|
||||
node, exists := g.nodes[node.ID]
|
||||
if !exists {
|
||||
return
|
||||
}
|
||||
|
||||
// whether each service has completed on the node
|
||||
completed := make(map[string]bool)
|
||||
// tasks by service
|
||||
tasks := make(map[string][]*api.Task)
|
||||
|
||||
|
@ -411,53 +404,44 @@ func (g *Orchestrator) reconcileServicesOneNode(ctx context.Context, serviceIDs
|
|||
)
|
||||
|
||||
g.store.View(func(tx store.ReadTx) {
|
||||
tasksOnNode, err = store.FindTasks(tx, store.ByNodeID(nodeID))
|
||||
tasksOnNode, err = store.FindTasks(tx, store.ByNodeID(node.ID))
|
||||
})
|
||||
if err != nil {
|
||||
log.G(ctx).WithError(err).Errorf("global orchestrator: reconcile failed finding tasks on node %s", nodeID)
|
||||
log.G(ctx).WithError(err).Errorf("global orchestrator: reconcile failed finding tasks on node %s", node.ID)
|
||||
return
|
||||
}
|
||||
|
||||
for _, serviceID := range serviceIDs {
|
||||
for serviceID, service := range g.globalServices {
|
||||
for _, t := range tasksOnNode {
|
||||
if t.ServiceID != serviceID {
|
||||
continue
|
||||
}
|
||||
if t.DesiredState <= api.TaskStateRunning {
|
||||
tasks[serviceID] = append(tasks[serviceID], t)
|
||||
tasks[serviceID] = append(tasks[serviceID], t)
|
||||
}
|
||||
|
||||
// Keep all runnable instances of this service,
|
||||
// and instances that were not be restarted due
|
||||
// to restart policy but may be updated if the
|
||||
// service spec changed.
|
||||
for serviceID, slot := range tasks {
|
||||
updatable := g.restarts.UpdatableTasksInSlot(ctx, slot, service.Service)
|
||||
|
||||
if len(updatable) != 0 {
|
||||
tasks[serviceID] = updatable
|
||||
} else {
|
||||
if isTaskCompleted(t, orchestrator.RestartCondition(t)) {
|
||||
completed[serviceID] = true
|
||||
}
|
||||
delete(tasks, serviceID)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
err = g.store.Batch(func(batch *store.Batch) error {
|
||||
for _, serviceID := range serviceIDs {
|
||||
service, exists := g.globalServices[serviceID]
|
||||
if !exists {
|
||||
continue
|
||||
}
|
||||
|
||||
for serviceID, service := range g.globalServices {
|
||||
if !constraint.NodeMatches(service.constraints, node) {
|
||||
continue
|
||||
}
|
||||
|
||||
// if restart policy considers this node has finished its task
|
||||
// it should remove all running tasks
|
||||
if completed[serviceID] {
|
||||
g.shutdownTasks(ctx, batch, tasks[serviceID])
|
||||
continue
|
||||
}
|
||||
|
||||
if node.Spec.Availability == api.NodeAvailabilityPause {
|
||||
// the node is paused, so we won't add or update tasks
|
||||
continue
|
||||
}
|
||||
|
||||
if len(tasks) == 0 {
|
||||
g.addTask(ctx, batch, service.Service, nodeID)
|
||||
g.addTask(ctx, batch, service.Service, node.ID)
|
||||
} else {
|
||||
// If task is out of date, update it. This can happen
|
||||
// on node reconciliation if, for example, we pause a
|
||||
|
@ -487,7 +471,7 @@ func (g *Orchestrator) reconcileServicesOneNode(ctx context.Context, serviceIDs
|
|||
}
|
||||
|
||||
if len(cleanTasks) == 0 {
|
||||
g.addTask(ctx, batch, service.Service, nodeID)
|
||||
g.addTask(ctx, batch, service.Service, node.ID)
|
||||
} else {
|
||||
dirtyTasks = append(dirtyTasks, cleanTasks[1:]...)
|
||||
}
|
||||
|
@ -523,7 +507,9 @@ func (g *Orchestrator) tickTasks(ctx context.Context) {
|
|||
if !nodeExists || !serviceExists {
|
||||
return nil
|
||||
}
|
||||
if !constraint.NodeMatches(serviceEntry.constraints, node) {
|
||||
|
||||
if node.Spec.Availability == api.NodeAvailabilityPause ||
|
||||
!constraint.NodeMatches(serviceEntry.constraints, node) {
|
||||
t.DesiredState = api.TaskStateShutdown
|
||||
return store.UpdateTask(tx, t)
|
||||
}
|
||||
|
@ -592,6 +578,14 @@ func (g *Orchestrator) IsRelatedService(service *api.Service) bool {
|
|||
return orchestrator.IsGlobalService(service)
|
||||
}
|
||||
|
||||
// SlotTuple returns a slot tuple for the global service task.
|
||||
func (g *Orchestrator) SlotTuple(t *api.Task) orchestrator.SlotTuple {
|
||||
return orchestrator.SlotTuple{
|
||||
ServiceID: t.ServiceID,
|
||||
NodeID: t.NodeID,
|
||||
}
|
||||
}
|
||||
|
||||
func isTaskCompleted(t *api.Task, restartPolicy api.RestartPolicy_RestartCondition) bool {
|
||||
if t == nil || t.DesiredState <= api.TaskStateRunning {
|
||||
return false
|
||||
|
|
2
vendor/github.com/docker/swarmkit/manager/orchestrator/replicated/services.go
generated
vendored
2
vendor/github.com/docker/swarmkit/manager/orchestrator/replicated/services.go
generated
vendored
|
@ -87,7 +87,7 @@ func (r *Orchestrator) resolveService(ctx context.Context, task *api.Task) *api.
|
|||
}
|
||||
|
||||
func (r *Orchestrator) reconcile(ctx context.Context, service *api.Service) {
|
||||
runningSlots, deadSlots, err := orchestrator.GetRunnableAndDeadSlots(r.store, service.ID)
|
||||
runningSlots, deadSlots, err := r.updatableAndDeadSlots(ctx, service)
|
||||
if err != nil {
|
||||
log.G(ctx).WithError(err).Errorf("reconcile failed finding tasks")
|
||||
return
|
||||
|
|
45
vendor/github.com/docker/swarmkit/manager/orchestrator/replicated/slot.go
generated
vendored
45
vendor/github.com/docker/swarmkit/manager/orchestrator/replicated/slot.go
generated
vendored
|
@ -3,6 +3,8 @@ package replicated
|
|||
import (
|
||||
"github.com/docker/swarmkit/api"
|
||||
"github.com/docker/swarmkit/manager/orchestrator"
|
||||
"github.com/docker/swarmkit/manager/state/store"
|
||||
"golang.org/x/net/context"
|
||||
)
|
||||
|
||||
type slotsByRunningState []orchestrator.Slot
|
||||
|
@ -53,3 +55,46 @@ func (is slotsByIndex) Less(i, j int) bool {
|
|||
}
|
||||
return is[i].index < is[j].index
|
||||
}
|
||||
|
||||
// updatableAndDeadSlots returns two maps of slots. The first contains slots
|
||||
// that have at least one task with a desired state above NEW and lesser or
|
||||
// equal to RUNNING, or a task that shouldn't be restarted. The second contains
|
||||
// all other slots with at least one task.
|
||||
func (r *Orchestrator) updatableAndDeadSlots(ctx context.Context, service *api.Service) (map[uint64]orchestrator.Slot, map[uint64]orchestrator.Slot, error) {
|
||||
var (
|
||||
tasks []*api.Task
|
||||
err error
|
||||
)
|
||||
r.store.View(func(tx store.ReadTx) {
|
||||
tasks, err = store.FindTasks(tx, store.ByServiceID(service.ID))
|
||||
})
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
updatableSlots := make(map[uint64]orchestrator.Slot)
|
||||
for _, t := range tasks {
|
||||
updatableSlots[t.Slot] = append(updatableSlots[t.Slot], t)
|
||||
}
|
||||
|
||||
deadSlots := make(map[uint64]orchestrator.Slot)
|
||||
for slotID, slot := range updatableSlots {
|
||||
updatable := r.restarts.UpdatableTasksInSlot(ctx, slot, service)
|
||||
if len(updatable) != 0 {
|
||||
updatableSlots[slotID] = updatable
|
||||
} else {
|
||||
delete(updatableSlots, slotID)
|
||||
deadSlots[slotID] = slot
|
||||
}
|
||||
}
|
||||
|
||||
return updatableSlots, deadSlots, nil
|
||||
}
|
||||
|
||||
// SlotTuple returns a slot tuple for the replicated service task.
|
||||
func (r *Orchestrator) SlotTuple(t *api.Task) orchestrator.SlotTuple {
|
||||
return orchestrator.SlotTuple{
|
||||
ServiceID: t.ServiceID,
|
||||
Slot: t.Slot,
|
||||
}
|
||||
}
|
||||
|
|
189
vendor/github.com/docker/swarmkit/manager/orchestrator/restart/restart.go
generated
vendored
189
vendor/github.com/docker/swarmkit/manager/orchestrator/restart/restart.go
generated
vendored
|
@ -30,6 +30,13 @@ type instanceRestartInfo struct {
|
|||
// Restart.MaxAttempts and Restart.Window are both
|
||||
// nonzero.
|
||||
restartedInstances *list.List
|
||||
// Why is specVersion in this structure and not in the map key? While
|
||||
// putting it in the key would be a very simple solution, it wouldn't
|
||||
// be easy to clean up map entries corresponding to old specVersions.
|
||||
// Making the key version-agnostic and clearing the value whenever the
|
||||
// version changes avoids the issue of stale map entries for old
|
||||
// versions.
|
||||
specVersion api.Version
|
||||
}
|
||||
|
||||
type delayedStart struct {
|
||||
|
@ -42,20 +49,13 @@ type delayedStart struct {
|
|||
waiter bool
|
||||
}
|
||||
|
||||
type instanceTuple struct {
|
||||
instance uint64 // unset for global tasks
|
||||
serviceID string
|
||||
nodeID string // unset for replicated tasks
|
||||
}
|
||||
|
||||
// Supervisor initiates and manages restarts. It's responsible for
|
||||
// delaying restarts when applicable.
|
||||
type Supervisor struct {
|
||||
mu sync.Mutex
|
||||
store *store.MemoryStore
|
||||
delays map[string]*delayedStart
|
||||
history map[instanceTuple]*instanceRestartInfo
|
||||
historyByService map[string]map[instanceTuple]struct{}
|
||||
historyByService map[string]map[orchestrator.SlotTuple]*instanceRestartInfo
|
||||
TaskTimeout time.Duration
|
||||
}
|
||||
|
||||
|
@ -64,8 +64,7 @@ func NewSupervisor(store *store.MemoryStore) *Supervisor {
|
|||
return &Supervisor{
|
||||
store: store,
|
||||
delays: make(map[string]*delayedStart),
|
||||
history: make(map[instanceTuple]*instanceRestartInfo),
|
||||
historyByService: make(map[string]map[instanceTuple]struct{}),
|
||||
historyByService: make(map[string]map[orchestrator.SlotTuple]*instanceRestartInfo),
|
||||
TaskTimeout: defaultOldTaskTimeout,
|
||||
}
|
||||
}
|
||||
|
@ -180,15 +179,21 @@ func (r *Supervisor) Restart(ctx context.Context, tx store.Tx, cluster *api.Clus
|
|||
return err
|
||||
}
|
||||
|
||||
r.recordRestartHistory(restartTask)
|
||||
tuple := orchestrator.SlotTuple{
|
||||
Slot: restartTask.Slot,
|
||||
ServiceID: restartTask.ServiceID,
|
||||
NodeID: restartTask.NodeID,
|
||||
}
|
||||
r.RecordRestartHistory(tuple, restartTask)
|
||||
|
||||
r.DelayStart(ctx, tx, &t, restartTask.ID, restartDelay, waitStop)
|
||||
return nil
|
||||
}
|
||||
|
||||
// shouldRestart returns true if a task should be restarted according to the
|
||||
// restart policy.
|
||||
func (r *Supervisor) shouldRestart(ctx context.Context, t *api.Task, service *api.Service) bool {
|
||||
// TODO(aluzzardi): This function should not depend on `service`.
|
||||
|
||||
condition := orchestrator.RestartCondition(t)
|
||||
|
||||
if condition != api.RestartOnAny &&
|
||||
|
@ -200,22 +205,22 @@ func (r *Supervisor) shouldRestart(ctx context.Context, t *api.Task, service *ap
|
|||
return true
|
||||
}
|
||||
|
||||
instanceTuple := instanceTuple{
|
||||
instance: t.Slot,
|
||||
serviceID: t.ServiceID,
|
||||
instanceTuple := orchestrator.SlotTuple{
|
||||
Slot: t.Slot,
|
||||
ServiceID: t.ServiceID,
|
||||
}
|
||||
|
||||
// Instance is not meaningful for "global" tasks, so they need to be
|
||||
// Slot is not meaningful for "global" tasks, so they need to be
|
||||
// indexed by NodeID.
|
||||
if orchestrator.IsGlobalService(service) {
|
||||
instanceTuple.nodeID = t.NodeID
|
||||
instanceTuple.NodeID = t.NodeID
|
||||
}
|
||||
|
||||
r.mu.Lock()
|
||||
defer r.mu.Unlock()
|
||||
|
||||
restartInfo := r.history[instanceTuple]
|
||||
if restartInfo == nil {
|
||||
restartInfo := r.historyByService[t.ServiceID][instanceTuple]
|
||||
if restartInfo == nil || (t.SpecVersion != nil && *t.SpecVersion != restartInfo.specVersion) {
|
||||
return true
|
||||
}
|
||||
|
||||
|
@ -232,8 +237,32 @@ func (r *Supervisor) shouldRestart(ctx context.Context, t *api.Task, service *ap
|
|||
log.G(ctx).WithError(err).Error("invalid restart lookback window")
|
||||
return restartInfo.totalRestarts < t.Spec.Restart.MaxAttempts
|
||||
}
|
||||
lookback := time.Now().Add(-window)
|
||||
|
||||
var timestamp time.Time
|
||||
// Prefer the manager's timestamp over the agent's, since manager
|
||||
// clocks are more trustworthy.
|
||||
if t.Status.AppliedAt != nil {
|
||||
timestamp, err = gogotypes.TimestampFromProto(t.Status.AppliedAt)
|
||||
if err != nil {
|
||||
log.G(ctx).WithError(err).Error("invalid task status AppliedAt timestamp")
|
||||
return restartInfo.totalRestarts < t.Spec.Restart.MaxAttempts
|
||||
}
|
||||
} else {
|
||||
// It's safe to call TimestampFromProto with a nil timestamp
|
||||
timestamp, err = gogotypes.TimestampFromProto(t.Status.Timestamp)
|
||||
if t.Status.Timestamp == nil || err != nil {
|
||||
log.G(ctx).WithError(err).Error("invalid task completion timestamp")
|
||||
return restartInfo.totalRestarts < t.Spec.Restart.MaxAttempts
|
||||
}
|
||||
}
|
||||
lookback := timestamp.Add(-window)
|
||||
|
||||
numRestarts := uint64(restartInfo.restartedInstances.Len())
|
||||
|
||||
// Disregard any restarts that happened before the lookback window,
|
||||
// and remove them from the linked list since they will no longer
|
||||
// be relevant to figuring out if tasks should be restarted going
|
||||
// forward.
|
||||
var next *list.Element
|
||||
for e := restartInfo.restartedInstances.Front(); e != nil; e = next {
|
||||
next = e.Next()
|
||||
|
@ -242,51 +271,115 @@ func (r *Supervisor) shouldRestart(ctx context.Context, t *api.Task, service *ap
|
|||
break
|
||||
}
|
||||
restartInfo.restartedInstances.Remove(e)
|
||||
numRestarts--
|
||||
}
|
||||
|
||||
numRestarts := uint64(restartInfo.restartedInstances.Len())
|
||||
// Ignore restarts that didn't happen before the task we're looking at.
|
||||
for e2 := restartInfo.restartedInstances.Back(); e2 != nil; e2 = e2.Prev() {
|
||||
if e2.Value.(restartedInstance).timestamp.Before(timestamp) {
|
||||
break
|
||||
}
|
||||
numRestarts--
|
||||
}
|
||||
|
||||
if numRestarts == 0 {
|
||||
if restartInfo.restartedInstances.Len() == 0 {
|
||||
restartInfo.restartedInstances = nil
|
||||
}
|
||||
|
||||
return numRestarts < t.Spec.Restart.MaxAttempts
|
||||
}
|
||||
|
||||
func (r *Supervisor) recordRestartHistory(restartTask *api.Task) {
|
||||
if restartTask.Spec.Restart == nil || restartTask.Spec.Restart.MaxAttempts == 0 {
|
||||
// UpdatableTasksInSlot returns the set of tasks that should be passed to the
|
||||
// updater from this slot, or an empty slice if none should be. An updatable
|
||||
// slot has either at least one task that with desired state <= RUNNING, or its
|
||||
// most recent task has stopped running and should not be restarted. The latter
|
||||
// case is for making sure that tasks that shouldn't normally be restarted will
|
||||
// still be handled by rolling updates when they become outdated. There is a
|
||||
// special case for rollbacks to make sure that a rollback always takes the
|
||||
// service to a converged state, instead of ignoring tasks with the original
|
||||
// spec that stopped running and shouldn't be restarted according to the
|
||||
// restart policy.
|
||||
func (r *Supervisor) UpdatableTasksInSlot(ctx context.Context, slot orchestrator.Slot, service *api.Service) orchestrator.Slot {
|
||||
if len(slot) < 1 {
|
||||
return nil
|
||||
}
|
||||
|
||||
var updatable orchestrator.Slot
|
||||
for _, t := range slot {
|
||||
if t.DesiredState <= api.TaskStateRunning {
|
||||
updatable = append(updatable, t)
|
||||
}
|
||||
}
|
||||
if len(updatable) > 0 {
|
||||
return updatable
|
||||
}
|
||||
|
||||
if service.UpdateStatus != nil && service.UpdateStatus.State == api.UpdateStatus_ROLLBACK_STARTED {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Find most recent task
|
||||
byTimestamp := orchestrator.TasksByTimestamp(slot)
|
||||
newestIndex := 0
|
||||
for i := 1; i != len(slot); i++ {
|
||||
if byTimestamp.Less(newestIndex, i) {
|
||||
newestIndex = i
|
||||
}
|
||||
}
|
||||
|
||||
if !r.shouldRestart(ctx, slot[newestIndex], service) {
|
||||
return orchestrator.Slot{slot[newestIndex]}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// RecordRestartHistory updates the historyByService map to reflect the restart
|
||||
// of restartedTask.
|
||||
func (r *Supervisor) RecordRestartHistory(tuple orchestrator.SlotTuple, replacementTask *api.Task) {
|
||||
if replacementTask.Spec.Restart == nil || replacementTask.Spec.Restart.MaxAttempts == 0 {
|
||||
// No limit on the number of restarts, so no need to record
|
||||
// history.
|
||||
return
|
||||
}
|
||||
tuple := instanceTuple{
|
||||
instance: restartTask.Slot,
|
||||
serviceID: restartTask.ServiceID,
|
||||
nodeID: restartTask.NodeID,
|
||||
}
|
||||
|
||||
r.mu.Lock()
|
||||
defer r.mu.Unlock()
|
||||
|
||||
if r.history[tuple] == nil {
|
||||
r.history[tuple] = &instanceRestartInfo{}
|
||||
serviceID := replacementTask.ServiceID
|
||||
if r.historyByService[serviceID] == nil {
|
||||
r.historyByService[serviceID] = make(map[orchestrator.SlotTuple]*instanceRestartInfo)
|
||||
}
|
||||
if r.historyByService[serviceID][tuple] == nil {
|
||||
r.historyByService[serviceID][tuple] = &instanceRestartInfo{}
|
||||
}
|
||||
|
||||
restartInfo := r.historyByService[serviceID][tuple]
|
||||
|
||||
if replacementTask.SpecVersion != nil && *replacementTask.SpecVersion != restartInfo.specVersion {
|
||||
// This task has a different SpecVersion from the one we're
|
||||
// tracking. Most likely, the service was updated. Past failures
|
||||
// shouldn't count against the new service definition, so clear
|
||||
// the history for this instance.
|
||||
*restartInfo = instanceRestartInfo{
|
||||
specVersion: *replacementTask.SpecVersion,
|
||||
}
|
||||
}
|
||||
|
||||
restartInfo := r.history[tuple]
|
||||
restartInfo.totalRestarts++
|
||||
|
||||
if r.historyByService[restartTask.ServiceID] == nil {
|
||||
r.historyByService[restartTask.ServiceID] = make(map[instanceTuple]struct{})
|
||||
}
|
||||
r.historyByService[restartTask.ServiceID][tuple] = struct{}{}
|
||||
|
||||
if restartTask.Spec.Restart.Window != nil && (restartTask.Spec.Restart.Window.Seconds != 0 || restartTask.Spec.Restart.Window.Nanos != 0) {
|
||||
if replacementTask.Spec.Restart.Window != nil && (replacementTask.Spec.Restart.Window.Seconds != 0 || replacementTask.Spec.Restart.Window.Nanos != 0) {
|
||||
if restartInfo.restartedInstances == nil {
|
||||
restartInfo.restartedInstances = list.New()
|
||||
}
|
||||
|
||||
// it's okay to call TimestampFromProto with a nil argument
|
||||
timestamp, err := gogotypes.TimestampFromProto(replacementTask.Meta.CreatedAt)
|
||||
if replacementTask.Meta.CreatedAt == nil || err != nil {
|
||||
timestamp = time.Now()
|
||||
}
|
||||
|
||||
restartedInstance := restartedInstance{
|
||||
timestamp: time.Now(),
|
||||
timestamp: timestamp,
|
||||
}
|
||||
|
||||
restartInfo.restartedInstances.PushBack(restartedInstance)
|
||||
|
@ -323,7 +416,9 @@ func (r *Supervisor) DelayStart(ctx context.Context, _ store.Tx, oldTask *api.Ta
|
|||
var watch chan events.Event
|
||||
cancelWatch := func() {}
|
||||
|
||||
if waitStop && oldTask != nil {
|
||||
waitForTask := waitStop && oldTask != nil && oldTask.Status.State <= api.TaskStateRunning
|
||||
|
||||
if waitForTask {
|
||||
// Wait for either the old task to complete, or the old task's
|
||||
// node to become unavailable.
|
||||
watch, cancelWatch = state.Watch(
|
||||
|
@ -364,7 +459,7 @@ func (r *Supervisor) DelayStart(ctx context.Context, _ store.Tx, oldTask *api.Ta
|
|||
}
|
||||
}
|
||||
|
||||
if waitStop && oldTask != nil {
|
||||
if waitForTask {
|
||||
select {
|
||||
case <-watch:
|
||||
case <-oldTaskTimer.C:
|
||||
|
@ -432,16 +527,6 @@ func (r *Supervisor) CancelAll() {
|
|||
// ClearServiceHistory forgets restart history related to a given service ID.
|
||||
func (r *Supervisor) ClearServiceHistory(serviceID string) {
|
||||
r.mu.Lock()
|
||||
defer r.mu.Unlock()
|
||||
|
||||
tuples := r.historyByService[serviceID]
|
||||
if tuples == nil {
|
||||
return
|
||||
}
|
||||
|
||||
delete(r.historyByService, serviceID)
|
||||
|
||||
for t := range tuples {
|
||||
delete(r.history, t)
|
||||
}
|
||||
r.mu.Unlock()
|
||||
}
|
||||
|
|
39
vendor/github.com/docker/swarmkit/manager/orchestrator/slot.go
generated
vendored
39
vendor/github.com/docker/swarmkit/manager/orchestrator/slot.go
generated
vendored
|
@ -2,7 +2,6 @@ package orchestrator
|
|||
|
||||
import (
|
||||
"github.com/docker/swarmkit/api"
|
||||
"github.com/docker/swarmkit/manager/state/store"
|
||||
)
|
||||
|
||||
// Slot is a list of the running tasks occupying a certain slot. Generally this
|
||||
|
@ -12,35 +11,11 @@ import (
|
|||
// is also considered a slot for global services.
|
||||
type Slot []*api.Task
|
||||
|
||||
// GetRunnableAndDeadSlots returns two maps of slots. The first contains slots
|
||||
// that have at least one task with a desired state above NEW and lesser or
|
||||
// equal to RUNNING. The second is for slots that only contain tasks with a
|
||||
// desired state above RUNNING.
|
||||
func GetRunnableAndDeadSlots(s *store.MemoryStore, serviceID string) (map[uint64]Slot, map[uint64]Slot, error) {
|
||||
var (
|
||||
tasks []*api.Task
|
||||
err error
|
||||
)
|
||||
s.View(func(tx store.ReadTx) {
|
||||
tasks, err = store.FindTasks(tx, store.ByServiceID(serviceID))
|
||||
})
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
runningSlots := make(map[uint64]Slot)
|
||||
for _, t := range tasks {
|
||||
if t.DesiredState <= api.TaskStateRunning {
|
||||
runningSlots[t.Slot] = append(runningSlots[t.Slot], t)
|
||||
}
|
||||
}
|
||||
|
||||
deadSlots := make(map[uint64]Slot)
|
||||
for _, t := range tasks {
|
||||
if _, exists := runningSlots[t.Slot]; !exists {
|
||||
deadSlots[t.Slot] = append(deadSlots[t.Slot], t)
|
||||
}
|
||||
}
|
||||
|
||||
return runningSlots, deadSlots, nil
|
||||
// SlotTuple identifies a unique slot, in the broad sense described above. It's
|
||||
// a combination of either a service ID and a slot number (replicated services),
|
||||
// or a service ID and a node ID (global services).
|
||||
type SlotTuple struct {
|
||||
Slot uint64 // unset for global service tasks
|
||||
ServiceID string
|
||||
NodeID string // unset for replicated service tasks
|
||||
}
|
||||
|
|
65
vendor/github.com/docker/swarmkit/manager/orchestrator/task.go
generated
vendored
65
vendor/github.com/docker/swarmkit/manager/orchestrator/task.go
generated
vendored
|
@ -67,7 +67,29 @@ func IsTaskDirty(s *api.Service, t *api.Task) bool {
|
|||
return false
|
||||
}
|
||||
|
||||
return !reflect.DeepEqual(s.Spec.Task, t.Spec) ||
|
||||
// Make a deep copy of the service and task spec for the comparison.
|
||||
serviceTaskSpec := *s.Spec.Task.Copy()
|
||||
|
||||
// For non-failed tasks with a container spec runtime that have already
|
||||
// pulled the required image (i.e., current state is between READY and
|
||||
// RUNNING inclusively), ignore the value of the `PullOptions` field by
|
||||
// setting the copied service to have the same PullOptions value as the
|
||||
// task. A difference in only the `PullOptions` field should not cause
|
||||
// a running (or ready to run) task to be considered 'dirty' when we
|
||||
// handle updates.
|
||||
// See https://github.com/docker/swarmkit/issues/971
|
||||
currentState := t.Status.State
|
||||
// Ignore PullOpts if the task is desired to be in a "runnable" state
|
||||
// and its last known current state is between READY and RUNNING in
|
||||
// which case we know that the task either successfully pulled its
|
||||
// container image or didn't need to.
|
||||
ignorePullOpts := t.DesiredState <= api.TaskStateRunning && currentState >= api.TaskStateReady && currentState <= api.TaskStateRunning
|
||||
if ignorePullOpts && serviceTaskSpec.GetContainer() != nil && t.Spec.GetContainer() != nil {
|
||||
// Modify the service's container spec.
|
||||
serviceTaskSpec.GetContainer().PullOptions = t.Spec.GetContainer().PullOptions
|
||||
}
|
||||
|
||||
return !reflect.DeepEqual(serviceTaskSpec, t.Spec) ||
|
||||
(t.Endpoint != nil && !reflect.DeepEqual(s.Spec.Endpoint, t.Endpoint.Spec))
|
||||
}
|
||||
|
||||
|
@ -77,3 +99,44 @@ func InvalidNode(n *api.Node) bool {
|
|||
n.Status.State == api.NodeStatus_DOWN ||
|
||||
n.Spec.Availability == api.NodeAvailabilityDrain
|
||||
}
|
||||
|
||||
// TasksByTimestamp sorts tasks by applied timestamp if available, otherwise
|
||||
// status timestamp.
|
||||
type TasksByTimestamp []*api.Task
|
||||
|
||||
// Len implements the Len method for sorting.
|
||||
func (t TasksByTimestamp) Len() int {
|
||||
return len(t)
|
||||
}
|
||||
|
||||
// Swap implements the Swap method for sorting.
|
||||
func (t TasksByTimestamp) Swap(i, j int) {
|
||||
t[i], t[j] = t[j], t[i]
|
||||
}
|
||||
|
||||
// Less implements the Less method for sorting.
|
||||
func (t TasksByTimestamp) Less(i, j int) bool {
|
||||
iTimestamp := t[i].Status.Timestamp
|
||||
if t[i].Status.AppliedAt != nil {
|
||||
iTimestamp = t[i].Status.AppliedAt
|
||||
}
|
||||
|
||||
jTimestamp := t[j].Status.Timestamp
|
||||
if t[j].Status.AppliedAt != nil {
|
||||
iTimestamp = t[j].Status.AppliedAt
|
||||
}
|
||||
|
||||
if iTimestamp == nil {
|
||||
return true
|
||||
}
|
||||
if jTimestamp == nil {
|
||||
return false
|
||||
}
|
||||
if iTimestamp.Seconds < jTimestamp.Seconds {
|
||||
return true
|
||||
}
|
||||
if iTimestamp.Seconds > jTimestamp.Seconds {
|
||||
return false
|
||||
}
|
||||
return iTimestamp.Nanos < jTimestamp.Nanos
|
||||
}
|
||||
|
|
75
vendor/github.com/docker/swarmkit/manager/orchestrator/taskinit/init.go
generated
vendored
75
vendor/github.com/docker/swarmkit/manager/orchestrator/taskinit/init.go
generated
vendored
|
@ -1,11 +1,13 @@
|
|||
package taskinit
|
||||
|
||||
import (
|
||||
"sort"
|
||||
"time"
|
||||
|
||||
"github.com/docker/swarmkit/api"
|
||||
"github.com/docker/swarmkit/api/defaults"
|
||||
"github.com/docker/swarmkit/log"
|
||||
"github.com/docker/swarmkit/manager/orchestrator"
|
||||
"github.com/docker/swarmkit/manager/orchestrator/restart"
|
||||
"github.com/docker/swarmkit/manager/state/store"
|
||||
gogotypes "github.com/gogo/protobuf/types"
|
||||
|
@ -16,11 +18,13 @@ import (
|
|||
type InitHandler interface {
|
||||
IsRelatedService(service *api.Service) bool
|
||||
FixTask(ctx context.Context, batch *store.Batch, t *api.Task)
|
||||
SlotTuple(t *api.Task) orchestrator.SlotTuple
|
||||
}
|
||||
|
||||
// CheckTasks fixes tasks in the store before orchestrator runs. The previous leader might
|
||||
// not have finished processing their updates and left them in an inconsistent state.
|
||||
func CheckTasks(ctx context.Context, s *store.MemoryStore, readTx store.ReadTx, initHandler InitHandler, startSupervisor *restart.Supervisor) error {
|
||||
instances := make(map[orchestrator.SlotTuple][]*api.Task)
|
||||
err := s.Batch(func(batch *store.Batch) error {
|
||||
tasks, err := store.FindTasks(readTx, store.All)
|
||||
if err != nil {
|
||||
|
@ -47,6 +51,9 @@ func CheckTasks(ctx context.Context, s *store.MemoryStore, readTx store.ReadTx,
|
|||
continue
|
||||
}
|
||||
|
||||
tuple := initHandler.SlotTuple(t)
|
||||
instances[tuple] = append(instances[tuple], t)
|
||||
|
||||
// handle task updates from agent which should have been triggered by task update events
|
||||
initHandler.FixTask(ctx, batch, t)
|
||||
|
||||
|
@ -65,7 +72,12 @@ func CheckTasks(ctx context.Context, s *store.MemoryStore, readTx store.ReadTx,
|
|||
}
|
||||
}
|
||||
if restartDelay != 0 {
|
||||
timestamp, err := gogotypes.TimestampFromProto(t.Status.Timestamp)
|
||||
var timestamp time.Time
|
||||
if t.Status.AppliedAt != nil {
|
||||
timestamp, err = gogotypes.TimestampFromProto(t.Status.AppliedAt)
|
||||
} else {
|
||||
timestamp, err = gogotypes.TimestampFromProto(t.Status.Timestamp)
|
||||
}
|
||||
if err == nil {
|
||||
restartTime := timestamp.Add(restartDelay)
|
||||
calculatedRestartDelay := restartTime.Sub(time.Now())
|
||||
|
@ -99,5 +111,64 @@ func CheckTasks(ctx context.Context, s *store.MemoryStore, readTx store.ReadTx,
|
|||
}
|
||||
return nil
|
||||
})
|
||||
return err
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for tuple, instance := range instances {
|
||||
// Find the most current spec version. That's the only one
|
||||
// we care about for the purpose of reconstructing restart
|
||||
// history.
|
||||
maxVersion := uint64(0)
|
||||
for _, t := range instance {
|
||||
if t.SpecVersion != nil && t.SpecVersion.Index > maxVersion {
|
||||
maxVersion = t.SpecVersion.Index
|
||||
}
|
||||
}
|
||||
|
||||
// Create a new slice with just the current spec version tasks.
|
||||
var upToDate []*api.Task
|
||||
for _, t := range instance {
|
||||
if t.SpecVersion != nil && t.SpecVersion.Index == maxVersion {
|
||||
upToDate = append(upToDate, t)
|
||||
}
|
||||
}
|
||||
|
||||
// Sort by creation timestamp
|
||||
sort.Sort(tasksByCreationTimestamp(upToDate))
|
||||
|
||||
// All up-to-date tasks in this instance except the first one
|
||||
// should be considered restarted.
|
||||
if len(upToDate) < 2 {
|
||||
continue
|
||||
}
|
||||
for _, t := range upToDate[1:] {
|
||||
startSupervisor.RecordRestartHistory(tuple, t)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type tasksByCreationTimestamp []*api.Task
|
||||
|
||||
func (t tasksByCreationTimestamp) Len() int {
|
||||
return len(t)
|
||||
}
|
||||
func (t tasksByCreationTimestamp) Swap(i, j int) {
|
||||
t[i], t[j] = t[j], t[i]
|
||||
}
|
||||
func (t tasksByCreationTimestamp) Less(i, j int) bool {
|
||||
if t[i].Meta.CreatedAt == nil {
|
||||
return true
|
||||
}
|
||||
if t[j].Meta.CreatedAt == nil {
|
||||
return false
|
||||
}
|
||||
if t[i].Meta.CreatedAt.Seconds < t[j].Meta.CreatedAt.Seconds {
|
||||
return true
|
||||
}
|
||||
if t[i].Meta.CreatedAt.Seconds > t[j].Meta.CreatedAt.Seconds {
|
||||
return false
|
||||
}
|
||||
return t[i].Meta.CreatedAt.Nanos < t[j].Meta.CreatedAt.Nanos
|
||||
}
|
||||
|
|
71
vendor/github.com/docker/swarmkit/manager/orchestrator/taskreaper/task_reaper.go
generated
vendored
71
vendor/github.com/docker/swarmkit/manager/orchestrator/taskreaper/task_reaper.go
generated
vendored
|
@ -6,6 +6,7 @@ import (
|
|||
|
||||
"github.com/docker/swarmkit/api"
|
||||
"github.com/docker/swarmkit/log"
|
||||
"github.com/docker/swarmkit/manager/orchestrator"
|
||||
"github.com/docker/swarmkit/manager/state"
|
||||
"github.com/docker/swarmkit/manager/state/store"
|
||||
"golang.org/x/net/context"
|
||||
|
@ -18,19 +19,13 @@ const (
|
|||
reaperBatchingInterval = 250 * time.Millisecond
|
||||
)
|
||||
|
||||
type instanceTuple struct {
|
||||
instance uint64 // unset for global tasks
|
||||
serviceID string
|
||||
nodeID string // unset for replicated tasks
|
||||
}
|
||||
|
||||
// A TaskReaper deletes old tasks when more than TaskHistoryRetentionLimit tasks
|
||||
// exist for the same service/instance or service/nodeid combination.
|
||||
type TaskReaper struct {
|
||||
store *store.MemoryStore
|
||||
// taskHistory is the number of tasks to keep
|
||||
taskHistory int64
|
||||
dirty map[instanceTuple]struct{}
|
||||
dirty map[orchestrator.SlotTuple]struct{}
|
||||
orphaned []string
|
||||
stopChan chan struct{}
|
||||
doneChan chan struct{}
|
||||
|
@ -40,7 +35,7 @@ type TaskReaper struct {
|
|||
func New(store *store.MemoryStore) *TaskReaper {
|
||||
return &TaskReaper{
|
||||
store: store,
|
||||
dirty: make(map[instanceTuple]struct{}),
|
||||
dirty: make(map[orchestrator.SlotTuple]struct{}),
|
||||
stopChan: make(chan struct{}),
|
||||
doneChan: make(chan struct{}),
|
||||
}
|
||||
|
@ -93,10 +88,10 @@ func (tr *TaskReaper) Run(ctx context.Context) {
|
|||
switch v := event.(type) {
|
||||
case api.EventCreateTask:
|
||||
t := v.Task
|
||||
tr.dirty[instanceTuple{
|
||||
instance: t.Slot,
|
||||
serviceID: t.ServiceID,
|
||||
nodeID: t.NodeID,
|
||||
tr.dirty[orchestrator.SlotTuple{
|
||||
Slot: t.Slot,
|
||||
ServiceID: t.ServiceID,
|
||||
NodeID: t.NodeID,
|
||||
}] = struct{}{}
|
||||
case api.EventUpdateTask:
|
||||
t := v.Task
|
||||
|
@ -138,13 +133,29 @@ func (tr *TaskReaper) tick() {
|
|||
}
|
||||
tr.store.View(func(tx store.ReadTx) {
|
||||
for dirty := range tr.dirty {
|
||||
service := store.GetService(tx, dirty.serviceID)
|
||||
service := store.GetService(tx, dirty.ServiceID)
|
||||
if service == nil {
|
||||
continue
|
||||
}
|
||||
|
||||
taskHistory := tr.taskHistory
|
||||
|
||||
// If MaxAttempts is set, keep at least one more than
|
||||
// that number of tasks. This is necessary reconstruct
|
||||
// restart history when the orchestrator starts up.
|
||||
// TODO(aaronl): Consider hiding tasks beyond the normal
|
||||
// retention limit in the UI.
|
||||
// TODO(aaronl): There are some ways to cut down the
|
||||
// number of retained tasks at the cost of more
|
||||
// complexity:
|
||||
// - Don't force retention of tasks with an older spec
|
||||
// version.
|
||||
// - Don't force retention of tasks outside of the
|
||||
// time window configured for restart lookback.
|
||||
if service.Spec.Task.Restart != nil && service.Spec.Task.Restart.MaxAttempts > 0 {
|
||||
taskHistory = int64(service.Spec.Task.Restart.MaxAttempts) + 1
|
||||
}
|
||||
|
||||
if taskHistory < 0 {
|
||||
continue
|
||||
}
|
||||
|
@ -154,19 +165,19 @@ func (tr *TaskReaper) tick() {
|
|||
switch service.Spec.GetMode().(type) {
|
||||
case *api.ServiceSpec_Replicated:
|
||||
var err error
|
||||
historicTasks, err = store.FindTasks(tx, store.BySlot(dirty.serviceID, dirty.instance))
|
||||
historicTasks, err = store.FindTasks(tx, store.BySlot(dirty.ServiceID, dirty.Slot))
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
case *api.ServiceSpec_Global:
|
||||
tasksByNode, err := store.FindTasks(tx, store.ByNodeID(dirty.nodeID))
|
||||
tasksByNode, err := store.FindTasks(tx, store.ByNodeID(dirty.NodeID))
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
for _, t := range tasksByNode {
|
||||
if t.ServiceID == dirty.serviceID {
|
||||
if t.ServiceID == dirty.ServiceID {
|
||||
historicTasks = append(historicTasks, t)
|
||||
}
|
||||
}
|
||||
|
@ -178,7 +189,9 @@ func (tr *TaskReaper) tick() {
|
|||
|
||||
// TODO(aaronl): This could filter for non-running tasks and use quickselect
|
||||
// instead of sorting the whole slice.
|
||||
sort.Sort(tasksByTimestamp(historicTasks))
|
||||
// TODO(aaronl): This sort should really use lamport time instead of wall
|
||||
// clock time. We should store a Version in the Status field.
|
||||
sort.Sort(orchestrator.TasksByTimestamp(historicTasks))
|
||||
|
||||
runningTasks := 0
|
||||
for _, t := range historicTasks {
|
||||
|
@ -219,27 +232,3 @@ func (tr *TaskReaper) Stop() {
|
|||
close(tr.stopChan)
|
||||
<-tr.doneChan
|
||||
}
|
||||
|
||||
type tasksByTimestamp []*api.Task
|
||||
|
||||
func (t tasksByTimestamp) Len() int {
|
||||
return len(t)
|
||||
}
|
||||
func (t tasksByTimestamp) Swap(i, j int) {
|
||||
t[i], t[j] = t[j], t[i]
|
||||
}
|
||||
func (t tasksByTimestamp) Less(i, j int) bool {
|
||||
if t[i].Status.Timestamp == nil {
|
||||
return true
|
||||
}
|
||||
if t[j].Status.Timestamp == nil {
|
||||
return false
|
||||
}
|
||||
if t[i].Status.Timestamp.Seconds < t[j].Status.Timestamp.Seconds {
|
||||
return true
|
||||
}
|
||||
if t[i].Status.Timestamp.Seconds > t[j].Status.Timestamp.Seconds {
|
||||
return false
|
||||
}
|
||||
return t[i].Status.Timestamp.Nanos < t[j].Status.Timestamp.Nanos
|
||||
}
|
||||
|
|
10
vendor/github.com/docker/swarmkit/manager/orchestrator/update/updater.go
generated
vendored
10
vendor/github.com/docker/swarmkit/manager/orchestrator/update/updater.go
generated
vendored
|
@ -430,7 +430,7 @@ func (u *Updater) updateTask(ctx context.Context, slot orchestrator.Slot, update
|
|||
u.updatedTasks[updated.ID] = time.Now()
|
||||
u.updatedTasksMu.Unlock()
|
||||
|
||||
if startThenStop {
|
||||
if startThenStop && updated.Status.State == api.TaskStateRunning {
|
||||
err := u.store.Batch(func(batch *store.Batch) error {
|
||||
_, err := u.removeOldTasks(ctx, batch, slot)
|
||||
if err != nil {
|
||||
|
@ -496,6 +496,9 @@ func (u *Updater) removeOldTasks(ctx context.Context, batch *store.Batch, remove
|
|||
removedTask *api.Task
|
||||
)
|
||||
for _, original := range removeTasks {
|
||||
if original.DesiredState > api.TaskStateRunning {
|
||||
continue
|
||||
}
|
||||
err := batch.Update(func(tx store.Tx) error {
|
||||
t := store.GetTask(tx, original.ID)
|
||||
if t == nil {
|
||||
|
@ -583,9 +586,8 @@ func (u *Updater) pauseUpdate(ctx context.Context, serviceID, message string) {
|
|||
func (u *Updater) rollbackUpdate(ctx context.Context, serviceID, message string) {
|
||||
log.G(ctx).Debugf("starting rollback of service %s", serviceID)
|
||||
|
||||
var service *api.Service
|
||||
err := u.store.Update(func(tx store.Tx) error {
|
||||
service = store.GetService(tx, serviceID)
|
||||
service := store.GetService(tx, serviceID)
|
||||
if service == nil {
|
||||
return nil
|
||||
}
|
||||
|
@ -601,7 +603,9 @@ func (u *Updater) rollbackUpdate(ctx context.Context, serviceID, message string)
|
|||
return errors.New("cannot roll back service because no previous spec is available")
|
||||
}
|
||||
service.Spec = *service.PreviousSpec
|
||||
service.SpecVersion = service.PreviousSpecVersion.Copy()
|
||||
service.PreviousSpec = nil
|
||||
service.PreviousSpecVersion = nil
|
||||
|
||||
return store.UpdateService(tx, service)
|
||||
})
|
||||
|
|
96
vendor/github.com/docker/swarmkit/manager/state/raft/raft.go
generated
vendored
96
vendor/github.com/docker/swarmkit/manager/state/raft/raft.go
generated
vendored
|
@ -166,6 +166,8 @@ type NodeOptions struct {
|
|||
// JoinAddr is the cluster to join. May be an empty string to create
|
||||
// a standalone cluster.
|
||||
JoinAddr string
|
||||
// ForceJoin tells us to join even if already part of a cluster.
|
||||
ForceJoin bool
|
||||
// Config is the raft config.
|
||||
Config *raft.Config
|
||||
// StateDir is the directory to store durable state.
|
||||
|
@ -393,8 +395,10 @@ func (n *Node) JoinAndStart(ctx context.Context) (err error) {
|
|||
|
||||
// restore from snapshot
|
||||
if loadAndStartErr == nil {
|
||||
if n.opts.JoinAddr != "" {
|
||||
log.G(ctx).Warning("ignoring request to join cluster, because raft state already exists")
|
||||
if n.opts.JoinAddr != "" && n.opts.ForceJoin {
|
||||
if err := n.joinCluster(ctx); err != nil {
|
||||
return errors.Wrap(err, "failed to rejoin cluster")
|
||||
}
|
||||
}
|
||||
n.campaignWhenAble = true
|
||||
n.initTransport()
|
||||
|
@ -402,7 +406,6 @@ func (n *Node) JoinAndStart(ctx context.Context) (err error) {
|
|||
return nil
|
||||
}
|
||||
|
||||
// first member of cluster
|
||||
if n.opts.JoinAddr == "" {
|
||||
// First member in the cluster, self-assign ID
|
||||
n.Config.ID = uint64(rand.Int63()) + 1
|
||||
|
@ -417,6 +420,22 @@ func (n *Node) JoinAndStart(ctx context.Context) (err error) {
|
|||
}
|
||||
|
||||
// join to existing cluster
|
||||
|
||||
if err := n.joinCluster(ctx); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if _, err := n.newRaftLogs(n.opts.ID); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
n.initTransport()
|
||||
n.raftNode = raft.StartNode(n.Config, nil)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (n *Node) joinCluster(ctx context.Context) error {
|
||||
if n.opts.Addr == "" {
|
||||
return errors.New("attempted to join raft cluster without knowing own address")
|
||||
}
|
||||
|
@ -438,15 +457,7 @@ func (n *Node) JoinAndStart(ctx context.Context) (err error) {
|
|||
}
|
||||
|
||||
n.Config.ID = resp.RaftID
|
||||
|
||||
if _, err := n.newRaftLogs(n.opts.ID); err != nil {
|
||||
return err
|
||||
}
|
||||
n.bootstrapMembers = resp.Members
|
||||
|
||||
n.initTransport()
|
||||
n.raftNode = raft.StartNode(n.Config, nil)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -909,24 +920,6 @@ func (n *Node) Join(ctx context.Context, req *api.JoinRequest) (*api.JoinRespons
|
|||
return nil, grpc.Errorf(codes.FailedPrecondition, "%s", ErrLostLeadership.Error())
|
||||
}
|
||||
|
||||
// A single manager must not be able to join the raft cluster twice. If
|
||||
// it did, that would cause the quorum to be computed incorrectly. This
|
||||
// could happen if the WAL was deleted from an active manager.
|
||||
for _, m := range n.cluster.Members() {
|
||||
if m.NodeID == nodeInfo.NodeID {
|
||||
return nil, grpc.Errorf(codes.AlreadyExists, "%s", "a raft member with this node ID already exists")
|
||||
}
|
||||
}
|
||||
|
||||
// Find a unique ID for the joining member.
|
||||
var raftID uint64
|
||||
for {
|
||||
raftID = uint64(rand.Int63()) + 1
|
||||
if n.cluster.GetMember(raftID) == nil && !n.cluster.IsIDRemoved(raftID) {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
remoteAddr := req.Addr
|
||||
|
||||
// If the joining node sent an address like 0.0.0.0:4242, automatically
|
||||
|
@ -953,12 +946,54 @@ func (n *Node) Join(ctx context.Context, req *api.JoinRequest) (*api.JoinRespons
|
|||
return nil, err
|
||||
}
|
||||
|
||||
// If the peer is already a member of the cluster, we will only update
|
||||
// its information, not add it as a new member. Adding it again would
|
||||
// cause the quorum to be computed incorrectly.
|
||||
for _, m := range n.cluster.Members() {
|
||||
if m.NodeID == nodeInfo.NodeID {
|
||||
if remoteAddr == m.Addr {
|
||||
return n.joinResponse(m.RaftID), nil
|
||||
}
|
||||
updatedRaftMember := &api.RaftMember{
|
||||
RaftID: m.RaftID,
|
||||
NodeID: m.NodeID,
|
||||
Addr: remoteAddr,
|
||||
}
|
||||
if err := n.cluster.UpdateMember(m.RaftID, updatedRaftMember); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := n.updateNodeBlocking(ctx, m.RaftID, remoteAddr); err != nil {
|
||||
log.WithError(err).Error("failed to update node address")
|
||||
return nil, err
|
||||
}
|
||||
|
||||
log.Info("updated node address")
|
||||
return n.joinResponse(m.RaftID), nil
|
||||
}
|
||||
}
|
||||
|
||||
// Find a unique ID for the joining member.
|
||||
var raftID uint64
|
||||
for {
|
||||
raftID = uint64(rand.Int63()) + 1
|
||||
if n.cluster.GetMember(raftID) == nil && !n.cluster.IsIDRemoved(raftID) {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
err = n.addMember(ctx, remoteAddr, raftID, nodeInfo.NodeID)
|
||||
if err != nil {
|
||||
log.WithError(err).Errorf("failed to add member %x", raftID)
|
||||
return nil, err
|
||||
}
|
||||
|
||||
log.Debug("node joined")
|
||||
|
||||
return n.joinResponse(raftID), nil
|
||||
}
|
||||
|
||||
func (n *Node) joinResponse(raftID uint64) *api.JoinResponse {
|
||||
var nodes []*api.RaftMember
|
||||
for _, node := range n.cluster.Members() {
|
||||
nodes = append(nodes, &api.RaftMember{
|
||||
|
@ -967,9 +1002,8 @@ func (n *Node) Join(ctx context.Context, req *api.JoinRequest) (*api.JoinRespons
|
|||
Addr: node.Addr,
|
||||
})
|
||||
}
|
||||
log.Debugf("node joined")
|
||||
|
||||
return &api.JoinResponse{Members: nodes, RaftID: raftID}, nil
|
||||
return &api.JoinResponse{Members: nodes, RaftID: raftID}
|
||||
}
|
||||
|
||||
// checkHealth tries to contact an aspiring member through its advertised address
|
||||
|
|
41
vendor/github.com/docker/swarmkit/manager/watchapi/server.go
generated
vendored
41
vendor/github.com/docker/swarmkit/manager/watchapi/server.go
generated
vendored
|
@ -1,12 +1,24 @@
|
|||
package watchapi
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"sync"
|
||||
|
||||
"github.com/docker/swarmkit/manager/state/store"
|
||||
"golang.org/x/net/context"
|
||||
)
|
||||
|
||||
var (
|
||||
errAlreadyRunning = errors.New("broker is already running")
|
||||
errNotRunning = errors.New("broker is not running")
|
||||
)
|
||||
|
||||
// Server is the store API gRPC server.
|
||||
type Server struct {
|
||||
store *store.MemoryStore
|
||||
store *store.MemoryStore
|
||||
mu sync.Mutex
|
||||
pctx context.Context
|
||||
cancelAll func()
|
||||
}
|
||||
|
||||
// NewServer creates a store API server.
|
||||
|
@ -15,3 +27,30 @@ func NewServer(store *store.MemoryStore) *Server {
|
|||
store: store,
|
||||
}
|
||||
}
|
||||
|
||||
// Start starts the watch server.
|
||||
func (s *Server) Start(ctx context.Context) error {
|
||||
s.mu.Lock()
|
||||
defer s.mu.Unlock()
|
||||
|
||||
if s.cancelAll != nil {
|
||||
return errAlreadyRunning
|
||||
}
|
||||
|
||||
s.pctx, s.cancelAll = context.WithCancel(ctx)
|
||||
return nil
|
||||
}
|
||||
|
||||
// Stop stops the watch server.
|
||||
func (s *Server) Stop() error {
|
||||
s.mu.Lock()
|
||||
defer s.mu.Unlock()
|
||||
|
||||
if s.cancelAll == nil {
|
||||
return errNotRunning
|
||||
}
|
||||
s.cancelAll()
|
||||
s.cancelAll = nil
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
9
vendor/github.com/docker/swarmkit/manager/watchapi/watch.go
generated
vendored
9
vendor/github.com/docker/swarmkit/manager/watchapi/watch.go
generated
vendored
|
@ -17,6 +17,13 @@ import (
|
|||
func (s *Server) Watch(request *api.WatchRequest, stream api.Watch_WatchServer) error {
|
||||
ctx := stream.Context()
|
||||
|
||||
s.mu.Lock()
|
||||
pctx := s.pctx
|
||||
s.mu.Unlock()
|
||||
if pctx == nil {
|
||||
return errNotRunning
|
||||
}
|
||||
|
||||
watchArgs, err := api.ConvertWatchArgs(request.Entries)
|
||||
if err != nil {
|
||||
return grpc.Errorf(codes.InvalidArgument, "%s", err.Error())
|
||||
|
@ -39,6 +46,8 @@ func (s *Server) Watch(request *api.WatchRequest, stream api.Watch_WatchServer)
|
|||
select {
|
||||
case <-ctx.Done():
|
||||
return ctx.Err()
|
||||
case <-pctx.Done():
|
||||
return pctx.Err()
|
||||
case event := <-watch:
|
||||
if commitEvent, ok := event.(state.EventCommit); ok && len(events) > 0 {
|
||||
if err := stream.Send(&api.WatchMessage{Events: events, Version: commitEvent.Version}); err != nil {
|
||||
|
|
21
vendor/github.com/docker/swarmkit/node/node.go
generated
vendored
21
vendor/github.com/docker/swarmkit/node/node.go
generated
vendored
|
@ -308,8 +308,6 @@ func (n *Node) run(ctx context.Context) (err error) {
|
|||
case <-agentDone:
|
||||
return
|
||||
case nodeChanges := <-n.notifyNodeChange:
|
||||
currentRole := n.currentRole()
|
||||
|
||||
if nodeChanges.Node != nil {
|
||||
// This is a bit complex to be backward compatible with older CAs that
|
||||
// don't support the Node.Role field. They only use what's presently
|
||||
|
@ -335,10 +333,7 @@ func (n *Node) run(ctx context.Context) (err error) {
|
|||
}
|
||||
|
||||
if nodeChanges.RootCert != nil {
|
||||
// We only want to update the root CA if this is a worker node. Manager nodes directly watch the raft
|
||||
// store and update the root CA, with the necessary signer, from the raft store (since the managers
|
||||
// need the CA key as well to potentially issue new TLS certificates).
|
||||
if currentRole == api.NodeRoleManager || bytes.Equal(nodeChanges.RootCert, securityConfig.RootCA().Certs) {
|
||||
if bytes.Equal(nodeChanges.RootCert, securityConfig.RootCA().Certs) {
|
||||
continue
|
||||
}
|
||||
newRootCA, err := ca.NewRootCA(nodeChanges.RootCert, nil, nil, ca.DefaultNodeCertExpiration, nil)
|
||||
|
@ -346,7 +341,7 @@ func (n *Node) run(ctx context.Context) (err error) {
|
|||
log.G(ctx).WithError(err).Error("invalid new root certificate from the dispatcher")
|
||||
continue
|
||||
}
|
||||
if err := securityConfig.UpdateRootCA(&newRootCA, newRootCA.Pool); err != nil {
|
||||
if err := securityConfig.UpdateRootCA(&newRootCA); err != nil {
|
||||
log.G(ctx).WithError(err).Error("could not use new root CA from dispatcher")
|
||||
continue
|
||||
}
|
||||
|
@ -828,14 +823,22 @@ func (n *Node) runManager(ctx context.Context, securityConfig *ca.SecurityConfig
|
|||
}
|
||||
}
|
||||
|
||||
remoteAddr, _ := n.remotes.Select(n.NodeID())
|
||||
joinAddr := n.config.JoinAddr
|
||||
if joinAddr == "" {
|
||||
remoteAddr, err := n.remotes.Select(n.NodeID())
|
||||
if err == nil {
|
||||
joinAddr = remoteAddr.Addr
|
||||
}
|
||||
}
|
||||
|
||||
m, err := manager.New(&manager.Config{
|
||||
ForceNewCluster: n.config.ForceNewCluster,
|
||||
RemoteAPI: remoteAPI,
|
||||
ControlAPI: n.config.ListenControlAPI,
|
||||
SecurityConfig: securityConfig,
|
||||
ExternalCAs: n.config.ExternalCAs,
|
||||
JoinRaft: remoteAddr.Addr,
|
||||
JoinRaft: joinAddr,
|
||||
ForceJoin: n.config.JoinAddr != "",
|
||||
StateDir: n.config.StateDir,
|
||||
HeartbeatTick: n.config.HeartbeatTick,
|
||||
ElectionTick: n.config.ElectionTick,
|
||||
|
|
3
vendor/github.com/docker/swarmkit/protobuf/plugin/gen.go
generated
vendored
3
vendor/github.com/docker/swarmkit/protobuf/plugin/gen.go
generated
vendored
|
@ -1,3 +0,0 @@
|
|||
package plugin
|
||||
|
||||
//go:generate protoc -I.:/usr/local --gogoswarm_out=import_path=github.com/docker/swarmkit/protobuf/plugin,Mgoogle/protobuf/descriptor.proto=github.com/gogo/protobuf/protoc-gen-gogo/descriptor:. plugin.proto
|
145
vendor/github.com/docker/swarmkit/protobuf/plugin/plugin.pb.go
generated
vendored
145
vendor/github.com/docker/swarmkit/protobuf/plugin/plugin.pb.go
generated
vendored
|
@ -1,12 +1,12 @@
|
|||
// Code generated by protoc-gen-gogo.
|
||||
// source: plugin.proto
|
||||
// source: github.com/docker/swarmkit/protobuf/plugin/plugin.proto
|
||||
// DO NOT EDIT!
|
||||
|
||||
/*
|
||||
Package plugin is a generated protocol buffer package.
|
||||
|
||||
It is generated from these files:
|
||||
plugin.proto
|
||||
github.com/docker/swarmkit/protobuf/plugin/plugin.proto
|
||||
|
||||
It has these top-level messages:
|
||||
WatchSelectors
|
||||
|
@ -20,6 +20,8 @@ import fmt "fmt"
|
|||
import math "math"
|
||||
import google_protobuf "github.com/gogo/protobuf/protoc-gen-gogo/descriptor"
|
||||
|
||||
import github_com_docker_swarmkit_api_deepcopy "github.com/docker/swarmkit/api/deepcopy"
|
||||
|
||||
import github_com_gogo_protobuf_proto "github.com/gogo/protobuf/proto"
|
||||
|
||||
import strings "strings"
|
||||
|
@ -92,7 +94,7 @@ var E_Deepcopy = &proto.ExtensionDesc{
|
|||
Field: 70000,
|
||||
Name: "docker.protobuf.plugin.deepcopy",
|
||||
Tag: "varint,70000,opt,name=deepcopy,def=1",
|
||||
Filename: "plugin.proto",
|
||||
Filename: "github.com/docker/swarmkit/protobuf/plugin/plugin.proto",
|
||||
}
|
||||
|
||||
var E_StoreObject = &proto.ExtensionDesc{
|
||||
|
@ -101,7 +103,7 @@ var E_StoreObject = &proto.ExtensionDesc{
|
|||
Field: 70001,
|
||||
Name: "docker.protobuf.plugin.store_object",
|
||||
Tag: "bytes,70001,opt,name=store_object,json=storeObject",
|
||||
Filename: "plugin.proto",
|
||||
Filename: "github.com/docker/swarmkit/protobuf/plugin/plugin.proto",
|
||||
}
|
||||
|
||||
var E_TlsAuthorization = &proto.ExtensionDesc{
|
||||
|
@ -110,7 +112,7 @@ var E_TlsAuthorization = &proto.ExtensionDesc{
|
|||
Field: 73626345,
|
||||
Name: "docker.protobuf.plugin.tls_authorization",
|
||||
Tag: "bytes,73626345,opt,name=tls_authorization,json=tlsAuthorization",
|
||||
Filename: "plugin.proto",
|
||||
Filename: "github.com/docker/swarmkit/protobuf/plugin/plugin.proto",
|
||||
}
|
||||
|
||||
func init() {
|
||||
|
@ -121,6 +123,61 @@ func init() {
|
|||
proto.RegisterExtension(E_StoreObject)
|
||||
proto.RegisterExtension(E_TlsAuthorization)
|
||||
}
|
||||
|
||||
func (m *WatchSelectors) Copy() *WatchSelectors {
|
||||
if m == nil {
|
||||
return nil
|
||||
}
|
||||
o := &WatchSelectors{}
|
||||
o.CopyFrom(m)
|
||||
return o
|
||||
}
|
||||
|
||||
func (m *WatchSelectors) CopyFrom(src interface{}) {
|
||||
|
||||
o := src.(*WatchSelectors)
|
||||
*m = *o
|
||||
}
|
||||
|
||||
func (m *StoreObject) Copy() *StoreObject {
|
||||
if m == nil {
|
||||
return nil
|
||||
}
|
||||
o := &StoreObject{}
|
||||
o.CopyFrom(m)
|
||||
return o
|
||||
}
|
||||
|
||||
func (m *StoreObject) CopyFrom(src interface{}) {
|
||||
|
||||
o := src.(*StoreObject)
|
||||
*m = *o
|
||||
if o.WatchSelectors != nil {
|
||||
m.WatchSelectors = &WatchSelectors{}
|
||||
github_com_docker_swarmkit_api_deepcopy.Copy(m.WatchSelectors, o.WatchSelectors)
|
||||
}
|
||||
}
|
||||
|
||||
func (m *TLSAuthorization) Copy() *TLSAuthorization {
|
||||
if m == nil {
|
||||
return nil
|
||||
}
|
||||
o := &TLSAuthorization{}
|
||||
o.CopyFrom(m)
|
||||
return o
|
||||
}
|
||||
|
||||
func (m *TLSAuthorization) CopyFrom(src interface{}) {
|
||||
|
||||
o := src.(*TLSAuthorization)
|
||||
*m = *o
|
||||
if o.Roles != nil {
|
||||
m.Roles = make([]string, len(o.Roles))
|
||||
copy(m.Roles, o.Roles)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func (m *WatchSelectors) Marshal() (dAtA []byte, err error) {
|
||||
size := m.Size()
|
||||
dAtA = make([]byte, size)
|
||||
|
@ -378,6 +435,7 @@ func encodeVarintPlugin(dAtA []byte, offset int, v uint64) int {
|
|||
dAtA[offset] = uint8(v)
|
||||
return offset + 1
|
||||
}
|
||||
|
||||
func (m *WatchSelectors) Size() (n int) {
|
||||
var l int
|
||||
_ = l
|
||||
|
@ -1143,43 +1201,46 @@ var (
|
|||
ErrIntOverflowPlugin = fmt.Errorf("proto: integer overflow")
|
||||
)
|
||||
|
||||
func init() { proto.RegisterFile("plugin.proto", fileDescriptorPlugin) }
|
||||
func init() {
|
||||
proto.RegisterFile("github.com/docker/swarmkit/protobuf/plugin/plugin.proto", fileDescriptorPlugin)
|
||||
}
|
||||
|
||||
var fileDescriptorPlugin = []byte{
|
||||
// 551 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x52, 0xc1, 0x6e, 0xd3, 0x40,
|
||||
0x10, 0xad, 0xd3, 0x36, 0x4d, 0xc6, 0x69, 0x29, 0x2b, 0x54, 0xad, 0x7a, 0xb0, 0xab, 0x46, 0x42,
|
||||
0x41, 0x42, 0xa9, 0xd4, 0x63, 0x6e, 0x94, 0x5c, 0x22, 0x01, 0x45, 0x0e, 0x12, 0x37, 0x2c, 0xd7,
|
||||
0x3b, 0x4d, 0x96, 0x3a, 0x5e, 0x6b, 0x77, 0x4d, 0x0b, 0x27, 0x7e, 0x80, 0x0f, 0xe0, 0xca, 0xd7,
|
||||
0xf4, 0xc8, 0x91, 0x53, 0x44, 0x2d, 0x71, 0xe0, 0x06, 0x7f, 0x80, 0x76, 0xd7, 0x69, 0x09, 0x6a,
|
||||
0xc5, 0xc9, 0x33, 0x6f, 0xe6, 0xcd, 0xcc, 0xdb, 0x67, 0xe8, 0x14, 0x59, 0x39, 0xe1, 0x79, 0xbf,
|
||||
0x90, 0x42, 0x0b, 0xb2, 0xc3, 0x44, 0x7a, 0x86, 0xd2, 0x65, 0x27, 0xe5, 0x69, 0xdf, 0x55, 0x77,
|
||||
0xf7, 0x26, 0x42, 0x4c, 0x32, 0x3c, 0x58, 0xe0, 0x07, 0x0c, 0x55, 0x2a, 0x79, 0xa1, 0x45, 0xdd,
|
||||
0xbb, 0xff, 0x79, 0x15, 0xb6, 0x5e, 0x27, 0x3a, 0x9d, 0x8e, 0x31, 0xc3, 0x54, 0x0b, 0xa9, 0xc8,
|
||||
0x0e, 0x34, 0x38, 0xa3, 0xde, 0x9e, 0xd7, 0x6b, 0x1d, 0x35, 0xab, 0x79, 0xd8, 0x18, 0x0d, 0xa3,
|
||||
0x06, 0x67, 0xe4, 0x11, 0xb4, 0x39, 0x8b, 0x0b, 0x89, 0xa7, 0xfc, 0x82, 0x36, 0x6c, 0xb9, 0x53,
|
||||
0xcd, 0xc3, 0xd6, 0x68, 0xf8, 0xd2, 0x62, 0x51, 0x8b, 0x33, 0x17, 0x11, 0x02, 0x6b, 0x79, 0x32,
|
||||
0x43, 0xba, 0x6a, 0xba, 0x22, 0x1b, 0x93, 0x10, 0x7c, 0xf3, 0x5d, 0x0c, 0x58, 0xb3, 0x25, 0x30,
|
||||
0x50, 0x4d, 0xda, 0x81, 0x66, 0x5a, 0x2a, 0x2d, 0x66, 0x74, 0xdd, 0xd6, 0xea, 0x8c, 0x74, 0x61,
|
||||
0xd3, 0x45, 0x0b, 0x6a, 0xd3, 0x96, 0x3b, 0x0e, 0xac, 0xc9, 0x8f, 0x01, 0x14, 0xca, 0x77, 0x3c,
|
||||
0xc5, 0x98, 0x33, 0xba, 0x61, 0xaf, 0xdb, 0xac, 0xe6, 0x61, 0x7b, 0xec, 0xd0, 0xd1, 0x30, 0x6a,
|
||||
0xd7, 0x0d, 0x23, 0x46, 0xba, 0xb0, 0x91, 0x0b, 0x66, 0x5b, 0x5b, 0xb6, 0x15, 0xaa, 0x79, 0xd8,
|
||||
0x7c, 0x21, 0x98, 0xe9, 0x6b, 0x9a, 0xd2, 0x88, 0x19, 0x11, 0x2a, 0x13, 0x9a, 0xb6, 0x9d, 0x08,
|
||||
0x13, 0x9b, 0x5b, 0x18, 0x2a, 0x2e, 0x91, 0xc5, 0x4a, 0x27, 0x1a, 0x29, 0xb8, 0x5b, 0x6a, 0x70,
|
||||
0x6c, 0x30, 0x43, 0x94, 0x22, 0x43, 0xea, 0x3b, 0xa2, 0x89, 0x49, 0x00, 0x30, 0xc3, 0xd9, 0x09,
|
||||
0x4a, 0x35, 0xe5, 0x05, 0xed, 0x38, 0xf1, 0x37, 0x88, 0xe1, 0x9c, 0xf1, 0x9c, 0xd1, 0x4d, 0xc7,
|
||||
0x31, 0xf1, 0xfe, 0x1b, 0xf0, 0xc7, 0x5a, 0x48, 0x3c, 0x3e, 0x79, 0x8b, 0xa9, 0x26, 0xc7, 0x70,
|
||||
0xef, 0xdc, 0x38, 0x15, 0xab, 0x85, 0x55, 0xd4, 0xdb, 0x6b, 0xf4, 0xfc, 0xc3, 0x87, 0xfd, 0xdb,
|
||||
0xed, 0xef, 0x2f, 0x1b, 0x1b, 0x6d, 0x9d, 0x2f, 0xe5, 0xfb, 0x43, 0xd8, 0x7e, 0xf5, 0x6c, 0xfc,
|
||||
0xa4, 0xd4, 0x53, 0x21, 0xf9, 0x87, 0x44, 0x73, 0x91, 0x93, 0x07, 0xb0, 0x6e, 0xee, 0x35, 0xa3,
|
||||
0x57, 0x7b, 0xed, 0xc8, 0x25, 0x64, 0x17, 0x5a, 0x3c, 0x57, 0x98, 0x96, 0x12, 0x9d, 0xf3, 0xd1,
|
||||
0x75, 0x3e, 0x78, 0x0a, 0x2d, 0x86, 0x58, 0xa4, 0xa2, 0x78, 0x4f, 0xc2, 0xbe, 0xfb, 0xe1, 0x6e,
|
||||
0x2e, 0x79, 0x8e, 0x4a, 0x25, 0x13, 0x3c, 0x2e, 0xcc, 0x74, 0x45, 0x7f, 0x7d, 0xb1, 0xbe, 0x0f,
|
||||
0xd6, 0xb4, 0x2c, 0x31, 0xba, 0x26, 0x0e, 0x38, 0x74, 0x94, 0x91, 0x1a, 0x0b, 0xa7, 0xf5, 0xbf,
|
||||
0x83, 0x7e, 0xdb, 0x41, 0xfe, 0x61, 0xf7, 0x2e, 0xed, 0x7f, 0xbd, 0x5c, 0xe4, 0xab, 0x9b, 0x64,
|
||||
0x70, 0x01, 0xf7, 0x75, 0xa6, 0xe2, 0x64, 0x49, 0x76, 0x70, 0xcb, 0x3e, 0x3d, 0x15, 0x6c, 0xb1,
|
||||
0xee, 0xe7, 0x8f, 0x4f, 0x5d, 0xbb, 0xaf, 0x77, 0xd7, 0xbe, 0x7f, 0x5f, 0x32, 0xda, 0xd6, 0x99,
|
||||
0x5a, 0x42, 0x8e, 0xe8, 0xe5, 0x55, 0xb0, 0xf2, 0xed, 0x2a, 0x58, 0xf9, 0x58, 0x05, 0xde, 0x65,
|
||||
0x15, 0x78, 0x5f, 0xab, 0xc0, 0xfb, 0x5e, 0x05, 0xde, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0x94,
|
||||
0xd6, 0x21, 0x73, 0xce, 0x03, 0x00, 0x00,
|
||||
// 575 bytes of a gzipped FileDescriptorProto
|
||||
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x52, 0xc1, 0x6e, 0xd3, 0x4c,
|
||||
0x10, 0xae, 0xd3, 0x36, 0x4d, 0x26, 0x69, 0xff, 0xfe, 0x2b, 0x54, 0xad, 0x7a, 0x70, 0xaa, 0x46,
|
||||
0x42, 0x41, 0x42, 0x8e, 0xd4, 0x0b, 0x52, 0x6e, 0x94, 0x5c, 0x22, 0x01, 0x45, 0x0e, 0x12, 0x37,
|
||||
0x22, 0xc7, 0x3b, 0x4d, 0x96, 0x3a, 0x5e, 0x6b, 0x77, 0x4d, 0x0a, 0x27, 0x5e, 0x80, 0x07, 0xe0,
|
||||
0xca, 0xd3, 0xf4, 0xc8, 0x91, 0x53, 0x44, 0x2d, 0x71, 0xe0, 0x06, 0x6f, 0x80, 0x76, 0xd7, 0x69,
|
||||
0x08, 0x6a, 0xc5, 0xc9, 0x33, 0xdf, 0x7c, 0xdf, 0xcc, 0x7c, 0x3b, 0x86, 0x47, 0x13, 0xae, 0xa7,
|
||||
0xf9, 0x38, 0x88, 0xc5, 0xac, 0xcb, 0x44, 0x7c, 0x81, 0xb2, 0xab, 0xe6, 0x91, 0x9c, 0x5d, 0x70,
|
||||
0xdd, 0xcd, 0xa4, 0xd0, 0x62, 0x9c, 0x9f, 0x77, 0xb3, 0x24, 0x9f, 0xf0, 0xb4, 0xfc, 0x04, 0x16,
|
||||
0x26, 0x07, 0x8e, 0x1d, 0x2c, 0x49, 0x81, 0xab, 0x1e, 0x1e, 0x4d, 0x84, 0x98, 0x24, 0xb8, 0x12,
|
||||
0x33, 0x54, 0xb1, 0xe4, 0x99, 0x16, 0x25, 0xf7, 0xf8, 0xd3, 0x26, 0xec, 0xbd, 0x8a, 0x74, 0x3c,
|
||||
0x1d, 0x62, 0x82, 0xb1, 0x16, 0x52, 0x91, 0x03, 0xa8, 0x70, 0x46, 0xbd, 0x23, 0xaf, 0x53, 0x3b,
|
||||
0xad, 0x16, 0x8b, 0x56, 0x65, 0xd0, 0x0f, 0x2b, 0x9c, 0x91, 0x07, 0x50, 0xe7, 0x6c, 0x94, 0x49,
|
||||
0x3c, 0xe7, 0x97, 0xb4, 0x62, 0xcb, 0xcd, 0x62, 0xd1, 0xaa, 0x0d, 0xfa, 0x2f, 0x2c, 0x16, 0xd6,
|
||||
0x38, 0x73, 0x11, 0x21, 0xb0, 0x95, 0x46, 0x33, 0xa4, 0x9b, 0x86, 0x15, 0xda, 0x98, 0xb4, 0xa0,
|
||||
0x61, 0xbe, 0xcb, 0x06, 0x5b, 0xb6, 0x04, 0x06, 0x2a, 0x45, 0x07, 0x50, 0x8d, 0x73, 0xa5, 0xc5,
|
||||
0x8c, 0x6e, 0xdb, 0x5a, 0x99, 0x91, 0x36, 0xec, 0xba, 0x68, 0x29, 0xad, 0xda, 0x72, 0xd3, 0x81,
|
||||
0xa5, 0xf8, 0x21, 0x80, 0x42, 0xf9, 0x96, 0xc7, 0x38, 0xe2, 0x8c, 0xee, 0xd8, 0xed, 0x76, 0x8b,
|
||||
0x45, 0xab, 0x3e, 0x74, 0xe8, 0xa0, 0x1f, 0xd6, 0x4b, 0xc2, 0x80, 0x91, 0x36, 0xec, 0xa4, 0x82,
|
||||
0x59, 0x6a, 0xcd, 0x52, 0xa1, 0x58, 0xb4, 0xaa, 0xcf, 0x05, 0x33, 0xbc, 0xaa, 0x29, 0x0d, 0x98,
|
||||
0x31, 0xa1, 0x12, 0xa1, 0x69, 0xdd, 0x99, 0x30, 0xb1, 0xd9, 0x85, 0xa1, 0xe2, 0x12, 0xd9, 0x48,
|
||||
0xe9, 0x48, 0x23, 0x05, 0xb7, 0x4b, 0x09, 0x0e, 0x0d, 0x66, 0x84, 0x52, 0x24, 0x48, 0x1b, 0x4e,
|
||||
0x68, 0x62, 0xe2, 0x03, 0xcc, 0x70, 0x36, 0x46, 0xa9, 0xa6, 0x3c, 0xa3, 0x4d, 0x67, 0x7e, 0x85,
|
||||
0x18, 0xcd, 0x05, 0x4f, 0x19, 0xdd, 0x75, 0x1a, 0x13, 0x1f, 0xbf, 0x86, 0xc6, 0x50, 0x0b, 0x89,
|
||||
0x67, 0xe3, 0x37, 0x18, 0x6b, 0x72, 0x06, 0xff, 0xcd, 0xcd, 0xa5, 0x46, 0x6a, 0x79, 0x2a, 0xea,
|
||||
0x1d, 0x55, 0x3a, 0x8d, 0x93, 0xfb, 0xc1, 0xed, 0xe7, 0x0f, 0xd6, 0x0f, 0x1b, 0xee, 0xcd, 0xd7,
|
||||
0xf2, 0xe3, 0x3e, 0xec, 0xbf, 0x7c, 0x3a, 0x7c, 0x9c, 0xeb, 0xa9, 0x90, 0xfc, 0x7d, 0xa4, 0xb9,
|
||||
0x48, 0xc9, 0x3d, 0xd8, 0x36, 0xfb, 0x9a, 0xd6, 0x9b, 0x9d, 0x7a, 0xe8, 0x12, 0x72, 0x08, 0x35,
|
||||
0x9e, 0x2a, 0x8c, 0x73, 0x89, 0xee, 0xf2, 0xe1, 0x4d, 0xde, 0x7b, 0x02, 0x35, 0x86, 0x98, 0xc5,
|
||||
0x22, 0x7b, 0x47, 0x5a, 0x81, 0xfb, 0xe1, 0x56, 0x9b, 0x3c, 0x43, 0xa5, 0xa2, 0x09, 0x9e, 0x65,
|
||||
0xa6, 0xbb, 0xa2, 0x3f, 0x3f, 0xdb, 0xbb, 0xf7, 0xb6, 0xb4, 0xcc, 0x31, 0xbc, 0x11, 0xf6, 0x38,
|
||||
0x34, 0x95, 0xb1, 0x3a, 0x12, 0xce, 0xeb, 0x3f, 0x1b, 0xfd, 0xb2, 0x8d, 0x1a, 0x27, 0xed, 0xbb,
|
||||
0xbc, 0xff, 0xf1, 0x72, 0x61, 0x43, 0xad, 0x92, 0xde, 0x25, 0xfc, 0xaf, 0x13, 0x35, 0x8a, 0xd6,
|
||||
0x6c, 0xfb, 0xb7, 0xcc, 0xd3, 0x53, 0xc1, 0x96, 0xe3, 0x7e, 0x7c, 0xff, 0xd8, 0xb6, 0xf3, 0x3a,
|
||||
0x77, 0xcd, 0xfb, 0xfb, 0x25, 0xc3, 0x7d, 0x9d, 0xa8, 0x35, 0xe4, 0x94, 0x5e, 0x5d, 0xfb, 0x1b,
|
||||
0x5f, 0xaf, 0xfd, 0x8d, 0x0f, 0x85, 0xef, 0x5d, 0x15, 0xbe, 0xf7, 0xa5, 0xf0, 0xbd, 0x6f, 0x85,
|
||||
0xef, 0xfd, 0x0e, 0x00, 0x00, 0xff, 0xff, 0xb3, 0x99, 0x7d, 0xfb, 0xf9, 0x03, 0x00, 0x00,
|
||||
}
|
||||
|
|
8
vendor/github.com/docker/swarmkit/template/context.go
generated
vendored
8
vendor/github.com/docker/swarmkit/template/context.go
generated
vendored
|
@ -107,9 +107,10 @@ type PayloadContext struct {
|
|||
t *api.Task
|
||||
restrictedSecrets exec.SecretGetter
|
||||
restrictedConfigs exec.ConfigGetter
|
||||
sensitive bool
|
||||
}
|
||||
|
||||
func (ctx PayloadContext) secretGetter(target string) (string, error) {
|
||||
func (ctx *PayloadContext) secretGetter(target string) (string, error) {
|
||||
if ctx.restrictedSecrets == nil {
|
||||
return "", errors.New("secrets unavailable")
|
||||
}
|
||||
|
@ -126,6 +127,7 @@ func (ctx PayloadContext) secretGetter(target string) (string, error) {
|
|||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
ctx.sensitive = true
|
||||
return string(secret.Spec.Data), nil
|
||||
}
|
||||
}
|
||||
|
@ -133,7 +135,7 @@ func (ctx PayloadContext) secretGetter(target string) (string, error) {
|
|||
return "", errors.Errorf("secret target %s not found", target)
|
||||
}
|
||||
|
||||
func (ctx PayloadContext) configGetter(target string) (string, error) {
|
||||
func (ctx *PayloadContext) configGetter(target string) (string, error) {
|
||||
if ctx.restrictedConfigs == nil {
|
||||
return "", errors.New("configs unavailable")
|
||||
}
|
||||
|
@ -157,7 +159,7 @@ func (ctx PayloadContext) configGetter(target string) (string, error) {
|
|||
return "", errors.Errorf("config target %s not found", target)
|
||||
}
|
||||
|
||||
func (ctx PayloadContext) envGetter(variable string) (string, error) {
|
||||
func (ctx *PayloadContext) envGetter(variable string) (string, error) {
|
||||
container := ctx.t.Spec.GetContainer()
|
||||
if container == nil {
|
||||
return "", errors.New("task is not a container")
|
||||
|
|
14
vendor/github.com/docker/swarmkit/template/expand.go
generated
vendored
14
vendor/github.com/docker/swarmkit/template/expand.go
generated
vendored
|
@ -119,7 +119,7 @@ func expandEnv(ctx Context, values []string) ([]string, error) {
|
|||
return result, nil
|
||||
}
|
||||
|
||||
func expandPayload(ctx PayloadContext, payload []byte) ([]byte, error) {
|
||||
func expandPayload(ctx *PayloadContext, payload []byte) ([]byte, error) {
|
||||
result, err := ctx.Expand(string(payload))
|
||||
if err != nil {
|
||||
return payload, err
|
||||
|
@ -138,7 +138,7 @@ func ExpandSecretSpec(s *api.Secret, node *api.NodeDescription, t *api.Task, dep
|
|||
secretSpec := s.Spec.Copy()
|
||||
|
||||
var err error
|
||||
secretSpec.Data, err = expandPayload(ctx, secretSpec.Data)
|
||||
secretSpec.Data, err = expandPayload(&ctx, secretSpec.Data)
|
||||
return secretSpec, err
|
||||
}
|
||||
return &s.Spec, errors.New("unrecognized template type")
|
||||
|
@ -146,17 +146,17 @@ func ExpandSecretSpec(s *api.Secret, node *api.NodeDescription, t *api.Task, dep
|
|||
|
||||
// ExpandConfigSpec expands the template inside the config payload, if any.
|
||||
// Templating is evaluated on the agent-side.
|
||||
func ExpandConfigSpec(c *api.Config, node *api.NodeDescription, t *api.Task, dependencies exec.DependencyGetter) (*api.ConfigSpec, error) {
|
||||
func ExpandConfigSpec(c *api.Config, node *api.NodeDescription, t *api.Task, dependencies exec.DependencyGetter) (*api.ConfigSpec, bool, error) {
|
||||
if c.Spec.Templating == nil {
|
||||
return &c.Spec, nil
|
||||
return &c.Spec, false, nil
|
||||
}
|
||||
if c.Spec.Templating.Name == "golang" {
|
||||
ctx := NewPayloadContextFromTask(node, t, dependencies)
|
||||
configSpec := c.Spec.Copy()
|
||||
|
||||
var err error
|
||||
configSpec.Data, err = expandPayload(ctx, configSpec.Data)
|
||||
return configSpec, err
|
||||
configSpec.Data, err = expandPayload(&ctx, configSpec.Data)
|
||||
return configSpec, ctx.sensitive, err
|
||||
}
|
||||
return &c.Spec, errors.New("unrecognized template type")
|
||||
return &c.Spec, false, errors.New("unrecognized template type")
|
||||
}
|
||||
|
|
33
vendor/github.com/docker/swarmkit/template/getter.go
generated
vendored
33
vendor/github.com/docker/swarmkit/template/getter.go
generated
vendored
|
@ -42,6 +42,18 @@ func (t templatedSecretGetter) Get(secretID string) (*api.Secret, error) {
|
|||
return &secretCopy, nil
|
||||
}
|
||||
|
||||
// TemplatedConfigGetter is a ConfigGetter with an additional method to expose
|
||||
// whether a config contains sensitive data.
|
||||
type TemplatedConfigGetter interface {
|
||||
exec.ConfigGetter
|
||||
|
||||
// GetAndFlagSecretData returns the interpolated config, and also
|
||||
// returns true if the config has been interpolated with data from a
|
||||
// secret. In this case, the config should be handled specially and
|
||||
// should not be written to disk.
|
||||
GetAndFlagSecretData(configID string) (*api.Config, bool, error)
|
||||
}
|
||||
|
||||
type templatedConfigGetter struct {
|
||||
dependencies exec.DependencyGetter
|
||||
t *api.Task
|
||||
|
@ -49,38 +61,43 @@ type templatedConfigGetter struct {
|
|||
}
|
||||
|
||||
// NewTemplatedConfigGetter returns a ConfigGetter that evaluates templates.
|
||||
func NewTemplatedConfigGetter(dependencies exec.DependencyGetter, t *api.Task, node *api.NodeDescription) exec.ConfigGetter {
|
||||
func NewTemplatedConfigGetter(dependencies exec.DependencyGetter, t *api.Task, node *api.NodeDescription) TemplatedConfigGetter {
|
||||
return templatedConfigGetter{dependencies: dependencies, t: t, node: node}
|
||||
}
|
||||
|
||||
func (t templatedConfigGetter) Get(configID string) (*api.Config, error) {
|
||||
config, _, err := t.GetAndFlagSecretData(configID)
|
||||
return config, err
|
||||
}
|
||||
|
||||
func (t templatedConfigGetter) GetAndFlagSecretData(configID string) (*api.Config, bool, error) {
|
||||
if t.dependencies == nil {
|
||||
return nil, errors.New("no config provider available")
|
||||
return nil, false, errors.New("no config provider available")
|
||||
}
|
||||
|
||||
configs := t.dependencies.Configs()
|
||||
if configs == nil {
|
||||
return nil, errors.New("no config provider available")
|
||||
return nil, false, errors.New("no config provider available")
|
||||
}
|
||||
|
||||
config, err := configs.Get(configID)
|
||||
if err != nil {
|
||||
return config, err
|
||||
return config, false, err
|
||||
}
|
||||
|
||||
newSpec, err := ExpandConfigSpec(config, t.node, t.t, t.dependencies)
|
||||
newSpec, sensitive, err := ExpandConfigSpec(config, t.node, t.t, t.dependencies)
|
||||
if err != nil {
|
||||
return config, errors.Wrapf(err, "failed to expand templated config %s", configID)
|
||||
return config, false, errors.Wrapf(err, "failed to expand templated config %s", configID)
|
||||
}
|
||||
|
||||
configCopy := *config
|
||||
configCopy.Spec = *newSpec
|
||||
return &configCopy, nil
|
||||
return &configCopy, sensitive, nil
|
||||
}
|
||||
|
||||
type templatedDependencyGetter struct {
|
||||
secrets exec.SecretGetter
|
||||
configs exec.ConfigGetter
|
||||
configs TemplatedConfigGetter
|
||||
}
|
||||
|
||||
// NewTemplatedDependencyGetter returns a DependencyGetter that evaluates templates.
|
||||
|
|
23
vendor/github.com/docker/swarmkit/vendor.conf
generated
vendored
23
vendor/github.com/docker/swarmkit/vendor.conf
generated
vendored
|
@ -19,26 +19,27 @@ github.com/prometheus/common ebdfc6da46522d58825777cf1f90490a5b1ef1d8
|
|||
github.com/prometheus/procfs abf152e5f3e97f2fafac028d2cc06c1feb87ffa5
|
||||
|
||||
github.com/docker/distribution b38e5838b7b2f2ad48e06ec4b500011976080621
|
||||
github.com/docker/docker 77c9728847358a3ed3581d828fb0753017e1afd3
|
||||
github.com/docker/go-connections 34b5052da6b11e27f5f2e357b38b571ddddd3928
|
||||
github.com/docker/go-events 37d35add5005832485c0225ec870121b78fcff1c
|
||||
github.com/docker/docker 8af4db6f002ac907b6ef8610b237879dfcaa5b7a
|
||||
github.com/docker/go-connections 3ede32e2033de7505e6500d6c868c2b9ed9f169d
|
||||
github.com/docker/go-events 9461782956ad83b30282bf90e31fa6a70c255ba9
|
||||
github.com/docker/go-units 954fed01cc617c55d838fa2230073f2cb17386c8
|
||||
github.com/docker/libkv 9fd56606e928ff1f309808f5d5a0b7a2ef73f9a8
|
||||
github.com/docker/libnetwork 37e20af882e13dd01ade3658b7aabdae3412118b
|
||||
github.com/docker/libnetwork 19ac3ea7f52bb46e0eb10669756cdae0c441a5b1
|
||||
github.com/docker/libtrust 9cbd2a1374f46905c68a4eb3694a130610adc62a
|
||||
github.com/opencontainers/runc b6b70e53451794e8333e9b602cc096b47a20bd0f
|
||||
github.com/opencontainers/go-digest a6d0ee40d4207ea02364bd3b9e8e77b9159ba1eb
|
||||
github.com/opencontainers/image-spec 372ad780f63454fbbbbcc7cf80e5b90245c13e13
|
||||
github.com/opencontainers/runc d40db12e72a40109dfcf28539f5ee0930d2f0277
|
||||
github.com/opencontainers/go-digest 21dfd564fd89c944783d00d069f33e3e7123c448
|
||||
github.com/opencontainers/image-spec v1.0.0
|
||||
|
||||
# containerd executor
|
||||
github.com/containerd/containerd 76697ac8cbf357a19beb58e4805a81fe48cf7974
|
||||
github.com/containerd/containerd 29a4dd7f46e0780d0bff2a237dc600a5b90a4dd5
|
||||
github.com/containerd/fifo 69b99525e472735860a5269b75af1970142b3062
|
||||
github.com/opencontainers/runtime-spec v1.0.0-rc5
|
||||
github.com/opencontainers/runtime-spec v1.0.0
|
||||
golang.org/x/sync 450f422ab23cf9881c94e2db30cac0eb1b7cf80c
|
||||
github.com/containerd/continuity cf279e6ac893682272b4479d4c67fd3abf878b4e
|
||||
|
||||
github.com/davecgh/go-spew 5215b55f46b2b919f50a1df0eaa5886afe4e3b3d
|
||||
github.com/Microsoft/go-winio v0.4.2
|
||||
github.com/Sirupsen/logrus v0.11.0
|
||||
github.com/sirupsen/logrus v1.0.1
|
||||
github.com/beorn7/perks 4c0e84591b9aa9e6dcfdf3e020114cd81f89d5f9
|
||||
github.com/boltdb/bolt e72f08ddb5a52992c0a44c7dda9316c7333938b2
|
||||
github.com/cloudflare/cfssl 7fb22c8cba7ecaf98e4082d22d65800cf45e042a
|
||||
|
@ -58,6 +59,6 @@ github.com/spf13/pflag 7f60f83a2c81bc3c3c0d5297f61ddfa68da9d3b7
|
|||
github.com/stretchr/testify v1.1.4
|
||||
golang.org/x/crypto 3fbbcd23f1cb824e69491a5930cfeff09b12f4d2
|
||||
golang.org/x/net 7dcfb8076726a3fdd9353b6b8a1f1b6be6811bd6
|
||||
golang.org/x/sys 5eaf0df67e70d6997a9fe0ed24383fa1b01638d3
|
||||
golang.org/x/sys 739734461d1c916b6c72a63d7efda2b27edb369f
|
||||
golang.org/x/text f72d8390a633d5dfb0cc84043294db9f6c935756
|
||||
golang.org/x/time a4bde12657593d5e90d0533a3e4fd95e635124cb
|
||||
|
|
Loading…
Add table
Reference in a new issue