Vendor swarmkit d60ccf3
Tõnis Tiigi authored on 2017/03/09 02:52:28... | ... |
@@ -5,6 +5,7 @@ package main |
5 | 5 |
import ( |
6 | 6 |
"encoding/json" |
7 | 7 |
"fmt" |
8 |
+ "io/ioutil" |
|
8 | 9 |
"net" |
9 | 10 |
"net/http" |
10 | 11 |
"os" |
... | ... |
@@ -13,6 +14,7 @@ import ( |
13 | 13 |
"sync" |
14 | 14 |
"time" |
15 | 15 |
|
16 |
+ "github.com/cloudflare/cfssl/helpers" |
|
16 | 17 |
"github.com/docker/docker/api/types" |
17 | 18 |
"github.com/docker/docker/api/types/container" |
18 | 19 |
"github.com/docker/docker/api/types/swarm" |
... | ... |
@@ -176,6 +178,24 @@ func (s *DockerSwarmSuite) TestAPISwarmPromoteDemote(c *check.C) { |
176 | 176 |
|
177 | 177 |
waitAndAssert(c, defaultReconciliationTimeout, d2.CheckControlAvailable, checker.False) |
178 | 178 |
|
179 |
+ // Wait for the role to change to worker in the cert. This is partially |
|
180 |
+ // done because it's something worth testing in its own right, and |
|
181 |
+ // partially because changing the role from manager to worker and then |
|
182 |
+ // back to manager quickly might cause the node to pause for awhile |
|
183 |
+ // while waiting for the role to change to worker, and the test can |
|
184 |
+ // time out during this interval. |
|
185 |
+ waitAndAssert(c, defaultReconciliationTimeout, func(c *check.C) (interface{}, check.CommentInterface) { |
|
186 |
+ certBytes, err := ioutil.ReadFile(filepath.Join(d2.Folder, "root", "swarm", "certificates", "swarm-node.crt")) |
|
187 |
+ if err != nil { |
|
188 |
+ return "", check.Commentf("error: %v", err) |
|
189 |
+ } |
|
190 |
+ certs, err := helpers.ParseCertificatesPEM(certBytes) |
|
191 |
+ if err == nil && len(certs) > 0 && len(certs[0].Subject.OrganizationalUnit) > 0 { |
|
192 |
+ return certs[0].Subject.OrganizationalUnit[0], nil |
|
193 |
+ } |
|
194 |
+ return "", check.Commentf("could not get organizational unit from certificate") |
|
195 |
+ }, checker.Equals, "swarm-worker") |
|
196 |
+ |
|
179 | 197 |
// Demoting last node should fail |
180 | 198 |
node := d1.GetNode(c, d1.NodeID) |
181 | 199 |
node.Spec.Role = swarm.NodeRoleWorker |
... | ... |
@@ -38,7 +38,8 @@ func (s *DockerSwarmSuite) TestServiceLogs(c *check.C) { |
38 | 38 |
|
39 | 39 |
// make sure task has been deployed. |
40 | 40 |
waitAndAssert(c, defaultReconciliationTimeout, |
41 |
- d.CheckActiveContainerCount, checker.Equals, len(services)) |
|
41 |
+ d.CheckRunningTaskImages, checker.DeepEquals, |
|
42 |
+ map[string]int{"busybox": len(services)}) |
|
42 | 43 |
|
43 | 44 |
for name, message := range services { |
44 | 45 |
out, err := d.Cmd("service", "logs", name) |
... | ... |
@@ -104,7 +104,7 @@ github.com/docker/containerd 665e84e6c28653a9c29a6db601636a92d46896f3 |
104 | 104 |
github.com/tonistiigi/fifo 1405643975692217d6720f8b54aeee1bf2cd5cf4 |
105 | 105 |
|
106 | 106 |
# cluster |
107 |
-github.com/docker/swarmkit 46bbd41a00b996a13840607772f661a7f5096ca0 |
|
107 |
+github.com/docker/swarmkit d60ccf366a6758c7857db968857b72202cb2f902 |
|
108 | 108 |
github.com/golang/mock bd3c8e81be01eef76d4b503f5e687d2d1354d2d9 |
109 | 109 |
github.com/gogo/protobuf 8d70fb3182befc465c4a1eac8ad4d38ff49778e2 |
110 | 110 |
github.com/cloudflare/cfssl 7fb22c8cba7ecaf98e4082d22d65800cf45e042a |
... | ... |
@@ -266,6 +266,7 @@ func (a *Agent) run(ctx context.Context) { |
266 | 266 |
|
267 | 267 |
subCtx, subCancel := context.WithCancel(ctx) |
268 | 268 |
subscriptions[sub.ID] = subCancel |
269 |
+ // TODO(dperny) we're tossing the error here, that seems wrong |
|
269 | 270 |
go a.worker.Subscribe(subCtx, sub) |
270 | 271 |
case <-registered: |
271 | 272 |
log.G(ctx).Debugln("agent: registered") |
... | ... |
@@ -487,10 +488,21 @@ func (a *Agent) Publisher(ctx context.Context, subscriptionID string) (exec.LogP |
487 | 487 |
return nil, nil, err |
488 | 488 |
} |
489 | 489 |
|
490 |
+ // make little closure for ending the log stream |
|
491 |
+ sendCloseMsg := func() { |
|
492 |
+ // send a close message, to tell the manager our logs are done |
|
493 |
+ publisher.Send(&api.PublishLogsMessage{ |
|
494 |
+ SubscriptionID: subscriptionID, |
|
495 |
+ Close: true, |
|
496 |
+ }) |
|
497 |
+ // close the stream forreal |
|
498 |
+ publisher.CloseSend() |
|
499 |
+ } |
|
500 |
+ |
|
490 | 501 |
return exec.LogPublisherFunc(func(ctx context.Context, message api.LogMessage) error { |
491 | 502 |
select { |
492 | 503 |
case <-ctx.Done(): |
493 |
- publisher.CloseSend() |
|
504 |
+ sendCloseMsg() |
|
494 | 505 |
return ctx.Err() |
495 | 506 |
default: |
496 | 507 |
} |
... | ... |
@@ -500,7 +512,7 @@ func (a *Agent) Publisher(ctx context.Context, subscriptionID string) (exec.LogP |
500 | 500 |
Messages: []api.LogMessage{message}, |
501 | 501 |
}) |
502 | 502 |
}), func() { |
503 |
- publisher.CloseSend() |
|
503 |
+ sendCloseMsg() |
|
504 | 504 |
}, nil |
505 | 505 |
} |
506 | 506 |
|
... | ... |
@@ -195,6 +195,11 @@ type ListTasksRequest_Filters struct { |
195 | 195 |
DesiredStates []TaskState `protobuf:"varint,6,rep,packed,name=desired_states,json=desiredStates,enum=docker.swarmkit.v1.TaskState" json:"desired_states,omitempty"` |
196 | 196 |
// NamePrefixes matches all objects with the given prefixes |
197 | 197 |
NamePrefixes []string `protobuf:"bytes,7,rep,name=name_prefixes,json=namePrefixes" json:"name_prefixes,omitempty"` |
198 |
+ // UpToDate matches tasks that are consistent with the current |
|
199 |
+ // service definition. |
|
200 |
+ // Note: this is intended for internal status reporting rather |
|
201 |
+ // than being exposed to users. It may be removed in the future. |
|
202 |
+ UpToDate bool `protobuf:"varint,8,opt,name=up_to_date,json=upToDate,proto3" json:"up_to_date,omitempty"` |
|
198 | 203 |
} |
199 | 204 |
|
200 | 205 |
func (m *ListTasksRequest_Filters) Reset() { *m = ListTasksRequest_Filters{} } |
... | ... |
@@ -3452,6 +3457,16 @@ func (m *ListTasksRequest_Filters) MarshalTo(dAtA []byte) (int, error) { |
3452 | 3452 |
i += copy(dAtA[i:], s) |
3453 | 3453 |
} |
3454 | 3454 |
} |
3455 |
+ if m.UpToDate { |
|
3456 |
+ dAtA[i] = 0x40 |
|
3457 |
+ i++ |
|
3458 |
+ if m.UpToDate { |
|
3459 |
+ dAtA[i] = 1 |
|
3460 |
+ } else { |
|
3461 |
+ dAtA[i] = 0 |
|
3462 |
+ } |
|
3463 |
+ i++ |
|
3464 |
+ } |
|
3455 | 3465 |
return i, nil |
3456 | 3466 |
} |
3457 | 3467 |
|
... | ... |
@@ -5997,6 +6012,9 @@ func (m *ListTasksRequest_Filters) Size() (n int) { |
5997 | 5997 |
n += 1 + l + sovControl(uint64(l)) |
5998 | 5998 |
} |
5999 | 5999 |
} |
6000 |
+ if m.UpToDate { |
|
6001 |
+ n += 2 |
|
6002 |
+ } |
|
6000 | 6003 |
return n |
6001 | 6004 |
} |
6002 | 6005 |
|
... | ... |
@@ -6719,6 +6737,7 @@ func (this *ListTasksRequest_Filters) String() string { |
6719 | 6719 |
`NodeIDs:` + fmt.Sprintf("%v", this.NodeIDs) + `,`, |
6720 | 6720 |
`DesiredStates:` + fmt.Sprintf("%v", this.DesiredStates) + `,`, |
6721 | 6721 |
`NamePrefixes:` + fmt.Sprintf("%v", this.NamePrefixes) + `,`, |
6722 |
+ `UpToDate:` + fmt.Sprintf("%v", this.UpToDate) + `,`, |
|
6722 | 6723 |
`}`, |
6723 | 6724 |
}, "") |
6724 | 6725 |
return s |
... | ... |
@@ -8998,6 +9017,26 @@ func (m *ListTasksRequest_Filters) Unmarshal(dAtA []byte) error { |
8998 | 8998 |
} |
8999 | 8999 |
m.NamePrefixes = append(m.NamePrefixes, string(dAtA[iNdEx:postIndex])) |
9000 | 9000 |
iNdEx = postIndex |
9001 |
+ case 8: |
|
9002 |
+ if wireType != 0 { |
|
9003 |
+ return fmt.Errorf("proto: wrong wireType = %d for field UpToDate", wireType) |
|
9004 |
+ } |
|
9005 |
+ var v int |
|
9006 |
+ for shift := uint(0); ; shift += 7 { |
|
9007 |
+ if shift >= 64 { |
|
9008 |
+ return ErrIntOverflowControl |
|
9009 |
+ } |
|
9010 |
+ if iNdEx >= l { |
|
9011 |
+ return io.ErrUnexpectedEOF |
|
9012 |
+ } |
|
9013 |
+ b := dAtA[iNdEx] |
|
9014 |
+ iNdEx++ |
|
9015 |
+ v |= (int(b) & 0x7F) << shift |
|
9016 |
+ if b < 0x80 { |
|
9017 |
+ break |
|
9018 |
+ } |
|
9019 |
+ } |
|
9020 |
+ m.UpToDate = bool(v != 0) |
|
9001 | 9021 |
default: |
9002 | 9022 |
iNdEx = preIndex |
9003 | 9023 |
skippy, err := skipControl(dAtA[iNdEx:]) |
... | ... |
@@ -13310,120 +13349,122 @@ var ( |
13310 | 13310 |
func init() { proto.RegisterFile("control.proto", fileDescriptorControl) } |
13311 | 13311 |
|
13312 | 13312 |
var fileDescriptorControl = []byte{ |
13313 |
- // 1838 bytes of a gzipped FileDescriptorProto |
|
13314 |
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xcc, 0x5a, 0x4d, 0x4f, 0x1b, 0x57, |
|
13315 |
- 0x17, 0xc6, 0x1f, 0x60, 0x73, 0x8c, 0x0d, 0x5c, 0x9c, 0xbc, 0x96, 0x93, 0x17, 0xd0, 0xe4, 0x0d, |
|
13316 |
- 0x31, 0xaf, 0xa8, 0x69, 0x9c, 0x46, 0x4d, 0x53, 0xf5, 0x23, 0x40, 0x92, 0x3a, 0x24, 0x24, 0x1a, |
|
13317 |
- 0x42, 0xd4, 0x1d, 0x1a, 0xec, 0x1b, 0x3a, 0xb1, 0xf1, 0xb8, 0x33, 0x03, 0x09, 0xea, 0xa6, 0xad, |
|
13318 |
- 0xda, 0x9f, 0x50, 0xa9, 0xdb, 0x6e, 0x5b, 0xa9, 0x8b, 0xae, 0xfa, 0x13, 0xa2, 0xae, 0xba, 0xec, |
|
13319 |
- 0x0a, 0x35, 0x96, 0x2a, 0x75, 0xd5, 0x9f, 0x50, 0x55, 0xf7, 0x6b, 0xbe, 0x7c, 0x67, 0xc6, 0x06, |
|
13320 |
- 0x2a, 0xb2, 0xca, 0xcc, 0x9d, 0xe7, 0xdc, 0x73, 0xee, 0x3d, 0xcf, 0x7d, 0x7c, 0xee, 0x09, 0x90, |
|
13321 |
- 0x6f, 0x18, 0x1d, 0xdb, 0x34, 0xda, 0xd5, 0xae, 0x69, 0xd8, 0x06, 0x42, 0x4d, 0xa3, 0xd1, 0xc2, |
|
13322 |
- 0x66, 0xd5, 0x7a, 0xae, 0x99, 0x7b, 0x2d, 0xdd, 0xae, 0x1e, 0x5c, 0x2d, 0xe7, 0xac, 0x2e, 0x6e, |
|
13323 |
- 0x58, 0x0c, 0x50, 0xce, 0x1b, 0x3b, 0xcf, 0x70, 0xc3, 0x16, 0xaf, 0x39, 0xfb, 0xb0, 0x8b, 0xc5, |
|
13324 |
- 0x4b, 0x71, 0xd7, 0xd8, 0x35, 0xe8, 0xe3, 0x32, 0x79, 0xe2, 0xa3, 0x33, 0xdd, 0xf6, 0xfe, 0xae, |
|
13325 |
- 0xde, 0x59, 0x66, 0xff, 0xb0, 0x41, 0xe5, 0x3a, 0x14, 0xee, 0x62, 0x7b, 0xc3, 0x68, 0x62, 0x15, |
|
13326 |
- 0x7f, 0xba, 0x8f, 0x2d, 0x1b, 0x5d, 0x82, 0x4c, 0xc7, 0x68, 0xe2, 0x6d, 0xbd, 0x59, 0x4a, 0xcc, |
|
13327 |
- 0x27, 0x2a, 0xe3, 0x2b, 0xd0, 0x3b, 0x9a, 0x1b, 0x23, 0x88, 0xfa, 0x9a, 0x3a, 0x46, 0x3e, 0xd5, |
|
13328 |
- 0x9b, 0xca, 0x07, 0x30, 0xe9, 0x98, 0x59, 0x5d, 0xa3, 0x63, 0x61, 0xb4, 0x04, 0x69, 0xf2, 0x91, |
|
13329 |
- 0x1a, 0xe5, 0x6a, 0xa5, 0x6a, 0xff, 0x02, 0xaa, 0x14, 0x4f, 0x51, 0xca, 0x51, 0x0a, 0xa6, 0xee, |
|
13330 |
- 0xeb, 0x16, 0x9d, 0xc2, 0x12, 0xae, 0xef, 0x40, 0xe6, 0xa9, 0xde, 0xb6, 0xb1, 0x69, 0xf1, 0x59, |
|
13331 |
- 0x96, 0x64, 0xb3, 0x04, 0xcd, 0xaa, 0x77, 0x98, 0x8d, 0x2a, 0x8c, 0xcb, 0x5f, 0xa4, 0x20, 0xc3, |
|
13332 |
- 0x07, 0x51, 0x11, 0x46, 0x3b, 0xda, 0x1e, 0x26, 0x33, 0xa6, 0x2a, 0xe3, 0x2a, 0x7b, 0x41, 0xcb, |
|
13333 |
- 0x90, 0xd3, 0x9b, 0xdb, 0x5d, 0x13, 0x3f, 0xd5, 0x5f, 0x60, 0xab, 0x94, 0x24, 0xdf, 0x56, 0x0a, |
|
13334 |
- 0xbd, 0xa3, 0x39, 0xa8, 0xaf, 0x3d, 0xe2, 0xa3, 0x2a, 0xe8, 0x4d, 0xf1, 0x8c, 0x1e, 0xc1, 0x58, |
|
13335 |
- 0x5b, 0xdb, 0xc1, 0x6d, 0xab, 0x94, 0x9a, 0x4f, 0x55, 0x72, 0xb5, 0x1b, 0xc3, 0x44, 0x56, 0xbd, |
|
13336 |
- 0x4f, 0x4d, 0x6f, 0x77, 0x6c, 0xf3, 0x50, 0xe5, 0xf3, 0xa0, 0x3a, 0xe4, 0xf6, 0xf0, 0xde, 0x0e, |
|
13337 |
- 0x36, 0xad, 0x4f, 0xf4, 0xae, 0x55, 0x4a, 0xcf, 0xa7, 0x2a, 0x85, 0xda, 0x95, 0xb0, 0x6d, 0xdb, |
|
13338 |
- 0xec, 0xe2, 0x46, 0xf5, 0x81, 0x83, 0x57, 0xbd, 0xb6, 0xa8, 0x06, 0xa3, 0xa6, 0xd1, 0xc6, 0x56, |
|
13339 |
- 0x69, 0x94, 0x4e, 0x72, 0x31, 0x74, 0xef, 0x8d, 0x36, 0x56, 0x19, 0x14, 0x5d, 0x82, 0x3c, 0xd9, |
|
13340 |
- 0x0a, 0x77, 0x0f, 0xc6, 0xe8, 0xfe, 0x4c, 0x90, 0x41, 0xb1, 0xea, 0xf2, 0x3b, 0x90, 0xf3, 0x84, |
|
13341 |
- 0x8e, 0xa6, 0x20, 0xd5, 0xc2, 0x87, 0x8c, 0x16, 0x2a, 0x79, 0x24, 0xbb, 0x7b, 0xa0, 0xb5, 0xf7, |
|
13342 |
- 0x71, 0x29, 0x49, 0xc7, 0xd8, 0xcb, 0xcd, 0xe4, 0x8d, 0x84, 0xb2, 0x0a, 0xd3, 0x9e, 0xed, 0xe0, |
|
13343 |
- 0x1c, 0xa9, 0xc2, 0x28, 0xc9, 0x3e, 0x4b, 0x46, 0x14, 0x49, 0x18, 0x4c, 0xf9, 0x3e, 0x01, 0xd3, |
|
13344 |
- 0x5b, 0xdd, 0xa6, 0x66, 0xe3, 0x61, 0x19, 0x8a, 0xde, 0x87, 0x09, 0x0a, 0x3a, 0xc0, 0xa6, 0xa5, |
|
13345 |
- 0x1b, 0x1d, 0x1a, 0x60, 0xae, 0x76, 0x41, 0xe6, 0xf1, 0x09, 0x83, 0xa8, 0x39, 0x62, 0xc0, 0x5f, |
|
13346 |
- 0xd0, 0x9b, 0x90, 0x26, 0xc7, 0xad, 0x94, 0xa2, 0x76, 0x17, 0xa3, 0xf2, 0xa2, 0x52, 0xa4, 0xb2, |
|
13347 |
- 0x02, 0xc8, 0x1b, 0xeb, 0xb1, 0x8e, 0xc5, 0x06, 0x4c, 0xab, 0x78, 0xcf, 0x38, 0x18, 0x7e, 0xbd, |
|
13348 |
- 0x45, 0x18, 0x7d, 0x6a, 0x98, 0x0d, 0x96, 0x89, 0xac, 0xca, 0x5e, 0x94, 0x22, 0x20, 0xef, 0x7c, |
|
13349 |
- 0x2c, 0x26, 0x7e, 0xe8, 0x1f, 0x6b, 0x56, 0xcb, 0xe3, 0xc2, 0xd6, 0xac, 0x56, 0xc0, 0x05, 0x41, |
|
13350 |
- 0x10, 0x17, 0xe4, 0x93, 0x73, 0xe8, 0x99, 0x99, 0xbb, 0x3a, 0xf2, 0x31, 0x6a, 0x75, 0x14, 0x4f, |
|
13351 |
- 0x51, 0xca, 0x0d, 0xb1, 0xba, 0xa1, 0x5d, 0x3b, 0xeb, 0xf0, 0x7a, 0x57, 0xfe, 0xe6, 0x22, 0x42, |
|
13352 |
- 0x06, 0x8f, 0x21, 0x22, 0x5e, 0xb3, 0x7e, 0x11, 0xf9, 0xee, 0x0c, 0x45, 0x44, 0x16, 0x99, 0x54, |
|
13353 |
- 0x44, 0x96, 0x21, 0x67, 0x61, 0xf3, 0x40, 0x6f, 0x10, 0x76, 0x30, 0x11, 0xe1, 0x21, 0x6c, 0xb2, |
|
13354 |
- 0xe1, 0xfa, 0x9a, 0xa5, 0x02, 0x87, 0xd4, 0x9b, 0x16, 0x5a, 0x80, 0x2c, 0xe7, 0x12, 0x53, 0x8b, |
|
13355 |
- 0xf1, 0x95, 0x5c, 0xef, 0x68, 0x2e, 0xc3, 0xc8, 0x64, 0xa9, 0x19, 0xc6, 0x26, 0x0b, 0xad, 0x41, |
|
13356 |
- 0xa1, 0x89, 0x2d, 0xdd, 0xc4, 0xcd, 0x6d, 0xcb, 0xd6, 0x6c, 0xae, 0x0f, 0x85, 0xda, 0x7f, 0xc3, |
|
13357 |
- 0x52, 0xbc, 0x49, 0x50, 0x6a, 0x9e, 0x1b, 0xd1, 0x37, 0x89, 0xc8, 0x64, 0xfe, 0x15, 0x91, 0xe1, |
|
13358 |
- 0xdb, 0xe5, 0x8a, 0x0c, 0x61, 0x4d, 0xa4, 0xc8, 0x50, 0x1a, 0x31, 0x98, 0xb2, 0x0e, 0xc5, 0x55, |
|
13359 |
- 0x13, 0x6b, 0x36, 0xe6, 0x5b, 0x26, 0x88, 0x74, 0x8d, 0x2b, 0x00, 0x63, 0xd1, 0x9c, 0x6c, 0x1a, |
|
13360 |
- 0x6e, 0xe1, 0x11, 0x81, 0x0d, 0x38, 0x17, 0x98, 0x8c, 0x47, 0x75, 0x1d, 0x32, 0x3c, 0x0d, 0x7c, |
|
13361 |
- 0xc2, 0x0b, 0x11, 0x13, 0xaa, 0x02, 0xab, 0xdc, 0x82, 0xe9, 0xbb, 0xd8, 0x0e, 0x44, 0xb6, 0x04, |
|
13362 |
- 0xe0, 0x66, 0x9d, 0x9f, 0x9a, 0x7c, 0xef, 0x68, 0x6e, 0xdc, 0x49, 0xba, 0x3a, 0xee, 0xe4, 0x5c, |
|
13363 |
- 0x59, 0x07, 0xe4, 0x9d, 0xe2, 0x64, 0xf1, 0xfc, 0x94, 0x84, 0x22, 0x53, 0xb9, 0x93, 0xc4, 0x84, |
|
13364 |
- 0xd6, 0x60, 0x52, 0xa0, 0x87, 0x10, 0xe8, 0x02, 0xb7, 0x11, 0x1a, 0x7d, 0xcd, 0xa7, 0xd1, 0x83, |
|
13365 |
- 0x65, 0x08, 0x3d, 0x80, 0xac, 0x69, 0xb4, 0xdb, 0x3b, 0x5a, 0xa3, 0x55, 0x4a, 0xcf, 0x27, 0x2a, |
|
13366 |
- 0x85, 0xda, 0x55, 0x99, 0xa1, 0x6c, 0x91, 0x55, 0x95, 0x1b, 0xaa, 0xce, 0x14, 0x8a, 0x02, 0x59, |
|
13367 |
- 0x31, 0x8a, 0xb2, 0x90, 0xde, 0x78, 0xb8, 0x71, 0x7b, 0x6a, 0x04, 0x4d, 0x40, 0xf6, 0x91, 0x7a, |
|
13368 |
- 0xfb, 0x49, 0xfd, 0xe1, 0xd6, 0xe6, 0x54, 0x82, 0x90, 0x22, 0x30, 0xdd, 0xc9, 0x92, 0xb0, 0x06, |
|
13369 |
- 0x45, 0xa6, 0x86, 0x27, 0xe2, 0xc5, 0x7f, 0xe0, 0x5c, 0x60, 0x16, 0x2e, 0xab, 0x7f, 0x26, 0x61, |
|
13370 |
- 0x86, 0x1c, 0x2b, 0x3e, 0xee, 0x28, 0x6b, 0x3d, 0xa8, 0xac, 0xcb, 0x61, 0xfa, 0x15, 0xb0, 0xec, |
|
13371 |
- 0x17, 0xd7, 0xaf, 0x93, 0xa7, 0x2e, 0xae, 0x9b, 0x01, 0x71, 0x7d, 0x77, 0xc8, 0xe0, 0xa4, 0xfa, |
|
13372 |
- 0xda, 0x27, 0x60, 0xe9, 0xd3, 0x15, 0xb0, 0x87, 0x50, 0xf4, 0x87, 0xc4, 0x89, 0xf1, 0x36, 0x64, |
|
13373 |
- 0x79, 0xa2, 0x84, 0x8c, 0x45, 0x32, 0xc3, 0x01, 0xbb, 0x62, 0xb6, 0x81, 0xed, 0xe7, 0x86, 0xd9, |
|
13374 |
- 0x1a, 0x42, 0xcc, 0xb8, 0x85, 0x4c, 0xcc, 0x9c, 0xc9, 0x5c, 0xde, 0x76, 0xd8, 0x50, 0x14, 0x6f, |
|
13375 |
- 0x85, 0x95, 0xc0, 0x2a, 0x5b, 0x54, 0xcc, 0x02, 0x91, 0x21, 0x48, 0x93, 0xdd, 0xe4, 0xfb, 0x45, |
|
13376 |
- 0x9f, 0x09, 0x91, 0xb9, 0x0d, 0x21, 0x72, 0xd2, 0x25, 0x32, 0xb7, 0x25, 0x44, 0xe6, 0x00, 0x47, |
|
13377 |
- 0xe0, 0x4e, 0x29, 0xc6, 0x8f, 0xc5, 0xd9, 0x3a, 0xf5, 0x30, 0x9d, 0xf3, 0x16, 0x88, 0xd4, 0x39, |
|
13378 |
- 0x6f, 0x7c, 0xfc, 0x18, 0xe7, 0x2d, 0x60, 0xf9, 0x7a, 0x9d, 0xb7, 0x90, 0xe0, 0xce, 0xf2, 0xbc, |
|
13379 |
- 0xb9, 0x21, 0xb9, 0xe7, 0x8d, 0x27, 0x2a, 0xf2, 0xbc, 0x89, 0xcc, 0x39, 0x60, 0xfe, 0xfb, 0xbc, |
|
13380 |
- 0xda, 0xde, 0xb7, 0x6c, 0x6c, 0x7a, 0x74, 0xb8, 0xc1, 0x46, 0x02, 0x3a, 0xcc, 0x71, 0x84, 0x17, |
|
13381 |
- 0x1c, 0xe0, 0xd0, 0xd7, 0x99, 0xc2, 0xa5, 0x2f, 0x87, 0x44, 0xd1, 0x57, 0x58, 0x09, 0xac, 0xc3, |
|
13382 |
- 0x25, 0xfe, 0xe1, 0x18, 0x5c, 0x0a, 0x58, 0xbe, 0x5e, 0x5c, 0x0a, 0x09, 0xee, 0x2c, 0xb9, 0xe4, |
|
13383 |
- 0x86, 0xe4, 0x72, 0x89, 0x67, 0x23, 0x92, 0x4b, 0x22, 0x75, 0x0e, 0x58, 0xf9, 0x26, 0x01, 0xb9, |
|
13384 |
- 0x75, 0x7c, 0xa8, 0x1a, 0xb6, 0x66, 0x93, 0xf2, 0xe6, 0xff, 0x30, 0x4d, 0x48, 0x86, 0xcd, 0xed, |
|
13385 |
- 0x67, 0x86, 0xde, 0xd9, 0xb6, 0x8d, 0x16, 0xee, 0xd0, 0xd0, 0xb2, 0xea, 0x24, 0xfb, 0x70, 0xcf, |
|
13386 |
- 0xd0, 0x3b, 0x8f, 0xc9, 0x30, 0x5a, 0x02, 0xb4, 0xa7, 0x75, 0xb4, 0x5d, 0x3f, 0x98, 0xdd, 0x05, |
|
13387 |
- 0xa7, 0xf8, 0x17, 0x29, 0x7a, 0xbf, 0xd3, 0x36, 0x1a, 0xad, 0x6d, 0xb2, 0xea, 0x94, 0x0f, 0xbd, |
|
13388 |
- 0x45, 0x3f, 0xac, 0xe3, 0x43, 0xe5, 0x4b, 0xa7, 0xe6, 0x3b, 0x09, 0xcf, 0x49, 0xcd, 0x27, 0xd0, |
|
13389 |
- 0xc3, 0xd4, 0x7c, 0xdc, 0x66, 0x88, 0x9a, 0x8f, 0x7b, 0xf7, 0xd4, 0x7c, 0xb7, 0x48, 0xcd, 0xc7, |
|
13390 |
- 0x76, 0x95, 0xd6, 0x7c, 0x21, 0x86, 0x9e, 0xcd, 0x5f, 0x49, 0xbf, 0x3c, 0x9a, 0x1b, 0x51, 0x1d, |
|
13391 |
- 0x33, 0xb7, 0x86, 0x3b, 0xa5, 0x83, 0xfa, 0x1e, 0x4c, 0xd1, 0xaa, 0xbc, 0x61, 0x62, 0x5b, 0xec, |
|
13392 |
- 0xe7, 0x22, 0x8c, 0x5b, 0x74, 0xc0, 0xdd, 0xce, 0x89, 0xde, 0xd1, 0x5c, 0x96, 0xa1, 0xea, 0x6b, |
|
13393 |
- 0xe4, 0x77, 0x9e, 0x3e, 0x35, 0x95, 0xbb, 0xfc, 0x5e, 0xc0, 0xcc, 0x79, 0x28, 0x35, 0x18, 0x63, |
|
13394 |
- 0x00, 0x1e, 0x49, 0x59, 0x5e, 0x33, 0x50, 0x1b, 0x8e, 0x54, 0x7e, 0x4e, 0xc0, 0x8c, 0x28, 0x4e, |
|
13395 |
- 0x8f, 0x17, 0x0b, 0x5a, 0x81, 0x02, 0x87, 0x0e, 0x91, 0xd7, 0x3c, 0x33, 0x11, 0x69, 0xad, 0xf9, |
|
13396 |
- 0xd2, 0x3a, 0x1b, 0x1e, 0xb8, 0xa7, 0x3c, 0xb9, 0xe7, 0x5e, 0x45, 0x4e, 0xbc, 0x0d, 0x7f, 0x24, |
|
13397 |
- 0x01, 0xb1, 0x4a, 0x8c, 0xbc, 0x3a, 0xb2, 0xf9, 0x51, 0x50, 0x36, 0xab, 0xe1, 0x55, 0xa5, 0xd7, |
|
13398 |
- 0xb0, 0x5f, 0x35, 0xbf, 0x3a, 0x7d, 0xd5, 0x54, 0x03, 0xaa, 0x79, 0x73, 0xb8, 0xd8, 0xce, 0x44, |
|
13399 |
- 0x34, 0xd7, 0xc5, 0xd5, 0x82, 0x47, 0xc4, 0x53, 0xf6, 0x16, 0xb9, 0x08, 0xd1, 0x21, 0x2e, 0x99, |
|
13400 |
- 0x51, 0x39, 0x13, 0x50, 0xa5, 0x0e, 0x33, 0xe2, 0xb2, 0xed, 0xa5, 0x6e, 0xcd, 0x57, 0xeb, 0x0e, |
|
13401 |
- 0xcc, 0x25, 0xff, 0x54, 0x27, 0xe0, 0xd2, 0x87, 0x30, 0x23, 0x2e, 0x56, 0xc7, 0x3c, 0xdd, 0xe7, |
|
13402 |
- 0xdd, 0x0b, 0x9e, 0x37, 0x9a, 0xda, 0x0f, 0xe7, 0x21, 0xb3, 0xca, 0xfe, 0x9f, 0x00, 0xe9, 0x90, |
|
13403 |
- 0xe1, 0x2d, 0x78, 0xa4, 0xc8, 0x82, 0xf2, 0xb7, 0xf5, 0xcb, 0x97, 0x22, 0x31, 0xbc, 0x12, 0x3d, |
|
13404 |
- 0xf7, 0xcb, 0x8f, 0x7f, 0x7d, 0x9b, 0x9c, 0x84, 0x3c, 0x05, 0xbd, 0xc1, 0x7f, 0x09, 0x90, 0x01, |
|
13405 |
- 0xe3, 0x4e, 0x2f, 0x17, 0xfd, 0x6f, 0x90, 0xce, 0x77, 0xf9, 0x72, 0x0c, 0x2a, 0xda, 0xa1, 0x09, |
|
13406 |
- 0xe0, 0xb6, 0x52, 0xd1, 0xe5, 0xf0, 0xfb, 0xb9, 0x77, 0x85, 0x0b, 0x71, 0xb0, 0x58, 0x9f, 0x6e, |
|
13407 |
- 0xab, 0x54, 0xee, 0xb3, 0xaf, 0x35, 0x2b, 0xf7, 0x29, 0xe9, 0xb8, 0x86, 0xf8, 0x64, 0x39, 0x7c, |
|
13408 |
- 0xac, 0x59, 0xad, 0xd0, 0x1c, 0x7a, 0x5a, 0xa5, 0xa1, 0x39, 0xf4, 0x35, 0x45, 0xa3, 0x73, 0x48, |
|
13409 |
- 0x5b, 0x65, 0xe1, 0x39, 0xf4, 0x36, 0x1e, 0xc3, 0x73, 0xe8, 0xeb, 0xb7, 0xc5, 0xee, 0x27, 0x5d, |
|
13410 |
- 0x5e, 0xc4, 0x7e, 0x7a, 0x57, 0xb8, 0x10, 0x07, 0x8b, 0xf5, 0xe9, 0xb6, 0xba, 0xe4, 0x3e, 0xfb, |
|
13411 |
- 0xba, 0x69, 0x72, 0x9f, 0xfd, 0x1d, 0xb3, 0x30, 0x9f, 0x2f, 0x60, 0xc2, 0x7b, 0x85, 0x47, 0x57, |
|
13412 |
- 0x06, 0xec, 0x3b, 0x94, 0x2b, 0xf1, 0xc0, 0x68, 0xcf, 0x9f, 0x41, 0xde, 0xd7, 0x6b, 0x44, 0xd2, |
|
13413 |
- 0x19, 0x65, 0xbd, 0xcd, 0xf2, 0xe2, 0x00, 0xc8, 0x58, 0xe7, 0xbe, 0x9e, 0x96, 0xdc, 0xb9, 0xac, |
|
13414 |
- 0x8b, 0x26, 0x77, 0x2e, 0x6d, 0x90, 0x45, 0x38, 0xf7, 0xb5, 0xae, 0xe4, 0xce, 0x65, 0x3d, 0x32, |
|
13415 |
- 0xb9, 0x73, 0x79, 0x1f, 0x2c, 0x92, 0x64, 0xfc, 0x2a, 0x18, 0x4a, 0x32, 0x7f, 0xfb, 0x20, 0x94, |
|
13416 |
- 0x64, 0xc1, 0x5e, 0x40, 0x34, 0xc9, 0xc4, 0xbd, 0x35, 0x9c, 0x64, 0x81, 0xcb, 0x76, 0x38, 0xc9, |
|
13417 |
- 0x82, 0x57, 0xe0, 0x58, 0x92, 0x89, 0x05, 0x47, 0x90, 0x2c, 0xb0, 0xe6, 0xc5, 0x01, 0x90, 0x03, |
|
13418 |
- 0xe6, 0x39, 0xd2, 0xb9, 0xac, 0x5f, 0x13, 0x95, 0xe7, 0x01, 0x9d, 0xb3, 0x3c, 0xf3, 0xc2, 0x3d, |
|
13419 |
- 0x34, 0xcf, 0xfe, 0x2b, 0x51, 0x68, 0x9e, 0x03, 0xb7, 0x86, 0x98, 0x3c, 0x8b, 0x3b, 0x65, 0x78, |
|
13420 |
- 0x9e, 0x03, 0x17, 0xe1, 0xf0, 0x3c, 0x07, 0xaf, 0xa7, 0xb1, 0xe7, 0x59, 0x2c, 0x38, 0xe2, 0x3c, |
|
13421 |
- 0x07, 0xd6, 0xbc, 0x38, 0x00, 0x32, 0xf6, 0xc7, 0xc9, 0xb9, 0xcd, 0xc8, 0x7f, 0x9c, 0x82, 0x77, |
|
13422 |
- 0xa5, 0xf2, 0xe5, 0x18, 0x54, 0xec, 0x3e, 0x7b, 0xaf, 0x0e, 0xf2, 0x7d, 0x96, 0x5c, 0x8b, 0xca, |
|
13423 |
- 0x95, 0x78, 0x60, 0xb4, 0xe7, 0x7d, 0xc8, 0x79, 0x0a, 0x60, 0xb4, 0x30, 0x58, 0xcd, 0x5e, 0xbe, |
|
13424 |
- 0x12, 0x8b, 0x8b, 0x5d, 0xb0, 0xb7, 0xbe, 0x95, 0x2f, 0x58, 0x52, 0x4c, 0x97, 0x2b, 0xf1, 0xc0, |
|
13425 |
- 0x58, 0xcf, 0xde, 0x5a, 0x56, 0xee, 0x59, 0x52, 0x2f, 0x97, 0x2b, 0xf1, 0xc0, 0x48, 0xcf, 0x2b, |
|
13426 |
- 0xa5, 0x97, 0xaf, 0x66, 0x47, 0x7e, 0x7b, 0x35, 0x3b, 0xf2, 0x79, 0x6f, 0x36, 0xf1, 0xb2, 0x37, |
|
13427 |
- 0x9b, 0xf8, 0xb5, 0x37, 0x9b, 0xf8, 0xbd, 0x37, 0x9b, 0xd8, 0x19, 0xa3, 0x7f, 0xfc, 0x72, 0xed, |
|
13428 |
- 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf7, 0xd5, 0x67, 0xd5, 0x75, 0x23, 0x00, 0x00, |
|
13313 |
+ // 1865 bytes of a gzipped FileDescriptorProto |
|
13314 |
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xcc, 0x5a, 0x4b, 0x6f, 0x1b, 0x47, |
|
13315 |
+ 0x12, 0x16, 0x1f, 0x12, 0xa9, 0xa2, 0x48, 0x49, 0x2d, 0xda, 0x4b, 0xd0, 0x5e, 0x49, 0x18, 0xaf, |
|
13316 |
+ 0x65, 0x6a, 0xa1, 0xa5, 0xd6, 0xf4, 0x1a, 0xeb, 0xf5, 0x62, 0x1f, 0x96, 0x68, 0x3b, 0xb4, 0x6c, |
|
13317 |
+ 0xd9, 0x18, 0x49, 0x46, 0x6e, 0x04, 0x45, 0xb6, 0x95, 0x31, 0x29, 0x0e, 0x33, 0x33, 0x94, 0x2d, |
|
13318 |
+ 0xe4, 0x92, 0x04, 0xc9, 0x4f, 0x08, 0x90, 0x43, 0x7e, 0x41, 0x02, 0xe4, 0x90, 0x53, 0x6e, 0xb9, |
|
13319 |
+ 0x1a, 0x39, 0xe5, 0x98, 0x93, 0x10, 0x13, 0x08, 0x90, 0x53, 0x7e, 0x43, 0xd0, 0xaf, 0x79, 0xb1, |
|
13320 |
+ 0x67, 0x86, 0x94, 0x04, 0xc8, 0x27, 0xcf, 0xf4, 0x7c, 0xd5, 0x55, 0xdd, 0xf5, 0xf5, 0xc7, 0xea, |
|
13321 |
+ 0xb2, 0x20, 0xdb, 0xd4, 0xbb, 0x96, 0xa1, 0x77, 0xca, 0x3d, 0x43, 0xb7, 0x74, 0x84, 0x5a, 0x7a, |
|
13322 |
+ 0xb3, 0x8d, 0x8d, 0xb2, 0xf9, 0xaa, 0x61, 0x1c, 0xb6, 0x35, 0xab, 0x7c, 0x74, 0xb3, 0x98, 0x31, |
|
13323 |
+ 0x7b, 0xb8, 0x69, 0x32, 0x40, 0x31, 0xab, 0xef, 0xbf, 0xc4, 0x4d, 0x4b, 0xbc, 0x66, 0xac, 0xe3, |
|
13324 |
+ 0x1e, 0x16, 0x2f, 0xf9, 0x03, 0xfd, 0x40, 0xa7, 0x8f, 0xeb, 0xe4, 0x89, 0x8f, 0x2e, 0xf4, 0x3a, |
|
13325 |
+ 0xfd, 0x03, 0xad, 0xbb, 0xce, 0xfe, 0x61, 0x83, 0xca, 0x6d, 0xc8, 0x3d, 0xc4, 0xd6, 0xb6, 0xde, |
|
13326 |
+ 0xc2, 0x2a, 0xfe, 0xb0, 0x8f, 0x4d, 0x0b, 0x5d, 0x83, 0x54, 0x57, 0x6f, 0xe1, 0xba, 0xd6, 0x2a, |
|
13327 |
+ 0xc4, 0x96, 0x63, 0xa5, 0xe9, 0x0d, 0x18, 0x9c, 0x2c, 0x4d, 0x11, 0x44, 0xad, 0xaa, 0x4e, 0x91, |
|
13328 |
+ 0x4f, 0xb5, 0x96, 0xf2, 0x3f, 0x98, 0xb5, 0xcd, 0xcc, 0x9e, 0xde, 0x35, 0x31, 0x5a, 0x83, 0x24, |
|
13329 |
+ 0xf9, 0x48, 0x8d, 0x32, 0x95, 0x42, 0x79, 0x78, 0x01, 0x65, 0x8a, 0xa7, 0x28, 0xe5, 0x24, 0x01, |
|
13330 |
+ 0x73, 0x8f, 0x35, 0x93, 0x4e, 0x61, 0x0a, 0xd7, 0x0f, 0x20, 0xf5, 0x42, 0xeb, 0x58, 0xd8, 0x30, |
|
13331 |
+ 0xf9, 0x2c, 0x6b, 0xb2, 0x59, 0xfc, 0x66, 0xe5, 0x07, 0xcc, 0x46, 0x15, 0xc6, 0xc5, 0x4f, 0x12, |
|
13332 |
+ 0x90, 0xe2, 0x83, 0x28, 0x0f, 0x93, 0xdd, 0xc6, 0x21, 0x26, 0x33, 0x26, 0x4a, 0xd3, 0x2a, 0x7b, |
|
13333 |
+ 0x41, 0xeb, 0x90, 0xd1, 0x5a, 0xf5, 0x9e, 0x81, 0x5f, 0x68, 0xaf, 0xb1, 0x59, 0x88, 0x93, 0x6f, |
|
13334 |
+ 0x1b, 0xb9, 0xc1, 0xc9, 0x12, 0xd4, 0xaa, 0xcf, 0xf8, 0xa8, 0x0a, 0x5a, 0x4b, 0x3c, 0xa3, 0x67, |
|
13335 |
+ 0x30, 0xd5, 0x69, 0xec, 0xe3, 0x8e, 0x59, 0x48, 0x2c, 0x27, 0x4a, 0x99, 0xca, 0x9d, 0x71, 0x22, |
|
13336 |
+ 0x2b, 0x3f, 0xa6, 0xa6, 0xf7, 0xbb, 0x96, 0x71, 0xac, 0xf2, 0x79, 0x50, 0x0d, 0x32, 0x87, 0xf8, |
|
13337 |
+ 0x70, 0x1f, 0x1b, 0xe6, 0x07, 0x5a, 0xcf, 0x2c, 0x24, 0x97, 0x13, 0xa5, 0x5c, 0xe5, 0x46, 0xd0, |
|
13338 |
+ 0xb6, 0xed, 0xf4, 0x70, 0xb3, 0xfc, 0xc4, 0xc6, 0xab, 0x6e, 0x5b, 0x54, 0x81, 0x49, 0x43, 0xef, |
|
13339 |
+ 0x60, 0xb3, 0x30, 0x49, 0x27, 0xb9, 0x1a, 0xb8, 0xf7, 0x7a, 0x07, 0xab, 0x0c, 0x8a, 0xae, 0x41, |
|
13340 |
+ 0x96, 0x6c, 0x85, 0xb3, 0x07, 0x53, 0x74, 0x7f, 0x66, 0xc8, 0xa0, 0x58, 0x75, 0xf1, 0x5f, 0x90, |
|
13341 |
+ 0x71, 0x85, 0x8e, 0xe6, 0x20, 0xd1, 0xc6, 0xc7, 0x8c, 0x16, 0x2a, 0x79, 0x24, 0xbb, 0x7b, 0xd4, |
|
13342 |
+ 0xe8, 0xf4, 0x71, 0x21, 0x4e, 0xc7, 0xd8, 0xcb, 0xdd, 0xf8, 0x9d, 0x98, 0xb2, 0x09, 0xf3, 0xae, |
|
13343 |
+ 0xed, 0xe0, 0x1c, 0x29, 0xc3, 0x24, 0xc9, 0x3e, 0x4b, 0x46, 0x18, 0x49, 0x18, 0x4c, 0xf9, 0x3a, |
|
13344 |
+ 0x06, 0xf3, 0x7b, 0xbd, 0x56, 0xc3, 0xc2, 0xe3, 0x32, 0x14, 0xfd, 0x17, 0x66, 0x28, 0xe8, 0x08, |
|
13345 |
+ 0x1b, 0xa6, 0xa6, 0x77, 0x69, 0x80, 0x99, 0xca, 0x15, 0x99, 0xc7, 0xe7, 0x0c, 0xa2, 0x66, 0x88, |
|
13346 |
+ 0x01, 0x7f, 0x41, 0x7f, 0x87, 0x24, 0x39, 0x6e, 0x85, 0x04, 0xb5, 0xbb, 0x1a, 0x96, 0x17, 0x95, |
|
13347 |
+ 0x22, 0x95, 0x0d, 0x40, 0xee, 0x58, 0x4f, 0x75, 0x2c, 0xb6, 0x61, 0x5e, 0xc5, 0x87, 0xfa, 0xd1, |
|
13348 |
+ 0xf8, 0xeb, 0xcd, 0xc3, 0xe4, 0x0b, 0xdd, 0x68, 0xb2, 0x4c, 0xa4, 0x55, 0xf6, 0xa2, 0xe4, 0x01, |
|
13349 |
+ 0xb9, 0xe7, 0x63, 0x31, 0xf1, 0x43, 0xbf, 0xdb, 0x30, 0xdb, 0x2e, 0x17, 0x56, 0xc3, 0x6c, 0xfb, |
|
13350 |
+ 0x5c, 0x10, 0x04, 0x71, 0x41, 0x3e, 0xd9, 0x87, 0x9e, 0x99, 0x39, 0xab, 0x23, 0x1f, 0xc3, 0x56, |
|
13351 |
+ 0x47, 0xf1, 0x14, 0xa5, 0xdc, 0x11, 0xab, 0x1b, 0xdb, 0xb5, 0xbd, 0x0e, 0xb7, 0x77, 0xe5, 0xab, |
|
13352 |
+ 0x24, 0x13, 0x11, 0x32, 0x78, 0x0a, 0x11, 0x71, 0x9b, 0x0d, 0x8b, 0xc8, 0x0f, 0x17, 0x28, 0x22, |
|
13353 |
+ 0xb2, 0xc8, 0xa4, 0x22, 0xb2, 0x0e, 0x19, 0x13, 0x1b, 0x47, 0x5a, 0x93, 0xb0, 0x83, 0x89, 0x08, |
|
13354 |
+ 0x0f, 0x61, 0x87, 0x0d, 0xd7, 0xaa, 0xa6, 0x0a, 0x1c, 0x52, 0x6b, 0x99, 0x68, 0x05, 0xd2, 0x9c, |
|
13355 |
+ 0x4b, 0x4c, 0x2d, 0xa6, 0x37, 0x32, 0x83, 0x93, 0xa5, 0x14, 0x23, 0x93, 0xa9, 0xa6, 0x18, 0x9b, |
|
13356 |
+ 0x4c, 0x54, 0x85, 0x5c, 0x0b, 0x9b, 0x9a, 0x81, 0x5b, 0x75, 0xd3, 0x6a, 0x58, 0x5c, 0x1f, 0x72, |
|
13357 |
+ 0x95, 0x3f, 0x07, 0xa5, 0x78, 0x87, 0xa0, 0xd4, 0x2c, 0x37, 0xa2, 0x6f, 0x12, 0x91, 0x49, 0x0d, |
|
13358 |
+ 0x8b, 0x0c, 0xba, 0x0a, 0xd0, 0xef, 0xd5, 0x2d, 0xbd, 0x4e, 0xce, 0x4e, 0x21, 0x4d, 0xe9, 0x9b, |
|
13359 |
+ 0xee, 0xf7, 0x76, 0xf5, 0x6a, 0xc3, 0xc2, 0xe7, 0x20, 0x41, 0x7c, 0x33, 0x1d, 0x09, 0x22, 0x9c, |
|
13360 |
+ 0x0a, 0x95, 0x20, 0x4a, 0x32, 0x06, 0x53, 0xb6, 0x20, 0xbf, 0x69, 0xe0, 0x86, 0x85, 0xf9, 0x86, |
|
13361 |
+ 0x0a, 0x9a, 0xdd, 0xe2, 0xfa, 0xc0, 0x38, 0xb6, 0x24, 0x9b, 0x86, 0x5b, 0xb8, 0x24, 0x62, 0x1b, |
|
13362 |
+ 0x2e, 0xf9, 0x26, 0xe3, 0x51, 0xdd, 0x86, 0x14, 0x4f, 0x12, 0x9f, 0xf0, 0x4a, 0xc8, 0x84, 0xaa, |
|
13363 |
+ 0xc0, 0x2a, 0xf7, 0x60, 0xfe, 0x21, 0xb6, 0x7c, 0x91, 0xad, 0x01, 0x38, 0x9c, 0xe0, 0x67, 0x2a, |
|
13364 |
+ 0x3b, 0x38, 0x59, 0x9a, 0xb6, 0x29, 0xa1, 0x4e, 0xdb, 0x8c, 0x50, 0xb6, 0x00, 0xb9, 0xa7, 0x38, |
|
13365 |
+ 0x5b, 0x3c, 0xdf, 0xc5, 0x21, 0xcf, 0x34, 0xf0, 0x2c, 0x31, 0xa1, 0x2a, 0xcc, 0x0a, 0xf4, 0x18, |
|
13366 |
+ 0xf2, 0x9d, 0xe3, 0x36, 0x42, 0xc1, 0x6f, 0x79, 0x14, 0x7c, 0xb4, 0x0c, 0xa1, 0x27, 0x90, 0x36, |
|
13367 |
+ 0xf4, 0x4e, 0x67, 0xbf, 0xd1, 0x6c, 0x17, 0x92, 0xcb, 0xb1, 0x52, 0xae, 0x72, 0x53, 0x66, 0x28, |
|
13368 |
+ 0x5b, 0x64, 0x59, 0xe5, 0x86, 0xaa, 0x3d, 0x85, 0xa2, 0x40, 0x5a, 0x8c, 0xa2, 0x34, 0x24, 0xb7, |
|
13369 |
+ 0x9f, 0x6e, 0xdf, 0x9f, 0x9b, 0x40, 0x33, 0x90, 0x7e, 0xa6, 0xde, 0x7f, 0x5e, 0x7b, 0xba, 0xb7, |
|
13370 |
+ 0x33, 0x17, 0x23, 0xa4, 0xf0, 0x4d, 0x77, 0xb6, 0x24, 0x54, 0x21, 0xcf, 0xb4, 0xf2, 0x4c, 0xbc, |
|
13371 |
+ 0xf8, 0x13, 0x5c, 0xf2, 0xcd, 0xc2, 0x45, 0xf7, 0xb7, 0x38, 0x2c, 0x90, 0x63, 0xc5, 0xc7, 0x6d, |
|
13372 |
+ 0xdd, 0xad, 0xf9, 0x75, 0x77, 0x3d, 0x48, 0xdd, 0x7c, 0x96, 0xc3, 0xd2, 0xfb, 0x79, 0xfc, 0xdc, |
|
13373 |
+ 0xa5, 0x77, 0xc7, 0x27, 0xbd, 0xff, 0x1e, 0x33, 0x38, 0xa9, 0xfa, 0x0e, 0xc9, 0x5b, 0xf2, 0x7c, |
|
13374 |
+ 0x6b, 0xa8, 0xa7, 0x90, 0xf7, 0x86, 0xc4, 0x89, 0xf1, 0x4f, 0x48, 0xf3, 0x44, 0x09, 0x19, 0x0b, |
|
13375 |
+ 0x65, 0x86, 0x0d, 0x76, 0xc4, 0x6c, 0x1b, 0x5b, 0xaf, 0x74, 0xa3, 0x3d, 0x86, 0x98, 0x71, 0x0b, |
|
13376 |
+ 0x99, 0x98, 0xd9, 0x93, 0x39, 0xbc, 0xed, 0xb2, 0xa1, 0x30, 0xde, 0x0a, 0x2b, 0x81, 0x55, 0xf6, |
|
13377 |
+ 0xa8, 0x98, 0xf9, 0x22, 0x43, 0x90, 0x24, 0xbb, 0xc9, 0xf7, 0x8b, 0x3e, 0x13, 0x22, 0x73, 0x1b, |
|
13378 |
+ 0x42, 0xe4, 0xb8, 0x43, 0x64, 0x6e, 0x4b, 0x88, 0xcc, 0x01, 0xb6, 0xc0, 0x9d, 0x53, 0x8c, 0xef, |
|
13379 |
+ 0x8b, 0xb3, 0x75, 0xee, 0x61, 0xda, 0xe7, 0xcd, 0x17, 0xa9, 0x7d, 0xde, 0xf8, 0xf8, 0x29, 0xce, |
|
13380 |
+ 0x9b, 0xcf, 0xf2, 0xdd, 0x3a, 0x6f, 0x01, 0xc1, 0x5d, 0xe4, 0x79, 0x73, 0x42, 0x72, 0xce, 0x1b, |
|
13381 |
+ 0x4f, 0x54, 0xe8, 0x79, 0x13, 0x99, 0xb3, 0xc1, 0xfc, 0xf7, 0x79, 0xb3, 0xd3, 0x37, 0x2d, 0x6c, |
|
13382 |
+ 0xb8, 0x74, 0xb8, 0xc9, 0x46, 0x7c, 0x3a, 0xcc, 0x71, 0x84, 0x17, 0x1c, 0x60, 0xd3, 0xd7, 0x9e, |
|
13383 |
+ 0xc2, 0xa1, 0x2f, 0x87, 0x84, 0xd1, 0x57, 0x58, 0x09, 0xac, 0xcd, 0x25, 0xfe, 0xe1, 0x14, 0x5c, |
|
13384 |
+ 0xf2, 0x59, 0xbe, 0x5b, 0x5c, 0x0a, 0x08, 0xee, 0x22, 0xb9, 0xe4, 0x84, 0xe4, 0x70, 0x89, 0x67, |
|
13385 |
+ 0x23, 0x94, 0x4b, 0x22, 0x75, 0x36, 0x58, 0xf9, 0x22, 0x06, 0x99, 0x2d, 0x7c, 0xac, 0xea, 0x56, |
|
13386 |
+ 0xc3, 0x22, 0xe5, 0xcd, 0x5f, 0x61, 0x9e, 0x90, 0x0c, 0x1b, 0xf5, 0x97, 0xba, 0xd6, 0xad, 0x5b, |
|
13387 |
+ 0x7a, 0x1b, 0x77, 0x69, 0x68, 0x69, 0x75, 0x96, 0x7d, 0x78, 0xa4, 0x6b, 0xdd, 0x5d, 0x32, 0x8c, |
|
13388 |
+ 0xd6, 0x00, 0x1d, 0x36, 0xba, 0x8d, 0x03, 0x2f, 0x98, 0xdd, 0x14, 0xe7, 0xf8, 0x17, 0x29, 0xba, |
|
13389 |
+ 0xdf, 0xed, 0xe8, 0xcd, 0x76, 0x9d, 0xac, 0x3a, 0xe1, 0x41, 0xef, 0xd1, 0x0f, 0x5b, 0xf8, 0x58, |
|
13390 |
+ 0xf9, 0xd4, 0xae, 0xf9, 0xce, 0xc2, 0x73, 0x52, 0xf3, 0x09, 0xf4, 0x38, 0x35, 0x1f, 0xb7, 0x19, |
|
13391 |
+ 0xa3, 0xe6, 0xe3, 0xde, 0x5d, 0x35, 0xdf, 0x3d, 0x52, 0xf3, 0xb1, 0x5d, 0xa5, 0x35, 0x5f, 0x80, |
|
13392 |
+ 0xa1, 0x6b, 0xf3, 0x37, 0x92, 0x6f, 0x4e, 0x96, 0x26, 0x54, 0xdb, 0xcc, 0xa9, 0xe1, 0xce, 0xe9, |
|
13393 |
+ 0xa0, 0xfe, 0x07, 0xe6, 0x68, 0x55, 0xde, 0x34, 0xb0, 0x25, 0xf6, 0x73, 0x15, 0xa6, 0x4d, 0x3a, |
|
13394 |
+ 0xe0, 0x6c, 0xe7, 0xcc, 0xe0, 0x64, 0x29, 0xcd, 0x50, 0xb5, 0x2a, 0xf9, 0x9d, 0xa7, 0x4f, 0x2d, |
|
13395 |
+ 0xe5, 0x21, 0xbf, 0x17, 0x30, 0x73, 0x1e, 0x4a, 0x05, 0xa6, 0x18, 0x80, 0x47, 0x52, 0x94, 0xd7, |
|
13396 |
+ 0x0c, 0xd4, 0x86, 0x23, 0x95, 0xef, 0x63, 0xb0, 0x20, 0x8a, 0xd3, 0xd3, 0xc5, 0x82, 0x36, 0x20, |
|
13397 |
+ 0xc7, 0xa1, 0x63, 0xe4, 0x35, 0xcb, 0x4c, 0x44, 0x5a, 0x2b, 0x9e, 0xb4, 0x2e, 0x06, 0x07, 0xee, |
|
13398 |
+ 0x2a, 0x4f, 0x1e, 0x39, 0x57, 0x91, 0x33, 0x6f, 0xc3, 0xaf, 0x71, 0x40, 0xac, 0x12, 0x23, 0xaf, |
|
13399 |
+ 0xb6, 0x6c, 0xbe, 0xe7, 0x97, 0xcd, 0x72, 0x70, 0x55, 0xe9, 0x36, 0x1c, 0x56, 0xcd, 0xcf, 0xce, |
|
13400 |
+ 0x5f, 0x35, 0x55, 0x9f, 0x6a, 0xde, 0x1d, 0x2f, 0xb6, 0x0b, 0x11, 0xcd, 0x2d, 0x71, 0xb5, 0xe0, |
|
13401 |
+ 0x11, 0xf1, 0x94, 0xfd, 0x83, 0x5c, 0x84, 0xe8, 0x10, 0x97, 0xcc, 0xb0, 0x9c, 0x09, 0xa8, 0x52, |
|
13402 |
+ 0x83, 0x05, 0x71, 0xd9, 0x76, 0x53, 0xb7, 0xe2, 0xa9, 0x75, 0x47, 0xe6, 0x92, 0x77, 0xaa, 0x33, |
|
13403 |
+ 0x70, 0xe9, 0xff, 0xb0, 0x20, 0x2e, 0x56, 0xa7, 0x3c, 0xdd, 0x97, 0x9d, 0x0b, 0x9e, 0x3b, 0x9a, |
|
13404 |
+ 0xca, 0x37, 0x97, 0x21, 0xb5, 0xc9, 0xfe, 0x17, 0x01, 0x69, 0x90, 0xe2, 0x0d, 0x7a, 0xa4, 0xc8, |
|
13405 |
+ 0x82, 0xf2, 0x36, 0xfd, 0x8b, 0xd7, 0x42, 0x31, 0xbc, 0x12, 0xbd, 0xf4, 0xe3, 0xb7, 0xbf, 0x7f, |
|
13406 |
+ 0x19, 0x9f, 0x85, 0x2c, 0x05, 0xfd, 0x8d, 0xff, 0x12, 0x20, 0x1d, 0xa6, 0xed, 0x4e, 0x2f, 0xfa, |
|
13407 |
+ 0xcb, 0x28, 0x7d, 0xf1, 0xe2, 0xf5, 0x08, 0x54, 0xb8, 0x43, 0x03, 0xc0, 0x69, 0xb4, 0xa2, 0xeb, |
|
13408 |
+ 0xc1, 0xf7, 0x73, 0xf7, 0x0a, 0x57, 0xa2, 0x60, 0x91, 0x3e, 0x9d, 0x46, 0xaa, 0xdc, 0xe7, 0x50, |
|
13409 |
+ 0xe3, 0x56, 0xee, 0x53, 0xd2, 0x8f, 0x0d, 0xf0, 0xc9, 0x72, 0xb8, 0xdb, 0x30, 0xdb, 0x81, 0x39, |
|
13410 |
+ 0x74, 0x35, 0x52, 0x03, 0x73, 0xe8, 0x69, 0x99, 0x86, 0xe7, 0x90, 0xb6, 0xca, 0x82, 0x73, 0xe8, |
|
13411 |
+ 0x6e, 0x4b, 0x06, 0xe7, 0xd0, 0xd3, 0x6f, 0x8b, 0xdc, 0x4f, 0xba, 0xbc, 0x90, 0xfd, 0x74, 0xaf, |
|
13412 |
+ 0x70, 0x25, 0x0a, 0x16, 0xe9, 0xd3, 0x69, 0x75, 0xc9, 0x7d, 0x0e, 0x75, 0xd3, 0xe4, 0x3e, 0x87, |
|
13413 |
+ 0x3b, 0x66, 0x41, 0x3e, 0x5f, 0xc3, 0x8c, 0xfb, 0x0a, 0x8f, 0x6e, 0x8c, 0xd8, 0x77, 0x28, 0x96, |
|
13414 |
+ 0xa2, 0x81, 0xe1, 0x9e, 0x3f, 0x82, 0xac, 0xa7, 0xd7, 0x88, 0xa4, 0x33, 0xca, 0x7a, 0x9b, 0xc5, |
|
13415 |
+ 0xd5, 0x11, 0x90, 0x91, 0xce, 0x3d, 0x3d, 0x2d, 0xb9, 0x73, 0x59, 0x17, 0x4d, 0xee, 0x5c, 0xda, |
|
13416 |
+ 0x20, 0x0b, 0x71, 0xee, 0x69, 0x5d, 0xc9, 0x9d, 0xcb, 0x7a, 0x64, 0x72, 0xe7, 0xf2, 0x3e, 0x58, |
|
13417 |
+ 0x28, 0xc9, 0xf8, 0x55, 0x30, 0x90, 0x64, 0xde, 0xf6, 0x41, 0x20, 0xc9, 0xfc, 0xbd, 0x80, 0x70, |
|
13418 |
+ 0x92, 0x89, 0x7b, 0x6b, 0x30, 0xc9, 0x7c, 0x97, 0xed, 0x60, 0x92, 0xf9, 0xaf, 0xc0, 0x91, 0x24, |
|
13419 |
+ 0x13, 0x0b, 0x0e, 0x21, 0x99, 0x6f, 0xcd, 0xab, 0x23, 0x20, 0x47, 0xcc, 0x73, 0xa8, 0x73, 0x59, |
|
13420 |
+ 0xbf, 0x26, 0x2c, 0xcf, 0x23, 0x3a, 0x67, 0x79, 0xe6, 0x85, 0x7b, 0x60, 0x9e, 0xbd, 0x57, 0xa2, |
|
13421 |
+ 0xc0, 0x3c, 0xfb, 0x6e, 0x0d, 0x11, 0x79, 0x16, 0x77, 0xca, 0xe0, 0x3c, 0xfb, 0x2e, 0xc2, 0xc1, |
|
13422 |
+ 0x79, 0xf6, 0x5f, 0x4f, 0x23, 0xcf, 0xb3, 0x58, 0x70, 0xc8, 0x79, 0xf6, 0xad, 0x79, 0x75, 0x04, |
|
13423 |
+ 0x64, 0xe4, 0x8f, 0x93, 0x7d, 0x9b, 0x91, 0xff, 0x38, 0xf9, 0xef, 0x4a, 0xc5, 0xeb, 0x11, 0xa8, |
|
13424 |
+ 0xc8, 0x7d, 0x76, 0x5f, 0x1d, 0xe4, 0xfb, 0x2c, 0xb9, 0x16, 0x15, 0x4b, 0xd1, 0xc0, 0x70, 0xcf, |
|
13425 |
+ 0x7d, 0xc8, 0xb8, 0x0a, 0x60, 0xb4, 0x32, 0x5a, 0xcd, 0x5e, 0xbc, 0x11, 0x89, 0x8b, 0x5c, 0xb0, |
|
13426 |
+ 0xbb, 0xbe, 0x95, 0x2f, 0x58, 0x52, 0x4c, 0x17, 0x4b, 0xd1, 0xc0, 0x48, 0xcf, 0xee, 0x5a, 0x56, |
|
13427 |
+ 0xee, 0x59, 0x52, 0x2f, 0x17, 0x4b, 0xd1, 0xc0, 0x50, 0xcf, 0x1b, 0x85, 0x37, 0x6f, 0x17, 0x27, |
|
13428 |
+ 0x7e, 0x7e, 0xbb, 0x38, 0xf1, 0xf1, 0x60, 0x31, 0xf6, 0x66, 0xb0, 0x18, 0xfb, 0x69, 0xb0, 0x18, |
|
13429 |
+ 0xfb, 0x65, 0xb0, 0x18, 0xdb, 0x9f, 0xa2, 0x7f, 0x1a, 0x73, 0xeb, 0x8f, 0x00, 0x00, 0x00, 0xff, |
|
13430 |
+ 0xff, 0xcc, 0x5c, 0xf3, 0xfa, 0x93, 0x23, 0x00, 0x00, |
|
13429 | 13431 |
} |
... | ... |
@@ -191,6 +191,11 @@ message ListTasksRequest { |
191 | 191 |
repeated docker.swarmkit.v1.TaskState desired_states = 6; |
192 | 192 |
// NamePrefixes matches all objects with the given prefixes |
193 | 193 |
repeated string name_prefixes = 7; |
194 |
+ // UpToDate matches tasks that are consistent with the current |
|
195 |
+ // service definition. |
|
196 |
+ // Note: this is intended for internal status reporting rather |
|
197 |
+ // than being exposed to users. It may be removed in the future. |
|
198 |
+ bool up_to_date = 8; |
|
194 | 199 |
} |
195 | 200 |
|
196 | 201 |
Filters filters = 1; |
... | ... |
@@ -190,6 +190,11 @@ type PublishLogsMessage struct { |
190 | 190 |
SubscriptionID string `protobuf:"bytes,1,opt,name=subscription_id,json=subscriptionId,proto3" json:"subscription_id,omitempty"` |
191 | 191 |
// Messages is the log message for publishing. |
192 | 192 |
Messages []LogMessage `protobuf:"bytes,2,rep,name=messages" json:"messages"` |
193 |
+ // Close is a boolean for whether or not the client has completed its log |
|
194 |
+ // stream. When close is called, the manager can hang up the subscription. |
|
195 |
+ // Any further logs from this subscription are an error condition. Any |
|
196 |
+ // messages included when close is set can be discarded |
|
197 |
+ Close bool `protobuf:"varint,3,opt,name=close,proto3" json:"close,omitempty"` |
|
193 | 198 |
} |
194 | 199 |
|
195 | 200 |
func (m *PublishLogsMessage) Reset() { *m = PublishLogsMessage{} } |
... | ... |
@@ -1127,6 +1132,16 @@ func (m *PublishLogsMessage) MarshalTo(dAtA []byte) (int, error) { |
1127 | 1127 |
i += n |
1128 | 1128 |
} |
1129 | 1129 |
} |
1130 |
+ if m.Close { |
|
1131 |
+ dAtA[i] = 0x18 |
|
1132 |
+ i++ |
|
1133 |
+ if m.Close { |
|
1134 |
+ dAtA[i] = 1 |
|
1135 |
+ } else { |
|
1136 |
+ dAtA[i] = 0 |
|
1137 |
+ } |
|
1138 |
+ i++ |
|
1139 |
+ } |
|
1130 | 1140 |
return i, nil |
1131 | 1141 |
} |
1132 | 1142 |
|
... | ... |
@@ -1629,6 +1644,9 @@ func (m *PublishLogsMessage) Size() (n int) { |
1629 | 1629 |
n += 1 + l + sovLogbroker(uint64(l)) |
1630 | 1630 |
} |
1631 | 1631 |
} |
1632 |
+ if m.Close { |
|
1633 |
+ n += 2 |
|
1634 |
+ } |
|
1632 | 1635 |
return n |
1633 | 1636 |
} |
1634 | 1637 |
|
... | ... |
@@ -1751,6 +1769,7 @@ func (this *PublishLogsMessage) String() string { |
1751 | 1751 |
s := strings.Join([]string{`&PublishLogsMessage{`, |
1752 | 1752 |
`SubscriptionID:` + fmt.Sprintf("%v", this.SubscriptionID) + `,`, |
1753 | 1753 |
`Messages:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Messages), "LogMessage", "LogMessage", 1), `&`, ``, 1) + `,`, |
1754 |
+ `Close:` + fmt.Sprintf("%v", this.Close) + `,`, |
|
1754 | 1755 |
`}`, |
1755 | 1756 |
}, "") |
1756 | 1757 |
return s |
... | ... |
@@ -2894,6 +2913,26 @@ func (m *PublishLogsMessage) Unmarshal(dAtA []byte) error { |
2894 | 2894 |
return err |
2895 | 2895 |
} |
2896 | 2896 |
iNdEx = postIndex |
2897 |
+ case 3: |
|
2898 |
+ if wireType != 0 { |
|
2899 |
+ return fmt.Errorf("proto: wrong wireType = %d for field Close", wireType) |
|
2900 |
+ } |
|
2901 |
+ var v int |
|
2902 |
+ for shift := uint(0); ; shift += 7 { |
|
2903 |
+ if shift >= 64 { |
|
2904 |
+ return ErrIntOverflowLogbroker |
|
2905 |
+ } |
|
2906 |
+ if iNdEx >= l { |
|
2907 |
+ return io.ErrUnexpectedEOF |
|
2908 |
+ } |
|
2909 |
+ b := dAtA[iNdEx] |
|
2910 |
+ iNdEx++ |
|
2911 |
+ v |= (int(b) & 0x7F) << shift |
|
2912 |
+ if b < 0x80 { |
|
2913 |
+ break |
|
2914 |
+ } |
|
2915 |
+ } |
|
2916 |
+ m.Close = bool(v != 0) |
|
2897 | 2917 |
default: |
2898 | 2918 |
iNdEx = preIndex |
2899 | 2919 |
skippy, err := skipLogbroker(dAtA[iNdEx:]) |
... | ... |
@@ -3073,14 +3112,14 @@ var ( |
3073 | 3073 |
func init() { proto.RegisterFile("logbroker.proto", fileDescriptorLogbroker) } |
3074 | 3074 |
|
3075 | 3075 |
var fileDescriptorLogbroker = []byte{ |
3076 |
- // 881 bytes of a gzipped FileDescriptorProto |
|
3076 |
+ // 886 bytes of a gzipped FileDescriptorProto |
|
3077 | 3077 |
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xa4, 0x95, 0x4f, 0x8f, 0xdb, 0x44, |
3078 | 3078 |
0x18, 0xc6, 0x33, 0xce, 0x36, 0x7f, 0xde, 0x74, 0xff, 0x74, 0xb2, 0x5d, 0x45, 0x11, 0xb5, 0x23, |
3079 | 3079 |
0x57, 0x2a, 0xd1, 0xaa, 0x24, 0x25, 0x08, 0x81, 0x54, 0x09, 0x41, 0x48, 0x85, 0x22, 0xd2, 0x5d, |
3080 | 3080 |
0x34, 0xc9, 0x0a, 0x6e, 0x2b, 0x27, 0x9e, 0x1a, 0x2b, 0x8e, 0x27, 0x78, 0x9c, 0x2e, 0x07, 0x0e, |
3081 |
- 0x1c, 0x8a, 0x84, 0x7a, 0xe0, 0x82, 0x90, 0xe0, 0xd0, 0x13, 0xbd, 0x21, 0xc1, 0x9d, 0x0f, 0x80, |
|
3081 |
+ 0x1c, 0x8a, 0x84, 0x7a, 0xe0, 0x86, 0x04, 0x87, 0x9e, 0xe8, 0x05, 0x21, 0xc1, 0x9d, 0x0f, 0x80, |
|
3082 | 3082 |
0x56, 0x9c, 0xe0, 0xc6, 0x29, 0xa2, 0xfe, 0x00, 0x7c, 0x06, 0xe4, 0x99, 0x89, 0xe3, 0x25, 0x49, |
3083 |
- 0x8b, 0xb6, 0x97, 0x64, 0xc6, 0xf3, 0xbc, 0x9e, 0xdf, 0xfb, 0xcc, 0x33, 0x09, 0xec, 0x7a, 0xcc, |
|
3083 |
+ 0x8b, 0xb6, 0x97, 0x64, 0xc6, 0xf3, 0xbc, 0x9e, 0xdf, 0x3c, 0xf3, 0xbc, 0x09, 0xec, 0x7a, 0xcc, |
|
3084 | 3084 |
0x19, 0x06, 0x6c, 0x4c, 0x83, 0xc6, 0x34, 0x60, 0x21, 0xc3, 0xd8, 0x66, 0xa3, 0x78, 0xc6, 0xcf, |
3085 | 3085 |
0xac, 0x60, 0x32, 0x76, 0xc3, 0xc6, 0xc3, 0xd7, 0xab, 0xfb, 0x0e, 0x73, 0x98, 0x58, 0x6e, 0xc6, |
3086 | 3086 |
0x23, 0xa9, 0xac, 0x1a, 0x0e, 0x63, 0x8e, 0x47, 0x9b, 0x62, 0x36, 0x9c, 0x3d, 0x68, 0x86, 0xee, |
... | ... |
@@ -3090,44 +3129,44 @@ var fileDescriptorLogbroker = []byte{ |
3090 | 3090 |
0x9d, 0xd6, 0x8d, 0xc6, 0x2a, 0x4c, 0x23, 0x2e, 0x16, 0x2a, 0xb2, 0x50, 0xe3, 0x03, 0xc8, 0x3d, |
3091 | 3091 |
0x60, 0x9e, 0xc7, 0xce, 0x2a, 0x5a, 0x0d, 0xd5, 0x0b, 0x44, 0xcd, 0x30, 0x86, 0xad, 0xd0, 0x72, |
3092 | 3092 |
0xbd, 0x4a, 0xb6, 0x86, 0xea, 0x59, 0x22, 0xc6, 0xf8, 0x0e, 0x5c, 0xe1, 0xae, 0x3f, 0xa2, 0x95, |
3093 |
- 0xad, 0x1a, 0xaa, 0x97, 0x5a, 0xd5, 0x86, 0xec, 0xa2, 0xb1, 0xe8, 0xa2, 0x31, 0x58, 0x74, 0x41, |
|
3094 |
- 0xa4, 0xd0, 0xfc, 0x06, 0x41, 0x29, 0xde, 0x94, 0x7a, 0x74, 0x14, 0xb2, 0x00, 0x37, 0xa1, 0xc4, |
|
3095 |
- 0x69, 0xf0, 0xd0, 0x1d, 0xd1, 0x53, 0xd7, 0x96, 0xa8, 0xc5, 0xf6, 0x4e, 0x34, 0x37, 0xa0, 0x2f, |
|
3096 |
- 0x1f, 0x77, 0x3b, 0x9c, 0x80, 0x92, 0x74, 0x6d, 0x8e, 0x6f, 0x41, 0xc1, 0x67, 0xb6, 0x54, 0x6b, |
|
3097 |
- 0x42, 0x5d, 0x8a, 0xe6, 0x46, 0xfe, 0x88, 0xd9, 0x42, 0x9a, 0x8f, 0x17, 0x95, 0x2e, 0xb4, 0xf8, |
|
3098 |
- 0x58, 0xe8, 0xb2, 0x4b, 0xdd, 0xc0, 0xe2, 0x63, 0xa1, 0x8b, 0x17, 0xbb, 0x36, 0x37, 0x1f, 0x21, |
|
3099 |
- 0x80, 0x1e, 0x73, 0xde, 0x67, 0x7e, 0x48, 0x3f, 0x0f, 0xf1, 0x6d, 0x80, 0x25, 0x4f, 0x05, 0xd5, |
|
3100 |
- 0x50, 0xbd, 0xd8, 0xde, 0x8e, 0xe6, 0x46, 0x31, 0xc1, 0x21, 0xc5, 0x84, 0x06, 0xdf, 0x84, 0xbc, |
|
3101 |
- 0x82, 0x11, 0x66, 0x15, 0xdb, 0x10, 0xcd, 0x8d, 0x9c, 0x64, 0x21, 0x39, 0x89, 0x12, 0x8b, 0x14, |
|
3102 |
- 0x89, 0xf0, 0x4e, 0x89, 0x24, 0x08, 0xc9, 0x49, 0x0e, 0xf3, 0x4f, 0x89, 0x71, 0x9f, 0x72, 0x6e, |
|
3103 |
- 0x39, 0x14, 0xbf, 0x03, 0xf9, 0x91, 0x24, 0x12, 0x0c, 0xa5, 0x96, 0xbe, 0xe1, 0xf4, 0x14, 0x77, |
|
3104 |
- 0x7b, 0xeb, 0x7c, 0x6e, 0x64, 0xc8, 0xa2, 0x08, 0xbf, 0x0d, 0xc5, 0x24, 0x40, 0x02, 0xed, 0xf9, |
|
3105 |
- 0x87, 0xb3, 0x14, 0xe3, 0x37, 0x21, 0x27, 0x93, 0x20, 0x60, 0x5f, 0x18, 0x1b, 0x25, 0x8e, 0xd3, |
|
3106 |
- 0x61, 0x5b, 0xa1, 0x25, 0x82, 0x70, 0x95, 0x88, 0xb1, 0xf9, 0x03, 0x82, 0x7d, 0x15, 0xcd, 0x21, |
|
3107 |
- 0xed, 0x31, 0x87, 0x13, 0xfa, 0xd9, 0x8c, 0xf2, 0x10, 0xdf, 0x85, 0x02, 0x57, 0x01, 0x50, 0xed, |
|
3108 |
- 0x19, 0x9b, 0x76, 0x51, 0x32, 0x92, 0x14, 0xe0, 0x0e, 0xe4, 0x99, 0xcc, 0xb8, 0x6a, 0xec, 0x70, |
|
3109 |
- 0x53, 0xed, 0xea, 0xad, 0x20, 0x8b, 0x52, 0xf3, 0x93, 0xff, 0xa0, 0x2d, 0x8c, 0x7f, 0x17, 0x0a, |
|
3110 |
- 0x13, 0x39, 0x94, 0x61, 0xdc, 0xec, 0xbc, 0xaa, 0x50, 0xce, 0x27, 0x55, 0xe6, 0x2b, 0x50, 0xed, |
|
3111 |
- 0xb9, 0x3c, 0xa4, 0x7e, 0x7a, 0xff, 0x45, 0xeb, 0xe6, 0x6f, 0x08, 0xca, 0xe9, 0x85, 0xc5, 0xbe, |
|
3112 |
- 0x07, 0xa0, 0x25, 0x79, 0xcb, 0x45, 0x73, 0x43, 0xeb, 0x76, 0x88, 0xe6, 0xda, 0x17, 0xac, 0xd2, |
|
3113 |
- 0x5e, 0xc2, 0xaa, 0xec, 0xa5, 0xad, 0xc2, 0xfb, 0x70, 0x65, 0xe4, 0x31, 0x2e, 0x2f, 0x79, 0x81, |
|
3114 |
- 0xc8, 0x89, 0xf9, 0x2d, 0x02, 0xfc, 0xd1, 0x6c, 0xe8, 0xb9, 0xfc, 0xd3, 0xb4, 0x7f, 0x77, 0x61, |
|
3115 |
- 0x97, 0xa7, 0x5e, 0xb6, 0xbc, 0x44, 0x38, 0x9a, 0x1b, 0x3b, 0xe9, 0x7d, 0xba, 0x1d, 0xb2, 0x93, |
|
3116 |
- 0x96, 0x76, 0xed, 0x0b, 0xe6, 0x6b, 0x97, 0x32, 0xff, 0x3a, 0x94, 0x53, 0x50, 0x84, 0xf2, 0x29, |
|
3117 |
- 0xf3, 0x39, 0x3d, 0x7c, 0x8a, 0xa0, 0x98, 0x64, 0x16, 0xdf, 0x06, 0xdc, 0x3b, 0xfe, 0xe0, 0xb4, |
|
3118 |
- 0x3f, 0x20, 0xf7, 0xde, 0xbb, 0x7f, 0x7a, 0x72, 0xf4, 0xe1, 0xd1, 0xf1, 0xc7, 0x47, 0x7b, 0x99, |
|
3119 |
- 0xea, 0xfe, 0xe3, 0x27, 0xb5, 0xbd, 0x44, 0x76, 0xe2, 0x8f, 0x7d, 0x76, 0xe6, 0xe3, 0x43, 0xb8, |
|
3120 |
- 0x96, 0x52, 0xf7, 0x07, 0x9d, 0xe3, 0x93, 0xc1, 0x1e, 0xaa, 0x96, 0x1f, 0x3f, 0xa9, 0xed, 0x26, |
|
3121 |
- 0xe2, 0x7e, 0x68, 0xb3, 0x59, 0xb8, 0xaa, 0xbd, 0x47, 0xc8, 0x9e, 0xb6, 0xaa, 0xa5, 0x41, 0x50, |
|
3122 |
- 0xbd, 0xf6, 0xf5, 0x8f, 0x7a, 0xe6, 0xd7, 0xa7, 0xfa, 0x12, 0xac, 0xf5, 0x08, 0xc1, 0x56, 0xcc, |
|
3123 |
- 0x8d, 0xbf, 0x80, 0xed, 0x0b, 0xe9, 0xc4, 0xf5, 0x75, 0x3e, 0xac, 0xbb, 0x5b, 0xd5, 0x17, 0x2b, |
|
3124 |
- 0x95, 0x77, 0xe6, 0xf5, 0xdf, 0x7f, 0xfe, 0xe7, 0x7b, 0x6d, 0x17, 0xb6, 0x85, 0xf2, 0xb5, 0x89, |
|
3125 |
- 0xe5, 0x5b, 0x0e, 0x0d, 0xee, 0xa0, 0xd6, 0x4f, 0x9a, 0x70, 0xab, 0x2d, 0xfe, 0xc9, 0xf0, 0x77, |
|
3126 |
- 0x08, 0xca, 0x6b, 0x02, 0x8d, 0x1b, 0x6b, 0x8f, 0x66, 0x63, 0xf2, 0xab, 0xaf, 0x3e, 0x07, 0x2c, |
|
3127 |
- 0x7d, 0x15, 0xcc, 0x9b, 0x82, 0xeb, 0x06, 0x5c, 0x95, 0x5c, 0x67, 0x2c, 0x18, 0xd3, 0x60, 0x85, |
|
3128 |
- 0x12, 0x7f, 0x85, 0xa0, 0x94, 0x3a, 0x6b, 0x7c, 0x6b, 0xdd, 0xfb, 0x57, 0x13, 0xba, 0x9e, 0x63, |
|
3129 |
- 0x4d, 0x68, 0xfe, 0x17, 0x47, 0x1d, 0xb5, 0x2b, 0xe7, 0xcf, 0xf4, 0xcc, 0x5f, 0xcf, 0xf4, 0xcc, |
|
3130 |
- 0x97, 0x91, 0x8e, 0xce, 0x23, 0x1d, 0xfd, 0x11, 0xe9, 0xe8, 0xef, 0x48, 0x47, 0xc3, 0x9c, 0xf8, |
|
3131 |
- 0xa5, 0x7d, 0xe3, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x11, 0x82, 0x16, 0xad, 0x17, 0x08, 0x00, |
|
3132 |
- 0x00, |
|
3093 |
+ 0xad, 0x1a, 0xaa, 0x97, 0x5a, 0xd5, 0x86, 0x3c, 0x45, 0x63, 0x71, 0x8a, 0xc6, 0x60, 0x71, 0x0a, |
|
3094 |
+ 0x22, 0x85, 0xe6, 0x37, 0x08, 0x4a, 0xf1, 0xa6, 0xd4, 0xa3, 0xa3, 0x90, 0x05, 0xb8, 0x09, 0x25, |
|
3095 |
+ 0x4e, 0x83, 0x87, 0xee, 0x88, 0x9e, 0xba, 0xb6, 0x44, 0x2d, 0xb6, 0x77, 0xa2, 0xb9, 0x01, 0x7d, |
|
3096 |
+ 0xf9, 0xb8, 0xdb, 0xe1, 0x04, 0x94, 0xa4, 0x6b, 0x73, 0x7c, 0x0b, 0x0a, 0x3e, 0xb3, 0xa5, 0x5a, |
|
3097 |
+ 0x13, 0xea, 0x52, 0x34, 0x37, 0xf2, 0x47, 0xcc, 0x16, 0xd2, 0x7c, 0xbc, 0xa8, 0x74, 0xa1, 0xc5, |
|
3098 |
+ 0xc7, 0x42, 0x97, 0x5d, 0xea, 0x06, 0x16, 0x1f, 0x0b, 0x5d, 0xbc, 0xd8, 0xb5, 0xb9, 0xf9, 0x08, |
|
3099 |
+ 0x01, 0xf4, 0x98, 0xf3, 0x3e, 0xf3, 0x43, 0xfa, 0x79, 0x88, 0x6f, 0x03, 0x2c, 0x79, 0x2a, 0xa8, |
|
3100 |
+ 0x86, 0xea, 0xc5, 0xf6, 0x76, 0x34, 0x37, 0x8a, 0x09, 0x0e, 0x29, 0x26, 0x34, 0xf8, 0x26, 0xe4, |
|
3101 |
+ 0x15, 0x8c, 0x30, 0xab, 0xd8, 0x86, 0x68, 0x6e, 0xe4, 0x24, 0x0b, 0xc9, 0x49, 0x94, 0x58, 0xa4, |
|
3102 |
+ 0x48, 0x84, 0x77, 0x4a, 0x24, 0x41, 0x48, 0x4e, 0x72, 0x98, 0x7f, 0x4a, 0x8c, 0xfb, 0x94, 0x73, |
|
3103 |
+ 0xcb, 0xa1, 0xf8, 0x1d, 0xc8, 0x8f, 0x24, 0x91, 0x60, 0x28, 0xb5, 0xf4, 0x0d, 0xb7, 0xa7, 0xb8, |
|
3104 |
+ 0xdb, 0x5b, 0xe7, 0x73, 0x23, 0x43, 0x16, 0x45, 0xf8, 0x6d, 0x28, 0x26, 0x01, 0x12, 0x68, 0xcf, |
|
3105 |
+ 0xbf, 0x9c, 0xa5, 0x18, 0xbf, 0x09, 0x39, 0x99, 0x04, 0x01, 0xfb, 0xc2, 0xd8, 0x28, 0x71, 0x9c, |
|
3106 |
+ 0x0e, 0xdb, 0x0a, 0x2d, 0x11, 0x84, 0xab, 0x44, 0x8c, 0xcd, 0xef, 0x11, 0xec, 0xab, 0x68, 0x0e, |
|
3107 |
+ 0x69, 0x8f, 0x39, 0x9c, 0xd0, 0xcf, 0x66, 0x94, 0x87, 0xf8, 0x2e, 0x14, 0xb8, 0x0a, 0x80, 0x3a, |
|
3108 |
+ 0x9e, 0xb1, 0x69, 0x17, 0x25, 0x23, 0x49, 0x01, 0xee, 0x40, 0x9e, 0xc9, 0x8c, 0xab, 0x83, 0x1d, |
|
3109 |
+ 0x6e, 0xaa, 0x5d, 0xed, 0x0a, 0xb2, 0x28, 0x35, 0x3f, 0xf9, 0x0f, 0xda, 0xc2, 0xf8, 0x77, 0xa1, |
|
3110 |
+ 0x30, 0x91, 0x43, 0x19, 0xc6, 0xcd, 0xce, 0xab, 0x0a, 0xe5, 0x7c, 0x52, 0x65, 0xbe, 0x02, 0xd5, |
|
3111 |
+ 0x9e, 0xcb, 0x43, 0xea, 0xa7, 0xf7, 0x5f, 0x1c, 0xdd, 0xfc, 0x0d, 0x41, 0x39, 0xbd, 0xb0, 0xd8, |
|
3112 |
+ 0xf7, 0x00, 0xb4, 0x24, 0x6f, 0xb9, 0x68, 0x6e, 0x68, 0xdd, 0x0e, 0xd1, 0x5c, 0xfb, 0x82, 0x55, |
|
3113 |
+ 0xda, 0x4b, 0x58, 0x95, 0xbd, 0xb4, 0x55, 0x78, 0x1f, 0xae, 0x8c, 0x3c, 0xc6, 0x65, 0x93, 0x17, |
|
3114 |
+ 0x88, 0x9c, 0x98, 0x3f, 0x22, 0xc0, 0x1f, 0xcd, 0x86, 0x9e, 0xcb, 0x3f, 0x4d, 0xfb, 0x77, 0x17, |
|
3115 |
+ 0x76, 0x79, 0xea, 0x65, 0xcb, 0x26, 0xc2, 0xd1, 0xdc, 0xd8, 0x49, 0xef, 0xd3, 0xed, 0x90, 0x9d, |
|
3116 |
+ 0xb4, 0xb4, 0x6b, 0x5f, 0x30, 0x5f, 0xbb, 0x8c, 0xf9, 0x4b, 0xd6, 0x6c, 0x9a, 0xf5, 0x3a, 0x94, |
|
3117 |
+ 0x53, 0xa8, 0x84, 0xf2, 0x29, 0xf3, 0x39, 0x3d, 0x7c, 0x8a, 0xa0, 0x98, 0x24, 0x19, 0xdf, 0x06, |
|
3118 |
+ 0xdc, 0x3b, 0xfe, 0xe0, 0xb4, 0x3f, 0x20, 0xf7, 0xde, 0xbb, 0x7f, 0x7a, 0x72, 0xf4, 0xe1, 0xd1, |
|
3119 |
+ 0xf1, 0xc7, 0x47, 0x7b, 0x99, 0xea, 0xfe, 0xe3, 0x27, 0xb5, 0xbd, 0x44, 0x76, 0xe2, 0x8f, 0x7d, |
|
3120 |
+ 0x76, 0xe6, 0xe3, 0x43, 0xb8, 0x96, 0x52, 0xf7, 0x07, 0x9d, 0xe3, 0x93, 0xc1, 0x1e, 0xaa, 0x96, |
|
3121 |
+ 0x1f, 0x3f, 0xa9, 0xed, 0x26, 0xe2, 0x7e, 0x68, 0xb3, 0x59, 0xb8, 0xaa, 0xbd, 0x47, 0xc8, 0x9e, |
|
3122 |
+ 0xb6, 0xaa, 0xa5, 0x41, 0x50, 0xbd, 0xf6, 0xf5, 0x0f, 0x7a, 0xe6, 0xd7, 0xa7, 0xfa, 0x12, 0xac, |
|
3123 |
+ 0xf5, 0x08, 0xc1, 0x56, 0xcc, 0x8d, 0xbf, 0x80, 0xed, 0x0b, 0x99, 0xc5, 0xf5, 0x75, 0xee, 0xac, |
|
3124 |
+ 0xeb, 0xb8, 0xea, 0x8b, 0x95, 0xca, 0x51, 0xf3, 0xfa, 0xef, 0x3f, 0xff, 0xf3, 0x9d, 0xb6, 0x0b, |
|
3125 |
+ 0xdb, 0x42, 0xf9, 0xda, 0xc4, 0xf2, 0x2d, 0x87, 0x06, 0x77, 0x50, 0xeb, 0x27, 0x4d, 0xb8, 0xd5, |
|
3126 |
+ 0x16, 0xff, 0x6f, 0xf8, 0x5b, 0x04, 0xe5, 0x35, 0x31, 0xc7, 0x8d, 0xb5, 0x17, 0xb6, 0xb1, 0x1f, |
|
3127 |
+ 0xaa, 0xaf, 0x3e, 0x07, 0x2c, 0xdd, 0x20, 0xe6, 0x4d, 0xc1, 0x75, 0x03, 0xae, 0x4a, 0xae, 0x33, |
|
3128 |
+ 0x16, 0x8c, 0x69, 0xb0, 0x42, 0x89, 0xbf, 0x42, 0x50, 0x4a, 0xdd, 0x35, 0xbe, 0xb5, 0xee, 0xfd, |
|
3129 |
+ 0xab, 0xb9, 0x5d, 0xcf, 0xb1, 0x26, 0x34, 0xff, 0x8b, 0xa3, 0x8e, 0xda, 0x95, 0xf3, 0x67, 0x7a, |
|
3130 |
+ 0xe6, 0xaf, 0x67, 0x7a, 0xe6, 0xcb, 0x48, 0x47, 0xe7, 0x91, 0x8e, 0xfe, 0x88, 0x74, 0xf4, 0x77, |
|
3131 |
+ 0xa4, 0xa3, 0x61, 0x4e, 0xfc, 0xfe, 0xbe, 0xf1, 0x6f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xa3, 0x37, |
|
3132 |
+ 0x34, 0x6f, 0x2d, 0x08, 0x00, 0x00, |
|
3133 | 3133 |
} |
... | ... |
@@ -167,6 +167,12 @@ message PublishLogsMessage { |
167 | 167 |
|
168 | 168 |
// Messages is the log message for publishing. |
169 | 169 |
repeated LogMessage messages = 2 [(gogoproto.nullable) = false]; |
170 |
+ |
|
171 |
+ // Close is a boolean for whether or not the client has completed its log |
|
172 |
+ // stream. When close is called, the manager can hang up the subscription. |
|
173 |
+ // Any further logs from this subscription are an error condition. Any |
|
174 |
+ // messages included when close is set can be discarded |
|
175 |
+ bool close = 3; |
|
170 | 176 |
} |
171 | 177 |
|
172 | 178 |
message PublishLogsResponse { } |
... | ... |
@@ -106,7 +106,7 @@ func (x EndpointSpec_ResolutionMode) String() string { |
106 | 106 |
return proto.EnumName(EndpointSpec_ResolutionMode_name, int32(x)) |
107 | 107 |
} |
108 | 108 |
func (EndpointSpec_ResolutionMode) EnumDescriptor() ([]byte, []int) { |
109 |
- return fileDescriptorSpecs, []int{8, 0} |
|
109 |
+ return fileDescriptorSpecs, []int{7, 0} |
|
110 | 110 |
} |
111 | 111 |
|
112 | 112 |
type NodeSpec struct { |
... | ... |
@@ -289,7 +289,6 @@ type TaskSpec struct { |
289 | 289 |
// Types that are valid to be assigned to Runtime: |
290 | 290 |
// *TaskSpec_Attachment |
291 | 291 |
// *TaskSpec_Container |
292 |
- // *TaskSpec_Plugin |
|
293 | 292 |
Runtime isTaskSpec_Runtime `protobuf_oneof:"runtime"` |
294 | 293 |
// Resource requirements for the container. |
295 | 294 |
Resources *ResourceRequirements `protobuf:"bytes,2,opt,name=resources" json:"resources,omitempty"` |
... | ... |
@@ -327,13 +326,9 @@ type TaskSpec_Attachment struct { |
327 | 327 |
type TaskSpec_Container struct { |
328 | 328 |
Container *ContainerSpec `protobuf:"bytes,1,opt,name=container,oneof"` |
329 | 329 |
} |
330 |
-type TaskSpec_Plugin struct { |
|
331 |
- Plugin *PluginSpec `protobuf:"bytes,10,opt,name=plugin,oneof"` |
|
332 |
-} |
|
333 | 330 |
|
334 | 331 |
func (*TaskSpec_Attachment) isTaskSpec_Runtime() {} |
335 | 332 |
func (*TaskSpec_Container) isTaskSpec_Runtime() {} |
336 |
-func (*TaskSpec_Plugin) isTaskSpec_Runtime() {} |
|
337 | 333 |
|
338 | 334 |
func (m *TaskSpec) GetRuntime() isTaskSpec_Runtime { |
339 | 335 |
if m != nil { |
... | ... |
@@ -356,19 +351,11 @@ func (m *TaskSpec) GetContainer() *ContainerSpec { |
356 | 356 |
return nil |
357 | 357 |
} |
358 | 358 |
|
359 |
-func (m *TaskSpec) GetPlugin() *PluginSpec { |
|
360 |
- if x, ok := m.GetRuntime().(*TaskSpec_Plugin); ok { |
|
361 |
- return x.Plugin |
|
362 |
- } |
|
363 |
- return nil |
|
364 |
-} |
|
365 |
- |
|
366 | 359 |
// XXX_OneofFuncs is for the internal use of the proto package. |
367 | 360 |
func (*TaskSpec) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) { |
368 | 361 |
return _TaskSpec_OneofMarshaler, _TaskSpec_OneofUnmarshaler, _TaskSpec_OneofSizer, []interface{}{ |
369 | 362 |
(*TaskSpec_Attachment)(nil), |
370 | 363 |
(*TaskSpec_Container)(nil), |
371 |
- (*TaskSpec_Plugin)(nil), |
|
372 | 364 |
} |
373 | 365 |
} |
374 | 366 |
|
... | ... |
@@ -386,11 +373,6 @@ func _TaskSpec_OneofMarshaler(msg proto.Message, b *proto.Buffer) error { |
386 | 386 |
if err := b.EncodeMessage(x.Container); err != nil { |
387 | 387 |
return err |
388 | 388 |
} |
389 |
- case *TaskSpec_Plugin: |
|
390 |
- _ = b.EncodeVarint(10<<3 | proto.WireBytes) |
|
391 |
- if err := b.EncodeMessage(x.Plugin); err != nil { |
|
392 |
- return err |
|
393 |
- } |
|
394 | 389 |
case nil: |
395 | 390 |
default: |
396 | 391 |
return fmt.Errorf("TaskSpec.Runtime has unexpected type %T", x) |
... | ... |
@@ -417,14 +399,6 @@ func _TaskSpec_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffe |
417 | 417 |
err := b.DecodeMessage(msg) |
418 | 418 |
m.Runtime = &TaskSpec_Container{msg} |
419 | 419 |
return true, err |
420 |
- case 10: // runtime.plugin |
|
421 |
- if wire != proto.WireBytes { |
|
422 |
- return true, proto.ErrInternalBadWireType |
|
423 |
- } |
|
424 |
- msg := new(PluginSpec) |
|
425 |
- err := b.DecodeMessage(msg) |
|
426 |
- m.Runtime = &TaskSpec_Plugin{msg} |
|
427 |
- return true, err |
|
428 | 420 |
default: |
429 | 421 |
return false, nil |
430 | 422 |
} |
... | ... |
@@ -444,11 +418,6 @@ func _TaskSpec_OneofSizer(msg proto.Message) (n int) { |
444 | 444 |
n += proto.SizeVarint(1<<3 | proto.WireBytes) |
445 | 445 |
n += proto.SizeVarint(uint64(s)) |
446 | 446 |
n += s |
447 |
- case *TaskSpec_Plugin: |
|
448 |
- s := proto.Size(x.Plugin) |
|
449 |
- n += proto.SizeVarint(10<<3 | proto.WireBytes) |
|
450 |
- n += proto.SizeVarint(uint64(s)) |
|
451 |
- n += s |
|
452 | 447 |
case nil: |
453 | 448 |
default: |
454 | 449 |
panic(fmt.Sprintf("proto: unexpected type %T in oneof", x)) |
... | ... |
@@ -590,18 +559,6 @@ func (m *ContainerSpec_DNSConfig) Reset() { *m = ContainerSpe |
590 | 590 |
func (*ContainerSpec_DNSConfig) ProtoMessage() {} |
591 | 591 |
func (*ContainerSpec_DNSConfig) Descriptor() ([]byte, []int) { return fileDescriptorSpecs, []int{6, 2} } |
592 | 592 |
|
593 |
-// PluginSpec specifies runtime parameters for a plugin. |
|
594 |
-type PluginSpec struct { |
|
595 |
- // image defines the image reference, as specified in the |
|
596 |
- // distribution/reference package. This may include a registry host, name, |
|
597 |
- // tag or digest. |
|
598 |
- Image string `protobuf:"bytes,1,opt,name=image,proto3" json:"image,omitempty"` |
|
599 |
-} |
|
600 |
- |
|
601 |
-func (m *PluginSpec) Reset() { *m = PluginSpec{} } |
|
602 |
-func (*PluginSpec) ProtoMessage() {} |
|
603 |
-func (*PluginSpec) Descriptor() ([]byte, []int) { return fileDescriptorSpecs, []int{7} } |
|
604 |
- |
|
605 | 593 |
// EndpointSpec defines the properties that can be configured to |
606 | 594 |
// access and loadbalance the service. |
607 | 595 |
type EndpointSpec struct { |
... | ... |
@@ -613,7 +570,7 @@ type EndpointSpec struct { |
613 | 613 |
|
614 | 614 |
func (m *EndpointSpec) Reset() { *m = EndpointSpec{} } |
615 | 615 |
func (*EndpointSpec) ProtoMessage() {} |
616 |
-func (*EndpointSpec) Descriptor() ([]byte, []int) { return fileDescriptorSpecs, []int{8} } |
|
616 |
+func (*EndpointSpec) Descriptor() ([]byte, []int) { return fileDescriptorSpecs, []int{7} } |
|
617 | 617 |
|
618 | 618 |
// NetworkSpec specifies user defined network parameters. |
619 | 619 |
type NetworkSpec struct { |
... | ... |
@@ -638,7 +595,7 @@ type NetworkSpec struct { |
638 | 638 |
|
639 | 639 |
func (m *NetworkSpec) Reset() { *m = NetworkSpec{} } |
640 | 640 |
func (*NetworkSpec) ProtoMessage() {} |
641 |
-func (*NetworkSpec) Descriptor() ([]byte, []int) { return fileDescriptorSpecs, []int{9} } |
|
641 |
+func (*NetworkSpec) Descriptor() ([]byte, []int) { return fileDescriptorSpecs, []int{8} } |
|
642 | 642 |
|
643 | 643 |
// ClusterSpec specifies global cluster settings. |
644 | 644 |
type ClusterSpec struct { |
... | ... |
@@ -663,7 +620,7 @@ type ClusterSpec struct { |
663 | 663 |
|
664 | 664 |
func (m *ClusterSpec) Reset() { *m = ClusterSpec{} } |
665 | 665 |
func (*ClusterSpec) ProtoMessage() {} |
666 |
-func (*ClusterSpec) Descriptor() ([]byte, []int) { return fileDescriptorSpecs, []int{10} } |
|
666 |
+func (*ClusterSpec) Descriptor() ([]byte, []int) { return fileDescriptorSpecs, []int{9} } |
|
667 | 667 |
|
668 | 668 |
// SecretSpec specifies a user-provided secret. |
669 | 669 |
type SecretSpec struct { |
... | ... |
@@ -674,7 +631,7 @@ type SecretSpec struct { |
674 | 674 |
|
675 | 675 |
func (m *SecretSpec) Reset() { *m = SecretSpec{} } |
676 | 676 |
func (*SecretSpec) ProtoMessage() {} |
677 |
-func (*SecretSpec) Descriptor() ([]byte, []int) { return fileDescriptorSpecs, []int{11} } |
|
677 |
+func (*SecretSpec) Descriptor() ([]byte, []int) { return fileDescriptorSpecs, []int{10} } |
|
678 | 678 |
|
679 | 679 |
func init() { |
680 | 680 |
proto.RegisterType((*NodeSpec)(nil), "docker.swarmkit.v1.NodeSpec") |
... | ... |
@@ -686,7 +643,6 @@ func init() { |
686 | 686 |
proto.RegisterType((*ContainerSpec)(nil), "docker.swarmkit.v1.ContainerSpec") |
687 | 687 |
proto.RegisterType((*ContainerSpec_PullOptions)(nil), "docker.swarmkit.v1.ContainerSpec.PullOptions") |
688 | 688 |
proto.RegisterType((*ContainerSpec_DNSConfig)(nil), "docker.swarmkit.v1.ContainerSpec.DNSConfig") |
689 |
- proto.RegisterType((*PluginSpec)(nil), "docker.swarmkit.v1.PluginSpec") |
|
690 | 689 |
proto.RegisterType((*EndpointSpec)(nil), "docker.swarmkit.v1.EndpointSpec") |
691 | 690 |
proto.RegisterType((*NetworkSpec)(nil), "docker.swarmkit.v1.NetworkSpec") |
692 | 691 |
proto.RegisterType((*ClusterSpec)(nil), "docker.swarmkit.v1.ClusterSpec") |
... | ... |
@@ -842,12 +798,6 @@ func (m *TaskSpec) CopyFrom(src interface{}) { |
842 | 842 |
} |
843 | 843 |
github_com_docker_swarmkit_api_deepcopy.Copy(v.Container, o.GetContainer()) |
844 | 844 |
m.Runtime = &v |
845 |
- case *TaskSpec_Plugin: |
|
846 |
- v := TaskSpec_Plugin{ |
|
847 |
- Plugin: &PluginSpec{}, |
|
848 |
- } |
|
849 |
- github_com_docker_swarmkit_api_deepcopy.Copy(v.Plugin, o.GetPlugin()) |
|
850 |
- m.Runtime = &v |
|
851 | 845 |
} |
852 | 846 |
} |
853 | 847 |
|
... | ... |
@@ -991,21 +941,6 @@ func (m *ContainerSpec_DNSConfig) CopyFrom(src interface{}) { |
991 | 991 |
|
992 | 992 |
} |
993 | 993 |
|
994 |
-func (m *PluginSpec) Copy() *PluginSpec { |
|
995 |
- if m == nil { |
|
996 |
- return nil |
|
997 |
- } |
|
998 |
- o := &PluginSpec{} |
|
999 |
- o.CopyFrom(m) |
|
1000 |
- return o |
|
1001 |
-} |
|
1002 |
- |
|
1003 |
-func (m *PluginSpec) CopyFrom(src interface{}) { |
|
1004 |
- |
|
1005 |
- o := src.(*PluginSpec) |
|
1006 |
- *m = *o |
|
1007 |
-} |
|
1008 |
- |
|
1009 | 994 |
func (m *EndpointSpec) Copy() *EndpointSpec { |
1010 | 995 |
if m == nil { |
1011 | 996 |
return nil |
... | ... |
@@ -1395,20 +1330,6 @@ func (m *TaskSpec_Attachment) MarshalTo(dAtA []byte) (int, error) { |
1395 | 1395 |
} |
1396 | 1396 |
return i, nil |
1397 | 1397 |
} |
1398 |
-func (m *TaskSpec_Plugin) MarshalTo(dAtA []byte) (int, error) { |
|
1399 |
- i := 0 |
|
1400 |
- if m.Plugin != nil { |
|
1401 |
- dAtA[i] = 0x52 |
|
1402 |
- i++ |
|
1403 |
- i = encodeVarintSpecs(dAtA, i, uint64(m.Plugin.Size())) |
|
1404 |
- n17, err := m.Plugin.MarshalTo(dAtA[i:]) |
|
1405 |
- if err != nil { |
|
1406 |
- return 0, err |
|
1407 |
- } |
|
1408 |
- i += n17 |
|
1409 |
- } |
|
1410 |
- return i, nil |
|
1411 |
-} |
|
1412 | 1398 |
func (m *NetworkAttachmentSpec) Marshal() (dAtA []byte, err error) { |
1413 | 1399 |
size := m.Size() |
1414 | 1400 |
dAtA = make([]byte, size) |
... | ... |
@@ -1544,21 +1465,21 @@ func (m *ContainerSpec) MarshalTo(dAtA []byte) (int, error) { |
1544 | 1544 |
dAtA[i] = 0x4a |
1545 | 1545 |
i++ |
1546 | 1546 |
i = encodeVarintSpecs(dAtA, i, uint64(m.StopGracePeriod.Size())) |
1547 |
- n18, err := m.StopGracePeriod.MarshalTo(dAtA[i:]) |
|
1547 |
+ n17, err := m.StopGracePeriod.MarshalTo(dAtA[i:]) |
|
1548 | 1548 |
if err != nil { |
1549 | 1549 |
return 0, err |
1550 | 1550 |
} |
1551 |
- i += n18 |
|
1551 |
+ i += n17 |
|
1552 | 1552 |
} |
1553 | 1553 |
if m.PullOptions != nil { |
1554 | 1554 |
dAtA[i] = 0x52 |
1555 | 1555 |
i++ |
1556 | 1556 |
i = encodeVarintSpecs(dAtA, i, uint64(m.PullOptions.Size())) |
1557 |
- n19, err := m.PullOptions.MarshalTo(dAtA[i:]) |
|
1557 |
+ n18, err := m.PullOptions.MarshalTo(dAtA[i:]) |
|
1558 | 1558 |
if err != nil { |
1559 | 1559 |
return 0, err |
1560 | 1560 |
} |
1561 |
- i += n19 |
|
1561 |
+ i += n18 |
|
1562 | 1562 |
} |
1563 | 1563 |
if len(m.Groups) > 0 { |
1564 | 1564 |
for _, s := range m.Groups { |
... | ... |
@@ -1607,11 +1528,11 @@ func (m *ContainerSpec) MarshalTo(dAtA []byte) (int, error) { |
1607 | 1607 |
dAtA[i] = 0x7a |
1608 | 1608 |
i++ |
1609 | 1609 |
i = encodeVarintSpecs(dAtA, i, uint64(m.DNSConfig.Size())) |
1610 |
- n20, err := m.DNSConfig.MarshalTo(dAtA[i:]) |
|
1610 |
+ n19, err := m.DNSConfig.MarshalTo(dAtA[i:]) |
|
1611 | 1611 |
if err != nil { |
1612 | 1612 |
return 0, err |
1613 | 1613 |
} |
1614 |
- i += n20 |
|
1614 |
+ i += n19 |
|
1615 | 1615 |
} |
1616 | 1616 |
if m.Healthcheck != nil { |
1617 | 1617 |
dAtA[i] = 0x82 |
... | ... |
@@ -1619,11 +1540,11 @@ func (m *ContainerSpec) MarshalTo(dAtA []byte) (int, error) { |
1619 | 1619 |
dAtA[i] = 0x1 |
1620 | 1620 |
i++ |
1621 | 1621 |
i = encodeVarintSpecs(dAtA, i, uint64(m.Healthcheck.Size())) |
1622 |
- n21, err := m.Healthcheck.MarshalTo(dAtA[i:]) |
|
1622 |
+ n20, err := m.Healthcheck.MarshalTo(dAtA[i:]) |
|
1623 | 1623 |
if err != nil { |
1624 | 1624 |
return 0, err |
1625 | 1625 |
} |
1626 |
- i += n21 |
|
1626 |
+ i += n20 |
|
1627 | 1627 |
} |
1628 | 1628 |
if len(m.Hosts) > 0 { |
1629 | 1629 |
for _, s := range m.Hosts { |
... | ... |
@@ -1766,30 +1687,6 @@ func (m *ContainerSpec_DNSConfig) MarshalTo(dAtA []byte) (int, error) { |
1766 | 1766 |
return i, nil |
1767 | 1767 |
} |
1768 | 1768 |
|
1769 |
-func (m *PluginSpec) Marshal() (dAtA []byte, err error) { |
|
1770 |
- size := m.Size() |
|
1771 |
- dAtA = make([]byte, size) |
|
1772 |
- n, err := m.MarshalTo(dAtA) |
|
1773 |
- if err != nil { |
|
1774 |
- return nil, err |
|
1775 |
- } |
|
1776 |
- return dAtA[:n], nil |
|
1777 |
-} |
|
1778 |
- |
|
1779 |
-func (m *PluginSpec) MarshalTo(dAtA []byte) (int, error) { |
|
1780 |
- var i int |
|
1781 |
- _ = i |
|
1782 |
- var l int |
|
1783 |
- _ = l |
|
1784 |
- if len(m.Image) > 0 { |
|
1785 |
- dAtA[i] = 0xa |
|
1786 |
- i++ |
|
1787 |
- i = encodeVarintSpecs(dAtA, i, uint64(len(m.Image))) |
|
1788 |
- i += copy(dAtA[i:], m.Image) |
|
1789 |
- } |
|
1790 |
- return i, nil |
|
1791 |
-} |
|
1792 |
- |
|
1793 | 1769 |
func (m *EndpointSpec) Marshal() (dAtA []byte, err error) { |
1794 | 1770 |
size := m.Size() |
1795 | 1771 |
dAtA = make([]byte, size) |
... | ... |
@@ -1843,20 +1740,20 @@ func (m *NetworkSpec) MarshalTo(dAtA []byte) (int, error) { |
1843 | 1843 |
dAtA[i] = 0xa |
1844 | 1844 |
i++ |
1845 | 1845 |
i = encodeVarintSpecs(dAtA, i, uint64(m.Annotations.Size())) |
1846 |
- n22, err := m.Annotations.MarshalTo(dAtA[i:]) |
|
1846 |
+ n21, err := m.Annotations.MarshalTo(dAtA[i:]) |
|
1847 | 1847 |
if err != nil { |
1848 | 1848 |
return 0, err |
1849 | 1849 |
} |
1850 |
- i += n22 |
|
1850 |
+ i += n21 |
|
1851 | 1851 |
if m.DriverConfig != nil { |
1852 | 1852 |
dAtA[i] = 0x12 |
1853 | 1853 |
i++ |
1854 | 1854 |
i = encodeVarintSpecs(dAtA, i, uint64(m.DriverConfig.Size())) |
1855 |
- n23, err := m.DriverConfig.MarshalTo(dAtA[i:]) |
|
1855 |
+ n22, err := m.DriverConfig.MarshalTo(dAtA[i:]) |
|
1856 | 1856 |
if err != nil { |
1857 | 1857 |
return 0, err |
1858 | 1858 |
} |
1859 |
- i += n23 |
|
1859 |
+ i += n22 |
|
1860 | 1860 |
} |
1861 | 1861 |
if m.Ipv6Enabled { |
1862 | 1862 |
dAtA[i] = 0x18 |
... | ... |
@@ -1882,11 +1779,11 @@ func (m *NetworkSpec) MarshalTo(dAtA []byte) (int, error) { |
1882 | 1882 |
dAtA[i] = 0x2a |
1883 | 1883 |
i++ |
1884 | 1884 |
i = encodeVarintSpecs(dAtA, i, uint64(m.IPAM.Size())) |
1885 |
- n24, err := m.IPAM.MarshalTo(dAtA[i:]) |
|
1885 |
+ n23, err := m.IPAM.MarshalTo(dAtA[i:]) |
|
1886 | 1886 |
if err != nil { |
1887 | 1887 |
return 0, err |
1888 | 1888 |
} |
1889 |
- i += n24 |
|
1889 |
+ i += n23 |
|
1890 | 1890 |
} |
1891 | 1891 |
if m.Attachable { |
1892 | 1892 |
dAtA[i] = 0x30 |
... | ... |
@@ -1919,67 +1816,67 @@ func (m *ClusterSpec) MarshalTo(dAtA []byte) (int, error) { |
1919 | 1919 |
dAtA[i] = 0xa |
1920 | 1920 |
i++ |
1921 | 1921 |
i = encodeVarintSpecs(dAtA, i, uint64(m.Annotations.Size())) |
1922 |
- n25, err := m.Annotations.MarshalTo(dAtA[i:]) |
|
1922 |
+ n24, err := m.Annotations.MarshalTo(dAtA[i:]) |
|
1923 | 1923 |
if err != nil { |
1924 | 1924 |
return 0, err |
1925 | 1925 |
} |
1926 |
- i += n25 |
|
1926 |
+ i += n24 |
|
1927 | 1927 |
dAtA[i] = 0x12 |
1928 | 1928 |
i++ |
1929 | 1929 |
i = encodeVarintSpecs(dAtA, i, uint64(m.AcceptancePolicy.Size())) |
1930 |
- n26, err := m.AcceptancePolicy.MarshalTo(dAtA[i:]) |
|
1930 |
+ n25, err := m.AcceptancePolicy.MarshalTo(dAtA[i:]) |
|
1931 | 1931 |
if err != nil { |
1932 | 1932 |
return 0, err |
1933 | 1933 |
} |
1934 |
- i += n26 |
|
1934 |
+ i += n25 |
|
1935 | 1935 |
dAtA[i] = 0x1a |
1936 | 1936 |
i++ |
1937 | 1937 |
i = encodeVarintSpecs(dAtA, i, uint64(m.Orchestration.Size())) |
1938 |
- n27, err := m.Orchestration.MarshalTo(dAtA[i:]) |
|
1938 |
+ n26, err := m.Orchestration.MarshalTo(dAtA[i:]) |
|
1939 | 1939 |
if err != nil { |
1940 | 1940 |
return 0, err |
1941 | 1941 |
} |
1942 |
- i += n27 |
|
1942 |
+ i += n26 |
|
1943 | 1943 |
dAtA[i] = 0x22 |
1944 | 1944 |
i++ |
1945 | 1945 |
i = encodeVarintSpecs(dAtA, i, uint64(m.Raft.Size())) |
1946 |
- n28, err := m.Raft.MarshalTo(dAtA[i:]) |
|
1946 |
+ n27, err := m.Raft.MarshalTo(dAtA[i:]) |
|
1947 | 1947 |
if err != nil { |
1948 | 1948 |
return 0, err |
1949 | 1949 |
} |
1950 |
- i += n28 |
|
1950 |
+ i += n27 |
|
1951 | 1951 |
dAtA[i] = 0x2a |
1952 | 1952 |
i++ |
1953 | 1953 |
i = encodeVarintSpecs(dAtA, i, uint64(m.Dispatcher.Size())) |
1954 |
- n29, err := m.Dispatcher.MarshalTo(dAtA[i:]) |
|
1954 |
+ n28, err := m.Dispatcher.MarshalTo(dAtA[i:]) |
|
1955 | 1955 |
if err != nil { |
1956 | 1956 |
return 0, err |
1957 | 1957 |
} |
1958 |
- i += n29 |
|
1958 |
+ i += n28 |
|
1959 | 1959 |
dAtA[i] = 0x32 |
1960 | 1960 |
i++ |
1961 | 1961 |
i = encodeVarintSpecs(dAtA, i, uint64(m.CAConfig.Size())) |
1962 |
- n30, err := m.CAConfig.MarshalTo(dAtA[i:]) |
|
1962 |
+ n29, err := m.CAConfig.MarshalTo(dAtA[i:]) |
|
1963 | 1963 |
if err != nil { |
1964 | 1964 |
return 0, err |
1965 | 1965 |
} |
1966 |
- i += n30 |
|
1966 |
+ i += n29 |
|
1967 | 1967 |
dAtA[i] = 0x3a |
1968 | 1968 |
i++ |
1969 | 1969 |
i = encodeVarintSpecs(dAtA, i, uint64(m.TaskDefaults.Size())) |
1970 |
- n31, err := m.TaskDefaults.MarshalTo(dAtA[i:]) |
|
1970 |
+ n30, err := m.TaskDefaults.MarshalTo(dAtA[i:]) |
|
1971 | 1971 |
if err != nil { |
1972 | 1972 |
return 0, err |
1973 | 1973 |
} |
1974 |
- i += n31 |
|
1974 |
+ i += n30 |
|
1975 | 1975 |
dAtA[i] = 0x42 |
1976 | 1976 |
i++ |
1977 | 1977 |
i = encodeVarintSpecs(dAtA, i, uint64(m.EncryptionConfig.Size())) |
1978 |
- n32, err := m.EncryptionConfig.MarshalTo(dAtA[i:]) |
|
1978 |
+ n31, err := m.EncryptionConfig.MarshalTo(dAtA[i:]) |
|
1979 | 1979 |
if err != nil { |
1980 | 1980 |
return 0, err |
1981 | 1981 |
} |
1982 |
- i += n32 |
|
1982 |
+ i += n31 |
|
1983 | 1983 |
return i, nil |
1984 | 1984 |
} |
1985 | 1985 |
|
... | ... |
@@ -2001,11 +1898,11 @@ func (m *SecretSpec) MarshalTo(dAtA []byte) (int, error) { |
2001 | 2001 |
dAtA[i] = 0xa |
2002 | 2002 |
i++ |
2003 | 2003 |
i = encodeVarintSpecs(dAtA, i, uint64(m.Annotations.Size())) |
2004 |
- n33, err := m.Annotations.MarshalTo(dAtA[i:]) |
|
2004 |
+ n32, err := m.Annotations.MarshalTo(dAtA[i:]) |
|
2005 | 2005 |
if err != nil { |
2006 | 2006 |
return 0, err |
2007 | 2007 |
} |
2008 |
- i += n33 |
|
2008 |
+ i += n32 |
|
2009 | 2009 |
if len(m.Data) > 0 { |
2010 | 2010 |
dAtA[i] = 0x12 |
2011 | 2011 |
i++ |
... | ... |
@@ -2176,15 +2073,6 @@ func (m *TaskSpec_Attachment) Size() (n int) { |
2176 | 2176 |
} |
2177 | 2177 |
return n |
2178 | 2178 |
} |
2179 |
-func (m *TaskSpec_Plugin) Size() (n int) { |
|
2180 |
- var l int |
|
2181 |
- _ = l |
|
2182 |
- if m.Plugin != nil { |
|
2183 |
- l = m.Plugin.Size() |
|
2184 |
- n += 1 + l + sovSpecs(uint64(l)) |
|
2185 |
- } |
|
2186 |
- return n |
|
2187 |
-} |
|
2188 | 2179 |
func (m *NetworkAttachmentSpec) Size() (n int) { |
2189 | 2180 |
var l int |
2190 | 2181 |
_ = l |
... | ... |
@@ -2330,16 +2218,6 @@ func (m *ContainerSpec_DNSConfig) Size() (n int) { |
2330 | 2330 |
return n |
2331 | 2331 |
} |
2332 | 2332 |
|
2333 |
-func (m *PluginSpec) Size() (n int) { |
|
2334 |
- var l int |
|
2335 |
- _ = l |
|
2336 |
- l = len(m.Image) |
|
2337 |
- if l > 0 { |
|
2338 |
- n += 1 + l + sovSpecs(uint64(l)) |
|
2339 |
- } |
|
2340 |
- return n |
|
2341 |
-} |
|
2342 |
- |
|
2343 | 2333 |
func (m *EndpointSpec) Size() (n int) { |
2344 | 2334 |
var l int |
2345 | 2335 |
_ = l |
... | ... |
@@ -2531,16 +2409,6 @@ func (this *TaskSpec_Attachment) String() string { |
2531 | 2531 |
}, "") |
2532 | 2532 |
return s |
2533 | 2533 |
} |
2534 |
-func (this *TaskSpec_Plugin) String() string { |
|
2535 |
- if this == nil { |
|
2536 |
- return "nil" |
|
2537 |
- } |
|
2538 |
- s := strings.Join([]string{`&TaskSpec_Plugin{`, |
|
2539 |
- `Plugin:` + strings.Replace(fmt.Sprintf("%v", this.Plugin), "PluginSpec", "PluginSpec", 1) + `,`, |
|
2540 |
- `}`, |
|
2541 |
- }, "") |
|
2542 |
- return s |
|
2543 |
-} |
|
2544 | 2534 |
func (this *NetworkAttachmentSpec) String() string { |
2545 | 2535 |
if this == nil { |
2546 | 2536 |
return "nil" |
... | ... |
@@ -2612,16 +2480,6 @@ func (this *ContainerSpec_DNSConfig) String() string { |
2612 | 2612 |
}, "") |
2613 | 2613 |
return s |
2614 | 2614 |
} |
2615 |
-func (this *PluginSpec) String() string { |
|
2616 |
- if this == nil { |
|
2617 |
- return "nil" |
|
2618 |
- } |
|
2619 |
- s := strings.Join([]string{`&PluginSpec{`, |
|
2620 |
- `Image:` + fmt.Sprintf("%v", this.Image) + `,`, |
|
2621 |
- `}`, |
|
2622 |
- }, "") |
|
2623 |
- return s |
|
2624 |
-} |
|
2625 | 2615 |
func (this *EndpointSpec) String() string { |
2626 | 2616 |
if this == nil { |
2627 | 2617 |
return "nil" |
... | ... |
@@ -3519,38 +3377,6 @@ func (m *TaskSpec) Unmarshal(dAtA []byte) error { |
3519 | 3519 |
break |
3520 | 3520 |
} |
3521 | 3521 |
} |
3522 |
- case 10: |
|
3523 |
- if wireType != 2 { |
|
3524 |
- return fmt.Errorf("proto: wrong wireType = %d for field Plugin", wireType) |
|
3525 |
- } |
|
3526 |
- var msglen int |
|
3527 |
- for shift := uint(0); ; shift += 7 { |
|
3528 |
- if shift >= 64 { |
|
3529 |
- return ErrIntOverflowSpecs |
|
3530 |
- } |
|
3531 |
- if iNdEx >= l { |
|
3532 |
- return io.ErrUnexpectedEOF |
|
3533 |
- } |
|
3534 |
- b := dAtA[iNdEx] |
|
3535 |
- iNdEx++ |
|
3536 |
- msglen |= (int(b) & 0x7F) << shift |
|
3537 |
- if b < 0x80 { |
|
3538 |
- break |
|
3539 |
- } |
|
3540 |
- } |
|
3541 |
- if msglen < 0 { |
|
3542 |
- return ErrInvalidLengthSpecs |
|
3543 |
- } |
|
3544 |
- postIndex := iNdEx + msglen |
|
3545 |
- if postIndex > l { |
|
3546 |
- return io.ErrUnexpectedEOF |
|
3547 |
- } |
|
3548 |
- v := &PluginSpec{} |
|
3549 |
- if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { |
|
3550 |
- return err |
|
3551 |
- } |
|
3552 |
- m.Runtime = &TaskSpec_Plugin{v} |
|
3553 |
- iNdEx = postIndex |
|
3554 | 3522 |
default: |
3555 | 3523 |
iNdEx = preIndex |
3556 | 3524 |
skippy, err := skipSpecs(dAtA[iNdEx:]) |
... | ... |
@@ -4577,85 +4403,6 @@ func (m *ContainerSpec_DNSConfig) Unmarshal(dAtA []byte) error { |
4577 | 4577 |
} |
4578 | 4578 |
return nil |
4579 | 4579 |
} |
4580 |
-func (m *PluginSpec) Unmarshal(dAtA []byte) error { |
|
4581 |
- l := len(dAtA) |
|
4582 |
- iNdEx := 0 |
|
4583 |
- for iNdEx < l { |
|
4584 |
- preIndex := iNdEx |
|
4585 |
- var wire uint64 |
|
4586 |
- for shift := uint(0); ; shift += 7 { |
|
4587 |
- if shift >= 64 { |
|
4588 |
- return ErrIntOverflowSpecs |
|
4589 |
- } |
|
4590 |
- if iNdEx >= l { |
|
4591 |
- return io.ErrUnexpectedEOF |
|
4592 |
- } |
|
4593 |
- b := dAtA[iNdEx] |
|
4594 |
- iNdEx++ |
|
4595 |
- wire |= (uint64(b) & 0x7F) << shift |
|
4596 |
- if b < 0x80 { |
|
4597 |
- break |
|
4598 |
- } |
|
4599 |
- } |
|
4600 |
- fieldNum := int32(wire >> 3) |
|
4601 |
- wireType := int(wire & 0x7) |
|
4602 |
- if wireType == 4 { |
|
4603 |
- return fmt.Errorf("proto: PluginSpec: wiretype end group for non-group") |
|
4604 |
- } |
|
4605 |
- if fieldNum <= 0 { |
|
4606 |
- return fmt.Errorf("proto: PluginSpec: illegal tag %d (wire type %d)", fieldNum, wire) |
|
4607 |
- } |
|
4608 |
- switch fieldNum { |
|
4609 |
- case 1: |
|
4610 |
- if wireType != 2 { |
|
4611 |
- return fmt.Errorf("proto: wrong wireType = %d for field Image", wireType) |
|
4612 |
- } |
|
4613 |
- var stringLen uint64 |
|
4614 |
- for shift := uint(0); ; shift += 7 { |
|
4615 |
- if shift >= 64 { |
|
4616 |
- return ErrIntOverflowSpecs |
|
4617 |
- } |
|
4618 |
- if iNdEx >= l { |
|
4619 |
- return io.ErrUnexpectedEOF |
|
4620 |
- } |
|
4621 |
- b := dAtA[iNdEx] |
|
4622 |
- iNdEx++ |
|
4623 |
- stringLen |= (uint64(b) & 0x7F) << shift |
|
4624 |
- if b < 0x80 { |
|
4625 |
- break |
|
4626 |
- } |
|
4627 |
- } |
|
4628 |
- intStringLen := int(stringLen) |
|
4629 |
- if intStringLen < 0 { |
|
4630 |
- return ErrInvalidLengthSpecs |
|
4631 |
- } |
|
4632 |
- postIndex := iNdEx + intStringLen |
|
4633 |
- if postIndex > l { |
|
4634 |
- return io.ErrUnexpectedEOF |
|
4635 |
- } |
|
4636 |
- m.Image = string(dAtA[iNdEx:postIndex]) |
|
4637 |
- iNdEx = postIndex |
|
4638 |
- default: |
|
4639 |
- iNdEx = preIndex |
|
4640 |
- skippy, err := skipSpecs(dAtA[iNdEx:]) |
|
4641 |
- if err != nil { |
|
4642 |
- return err |
|
4643 |
- } |
|
4644 |
- if skippy < 0 { |
|
4645 |
- return ErrInvalidLengthSpecs |
|
4646 |
- } |
|
4647 |
- if (iNdEx + skippy) > l { |
|
4648 |
- return io.ErrUnexpectedEOF |
|
4649 |
- } |
|
4650 |
- iNdEx += skippy |
|
4651 |
- } |
|
4652 |
- } |
|
4653 |
- |
|
4654 |
- if iNdEx > l { |
|
4655 |
- return io.ErrUnexpectedEOF |
|
4656 |
- } |
|
4657 |
- return nil |
|
4658 |
-} |
|
4659 | 4580 |
func (m *EndpointSpec) Unmarshal(dAtA []byte) error { |
4660 | 4581 |
l := len(dAtA) |
4661 | 4582 |
iNdEx := 0 |
... | ... |
@@ -5471,114 +5218,112 @@ var ( |
5471 | 5471 |
func init() { proto.RegisterFile("specs.proto", fileDescriptorSpecs) } |
5472 | 5472 |
|
5473 | 5473 |
var fileDescriptorSpecs = []byte{ |
5474 |
- // 1730 bytes of a gzipped FileDescriptorProto |
|
5474 |
+ // 1707 bytes of a gzipped FileDescriptorProto |
|
5475 | 5475 |
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xac, 0x57, 0x41, 0x73, 0x1b, 0xb7, |
5476 |
- 0x15, 0x26, 0x25, 0x8a, 0x5a, 0xbe, 0xa5, 0x6c, 0x0a, 0x4d, 0xd2, 0x35, 0xdd, 0x90, 0x34, 0xe3, |
|
5476 |
+ 0x15, 0x26, 0x25, 0x8a, 0x5a, 0xbe, 0xa5, 0x6c, 0x1a, 0x75, 0xd2, 0x35, 0xdd, 0x90, 0x34, 0xe3, |
|
5477 | 5477 |
0xa6, 0x4a, 0x33, 0xa5, 0xa6, 0x6a, 0x27, 0x75, 0xea, 0x66, 0x5a, 0x52, 0x64, 0x65, 0x55, 0x95, |
5478 | 5478 |
0xcc, 0x01, 0x15, 0x77, 0x7c, 0xe2, 0x80, 0xbb, 0x10, 0xb9, 0xa3, 0xe5, 0x62, 0x0b, 0x60, 0x99, |
5479 |
- 0xe1, 0xad, 0xc7, 0x8c, 0xcf, 0xbd, 0x6a, 0x7a, 0xe8, 0x6f, 0xe8, 0x7f, 0xf0, 0xb1, 0xc7, 0x9e, |
|
5480 |
- 0x34, 0x0d, 0xff, 0x42, 0x7f, 0x40, 0x3b, 0xc0, 0x82, 0xe4, 0x32, 0x59, 0xc5, 0x9e, 0xa9, 0x6f, |
|
5481 |
- 0xc0, 0xdb, 0xef, 0x7b, 0x78, 0x78, 0xf8, 0xf0, 0xf0, 0x16, 0x6c, 0x11, 0x51, 0x57, 0xb4, 0x22, |
|
5482 |
- 0xce, 0x24, 0x43, 0xc8, 0x63, 0xee, 0x35, 0xe5, 0x2d, 0xf1, 0x15, 0xe1, 0xd3, 0x6b, 0x5f, 0xb6, |
|
5483 |
- 0x66, 0x3f, 0xaf, 0xda, 0x72, 0x1e, 0x51, 0x03, 0xa8, 0xbe, 0x37, 0x66, 0x63, 0xa6, 0x87, 0x87, |
|
5484 |
- 0x6a, 0x64, 0xac, 0xb5, 0x31, 0x63, 0xe3, 0x80, 0x1e, 0xea, 0xd9, 0x28, 0xbe, 0x3a, 0xf4, 0x62, |
|
5485 |
- 0x4e, 0xa4, 0xcf, 0xc2, 0xe4, 0x7b, 0xf3, 0xa6, 0x00, 0xd6, 0x05, 0xf3, 0xe8, 0x20, 0xa2, 0x2e, |
|
5486 |
- 0x3a, 0x01, 0x9b, 0x84, 0x21, 0x93, 0x1a, 0x20, 0x9c, 0x7c, 0x23, 0x7f, 0x60, 0x1f, 0xd5, 0x5b, |
|
5487 |
- 0xdf, 0x5d, 0xb9, 0xd5, 0x5e, 0xc3, 0x3a, 0x85, 0xd7, 0xb7, 0xf5, 0x1c, 0x4e, 0x33, 0xd1, 0x6f, |
|
5488 |
- 0xa1, 0xec, 0x51, 0xe1, 0x73, 0xea, 0x0d, 0x39, 0x0b, 0xa8, 0xb3, 0xd5, 0xc8, 0x1f, 0xdc, 0x3b, |
|
5489 |
- 0xfa, 0x51, 0x96, 0x27, 0xb5, 0x38, 0x66, 0x01, 0xc5, 0xb6, 0x61, 0xa8, 0x09, 0x3a, 0x01, 0x98, |
|
5490 |
- 0xd2, 0xe9, 0x88, 0x72, 0x31, 0xf1, 0x23, 0x67, 0x5b, 0xd3, 0x7f, 0x72, 0x17, 0x5d, 0xc5, 0xde, |
|
5491 |
- 0x3a, 0x5f, 0xc1, 0x71, 0x8a, 0x8a, 0xce, 0xa1, 0x4c, 0x66, 0xc4, 0x0f, 0xc8, 0xc8, 0x0f, 0x7c, |
|
5492 |
- 0x39, 0x77, 0x0a, 0xda, 0xd5, 0x27, 0xdf, 0xeb, 0xaa, 0x9d, 0x22, 0xe0, 0x0d, 0x7a, 0xd3, 0x03, |
|
5493 |
- 0x58, 0x2f, 0x84, 0x3e, 0x86, 0xdd, 0x7e, 0xef, 0xa2, 0x7b, 0x7a, 0x71, 0x52, 0xc9, 0x55, 0x1f, |
|
5494 |
- 0xbc, 0xba, 0x69, 0xbc, 0xaf, 0x7c, 0xac, 0x01, 0x7d, 0x1a, 0x7a, 0x7e, 0x38, 0x46, 0x07, 0x60, |
|
5495 |
- 0xb5, 0x8f, 0x8f, 0x7b, 0xfd, 0xcb, 0x5e, 0xb7, 0x92, 0xaf, 0x56, 0x5f, 0xdd, 0x34, 0x3e, 0xd8, |
|
5496 |
- 0x04, 0xb6, 0x5d, 0x97, 0x46, 0x92, 0x7a, 0xd5, 0xc2, 0xd7, 0x7f, 0xaf, 0xe5, 0x9a, 0x5f, 0xe7, |
|
5497 |
- 0xa1, 0x9c, 0x0e, 0x02, 0x7d, 0x0c, 0xc5, 0xf6, 0xf1, 0xe5, 0xe9, 0x8b, 0x5e, 0x25, 0xb7, 0xa6, |
|
5498 |
- 0xa7, 0x11, 0x6d, 0x57, 0xfa, 0x33, 0x8a, 0x1e, 0xc3, 0x4e, 0xbf, 0xfd, 0xe5, 0xa0, 0x57, 0xc9, |
|
5499 |
- 0xaf, 0xc3, 0x49, 0xc3, 0xfa, 0x24, 0x16, 0x1a, 0xd5, 0xc5, 0xed, 0xd3, 0x8b, 0xca, 0x56, 0x36, |
|
5500 |
- 0xaa, 0xcb, 0x89, 0x1f, 0x9a, 0x50, 0xfe, 0x56, 0x00, 0x7b, 0x40, 0xf9, 0xcc, 0x77, 0xdf, 0xb1, |
|
5501 |
- 0x44, 0x3e, 0x83, 0x82, 0x24, 0xe2, 0x5a, 0x4b, 0xc3, 0xce, 0x96, 0xc6, 0x25, 0x11, 0xd7, 0x6a, |
|
5502 |
- 0x51, 0x43, 0xd7, 0x78, 0xa5, 0x0c, 0x4e, 0xa3, 0xc0, 0x77, 0x89, 0xa4, 0x9e, 0x56, 0x86, 0x7d, |
|
5503 |
- 0xf4, 0xe3, 0x2c, 0x36, 0x5e, 0xa1, 0x4c, 0xfc, 0xcf, 0x72, 0x38, 0x45, 0x45, 0x4f, 0xa1, 0x38, |
|
5504 |
- 0x0e, 0xd8, 0x88, 0x04, 0x5a, 0x13, 0xf6, 0xd1, 0xa3, 0x2c, 0x27, 0x27, 0x1a, 0xb1, 0x76, 0x60, |
|
5505 |
- 0x28, 0xe8, 0x09, 0x14, 0xe3, 0xc8, 0x23, 0x92, 0x3a, 0x45, 0x4d, 0x6e, 0x64, 0x91, 0xbf, 0xd4, |
|
5506 |
- 0x88, 0x63, 0x16, 0x5e, 0xf9, 0x63, 0x6c, 0xf0, 0xe8, 0x0c, 0xac, 0x90, 0xca, 0xaf, 0x18, 0xbf, |
|
5507 |
- 0x16, 0xce, 0x6e, 0x63, 0xfb, 0xc0, 0x3e, 0xfa, 0x34, 0x53, 0x8c, 0x09, 0xa6, 0x2d, 0x25, 0x71, |
|
5508 |
- 0x27, 0x53, 0x1a, 0xca, 0xc4, 0x4d, 0x67, 0xcb, 0xc9, 0xe3, 0x95, 0x03, 0xf4, 0x1b, 0xb0, 0x68, |
|
5509 |
- 0xe8, 0x45, 0xcc, 0x0f, 0xa5, 0x63, 0xdd, 0x1d, 0x48, 0xcf, 0x60, 0x54, 0x32, 0xf1, 0x8a, 0xa1, |
|
5510 |
- 0xd8, 0x9c, 0x05, 0xc1, 0x88, 0xb8, 0xd7, 0x4e, 0xe9, 0x2d, 0xb7, 0xb1, 0x62, 0x74, 0x8a, 0x50, |
|
5511 |
- 0x98, 0x32, 0x8f, 0x36, 0x0f, 0x61, 0xff, 0x3b, 0xa9, 0x46, 0x55, 0xb0, 0x4c, 0xaa, 0x13, 0x8d, |
|
5512 |
- 0x14, 0xf0, 0x6a, 0xde, 0xbc, 0x0f, 0x7b, 0x1b, 0x69, 0x6d, 0xbe, 0x2e, 0x80, 0xb5, 0x3c, 0x6b, |
|
5513 |
- 0xd4, 0x86, 0x92, 0xcb, 0x42, 0x49, 0xfc, 0x90, 0x72, 0x23, 0xaf, 0xcc, 0x93, 0x39, 0x5e, 0x82, |
|
5514 |
- 0x14, 0xeb, 0x59, 0x0e, 0xaf, 0x59, 0xe8, 0xf7, 0x50, 0xe2, 0x54, 0xb0, 0x98, 0xbb, 0x54, 0x18, |
|
5515 |
- 0x7d, 0x1d, 0x64, 0x2b, 0x24, 0x01, 0x61, 0xfa, 0xe7, 0xd8, 0xe7, 0x54, 0x65, 0x59, 0xe0, 0x35, |
|
5516 |
- 0x15, 0x3d, 0x85, 0x5d, 0x4e, 0x85, 0x24, 0x5c, 0x7e, 0x9f, 0x44, 0x70, 0x02, 0xe9, 0xb3, 0xc0, |
|
5517 |
- 0x77, 0xe7, 0x78, 0xc9, 0x40, 0x4f, 0xa1, 0x14, 0x05, 0xc4, 0xd5, 0x5e, 0x9d, 0x1d, 0x4d, 0xff, |
|
5518 |
- 0x30, 0x8b, 0xde, 0x5f, 0x82, 0xf0, 0x1a, 0x8f, 0x3e, 0x07, 0x08, 0xd8, 0x78, 0xe8, 0x71, 0x7f, |
|
5519 |
- 0x46, 0xb9, 0x91, 0x58, 0x35, 0x8b, 0xdd, 0xd5, 0x08, 0x5c, 0x0a, 0xd8, 0x38, 0x19, 0xa2, 0x93, |
|
5520 |
- 0xff, 0x4b, 0x5f, 0x29, 0x6d, 0x9d, 0x01, 0x90, 0xd5, 0x57, 0xa3, 0xae, 0x4f, 0xde, 0xca, 0x95, |
|
5521 |
- 0x39, 0x91, 0x14, 0x1d, 0x3d, 0x82, 0xf2, 0x15, 0xe3, 0x2e, 0x1d, 0x9a, 0x5b, 0x53, 0xd2, 0x9a, |
|
5522 |
- 0xb0, 0xb5, 0x2d, 0xd1, 0x97, 0xba, 0x52, 0x51, 0x10, 0x8f, 0xfd, 0xd0, 0x01, 0xbd, 0x56, 0x2d, |
|
5523 |
- 0x3b, 0x5b, 0x0a, 0x61, 0x16, 0x30, 0xf8, 0x4e, 0x09, 0x76, 0x79, 0x1c, 0x4a, 0x7f, 0x4a, 0x9b, |
|
5524 |
- 0x67, 0xf0, 0x7e, 0x66, 0x38, 0xe8, 0x08, 0xca, 0x2b, 0x81, 0x0c, 0x7d, 0x4f, 0x2b, 0xab, 0xd4, |
|
5525 |
- 0xb9, 0xbf, 0xb8, 0xad, 0xdb, 0x2b, 0x25, 0x9d, 0x76, 0xb1, 0xbd, 0x02, 0x9d, 0x7a, 0xcd, 0xbf, |
|
5526 |
- 0x5a, 0xb0, 0xb7, 0x21, 0x33, 0xf4, 0x1e, 0xec, 0xf8, 0x53, 0x32, 0xa6, 0x09, 0x1d, 0x27, 0x13, |
|
5527 |
- 0xd4, 0x83, 0x62, 0x40, 0x46, 0x34, 0x50, 0x62, 0x53, 0x09, 0xff, 0xd9, 0x1b, 0xf5, 0xda, 0xfa, |
|
5528 |
- 0xa3, 0xc6, 0xf7, 0x42, 0xc9, 0xe7, 0xd8, 0x90, 0x91, 0x03, 0xbb, 0x2e, 0x9b, 0x4e, 0x49, 0xa8, |
|
5529 |
- 0xca, 0xda, 0xf6, 0x41, 0x09, 0x2f, 0xa7, 0x08, 0x41, 0x81, 0xf0, 0xb1, 0x70, 0x0a, 0xda, 0xac, |
|
5530 |
- 0xc7, 0xa8, 0x02, 0xdb, 0x34, 0x9c, 0x39, 0x3b, 0xda, 0xa4, 0x86, 0xca, 0xe2, 0xf9, 0x89, 0x5a, |
|
5531 |
- 0x4a, 0x58, 0x0d, 0x15, 0x2f, 0x16, 0x94, 0x3b, 0xbb, 0xda, 0xa4, 0xc7, 0xe8, 0x57, 0x50, 0x9c, |
|
5532 |
- 0xb2, 0x38, 0x94, 0xc2, 0xb1, 0x74, 0xb0, 0x0f, 0xb2, 0x82, 0x3d, 0x57, 0x08, 0x53, 0x76, 0x0d, |
|
5533 |
- 0x1c, 0xf5, 0x60, 0x5f, 0x48, 0x16, 0x0d, 0xc7, 0x9c, 0xb8, 0x74, 0x18, 0x51, 0xee, 0x33, 0xcf, |
|
5534 |
- 0x94, 0x8d, 0x07, 0xad, 0xa4, 0xcb, 0x68, 0x2d, 0xbb, 0x8c, 0x56, 0xd7, 0x74, 0x19, 0xf8, 0xbe, |
|
5535 |
- 0xe2, 0x9c, 0x28, 0x4a, 0x5f, 0x33, 0x50, 0x1f, 0xca, 0x51, 0x1c, 0x04, 0x43, 0x16, 0x25, 0x2f, |
|
5536 |
- 0x48, 0x72, 0xd8, 0x6f, 0x91, 0xb2, 0x7e, 0x1c, 0x04, 0xcf, 0x13, 0x12, 0xb6, 0xa3, 0xf5, 0x04, |
|
5537 |
- 0x7d, 0x00, 0xc5, 0x31, 0x67, 0x71, 0x24, 0x1c, 0x5b, 0x27, 0xc3, 0xcc, 0xd0, 0x17, 0xb0, 0x2b, |
|
5538 |
- 0xa8, 0xcb, 0xa9, 0x14, 0x4e, 0x59, 0x6f, 0xf5, 0xa3, 0xac, 0x45, 0x06, 0x1a, 0x82, 0xe9, 0x15, |
|
5539 |
- 0xe5, 0x34, 0x74, 0x29, 0x5e, 0x72, 0xd0, 0x03, 0xd8, 0x96, 0x72, 0xee, 0xec, 0x35, 0xf2, 0x07, |
|
5540 |
- 0x56, 0x67, 0x77, 0x71, 0x5b, 0xdf, 0xbe, 0xbc, 0x7c, 0x89, 0x95, 0x4d, 0x55, 0xb7, 0x09, 0x13, |
|
5541 |
- 0x32, 0x24, 0x53, 0xea, 0xdc, 0xd3, 0xb9, 0x5d, 0xcd, 0xd1, 0x4b, 0x00, 0x2f, 0x14, 0x43, 0x57, |
|
5542 |
- 0x5f, 0x27, 0xe7, 0xbe, 0xde, 0xdd, 0xa7, 0x6f, 0xde, 0x5d, 0xf7, 0x62, 0x60, 0x2a, 0xfc, 0xde, |
|
5543 |
- 0xe2, 0xb6, 0x5e, 0x5a, 0x4d, 0x71, 0xc9, 0x0b, 0x45, 0x32, 0x44, 0x1d, 0xb0, 0x27, 0x94, 0x04, |
|
5544 |
- 0x72, 0xe2, 0x4e, 0xa8, 0x7b, 0xed, 0x54, 0xee, 0x2e, 0xd9, 0xcf, 0x34, 0xcc, 0x78, 0x48, 0x93, |
|
5545 |
- 0x94, 0x82, 0x55, 0xa8, 0xc2, 0xd9, 0xd7, 0xb9, 0x4a, 0x26, 0xe8, 0x43, 0x00, 0x16, 0xd1, 0x70, |
|
5546 |
- 0x28, 0xa4, 0xe7, 0x87, 0x0e, 0x52, 0x5b, 0xc6, 0x25, 0x65, 0x19, 0x28, 0x03, 0x7a, 0xa8, 0x0a, |
|
5547 |
- 0x2a, 0xf1, 0x86, 0x2c, 0x0c, 0xe6, 0xce, 0x0f, 0xf4, 0x57, 0x4b, 0x19, 0x9e, 0x87, 0xc1, 0x1c, |
|
5548 |
- 0xd5, 0xc1, 0xd6, 0xba, 0x10, 0xfe, 0x38, 0x24, 0x81, 0xf3, 0x9e, 0xce, 0x07, 0x28, 0xd3, 0x40, |
|
5549 |
- 0x5b, 0xaa, 0x9f, 0x83, 0x9d, 0x92, 0xbb, 0x92, 0xe9, 0x35, 0x9d, 0x9b, 0x1b, 0xa4, 0x86, 0x2a, |
|
5550 |
- 0xa6, 0x19, 0x09, 0xe2, 0xa4, 0x4d, 0x2c, 0xe1, 0x64, 0xf2, 0xeb, 0xad, 0x27, 0xf9, 0xea, 0x11, |
|
5551 |
- 0xd8, 0xa9, 0x63, 0x47, 0x1f, 0xc1, 0x1e, 0xa7, 0x63, 0x5f, 0x48, 0x3e, 0x1f, 0x92, 0x58, 0x4e, |
|
5552 |
- 0x9c, 0xdf, 0x69, 0x42, 0x79, 0x69, 0x6c, 0xc7, 0x72, 0x52, 0x1d, 0xc2, 0x3a, 0x7b, 0xa8, 0x01, |
|
5553 |
- 0xb6, 0x3a, 0x15, 0x41, 0xf9, 0x8c, 0x72, 0xf5, 0x14, 0xa9, 0x4d, 0xa7, 0x4d, 0x4a, 0x3d, 0x82, |
|
5554 |
- 0x12, 0xee, 0x4e, 0xf4, 0xe5, 0x2d, 0x61, 0x33, 0x53, 0xb7, 0x71, 0x29, 0x51, 0x73, 0x1b, 0xcd, |
|
5555 |
- 0xb4, 0xd9, 0x04, 0x58, 0x97, 0xa1, 0xec, 0x92, 0xd0, 0xfc, 0x4f, 0x1e, 0xca, 0xe9, 0x57, 0x17, |
|
5556 |
- 0x1d, 0x27, 0xaf, 0xa5, 0x46, 0xdd, 0x3b, 0x3a, 0x7c, 0xd3, 0x2b, 0xad, 0xdf, 0xa6, 0x20, 0x56, |
|
5557 |
- 0x0b, 0x9e, 0xab, 0x06, 0x59, 0x93, 0xd1, 0x2f, 0x61, 0x27, 0x62, 0x5c, 0x2e, 0xeb, 0x4c, 0x76, |
|
5558 |
- 0x85, 0x64, 0x7c, 0x59, 0xcb, 0x13, 0x70, 0x73, 0x02, 0xf7, 0x36, 0xbd, 0xa1, 0xc7, 0xb0, 0xfd, |
|
5559 |
- 0xe2, 0xb4, 0x5f, 0xc9, 0x55, 0x1f, 0xbe, 0xba, 0x69, 0xfc, 0x70, 0xf3, 0xe3, 0x0b, 0x9f, 0xcb, |
|
5560 |
- 0x98, 0x04, 0xa7, 0x7d, 0xf4, 0x53, 0xd8, 0xe9, 0x5e, 0x0c, 0x30, 0xae, 0xe4, 0xab, 0xf5, 0x57, |
|
5561 |
- 0x37, 0x8d, 0x87, 0x9b, 0x38, 0xf5, 0x89, 0xc5, 0xa1, 0x87, 0xd9, 0x68, 0xd5, 0x2c, 0xfe, 0x63, |
|
5562 |
- 0x0b, 0x6c, 0x53, 0x7e, 0xdf, 0xf5, 0xff, 0xc4, 0x5e, 0xf2, 0x16, 0x2e, 0xef, 0xd5, 0xd6, 0x1b, |
|
5563 |
- 0x9f, 0xc4, 0x72, 0x42, 0x30, 0x3a, 0x78, 0x04, 0x65, 0x3f, 0x9a, 0x7d, 0x36, 0xa4, 0x21, 0x19, |
|
5564 |
- 0x05, 0xa6, 0x6f, 0xb4, 0xb0, 0xad, 0x6c, 0xbd, 0xc4, 0xa4, 0x2e, 0xb5, 0x1f, 0x4a, 0xca, 0x43, |
|
5565 |
- 0xd3, 0x11, 0x5a, 0x78, 0x35, 0x47, 0x5f, 0x40, 0xc1, 0x8f, 0xc8, 0xd4, 0xbc, 0xe3, 0x99, 0x3b, |
|
5566 |
- 0x38, 0xed, 0xb7, 0xcf, 0x8d, 0x4e, 0x3b, 0xd6, 0xe2, 0xb6, 0x5e, 0x50, 0x06, 0xac, 0x69, 0xa8, |
|
5567 |
- 0xb6, 0x7c, 0x4a, 0xd5, 0x4a, 0xba, 0x40, 0x5b, 0x38, 0x65, 0x69, 0xfe, 0xb7, 0x00, 0xf6, 0x71, |
|
5568 |
- 0x10, 0x0b, 0x69, 0x9e, 0x99, 0x77, 0x96, 0xb7, 0x97, 0xb0, 0x4f, 0xf4, 0xaf, 0x05, 0x09, 0x55, |
|
5569 |
- 0xcd, 0xd6, 0x2d, 0x8a, 0xc9, 0xdd, 0xe3, 0x4c, 0x77, 0x2b, 0x70, 0xd2, 0xce, 0x74, 0x8a, 0xca, |
|
5570 |
- 0xa7, 0x93, 0xc7, 0x15, 0xf2, 0xad, 0x2f, 0x68, 0x00, 0x7b, 0x8c, 0xbb, 0x13, 0x2a, 0x64, 0x52, |
|
5571 |
- 0xe9, 0x4d, 0x2b, 0x9e, 0xf9, 0x93, 0xf6, 0x3c, 0x0d, 0x34, 0x65, 0x2e, 0x89, 0x76, 0xd3, 0x07, |
|
5572 |
- 0x7a, 0x02, 0x05, 0x4e, 0xae, 0x96, 0xed, 0x56, 0xa6, 0xbe, 0x31, 0xb9, 0x92, 0x1b, 0x2e, 0x34, |
|
5573 |
- 0x03, 0xfd, 0x01, 0xc0, 0xf3, 0x45, 0x44, 0xa4, 0x3b, 0xa1, 0xdc, 0x9c, 0x53, 0xe6, 0x16, 0xbb, |
|
5574 |
- 0x2b, 0xd4, 0x86, 0x97, 0x14, 0x1b, 0x9d, 0x41, 0xc9, 0x25, 0x4b, 0xa5, 0x15, 0xef, 0xfe, 0x3f, |
|
5575 |
- 0x39, 0x6e, 0x1b, 0x17, 0x15, 0xe5, 0x62, 0x71, 0x5b, 0xb7, 0x96, 0x16, 0x6c, 0xb9, 0xc4, 0x28, |
|
5576 |
- 0xef, 0x0c, 0xf6, 0xd4, 0x7f, 0xcb, 0xd0, 0xa3, 0x57, 0x24, 0x0e, 0xa4, 0xd0, 0x8f, 0xf1, 0x1d, |
|
5577 |
- 0x65, 0x5b, 0x35, 0xc1, 0x5d, 0x83, 0x33, 0x71, 0x95, 0x65, 0xca, 0x86, 0xfe, 0x04, 0xfb, 0x34, |
|
5578 |
- 0x74, 0xf9, 0x5c, 0xeb, 0x6c, 0x19, 0xa1, 0x75, 0xf7, 0x66, 0x7b, 0x2b, 0xf0, 0xc6, 0x66, 0x2b, |
|
5579 |
- 0xf4, 0x5b, 0xf6, 0xa6, 0x0f, 0x90, 0x3c, 0x84, 0xef, 0x56, 0x7f, 0x08, 0x0a, 0x1e, 0x91, 0x44, |
|
5580 |
- 0x4b, 0xae, 0x8c, 0xf5, 0xb8, 0xe3, 0xbc, 0xfe, 0xa6, 0x96, 0xfb, 0xd7, 0x37, 0xb5, 0xdc, 0x5f, |
|
5581 |
- 0x16, 0xb5, 0xfc, 0xeb, 0x45, 0x2d, 0xff, 0xcf, 0x45, 0x2d, 0xff, 0xef, 0x45, 0x2d, 0x3f, 0x2a, |
|
5582 |
- 0xea, 0xf6, 0xe1, 0x17, 0xff, 0x0b, 0x00, 0x00, 0xff, 0xff, 0x91, 0xbf, 0x5e, 0xca, 0xf8, 0x10, |
|
5583 |
- 0x00, 0x00, |
|
5479 |
+ 0xe1, 0xad, 0xc7, 0x8c, 0x0f, 0x3d, 0xf5, 0xaa, 0xe9, 0xa1, 0xbf, 0xa1, 0xff, 0xc1, 0xc7, 0x1e, |
|
5480 |
+ 0x7b, 0xd2, 0x34, 0xfc, 0x0b, 0xfd, 0x01, 0xed, 0x00, 0x0b, 0x92, 0xcb, 0x64, 0x15, 0x7b, 0x26, |
|
5481 |
+ 0xbe, 0xe1, 0xbd, 0xfd, 0xbe, 0x07, 0xe0, 0xe1, 0xc3, 0xc3, 0x5b, 0xb0, 0x45, 0x44, 0x5d, 0xd1, |
|
5482 |
+ 0x8a, 0x38, 0x93, 0x0c, 0x21, 0x8f, 0xb9, 0x57, 0x94, 0xb7, 0xc4, 0x97, 0x84, 0x4f, 0xaf, 0x7c, |
|
5483 |
+ 0xd9, 0x9a, 0xfd, 0xbc, 0x6a, 0xcb, 0x79, 0x44, 0x0d, 0xa0, 0x7a, 0x7f, 0xcc, 0xc6, 0x4c, 0x0f, |
|
5484 |
+ 0x0f, 0xd4, 0xc8, 0x78, 0x6b, 0x63, 0xc6, 0xc6, 0x01, 0x3d, 0xd0, 0xd6, 0x28, 0xbe, 0x3c, 0xf0, |
|
5485 |
+ 0x62, 0x4e, 0xa4, 0xcf, 0xc2, 0xe4, 0x7b, 0xf3, 0xba, 0x00, 0xd6, 0x39, 0xf3, 0xe8, 0x20, 0xa2, |
|
5486 |
+ 0x2e, 0x3a, 0x06, 0x9b, 0x84, 0x21, 0x93, 0x1a, 0x20, 0x9c, 0x7c, 0x23, 0xbf, 0x6f, 0x1f, 0xd6, |
|
5487 |
+ 0x5b, 0xdf, 0x9e, 0xb9, 0xd5, 0x5e, 0xc3, 0x3a, 0x85, 0xd7, 0x37, 0xf5, 0x1c, 0x4e, 0x33, 0xd1, |
|
5488 |
+ 0x6f, 0xa1, 0xec, 0x51, 0xe1, 0x73, 0xea, 0x0d, 0x39, 0x0b, 0xa8, 0xb3, 0xd5, 0xc8, 0xef, 0xdf, |
|
5489 |
+ 0x39, 0xfc, 0x51, 0x56, 0x24, 0x35, 0x39, 0x66, 0x01, 0xc5, 0xb6, 0x61, 0x28, 0x03, 0x1d, 0x03, |
|
5490 |
+ 0x4c, 0xe9, 0x74, 0x44, 0xb9, 0x98, 0xf8, 0x91, 0xb3, 0xad, 0xe9, 0x3f, 0xb9, 0x8d, 0xae, 0xd6, |
|
5491 |
+ 0xde, 0x3a, 0x5b, 0xc1, 0x71, 0x8a, 0x8a, 0xce, 0xa0, 0x4c, 0x66, 0xc4, 0x0f, 0xc8, 0xc8, 0x0f, |
|
5492 |
+ 0x7c, 0x39, 0x77, 0x0a, 0x3a, 0xd4, 0xc7, 0xdf, 0x19, 0xaa, 0x9d, 0x22, 0xe0, 0x0d, 0x7a, 0xd3, |
|
5493 |
+ 0x03, 0x58, 0x4f, 0x84, 0x3e, 0x82, 0xdd, 0x7e, 0xef, 0xbc, 0x7b, 0x72, 0x7e, 0x5c, 0xc9, 0x55, |
|
5494 |
+ 0x1f, 0xbc, 0xba, 0x6e, 0xbc, 0xa7, 0x62, 0xac, 0x01, 0x7d, 0x1a, 0x7a, 0x7e, 0x38, 0x46, 0xfb, |
|
5495 |
+ 0x60, 0xb5, 0x8f, 0x8e, 0x7a, 0xfd, 0x8b, 0x5e, 0xb7, 0x92, 0xaf, 0x56, 0x5f, 0x5d, 0x37, 0xde, |
|
5496 |
+ 0xdf, 0x04, 0xb6, 0x5d, 0x97, 0x46, 0x92, 0x7a, 0xd5, 0xc2, 0x57, 0xff, 0xa8, 0xe5, 0x9a, 0x5f, |
|
5497 |
+ 0xe5, 0xa1, 0x9c, 0x5e, 0x04, 0xfa, 0x08, 0x8a, 0xed, 0xa3, 0x8b, 0x93, 0x17, 0xbd, 0x4a, 0x6e, |
|
5498 |
+ 0x4d, 0x4f, 0x23, 0xda, 0xae, 0xf4, 0x67, 0x14, 0x3d, 0x86, 0x9d, 0x7e, 0xfb, 0x8b, 0x41, 0xaf, |
|
5499 |
+ 0x92, 0x5f, 0x2f, 0x27, 0x0d, 0xeb, 0x93, 0x58, 0x68, 0x54, 0x17, 0xb7, 0x4f, 0xce, 0x2b, 0x5b, |
|
5500 |
+ 0xd9, 0xa8, 0x2e, 0x27, 0x7e, 0x68, 0x96, 0xf2, 0xf7, 0x02, 0xd8, 0x03, 0xca, 0x67, 0xbe, 0xfb, |
|
5501 |
+ 0x8e, 0x25, 0xf2, 0x29, 0x14, 0x24, 0x11, 0x57, 0x5a, 0x1a, 0x76, 0xb6, 0x34, 0x2e, 0x88, 0xb8, |
|
5502 |
+ 0x52, 0x93, 0x1a, 0xba, 0xc6, 0x2b, 0x65, 0x70, 0x1a, 0x05, 0xbe, 0x4b, 0x24, 0xf5, 0xb4, 0x32, |
|
5503 |
+ 0xec, 0xc3, 0x1f, 0x67, 0xb1, 0xf1, 0x0a, 0x65, 0xd6, 0xff, 0x2c, 0x87, 0x53, 0x54, 0xf4, 0x14, |
|
5504 |
+ 0x8a, 0xe3, 0x80, 0x8d, 0x48, 0xa0, 0x35, 0x61, 0x1f, 0x3e, 0xca, 0x0a, 0x72, 0xac, 0x11, 0xeb, |
|
5505 |
+ 0x00, 0x86, 0x82, 0x9e, 0x40, 0x31, 0x8e, 0x3c, 0x22, 0xa9, 0x53, 0xd4, 0xe4, 0x46, 0x16, 0xf9, |
|
5506 |
+ 0x0b, 0x8d, 0x38, 0x62, 0xe1, 0xa5, 0x3f, 0xc6, 0x06, 0x8f, 0x4e, 0xc1, 0x0a, 0xa9, 0xfc, 0x92, |
|
5507 |
+ 0xf1, 0x2b, 0xe1, 0xec, 0x36, 0xb6, 0xf7, 0xed, 0xc3, 0x4f, 0x32, 0xc5, 0x98, 0x60, 0xda, 0x52, |
|
5508 |
+ 0x12, 0x77, 0x32, 0xa5, 0xa1, 0x4c, 0xc2, 0x74, 0xb6, 0x9c, 0x3c, 0x5e, 0x05, 0x40, 0xbf, 0x01, |
|
5509 |
+ 0x8b, 0x86, 0x5e, 0xc4, 0xfc, 0x50, 0x3a, 0xd6, 0xed, 0x0b, 0xe9, 0x19, 0x8c, 0x4a, 0x26, 0x5e, |
|
5510 |
+ 0x31, 0x14, 0x9b, 0xb3, 0x20, 0x18, 0x11, 0xf7, 0xca, 0x29, 0xbd, 0xe5, 0x36, 0x56, 0x8c, 0x4e, |
|
5511 |
+ 0x11, 0x0a, 0x53, 0xe6, 0xd1, 0xe6, 0x01, 0xdc, 0xfb, 0x56, 0xaa, 0x51, 0x15, 0x2c, 0x93, 0xea, |
|
5512 |
+ 0x44, 0x23, 0x05, 0xbc, 0xb2, 0x9b, 0x77, 0x61, 0x6f, 0x23, 0xad, 0xcd, 0xbf, 0x16, 0xc0, 0x5a, |
|
5513 |
+ 0x9e, 0x35, 0x6a, 0x43, 0xc9, 0x65, 0xa1, 0x24, 0x7e, 0x48, 0xb9, 0x91, 0x57, 0xe6, 0xc9, 0x1c, |
|
5514 |
+ 0x2d, 0x41, 0x8a, 0xf5, 0x2c, 0x87, 0xd7, 0x2c, 0xf4, 0x7b, 0x28, 0x71, 0x2a, 0x58, 0xcc, 0x5d, |
|
5515 |
+ 0x2a, 0x8c, 0xbe, 0xf6, 0xb3, 0x15, 0x92, 0x80, 0x30, 0xfd, 0x73, 0xec, 0x73, 0xaa, 0xb2, 0x2c, |
|
5516 |
+ 0xf0, 0x9a, 0x8a, 0x9e, 0xc2, 0x2e, 0xa7, 0x42, 0x12, 0x2e, 0xbf, 0x4b, 0x22, 0x38, 0x81, 0xf4, |
|
5517 |
+ 0x59, 0xe0, 0xbb, 0x73, 0xbc, 0x64, 0xa0, 0xa7, 0x50, 0x8a, 0x02, 0xe2, 0xea, 0xa8, 0xce, 0x8e, |
|
5518 |
+ 0xa6, 0x7f, 0x90, 0x45, 0xef, 0x2f, 0x41, 0x78, 0x8d, 0x47, 0x9f, 0x01, 0x04, 0x6c, 0x3c, 0xf4, |
|
5519 |
+ 0xb8, 0x3f, 0xa3, 0xdc, 0x48, 0xac, 0x9a, 0xc5, 0xee, 0x6a, 0x04, 0x2e, 0x05, 0x6c, 0x9c, 0x0c, |
|
5520 |
+ 0xd1, 0xf1, 0xf7, 0xd2, 0x57, 0x4a, 0x5b, 0xa7, 0x00, 0x64, 0xf5, 0xd5, 0xa8, 0xeb, 0xe3, 0xb7, |
|
5521 |
+ 0x0a, 0x65, 0x4e, 0x24, 0x45, 0x47, 0x8f, 0xa0, 0x7c, 0xc9, 0xb8, 0x4b, 0x87, 0xe6, 0xd6, 0x94, |
|
5522 |
+ 0xb4, 0x26, 0x6c, 0xed, 0x4b, 0xf4, 0xd5, 0x29, 0xc1, 0x2e, 0x8f, 0x43, 0xe9, 0x4f, 0x69, 0xf3, |
|
5523 |
+ 0x14, 0xde, 0xcb, 0x0c, 0x8a, 0x0e, 0xa1, 0xbc, 0x3a, 0xe6, 0xa1, 0xef, 0x69, 0x7d, 0x94, 0x3a, |
|
5524 |
+ 0x77, 0x17, 0x37, 0x75, 0x7b, 0xa5, 0x87, 0x93, 0x2e, 0xb6, 0x57, 0xa0, 0x13, 0xaf, 0xf9, 0x37, |
|
5525 |
+ 0x0b, 0xf6, 0x36, 0xc4, 0x82, 0xee, 0xc3, 0x8e, 0x3f, 0x25, 0x63, 0x9a, 0xd0, 0x71, 0x62, 0xa0, |
|
5526 |
+ 0x1e, 0x14, 0x03, 0x32, 0xa2, 0x81, 0x92, 0x8c, 0x4a, 0xdb, 0xcf, 0xde, 0xa8, 0xba, 0xd6, 0x1f, |
|
5527 |
+ 0x35, 0xbe, 0x17, 0x4a, 0x3e, 0xc7, 0x86, 0x8c, 0x1c, 0xd8, 0x75, 0xd9, 0x74, 0x4a, 0x42, 0x55, |
|
5528 |
+ 0x9c, 0xb6, 0xf7, 0x4b, 0x78, 0x69, 0x22, 0x04, 0x05, 0xc2, 0xc7, 0xc2, 0x29, 0x68, 0xb7, 0x1e, |
|
5529 |
+ 0xa3, 0x0a, 0x6c, 0xd3, 0x70, 0xe6, 0xec, 0x68, 0x97, 0x1a, 0x2a, 0x8f, 0xe7, 0x27, 0x67, 0x5e, |
|
5530 |
+ 0xc2, 0x6a, 0xa8, 0x78, 0xb1, 0xa0, 0xdc, 0xd9, 0xd5, 0x2e, 0x3d, 0x46, 0xbf, 0x82, 0xe2, 0x94, |
|
5531 |
+ 0xc5, 0xa1, 0x14, 0x8e, 0xa5, 0x17, 0xfb, 0x20, 0x6b, 0xb1, 0x67, 0x0a, 0x61, 0x8a, 0xa7, 0x81, |
|
5532 |
+ 0xa3, 0x1e, 0xdc, 0x13, 0x92, 0x45, 0xc3, 0x31, 0x27, 0x2e, 0x1d, 0x46, 0x94, 0xfb, 0xcc, 0x33, |
|
5533 |
+ 0x97, 0xff, 0x41, 0x2b, 0xe9, 0x15, 0x5a, 0xcb, 0x5e, 0xa1, 0xd5, 0x35, 0xbd, 0x02, 0xbe, 0xab, |
|
5534 |
+ 0x38, 0xc7, 0x8a, 0xd2, 0xd7, 0x0c, 0xd4, 0x87, 0x72, 0x14, 0x07, 0xc1, 0x90, 0x45, 0xc9, 0x3b, |
|
5535 |
+ 0x00, 0x3a, 0xc2, 0x5b, 0xa4, 0xac, 0x1f, 0x07, 0xc1, 0xf3, 0x84, 0x84, 0xed, 0x68, 0x6d, 0xa0, |
|
5536 |
+ 0xf7, 0xa1, 0x38, 0xe6, 0x2c, 0x8e, 0x84, 0x63, 0xeb, 0x64, 0x18, 0x0b, 0x7d, 0x0e, 0xbb, 0x82, |
|
5537 |
+ 0xba, 0x9c, 0x4a, 0xe1, 0x94, 0xf5, 0x56, 0x3f, 0xcc, 0x9a, 0x64, 0xa0, 0x21, 0x98, 0x5e, 0x52, |
|
5538 |
+ 0x4e, 0x43, 0x97, 0xe2, 0x25, 0x07, 0x3d, 0x80, 0x6d, 0x29, 0xe7, 0xce, 0x5e, 0x23, 0xbf, 0x6f, |
|
5539 |
+ 0x75, 0x76, 0x17, 0x37, 0xf5, 0xed, 0x8b, 0x8b, 0x97, 0x58, 0xf9, 0x54, 0x8d, 0x9a, 0x30, 0x21, |
|
5540 |
+ 0x43, 0x32, 0xa5, 0xce, 0x1d, 0x9d, 0xdb, 0x95, 0x8d, 0x5e, 0x02, 0x78, 0xa1, 0x18, 0xba, 0xfa, |
|
5541 |
+ 0x52, 0x38, 0x77, 0xf5, 0xee, 0x3e, 0x79, 0xf3, 0xee, 0xba, 0xe7, 0x03, 0x53, 0xa7, 0xf7, 0x16, |
|
5542 |
+ 0x37, 0xf5, 0xd2, 0xca, 0xc4, 0x25, 0x2f, 0x14, 0xc9, 0x10, 0x75, 0xc0, 0x9e, 0x50, 0x12, 0xc8, |
|
5543 |
+ 0x89, 0x3b, 0xa1, 0xee, 0x95, 0x53, 0xb9, 0xbd, 0xf0, 0x3e, 0xd3, 0x30, 0x13, 0x21, 0x4d, 0x52, |
|
5544 |
+ 0x0a, 0x56, 0x4b, 0x15, 0xce, 0x3d, 0x9d, 0xab, 0xc4, 0x40, 0x1f, 0x00, 0xb0, 0x88, 0x86, 0x43, |
|
5545 |
+ 0x21, 0x3d, 0x3f, 0x74, 0x90, 0xda, 0x32, 0x2e, 0x29, 0xcf, 0x40, 0x39, 0xd0, 0x43, 0x55, 0x16, |
|
5546 |
+ 0x89, 0x37, 0x64, 0x61, 0x30, 0x77, 0x7e, 0xa0, 0xbf, 0x5a, 0xca, 0xf1, 0x3c, 0x0c, 0xe6, 0xa8, |
|
5547 |
+ 0x0e, 0xb6, 0xd6, 0x85, 0xf0, 0xc7, 0x21, 0x09, 0x9c, 0xfb, 0x3a, 0x1f, 0xa0, 0x5c, 0x03, 0xed, |
|
5548 |
+ 0xa9, 0x7e, 0x06, 0x76, 0x4a, 0xee, 0x4a, 0xa6, 0x57, 0x74, 0x6e, 0x6e, 0x90, 0x1a, 0xaa, 0x35, |
|
5549 |
+ 0xcd, 0x48, 0x10, 0x27, 0xcd, 0x5e, 0x09, 0x27, 0xc6, 0xaf, 0xb7, 0x9e, 0xe4, 0xab, 0x87, 0x60, |
|
5550 |
+ 0xa7, 0x8e, 0x1d, 0x7d, 0x08, 0x7b, 0x9c, 0x8e, 0x7d, 0x21, 0xf9, 0x7c, 0x48, 0x62, 0x39, 0x71, |
|
5551 |
+ 0x7e, 0xa7, 0x09, 0xe5, 0xa5, 0xb3, 0x1d, 0xcb, 0x49, 0x75, 0x08, 0xeb, 0xec, 0xa1, 0x06, 0xd8, |
|
5552 |
+ 0xea, 0x54, 0x04, 0xe5, 0x33, 0xca, 0xd5, 0x83, 0xa2, 0x36, 0x9d, 0x76, 0x29, 0xf5, 0x08, 0x4a, |
|
5553 |
+ 0xb8, 0x3b, 0xd1, 0x97, 0xb7, 0x84, 0x8d, 0xa5, 0x6e, 0xe3, 0x52, 0xa2, 0xe6, 0x36, 0x1a, 0xb3, |
|
5554 |
+ 0xf9, 0xdf, 0x3c, 0x94, 0xd3, 0xef, 0x22, 0x3a, 0x4a, 0xde, 0x33, 0xbd, 0xa5, 0x3b, 0x87, 0x07, |
|
5555 |
+ 0x6f, 0x7a, 0x47, 0xf5, 0xeb, 0x11, 0xc4, 0x2a, 0xd8, 0x99, 0x6a, 0x61, 0x35, 0x19, 0xfd, 0x12, |
|
5556 |
+ 0x76, 0x22, 0xc6, 0xe5, 0xb2, 0x86, 0xd4, 0x32, 0x2b, 0x3e, 0xe3, 0xcb, 0x6a, 0x9b, 0x80, 0x9b, |
|
5557 |
+ 0x13, 0xb8, 0xb3, 0x19, 0x0d, 0x3d, 0x86, 0xed, 0x17, 0x27, 0xfd, 0x4a, 0xae, 0xfa, 0xf0, 0xd5, |
|
5558 |
+ 0x75, 0xe3, 0x87, 0x9b, 0x1f, 0x5f, 0xf8, 0x5c, 0xc6, 0x24, 0x38, 0xe9, 0xa3, 0x9f, 0xc2, 0x4e, |
|
5559 |
+ 0xf7, 0x7c, 0x80, 0x71, 0x25, 0x5f, 0xad, 0xbf, 0xba, 0x6e, 0x3c, 0xdc, 0xc4, 0xa9, 0x4f, 0x2c, |
|
5560 |
+ 0x0e, 0x3d, 0xcc, 0x46, 0xab, 0x76, 0xee, 0x9f, 0x5b, 0x60, 0x9b, 0xd2, 0xfa, 0xae, 0x3b, 0xfe, |
|
5561 |
+ 0xbd, 0xe4, 0xb5, 0x5a, 0xde, 0x99, 0xad, 0x37, 0x3e, 0x5a, 0xe5, 0x84, 0x60, 0xce, 0xf8, 0x11, |
|
5562 |
+ 0x94, 0xfd, 0x68, 0xf6, 0xe9, 0x90, 0x86, 0x64, 0x14, 0x98, 0xce, 0xce, 0xc2, 0xb6, 0xf2, 0xf5, |
|
5563 |
+ 0x12, 0x97, 0xba, 0xb0, 0x7e, 0x28, 0x29, 0x0f, 0x4d, 0xcf, 0x66, 0xe1, 0x95, 0x8d, 0x3e, 0x87, |
|
5564 |
+ 0x82, 0x1f, 0x91, 0xa9, 0x79, 0x69, 0x33, 0x77, 0x70, 0xd2, 0x6f, 0x9f, 0x19, 0x0d, 0x76, 0xac, |
|
5565 |
+ 0xc5, 0x4d, 0xbd, 0xa0, 0x1c, 0x58, 0xd3, 0x50, 0x6d, 0xf9, 0xd8, 0xa9, 0x99, 0x74, 0xf1, 0xb5, |
|
5566 |
+ 0x70, 0xca, 0xd3, 0xfc, 0x5f, 0x01, 0xec, 0xa3, 0x20, 0x16, 0xd2, 0x3c, 0x21, 0xef, 0x2c, 0x6f, |
|
5567 |
+ 0x2f, 0xe1, 0x1e, 0xd1, 0xcd, 0x3f, 0x09, 0x55, 0x3d, 0xd6, 0x4d, 0x84, 0xc9, 0xdd, 0xe3, 0xcc, |
|
5568 |
+ 0x70, 0x2b, 0x70, 0xd2, 0x70, 0x74, 0x8a, 0x2a, 0xa6, 0x93, 0xc7, 0x15, 0xf2, 0x8d, 0x2f, 0x68, |
|
5569 |
+ 0x00, 0x7b, 0x8c, 0xbb, 0x13, 0x2a, 0x64, 0x52, 0xc5, 0x4d, 0xb3, 0x9c, 0xf9, 0x1b, 0xf5, 0x3c, |
|
5570 |
+ 0x0d, 0x34, 0x25, 0x2c, 0x59, 0xed, 0x66, 0x0c, 0xf4, 0x04, 0x0a, 0x9c, 0x5c, 0x2e, 0x1b, 0xa2, |
|
5571 |
+ 0x4c, 0x7d, 0x63, 0x72, 0x29, 0x37, 0x42, 0x68, 0x06, 0xfa, 0x03, 0x80, 0xe7, 0x8b, 0x88, 0x48, |
|
5572 |
+ 0x77, 0x42, 0xb9, 0x39, 0xa7, 0xcc, 0x2d, 0x76, 0x57, 0xa8, 0x8d, 0x28, 0x29, 0x36, 0x3a, 0x85, |
|
5573 |
+ 0x92, 0x4b, 0x96, 0x4a, 0x2b, 0xde, 0xfe, 0x07, 0x71, 0xd4, 0x36, 0x21, 0x2a, 0x2a, 0xc4, 0xe2, |
|
5574 |
+ 0xa6, 0x6e, 0x2d, 0x3d, 0xd8, 0x72, 0x89, 0x51, 0xde, 0x29, 0xec, 0xa9, 0x3f, 0x8b, 0xa1, 0x47, |
|
5575 |
+ 0x2f, 0x49, 0x1c, 0x48, 0xa1, 0x1f, 0xda, 0x5b, 0x4a, 0xb2, 0x6a, 0x53, 0xbb, 0x06, 0x67, 0xd6, |
|
5576 |
+ 0x55, 0x96, 0x29, 0x1f, 0xfa, 0x13, 0xdc, 0xa3, 0xa1, 0xcb, 0xe7, 0x5a, 0x67, 0xcb, 0x15, 0x5a, |
|
5577 |
+ 0xb7, 0x6f, 0xb6, 0xb7, 0x02, 0x6f, 0x6c, 0xb6, 0x42, 0xbf, 0xe1, 0x6f, 0xfa, 0x00, 0xc9, 0x23, |
|
5578 |
+ 0xf7, 0x6e, 0xf5, 0x87, 0xa0, 0xe0, 0x11, 0x49, 0xb4, 0xe4, 0xca, 0x58, 0x8f, 0x3b, 0xce, 0xeb, |
|
5579 |
+ 0xaf, 0x6b, 0xb9, 0x7f, 0x7f, 0x5d, 0xcb, 0xfd, 0x65, 0x51, 0xcb, 0xbf, 0x5e, 0xd4, 0xf2, 0xff, |
|
5580 |
+ 0x5a, 0xd4, 0xf2, 0xff, 0x59, 0xd4, 0xf2, 0xa3, 0xa2, 0x6e, 0x0d, 0x7e, 0xf1, 0xff, 0x00, 0x00, |
|
5581 |
+ 0x00, 0xff, 0xff, 0xed, 0xbe, 0x26, 0xe6, 0x9a, 0x10, 0x00, 0x00, |
|
5584 | 5582 |
} |
... | ... |
@@ -101,7 +101,6 @@ message TaskSpec { |
101 | 101 |
oneof runtime { |
102 | 102 |
NetworkAttachmentSpec attachment = 8; |
103 | 103 |
ContainerSpec container = 1; |
104 |
- PluginSpec plugin = 10; |
|
105 | 104 |
} |
106 | 105 |
|
107 | 106 |
// Resource requirements for the container. |
... | ... |
@@ -267,14 +266,6 @@ message ContainerSpec { |
267 | 267 |
HealthConfig healthcheck = 16; |
268 | 268 |
} |
269 | 269 |
|
270 |
-// PluginSpec specifies runtime parameters for a plugin. |
|
271 |
-message PluginSpec { |
|
272 |
- // image defines the image reference, as specified in the |
|
273 |
- // distribution/reference package. This may include a registry host, name, |
|
274 |
- // tag or digest. |
|
275 |
- string image = 1; |
|
276 |
-} |
|
277 |
- |
|
278 | 270 |
// EndpointSpec defines the properties that can be configured to |
279 | 271 |
// access and loadbalance the service. |
280 | 272 |
message EndpointSpec { |
... | ... |
@@ -5,7 +5,7 @@ import ( |
5 | 5 |
"crypto" |
6 | 6 |
"crypto/ecdsa" |
7 | 7 |
"crypto/elliptic" |
8 |
- "crypto/rand" |
|
8 |
+ cryptorand "crypto/rand" |
|
9 | 9 |
"crypto/rsa" |
10 | 10 |
"crypto/tls" |
11 | 11 |
"crypto/x509" |
... | ... |
@@ -100,18 +100,29 @@ type CertPaths struct { |
100 | 100 |
Cert, Key string |
101 | 101 |
} |
102 | 102 |
|
103 |
-// RootCA is the representation of everything we need to sign certificates |
|
104 |
-type RootCA struct { |
|
103 |
+// LocalSigner is a signer that can sign CSRs |
|
104 |
+type LocalSigner struct { |
|
105 |
+ cfsigner.Signer |
|
106 |
+ |
|
105 | 107 |
// Key will only be used by the original manager to put the private |
106 | 108 |
// key-material in raft, no signing operations depend on it. |
107 | 109 |
Key []byte |
108 |
- // Cert includes the PEM encoded Certificate for the Root CA |
|
110 |
+} |
|
111 |
+ |
|
112 |
+// RootCA is the representation of everything we need to sign certificates |
|
113 |
+type RootCA struct { |
|
114 |
+ // Cert contains a bundle of PEM encoded Certificate for the Root CA, the first one of which |
|
115 |
+ // must correspond to the key in the local signer, if provided |
|
109 | 116 |
Cert []byte |
117 |
+ |
|
118 |
+ // Pool is the root pool used to validate TLS certificates |
|
110 | 119 |
Pool *x509.CertPool |
111 |
- // Digest of the serialized bytes of the certificate |
|
120 |
+ |
|
121 |
+ // Digest of the serialized bytes of the certificate(s) |
|
112 | 122 |
Digest digest.Digest |
123 |
+ |
|
113 | 124 |
// This signer will be nil if the node doesn't have the appropriate key material |
114 |
- Signer cfsigner.Signer |
|
125 |
+ Signer *LocalSigner |
|
115 | 126 |
} |
116 | 127 |
|
117 | 128 |
// CanSign ensures that the signer has all three necessary elements needed to operate |
... | ... |
@@ -154,25 +165,6 @@ func (rca *RootCA) IssueAndSaveNewCertificates(kw KeyWriter, cn, ou, org string) |
154 | 154 |
return &tlsKeyPair, nil |
155 | 155 |
} |
156 | 156 |
|
157 |
-// Normally we can just call cert.Verify(opts), but since we actually want more information about |
|
158 |
-// whether a certificate is not yet valid or expired, we also need to perform the expiry checks ourselves. |
|
159 |
-func verifyCertificate(cert *x509.Certificate, opts x509.VerifyOptions, allowExpired bool) error { |
|
160 |
- _, err := cert.Verify(opts) |
|
161 |
- if invalidErr, ok := err.(x509.CertificateInvalidError); ok && invalidErr.Reason == x509.Expired { |
|
162 |
- now := time.Now().UTC() |
|
163 |
- if now.Before(cert.NotBefore) { |
|
164 |
- return errors.Wrapf(err, "certificate not valid before %s, and it is currently %s", |
|
165 |
- cert.NotBefore.UTC().Format(time.RFC1123), now.Format(time.RFC1123)) |
|
166 |
- } |
|
167 |
- if allowExpired { |
|
168 |
- return nil |
|
169 |
- } |
|
170 |
- return errors.Wrapf(err, "certificate expires at %s, and it is currently %s", |
|
171 |
- cert.NotAfter.UTC().Format(time.RFC1123), now.Format(time.RFC1123)) |
|
172 |
- } |
|
173 |
- return err |
|
174 |
-} |
|
175 |
- |
|
176 | 157 |
// RequestAndSaveNewCertificates gets new certificates issued, either by signing them locally if a signer is |
177 | 158 |
// available, or by requesting them from the remote server at remoteAddr. |
178 | 159 |
func (rca *RootCA) RequestAndSaveNewCertificates(ctx context.Context, kw KeyWriter, config CertificateRequestConfig) (*tls.Certificate, error) { |
... | ... |
@@ -208,20 +200,9 @@ func (rca *RootCA) RequestAndSaveNewCertificates(ctx context.Context, kw KeyWrit |
208 | 208 |
// Доверяй, но проверяй. |
209 | 209 |
// Before we overwrite our local key + certificate, let's make sure the server gave us one that is valid |
210 | 210 |
// Create an X509Cert so we can .Verify() |
211 |
- certBlock, _ := pem.Decode(signedCert) |
|
212 |
- if certBlock == nil { |
|
213 |
- return nil, errors.New("failed to parse certificate PEM") |
|
214 |
- } |
|
215 |
- X509Cert, err := x509.ParseCertificate(certBlock.Bytes) |
|
216 |
- if err != nil { |
|
217 |
- return nil, err |
|
218 |
- } |
|
219 |
- // Include our current root pool |
|
220 |
- opts := x509.VerifyOptions{ |
|
221 |
- Roots: rca.Pool, |
|
222 |
- } |
|
223 | 211 |
// Check to see if this certificate was signed by our CA, and isn't expired |
224 |
- if err := verifyCertificate(X509Cert, opts, false); err != nil { |
|
212 |
+ parsedCerts, err := ValidateCertChain(rca.Pool, signedCert, false) |
|
213 |
+ if err != nil { |
|
225 | 214 |
return nil, err |
226 | 215 |
} |
227 | 216 |
|
... | ... |
@@ -233,7 +214,8 @@ func (rca *RootCA) RequestAndSaveNewCertificates(ctx context.Context, kw KeyWrit |
233 | 233 |
|
234 | 234 |
var kekUpdate *KEKData |
235 | 235 |
for i := 0; i < 5; i++ { |
236 |
- kekUpdate, err = rca.getKEKUpdate(ctx, X509Cert, tlsKeyPair, config.ConnBroker) |
|
236 |
+ // ValidateCertChain will always return at least 1 cert, so indexing at 0 is safe |
|
237 |
+ kekUpdate, err = rca.getKEKUpdate(ctx, parsedCerts[0], tlsKeyPair, config.ConnBroker) |
|
237 | 238 |
if err == nil { |
238 | 239 |
break |
239 | 240 |
} |
... | ... |
@@ -412,7 +394,104 @@ func NewRootCA(certBytes, keyBytes []byte, certExpiry time.Duration) (RootCA, er |
412 | 412 |
} |
413 | 413 |
} |
414 | 414 |
|
415 |
- return RootCA{Signer: signer, Key: keyBytes, Digest: digest, Cert: certBytes, Pool: pool}, nil |
|
415 |
+ return RootCA{Signer: &LocalSigner{Signer: signer, Key: keyBytes}, Digest: digest, Cert: certBytes, Pool: pool}, nil |
|
416 |
+} |
|
417 |
+ |
|
418 |
+// ValidateCertChain checks checks that the certificates provided chain up to the root pool provided. In addition |
|
419 |
+// it also enforces that every cert in the bundle certificates form a chain, each one certifying the one above, |
|
420 |
+// as per RFC5246 section 7.4.2, and that every certificate (whether or not it is necessary to form a chain to the root |
|
421 |
+// pool) is currently valid and not yet expired (unless allowExpiry is set to true). |
|
422 |
+// This is additional validation not required by go's Certificate.Verify (which allows invalid certs in the |
|
423 |
+// intermediate pool), because this function is intended to be used when reading certs from untrusted locations such as |
|
424 |
+// from disk or over a network when a CSR is signed, so it is extra pedantic. |
|
425 |
+// This function always returns all the parsed certificates in the bundle in order, which means there will always be |
|
426 |
+// at least 1 certificate if there is no error. |
|
427 |
+func ValidateCertChain(rootPool *x509.CertPool, certs []byte, allowExpired bool) ([]*x509.Certificate, error) { |
|
428 |
+ // Parse all the certificates in the cert bundle |
|
429 |
+ parsedCerts, err := helpers.ParseCertificatesPEM(certs) |
|
430 |
+ if err != nil { |
|
431 |
+ return nil, err |
|
432 |
+ } |
|
433 |
+ if len(parsedCerts) == 0 { |
|
434 |
+ return nil, errors.New("no certificates to validate") |
|
435 |
+ } |
|
436 |
+ now := time.Now() |
|
437 |
+ // ensure that they form a chain, each one being signed by the one after it |
|
438 |
+ var intermediatePool *x509.CertPool |
|
439 |
+ for i, cert := range parsedCerts { |
|
440 |
+ // Manual expiry validation because we want more information on which certificate in the chain is expired, and |
|
441 |
+ // because this is an easier way to allow expired certs. |
|
442 |
+ if now.Before(cert.NotBefore) { |
|
443 |
+ return nil, errors.Wrapf( |
|
444 |
+ x509.CertificateInvalidError{ |
|
445 |
+ Cert: cert, |
|
446 |
+ Reason: x509.Expired, |
|
447 |
+ }, |
|
448 |
+ "certificate (%d - %s) not valid before %s, and it is currently %s", |
|
449 |
+ i+1, cert.Subject.CommonName, cert.NotBefore.UTC().Format(time.RFC1123), now.Format(time.RFC1123)) |
|
450 |
+ } |
|
451 |
+ if !allowExpired && now.After(cert.NotAfter) { |
|
452 |
+ return nil, errors.Wrapf( |
|
453 |
+ x509.CertificateInvalidError{ |
|
454 |
+ Cert: cert, |
|
455 |
+ Reason: x509.Expired, |
|
456 |
+ }, |
|
457 |
+ "certificate (%d - %s) not valid after %s, and it is currently %s", |
|
458 |
+ i+1, cert.Subject.CommonName, cert.NotAfter.UTC().Format(time.RFC1123), now.Format(time.RFC1123)) |
|
459 |
+ } |
|
460 |
+ |
|
461 |
+ if i > 0 { |
|
462 |
+ // check that the previous cert was signed by this cert |
|
463 |
+ prevCert := parsedCerts[i-1] |
|
464 |
+ if err := prevCert.CheckSignatureFrom(cert); err != nil { |
|
465 |
+ return nil, errors.Wrapf(err, "certificates do not form a chain: (%d - %s) is not signed by (%d - %s)", |
|
466 |
+ i, prevCert.Subject.CommonName, i+1, cert.Subject.CommonName) |
|
467 |
+ } |
|
468 |
+ |
|
469 |
+ if intermediatePool == nil { |
|
470 |
+ intermediatePool = x509.NewCertPool() |
|
471 |
+ } |
|
472 |
+ intermediatePool.AddCert(cert) |
|
473 |
+ |
|
474 |
+ } |
|
475 |
+ } |
|
476 |
+ |
|
477 |
+ verifyOpts := x509.VerifyOptions{ |
|
478 |
+ Roots: rootPool, |
|
479 |
+ Intermediates: intermediatePool, |
|
480 |
+ CurrentTime: now, |
|
481 |
+ } |
|
482 |
+ |
|
483 |
+ // If we accept expired certs, try to build a valid cert chain using some subset of the certs. We start off using the |
|
484 |
+ // first certificate's NotAfter as the current time, thus ensuring that the first cert is not expired. If the chain |
|
485 |
+ // still fails to validate due to expiry issues, continue iterating over the rest of the certs. |
|
486 |
+ // If any of the other certs has an earlier NotAfter time, use that time as the current time instead. This insures that |
|
487 |
+ // particular cert, and any that came before it, are not expired. Note that the root that the certs chain up to |
|
488 |
+ // should also not be expired at that "current" time. |
|
489 |
+ if allowExpired { |
|
490 |
+ verifyOpts.CurrentTime = parsedCerts[0].NotAfter.Add(time.Hour) |
|
491 |
+ for _, cert := range parsedCerts { |
|
492 |
+ if !cert.NotAfter.Before(verifyOpts.CurrentTime) { |
|
493 |
+ continue |
|
494 |
+ } |
|
495 |
+ verifyOpts.CurrentTime = cert.NotAfter |
|
496 |
+ |
|
497 |
+ _, err = parsedCerts[0].Verify(verifyOpts) |
|
498 |
+ if err == nil { |
|
499 |
+ return parsedCerts, nil |
|
500 |
+ } |
|
501 |
+ } |
|
502 |
+ if invalid, ok := err.(x509.CertificateInvalidError); ok && invalid.Reason == x509.Expired { |
|
503 |
+ return nil, errors.New("there is no time span for which all of the certificates, including a root, are valid") |
|
504 |
+ } |
|
505 |
+ return nil, err |
|
506 |
+ } |
|
507 |
+ |
|
508 |
+ _, err = parsedCerts[0].Verify(verifyOpts) |
|
509 |
+ if err != nil { |
|
510 |
+ return nil, err |
|
511 |
+ } |
|
512 |
+ return parsedCerts, nil |
|
416 | 513 |
} |
417 | 514 |
|
418 | 515 |
func ensureCertKeyMatch(cert *x509.Certificate, key crypto.PublicKey) error { |
... | ... |
@@ -666,17 +745,11 @@ func saveRootCA(rootCA RootCA, paths CertPaths) error { |
666 | 666 |
} |
667 | 667 |
|
668 | 668 |
// GenerateNewCSR returns a newly generated key and CSR signed with said key |
669 |
-func GenerateNewCSR() (csr, key []byte, err error) { |
|
669 |
+func GenerateNewCSR() ([]byte, []byte, error) { |
|
670 | 670 |
req := &cfcsr.CertificateRequest{ |
671 | 671 |
KeyRequest: cfcsr.NewBasicKeyRequest(), |
672 | 672 |
} |
673 |
- |
|
674 |
- csr, key, err = cfcsr.ParseRequest(req) |
|
675 |
- if err != nil { |
|
676 |
- return |
|
677 |
- } |
|
678 |
- |
|
679 |
- return |
|
673 |
+ return cfcsr.ParseRequest(req) |
|
680 | 674 |
} |
681 | 675 |
|
682 | 676 |
// EncryptECPrivateKey receives a PEM encoded private key and returns an encrypted |
... | ... |
@@ -692,7 +765,7 @@ func EncryptECPrivateKey(key []byte, passphraseStr string) ([]byte, error) { |
692 | 692 |
return nil, errors.New("error while decoding PEM key") |
693 | 693 |
} |
694 | 694 |
|
695 |
- encryptedPEMBlock, err := x509.EncryptPEMBlock(rand.Reader, |
|
695 |
+ encryptedPEMBlock, err := x509.EncryptPEMBlock(cryptorand.Reader, |
|
696 | 696 |
"EC PRIVATE KEY", |
697 | 697 |
keyBlock.Bytes, |
698 | 698 |
passphrase, |
... | ... |
@@ -4,7 +4,6 @@ import ( |
4 | 4 |
cryptorand "crypto/rand" |
5 | 5 |
"crypto/tls" |
6 | 6 |
"crypto/x509" |
7 |
- "encoding/pem" |
|
8 | 7 |
"fmt" |
9 | 8 |
"math/big" |
10 | 9 |
"math/rand" |
... | ... |
@@ -112,6 +111,11 @@ func (s *SecurityConfig) RootCA() *RootCA { |
112 | 112 |
return s.rootCA |
113 | 113 |
} |
114 | 114 |
|
115 |
+// ExternalCA returns the external CA. |
|
116 |
+func (s *SecurityConfig) ExternalCA() *ExternalCA { |
|
117 |
+ return s.externalCA |
|
118 |
+} |
|
119 |
+ |
|
115 | 120 |
// KeyWriter returns the object that can write keys to disk |
116 | 121 |
func (s *SecurityConfig) KeyWriter() KeyWriter { |
117 | 122 |
return s.keyReadWriter |
... | ... |
@@ -129,11 +133,45 @@ func (s *SecurityConfig) UpdateRootCA(cert, key []byte, certExpiry time.Duration |
129 | 129 |
defer s.mu.Unlock() |
130 | 130 |
|
131 | 131 |
rootCA, err := NewRootCA(cert, key, certExpiry) |
132 |
- if err == nil { |
|
133 |
- s.rootCA = &rootCA |
|
132 |
+ if err != nil { |
|
133 |
+ return err |
|
134 |
+ } |
|
135 |
+ |
|
136 |
+ s.rootCA = &rootCA |
|
137 |
+ clientTLSConfig := s.ClientTLSCreds.Config() |
|
138 |
+ return s.updateTLSCredentials(clientTLSConfig.Certificates) |
|
139 |
+} |
|
140 |
+ |
|
141 |
+// updateTLSCredentials updates the client, server, and TLS credentials on a security config. This function expects |
|
142 |
+// something else to have taken out a lock on the SecurityConfig. |
|
143 |
+func (s *SecurityConfig) updateTLSCredentials(certificates []tls.Certificate) error { |
|
144 |
+ clientConfig, err := NewClientTLSConfig(certificates, s.rootCA.Pool, ManagerRole) |
|
145 |
+ if err != nil { |
|
146 |
+ return errors.Wrap(err, "failed to create a new client config using the new root CA") |
|
147 |
+ } |
|
148 |
+ |
|
149 |
+ serverConfig, err := NewServerTLSConfig(certificates, s.rootCA.Pool) |
|
150 |
+ if err != nil { |
|
151 |
+ return errors.Wrap(err, "failed to create a new server config using the new root CA") |
|
152 |
+ } |
|
153 |
+ |
|
154 |
+ if err := s.ClientTLSCreds.loadNewTLSConfig(clientConfig); err != nil { |
|
155 |
+ return errors.Wrap(err, "failed to update the client credentials") |
|
134 | 156 |
} |
135 | 157 |
|
136 |
- return err |
|
158 |
+ // Update the external CA to use the new client TLS |
|
159 |
+ // config using a copy without a serverName specified. |
|
160 |
+ s.externalCA.UpdateTLSConfig(&tls.Config{ |
|
161 |
+ Certificates: certificates, |
|
162 |
+ RootCAs: s.rootCA.Pool, |
|
163 |
+ MinVersion: tls.VersionTLS12, |
|
164 |
+ }) |
|
165 |
+ |
|
166 |
+ if err := s.ServerTLSCreds.loadNewTLSConfig(serverConfig); err != nil { |
|
167 |
+ return errors.Wrap(err, "failed to update the server TLS credentials") |
|
168 |
+ } |
|
169 |
+ |
|
170 |
+ return nil |
|
137 | 171 |
} |
138 | 172 |
|
139 | 173 |
// SigningPolicy creates a policy used by the signer to ensure that the only fields |
... | ... |
@@ -263,25 +301,8 @@ func LoadSecurityConfig(ctx context.Context, rootCA RootCA, krw *KeyReadWriter, |
263 | 263 |
return nil, err |
264 | 264 |
} |
265 | 265 |
|
266 |
- // Create an x509 certificate out of the contents on disk |
|
267 |
- certBlock, _ := pem.Decode([]byte(cert)) |
|
268 |
- if certBlock == nil { |
|
269 |
- return nil, errors.New("failed to parse certificate PEM") |
|
270 |
- } |
|
271 |
- |
|
272 |
- // Create an X509Cert so we can .Verify() |
|
273 |
- X509Cert, err := x509.ParseCertificate(certBlock.Bytes) |
|
274 |
- if err != nil { |
|
275 |
- return nil, err |
|
276 |
- } |
|
277 |
- |
|
278 |
- // Include our root pool |
|
279 |
- opts := x509.VerifyOptions{ |
|
280 |
- Roots: rootCA.Pool, |
|
281 |
- } |
|
282 |
- |
|
283 | 266 |
// Check to see if this certificate was signed by our CA, and isn't expired |
284 |
- if err := verifyCertificate(X509Cert, opts, allowExpired); err != nil { |
|
267 |
+ if _, err := ValidateCertChain(rootCA.Pool, cert, allowExpired); err != nil { |
|
285 | 268 |
return nil, err |
286 | 269 |
} |
287 | 270 |
|
... | ... |
@@ -415,37 +436,9 @@ func RenewTLSConfigNow(ctx context.Context, s *SecurityConfig, connBroker *conne |
415 | 415 |
log.WithError(err).Errorf("failed to renew the certificate") |
416 | 416 |
return err |
417 | 417 |
} |
418 |
- |
|
419 |
- clientTLSConfig, err := NewClientTLSConfig(tlsKeyPair, rootCA.Pool, CARole) |
|
420 |
- if err != nil { |
|
421 |
- log.WithError(err).Errorf("failed to create a new client config") |
|
422 |
- return err |
|
423 |
- } |
|
424 |
- serverTLSConfig, err := NewServerTLSConfig(tlsKeyPair, rootCA.Pool) |
|
425 |
- if err != nil { |
|
426 |
- log.WithError(err).Errorf("failed to create a new server config") |
|
427 |
- return err |
|
428 |
- } |
|
429 |
- |
|
430 |
- if err = s.ClientTLSCreds.LoadNewTLSConfig(clientTLSConfig); err != nil { |
|
431 |
- log.WithError(err).Errorf("failed to update the client credentials") |
|
432 |
- return err |
|
433 |
- } |
|
434 |
- |
|
435 |
- // Update the external CA to use the new client TLS |
|
436 |
- // config using a copy without a serverName specified. |
|
437 |
- s.externalCA.UpdateTLSConfig(&tls.Config{ |
|
438 |
- Certificates: clientTLSConfig.Certificates, |
|
439 |
- RootCAs: clientTLSConfig.RootCAs, |
|
440 |
- MinVersion: tls.VersionTLS12, |
|
441 |
- }) |
|
442 |
- |
|
443 |
- if err = s.ServerTLSCreds.LoadNewTLSConfig(serverTLSConfig); err != nil { |
|
444 |
- log.WithError(err).Errorf("failed to update the server TLS credentials") |
|
445 |
- return err |
|
446 |
- } |
|
447 |
- |
|
448 |
- return nil |
|
418 |
+ s.mu.Lock() |
|
419 |
+ defer s.mu.Unlock() |
|
420 |
+ return s.updateTLSCredentials([]tls.Certificate{*tlsKeyPair}) |
|
449 | 421 |
} |
450 | 422 |
|
451 | 423 |
// RenewTLSConfig will continuously monitor for the necessity of renewing the local certificates, either by |
... | ... |
@@ -565,13 +558,13 @@ func calculateRandomExpiry(validFrom, validUntil time.Time) time.Duration { |
565 | 565 |
|
566 | 566 |
// NewServerTLSConfig returns a tls.Config configured for a TLS Server, given a tls.Certificate |
567 | 567 |
// and the PEM-encoded root CA Certificate |
568 |
-func NewServerTLSConfig(cert *tls.Certificate, rootCAPool *x509.CertPool) (*tls.Config, error) { |
|
568 |
+func NewServerTLSConfig(certs []tls.Certificate, rootCAPool *x509.CertPool) (*tls.Config, error) { |
|
569 | 569 |
if rootCAPool == nil { |
570 | 570 |
return nil, errors.New("valid root CA pool required") |
571 | 571 |
} |
572 | 572 |
|
573 | 573 |
return &tls.Config{ |
574 |
- Certificates: []tls.Certificate{*cert}, |
|
574 |
+ Certificates: certs, |
|
575 | 575 |
// Since we're using the same CA server to issue Certificates to new nodes, we can't |
576 | 576 |
// use tls.RequireAndVerifyClientCert |
577 | 577 |
ClientAuth: tls.VerifyClientCertIfGiven, |
... | ... |
@@ -584,14 +577,14 @@ func NewServerTLSConfig(cert *tls.Certificate, rootCAPool *x509.CertPool) (*tls. |
584 | 584 |
|
585 | 585 |
// NewClientTLSConfig returns a tls.Config configured for a TLS Client, given a tls.Certificate |
586 | 586 |
// the PEM-encoded root CA Certificate, and the name of the remote server the client wants to connect to. |
587 |
-func NewClientTLSConfig(cert *tls.Certificate, rootCAPool *x509.CertPool, serverName string) (*tls.Config, error) { |
|
587 |
+func NewClientTLSConfig(certs []tls.Certificate, rootCAPool *x509.CertPool, serverName string) (*tls.Config, error) { |
|
588 | 588 |
if rootCAPool == nil { |
589 | 589 |
return nil, errors.New("valid root CA pool required") |
590 | 590 |
} |
591 | 591 |
|
592 | 592 |
return &tls.Config{ |
593 | 593 |
ServerName: serverName, |
594 |
- Certificates: []tls.Certificate{*cert}, |
|
594 |
+ Certificates: certs, |
|
595 | 595 |
RootCAs: rootCAPool, |
596 | 596 |
MinVersion: tls.VersionTLS12, |
597 | 597 |
}, nil |
... | ... |
@@ -600,7 +593,7 @@ func NewClientTLSConfig(cert *tls.Certificate, rootCAPool *x509.CertPool, server |
600 | 600 |
// NewClientTLSCredentials returns GRPC credentials for a TLS GRPC client, given a tls.Certificate |
601 | 601 |
// a PEM-Encoded root CA Certificate, and the name of the remote server the client wants to connect to. |
602 | 602 |
func (rootCA *RootCA) NewClientTLSCredentials(cert *tls.Certificate, serverName string) (*MutableTLSCreds, error) { |
603 |
- tlsConfig, err := NewClientTLSConfig(cert, rootCA.Pool, serverName) |
|
603 |
+ tlsConfig, err := NewClientTLSConfig([]tls.Certificate{*cert}, rootCA.Pool, serverName) |
|
604 | 604 |
if err != nil { |
605 | 605 |
return nil, err |
606 | 606 |
} |
... | ... |
@@ -613,7 +606,7 @@ func (rootCA *RootCA) NewClientTLSCredentials(cert *tls.Certificate, serverName |
613 | 613 |
// NewServerTLSCredentials returns GRPC credentials for a TLS GRPC client, given a tls.Certificate |
614 | 614 |
// a PEM-Encoded root CA Certificate, and the name of the remote server the client wants to connect to. |
615 | 615 |
func (rootCA *RootCA) NewServerTLSCredentials(cert *tls.Certificate) (*MutableTLSCreds, error) { |
616 |
- tlsConfig, err := NewServerTLSConfig(cert, rootCA.Pool) |
|
616 |
+ tlsConfig, err := NewServerTLSConfig([]tls.Certificate{*cert}, rootCA.Pool) |
|
617 | 617 |
if err != nil { |
618 | 618 |
return nil, err |
619 | 619 |
} |
... | ... |
@@ -1,7 +1,7 @@ |
1 | 1 |
package ca |
2 | 2 |
|
3 | 3 |
import ( |
4 |
- "crypto/rand" |
|
4 |
+ cryptorand "crypto/rand" |
|
5 | 5 |
"crypto/x509" |
6 | 6 |
"encoding/pem" |
7 | 7 |
"io/ioutil" |
... | ... |
@@ -345,7 +345,7 @@ func (k *KeyReadWriter) readKey() (*pem.Block, error) { |
345 | 345 |
// writing it to disk. If the kek is nil, writes it to disk unencrypted. |
346 | 346 |
func (k *KeyReadWriter) writeKey(keyBlock *pem.Block, kekData KEKData, pkh PEMKeyHeaders) error { |
347 | 347 |
if kekData.KEK != nil { |
348 |
- encryptedPEMBlock, err := x509.EncryptPEMBlock(rand.Reader, |
|
348 |
+ encryptedPEMBlock, err := x509.EncryptPEMBlock(cryptorand.Reader, |
|
349 | 349 |
keyBlock.Type, |
350 | 350 |
keyBlock.Bytes, |
351 | 351 |
kekData.KEK, |
... | ... |
@@ -392,14 +392,12 @@ func (s *Server) Run(ctx context.Context) error { |
392 | 392 |
if len(clusters) != 1 { |
393 | 393 |
return errors.New("could not find cluster object") |
394 | 394 |
} |
395 |
- s.updateCluster(ctx, clusters[0]) |
|
396 |
- |
|
395 |
+ s.UpdateRootCA(ctx, clusters[0]) // call once to ensure that the join tokens are always set |
|
397 | 396 |
nodes, err = store.FindNodes(readTx, store.All) |
398 | 397 |
return err |
399 | 398 |
}, |
400 | 399 |
state.EventCreateNode{}, |
401 | 400 |
state.EventUpdateNode{}, |
402 |
- state.EventUpdateCluster{}, |
|
403 | 401 |
) |
404 | 402 |
|
405 | 403 |
// Do this after updateCluster has been called, so isRunning never |
... | ... |
@@ -435,6 +433,12 @@ func (s *Server) Run(ctx context.Context) error { |
435 | 435 |
// to the cluster |
436 | 436 |
for { |
437 | 437 |
select { |
438 |
+ case <-ctx.Done(): |
|
439 |
+ return nil |
|
440 |
+ default: |
|
441 |
+ } |
|
442 |
+ |
|
443 |
+ select { |
|
438 | 444 |
case event := <-updates: |
439 | 445 |
switch v := event.(type) { |
440 | 446 |
case state.EventCreateNode: |
... | ... |
@@ -445,8 +449,6 @@ func (s *Server) Run(ctx context.Context) error { |
445 | 445 |
if !isFinalState(v.Node.Certificate.Status) { |
446 | 446 |
s.evaluateAndSignNodeCert(ctx, v.Node) |
447 | 447 |
} |
448 |
- case state.EventUpdateCluster: |
|
449 |
- s.updateCluster(ctx, v.Cluster) |
|
450 | 448 |
} |
451 | 449 |
case <-ticker.C: |
452 | 450 |
for _, node := range s.pending { |
... | ... |
@@ -512,9 +514,10 @@ func (s *Server) isRunning() bool { |
512 | 512 |
return true |
513 | 513 |
} |
514 | 514 |
|
515 |
-// updateCluster is called when there are cluster changes, and it ensures that the local RootCA is |
|
516 |
-// always aware of changes in clusterExpiry and the Root CA key material |
|
517 |
-func (s *Server) updateCluster(ctx context.Context, cluster *api.Cluster) { |
|
515 |
+// UpdateRootCA is called when there are cluster changes, and it ensures that the local RootCA is |
|
516 |
+// always aware of changes in clusterExpiry and the Root CA key material - this can be called by |
|
517 |
+// anything to update the root CA material |
|
518 |
+func (s *Server) UpdateRootCA(ctx context.Context, cluster *api.Cluster) { |
|
518 | 519 |
s.mu.Lock() |
519 | 520 |
s.joinTokens = cluster.RootCA.JoinTokens.Copy() |
520 | 521 |
s.mu.Unlock() |
... | ... |
@@ -120,8 +120,8 @@ func (c *MutableTLSCreds) ServerHandshake(rawConn net.Conn) (net.Conn, credentia |
120 | 120 |
return conn, credentials.TLSInfo{State: conn.ConnectionState()}, nil |
121 | 121 |
} |
122 | 122 |
|
123 |
-// LoadNewTLSConfig replaces the currently loaded TLS config with a new one |
|
124 |
-func (c *MutableTLSCreds) LoadNewTLSConfig(newConfig *tls.Config) error { |
|
123 |
+// loadNewTLSConfig replaces the currently loaded TLS config with a new one |
|
124 |
+func (c *MutableTLSCreds) loadNewTLSConfig(newConfig *tls.Config) error { |
|
125 | 125 |
newSubject, err := GetAndValidateCertificateSubject(newConfig.Certificates) |
126 | 126 |
if err != nil { |
127 | 127 |
return err |
... | ... |
@@ -1,7 +1,7 @@ |
1 | 1 |
package identity |
2 | 2 |
|
3 | 3 |
import ( |
4 |
- "crypto/rand" |
|
4 |
+ cryptorand "crypto/rand" |
|
5 | 5 |
"fmt" |
6 | 6 |
"io" |
7 | 7 |
"math/big" |
... | ... |
@@ -10,7 +10,7 @@ import ( |
10 | 10 |
var ( |
11 | 11 |
// idReader is used for random id generation. This declaration allows us to |
12 | 12 |
// replace it for testing. |
13 |
- idReader = rand.Reader |
|
13 |
+ idReader = cryptorand.Reader |
|
14 | 14 |
) |
15 | 15 |
|
16 | 16 |
// parameters for random identifier generation. We can tweak this when there is |
... | ... |
@@ -454,7 +454,7 @@ func (na *NetworkAllocator) releaseEndpoints(networks []*api.NetworkAttachment) |
454 | 454 |
func (na *NetworkAllocator) allocateVIP(vip *api.Endpoint_VirtualIP) error { |
455 | 455 |
localNet := na.getNetwork(vip.NetworkID) |
456 | 456 |
if localNet == nil { |
457 |
- return fmt.Errorf("networkallocator: could not find local network state") |
|
457 |
+ return errors.New("networkallocator: could not find local network state") |
|
458 | 458 |
} |
459 | 459 |
|
460 | 460 |
// If this IP is already allocated in memory we don't need to |
... | ... |
@@ -682,7 +682,7 @@ func (na *NetworkAllocator) resolveDriver(n *api.Network) (driverapi.Driver, str |
682 | 682 |
func (na *NetworkAllocator) loadDriver(name string) error { |
683 | 683 |
pg := na.drvRegistry.GetPluginGetter() |
684 | 684 |
if pg == nil { |
685 |
- return fmt.Errorf("plugin store is uninitialized") |
|
685 |
+ return errors.New("plugin store is uninitialized") |
|
686 | 686 |
} |
687 | 687 |
_, err := pg.Get(name, driverapi.NetworkPluginEndpointType, plugingetter.Lookup) |
688 | 688 |
return err |
... | ... |
@@ -739,7 +739,7 @@ func (na *NetworkAllocator) allocatePools(n *api.Network) (map[string]string, er |
739 | 739 |
} |
740 | 740 |
|
741 | 741 |
// We don't support user defined address spaces yet so just |
742 |
- // retrive default address space names for the driver. |
|
742 |
+ // retrieve default address space names for the driver. |
|
743 | 743 |
_, asName, err := na.drvRegistry.IPAMDefaultAddressSpaces(dName) |
744 | 744 |
if err != nil { |
745 | 745 |
return nil, err |
... | ... |
@@ -94,6 +94,10 @@ func validateDriver(driver *api.Driver, pg plugingetter.PluginGetter, pluginType |
94 | 94 |
return nil |
95 | 95 |
} |
96 | 96 |
|
97 |
+ if pg == nil { |
|
98 |
+ return grpc.Errorf(codes.InvalidArgument, "plugin %s not supported", driver.Name) |
|
99 |
+ } |
|
100 |
+ |
|
97 | 101 |
p, err := pg.Get(driver.Name, pluginType, plugingetter.Lookup) |
98 | 102 |
if err != nil { |
99 | 103 |
return grpc.Errorf(codes.InvalidArgument, "error during lookup of plugin %s", driver.Name) |
... | ... |
@@ -117,29 +117,7 @@ func validateUpdate(uc *api.UpdateConfig) error { |
117 | 117 |
return nil |
118 | 118 |
} |
119 | 119 |
|
120 |
-func validateContainerSpec(taskSpec api.TaskSpec) error { |
|
121 |
- // Building a empty/dummy Task to validate the templating and |
|
122 |
- // the resulting container spec as well. This is a *best effort* |
|
123 |
- // validation. |
|
124 |
- container, err := template.ExpandContainerSpec(&api.Task{ |
|
125 |
- Spec: taskSpec, |
|
126 |
- ServiceID: "serviceid", |
|
127 |
- Slot: 1, |
|
128 |
- NodeID: "nodeid", |
|
129 |
- Networks: []*api.NetworkAttachment{}, |
|
130 |
- Annotations: api.Annotations{ |
|
131 |
- Name: "taskname", |
|
132 |
- }, |
|
133 |
- ServiceAnnotations: api.Annotations{ |
|
134 |
- Name: "servicename", |
|
135 |
- }, |
|
136 |
- Endpoint: &api.Endpoint{}, |
|
137 |
- LogDriver: taskSpec.LogDriver, |
|
138 |
- }) |
|
139 |
- if err != nil { |
|
140 |
- return grpc.Errorf(codes.InvalidArgument, err.Error()) |
|
141 |
- } |
|
142 |
- |
|
120 |
+func validateContainerSpec(container *api.ContainerSpec) error { |
|
143 | 121 |
if container == nil { |
144 | 122 |
return grpc.Errorf(codes.InvalidArgument, "ContainerSpec: missing in service spec") |
145 | 123 |
} |
... | ... |
@@ -163,18 +141,6 @@ func validateContainerSpec(taskSpec api.TaskSpec) error { |
163 | 163 |
return nil |
164 | 164 |
} |
165 | 165 |
|
166 |
-func validatePluginSpec(plugin *api.PluginSpec) error { |
|
167 |
- if plugin.Image == "" { |
|
168 |
- return grpc.Errorf(codes.InvalidArgument, "PluginSpec: image reference must be provided") |
|
169 |
- } |
|
170 |
- |
|
171 |
- if _, err := reference.ParseNormalizedNamed(plugin.Image); err != nil { |
|
172 |
- return grpc.Errorf(codes.InvalidArgument, "PluginSpec: %q is not a valid repository/tag", plugin.Image) |
|
173 |
- } |
|
174 |
- |
|
175 |
- return nil |
|
176 |
-} |
|
177 |
- |
|
178 | 166 |
func validateTaskSpec(taskSpec api.TaskSpec) error { |
179 | 167 |
if err := validateResourceRequirements(taskSpec.Resources); err != nil { |
180 | 168 |
return err |
... | ... |
@@ -197,18 +163,36 @@ func validateTaskSpec(taskSpec api.TaskSpec) error { |
197 | 197 |
return grpc.Errorf(codes.InvalidArgument, "TaskSpec: missing runtime") |
198 | 198 |
} |
199 | 199 |
|
200 |
- switch taskSpec.GetRuntime().(type) { |
|
201 |
- case *api.TaskSpec_Container: |
|
202 |
- if err := validateContainerSpec(taskSpec); err != nil { |
|
203 |
- return err |
|
204 |
- } |
|
205 |
- case *api.TaskSpec_Plugin: |
|
206 |
- if err := validatePluginSpec(taskSpec.GetPlugin()); err != nil { |
|
207 |
- return err |
|
208 |
- } |
|
209 |
- default: |
|
200 |
+ _, ok := taskSpec.GetRuntime().(*api.TaskSpec_Container) |
|
201 |
+ if !ok { |
|
210 | 202 |
return grpc.Errorf(codes.Unimplemented, "RuntimeSpec: unimplemented runtime in service spec") |
211 | 203 |
} |
204 |
+ |
|
205 |
+ // Building a empty/dummy Task to validate the templating and |
|
206 |
+ // the resulting container spec as well. This is a *best effort* |
|
207 |
+ // validation. |
|
208 |
+ preparedSpec, err := template.ExpandContainerSpec(&api.Task{ |
|
209 |
+ Spec: taskSpec, |
|
210 |
+ ServiceID: "serviceid", |
|
211 |
+ Slot: 1, |
|
212 |
+ NodeID: "nodeid", |
|
213 |
+ Networks: []*api.NetworkAttachment{}, |
|
214 |
+ Annotations: api.Annotations{ |
|
215 |
+ Name: "taskname", |
|
216 |
+ }, |
|
217 |
+ ServiceAnnotations: api.Annotations{ |
|
218 |
+ Name: "servicename", |
|
219 |
+ }, |
|
220 |
+ Endpoint: &api.Endpoint{}, |
|
221 |
+ LogDriver: taskSpec.LogDriver, |
|
222 |
+ }) |
|
223 |
+ if err != nil { |
|
224 |
+ return grpc.Errorf(codes.InvalidArgument, err.Error()) |
|
225 |
+ } |
|
226 |
+ if err := validateContainerSpec(preparedSpec); err != nil { |
|
227 |
+ return err |
|
228 |
+ } |
|
229 |
+ |
|
212 | 230 |
return nil |
213 | 231 |
} |
214 | 232 |
|
... | ... |
@@ -3,6 +3,7 @@ package controlapi |
3 | 3 |
import ( |
4 | 4 |
"github.com/docker/swarmkit/api" |
5 | 5 |
"github.com/docker/swarmkit/api/naming" |
6 |
+ "github.com/docker/swarmkit/manager/orchestrator" |
|
6 | 7 |
"github.com/docker/swarmkit/manager/state/store" |
7 | 8 |
"golang.org/x/net/context" |
8 | 9 |
"google.golang.org/grpc" |
... | ... |
@@ -97,12 +98,11 @@ func (s *Server) ListTasks(ctx context.Context, request *api.ListTasksRequest) ( |
97 | 97 |
default: |
98 | 98 |
tasks, err = store.FindTasks(tx, store.All) |
99 | 99 |
} |
100 |
- }) |
|
101 |
- if err != nil { |
|
102 |
- return nil, err |
|
103 |
- } |
|
104 | 100 |
|
105 |
- if request.Filters != nil { |
|
101 |
+ if err != nil || request.Filters == nil { |
|
102 |
+ return |
|
103 |
+ } |
|
104 |
+ |
|
106 | 105 |
tasks = filterTasks(tasks, |
107 | 106 |
func(e *api.Task) bool { |
108 | 107 |
return filterContains(naming.Task(e), request.Filters.Names) |
... | ... |
@@ -133,7 +133,23 @@ func (s *Server) ListTasks(ctx context.Context, request *api.ListTasksRequest) ( |
133 | 133 |
} |
134 | 134 |
return false |
135 | 135 |
}, |
136 |
+ func(e *api.Task) bool { |
|
137 |
+ if !request.Filters.UpToDate { |
|
138 |
+ return true |
|
139 |
+ } |
|
140 |
+ |
|
141 |
+ service := store.GetService(tx, e.ServiceID) |
|
142 |
+ if service == nil { |
|
143 |
+ return false |
|
144 |
+ } |
|
145 |
+ |
|
146 |
+ return !orchestrator.IsTaskDirty(service, e) |
|
147 |
+ }, |
|
136 | 148 |
) |
149 |
+ }) |
|
150 |
+ |
|
151 |
+ if err != nil { |
|
152 |
+ return nil, err |
|
137 | 153 |
} |
138 | 154 |
|
139 | 155 |
return &api.ListTasksResponse{ |
... | ... |
@@ -1,7 +1,7 @@ |
1 | 1 |
package encryption |
2 | 2 |
|
3 | 3 |
import ( |
4 |
- "crypto/rand" |
|
4 |
+ cryptorand "crypto/rand" |
|
5 | 5 |
"encoding/base64" |
6 | 6 |
"fmt" |
7 | 7 |
"io" |
... | ... |
@@ -105,7 +105,7 @@ func Defaults(key []byte) (Encrypter, Decrypter) { |
105 | 105 |
// using this package |
106 | 106 |
func GenerateSecretKey() []byte { |
107 | 107 |
secretData := make([]byte, naclSecretboxKeySize) |
108 |
- if _, err := io.ReadFull(rand.Reader, secretData); err != nil { |
|
108 |
+ if _, err := io.ReadFull(cryptorand.Reader, secretData); err != nil { |
|
109 | 109 |
// panic if we can't read random data |
110 | 110 |
panic(errors.Wrap(err, "failed to read random bytes")) |
111 | 111 |
} |
... | ... |
@@ -1,7 +1,7 @@ |
1 | 1 |
package encryption |
2 | 2 |
|
3 | 3 |
import ( |
4 |
- "crypto/rand" |
|
4 |
+ cryptorand "crypto/rand" |
|
5 | 5 |
"fmt" |
6 | 6 |
"io" |
7 | 7 |
|
... | ... |
@@ -37,7 +37,7 @@ func (n NACLSecretbox) Algorithm() api.MaybeEncryptedRecord_Algorithm { |
37 | 37 |
// Encrypt encrypts some bytes and returns an encrypted record |
38 | 38 |
func (n NACLSecretbox) Encrypt(data []byte) (*api.MaybeEncryptedRecord, error) { |
39 | 39 |
var nonce [24]byte |
40 |
- if _, err := io.ReadFull(rand.Reader, nonce[:]); err != nil { |
|
40 |
+ if _, err := io.ReadFull(cryptorand.Reader, nonce[:]); err != nil { |
|
41 | 41 |
return nil, err |
42 | 42 |
} |
43 | 43 |
|
... | ... |
@@ -6,7 +6,7 @@ package keymanager |
6 | 6 |
// which is used to exchange service discovery and overlay network control |
7 | 7 |
// plane information. It can also be used to encrypt overlay data traffic. |
8 | 8 |
import ( |
9 |
- "crypto/rand" |
|
9 |
+ cryptorand "crypto/rand" |
|
10 | 10 |
"encoding/binary" |
11 | 11 |
"sync" |
12 | 12 |
"time" |
... | ... |
@@ -95,7 +95,7 @@ func New(store *store.MemoryStore, config *Config) *KeyManager { |
95 | 95 |
func (k *KeyManager) allocateKey(ctx context.Context, subsys string) *api.EncryptionKey { |
96 | 96 |
key := make([]byte, k.config.Keylen) |
97 | 97 |
|
98 |
- _, err := rand.Read(key) |
|
98 |
+ _, err := cryptorand.Read(key) |
|
99 | 99 |
if err != nil { |
100 | 100 |
panic(errors.Wrap(err, "key generated failed")) |
101 | 101 |
} |
... | ... |
@@ -232,7 +232,7 @@ func (k *KeyManager) Stop() error { |
232 | 232 |
// genSkew generates a random uint64 number between 0 and 65535 |
233 | 233 |
func genSkew() uint64 { |
234 | 234 |
b := make([]byte, 2) |
235 |
- if _, err := rand.Read(b); err != nil { |
|
235 |
+ if _, err := cryptorand.Read(b); err != nil { |
|
236 | 236 |
panic(err) |
237 | 237 |
} |
238 | 238 |
return uint64(binary.BigEndian.Uint16(b)) |
... | ... |
@@ -360,7 +360,7 @@ func (lb *LogBroker) PublishLogs(stream api.LogBroker_PublishLogsServer) (err er |
360 | 360 |
}() |
361 | 361 |
|
362 | 362 |
for { |
363 |
- log, err := stream.Recv() |
|
363 |
+ logMsg, err := stream.Recv() |
|
364 | 364 |
if err == io.EOF { |
365 | 365 |
return stream.SendAndClose(&api.PublishLogsResponse{}) |
366 | 366 |
} |
... | ... |
@@ -368,28 +368,37 @@ func (lb *LogBroker) PublishLogs(stream api.LogBroker_PublishLogsServer) (err er |
368 | 368 |
return err |
369 | 369 |
} |
370 | 370 |
|
371 |
- if log.SubscriptionID == "" { |
|
371 |
+ if logMsg.SubscriptionID == "" { |
|
372 | 372 |
return grpc.Errorf(codes.InvalidArgument, "missing subscription ID") |
373 | 373 |
} |
374 | 374 |
|
375 | 375 |
if currentSubscription == nil { |
376 |
- currentSubscription = lb.getSubscription(log.SubscriptionID) |
|
376 |
+ currentSubscription = lb.getSubscription(logMsg.SubscriptionID) |
|
377 | 377 |
if currentSubscription == nil { |
378 | 378 |
return grpc.Errorf(codes.NotFound, "unknown subscription ID") |
379 | 379 |
} |
380 | 380 |
} else { |
381 |
- if log.SubscriptionID != currentSubscription.message.ID { |
|
381 |
+ if logMsg.SubscriptionID != currentSubscription.message.ID { |
|
382 | 382 |
return grpc.Errorf(codes.InvalidArgument, "different subscription IDs in the same session") |
383 | 383 |
} |
384 | 384 |
} |
385 | 385 |
|
386 |
+ // if we have a close message, close out the subscription |
|
387 |
+ if logMsg.Close { |
|
388 |
+ // Mark done and then set to nil so if we error after this point, |
|
389 |
+ // we don't try to close again in the defer |
|
390 |
+ currentSubscription.Done(remote.NodeID, err) |
|
391 |
+ currentSubscription = nil |
|
392 |
+ return nil |
|
393 |
+ } |
|
394 |
+ |
|
386 | 395 |
// Make sure logs are emitted using the right Node ID to avoid impersonation. |
387 |
- for _, msg := range log.Messages { |
|
396 |
+ for _, msg := range logMsg.Messages { |
|
388 | 397 |
if msg.Context.NodeID != remote.NodeID { |
389 | 398 |
return grpc.Errorf(codes.PermissionDenied, "invalid NodeID: expected=%s;received=%s", remote.NodeID, msg.Context.NodeID) |
390 | 399 |
} |
391 | 400 |
} |
392 | 401 |
|
393 |
- lb.publish(log) |
|
402 |
+ lb.publish(logMsg) |
|
394 | 403 |
} |
395 | 404 |
} |
... | ... |
@@ -182,6 +182,10 @@ func (s *subscription) match() { |
182 | 182 |
continue |
183 | 183 |
} |
184 | 184 |
for _, task := range tasks { |
185 |
+ // if we're not following, don't add tasks that aren't running yet |
|
186 |
+ if !s.follow() && task.Status.State < api.TaskStateRunning { |
|
187 |
+ continue |
|
188 |
+ } |
|
185 | 189 |
add(task) |
186 | 190 |
} |
187 | 191 |
} |
... | ... |
@@ -514,7 +514,7 @@ func (m *Manager) Run(parent context.Context) error { |
514 | 514 |
} |
515 | 515 |
raftConfig := c.Spec.Raft |
516 | 516 |
|
517 |
- if err := m.watchForKEKChanges(ctx); err != nil { |
|
517 |
+ if err := m.watchForClusterChanges(ctx); err != nil { |
|
518 | 518 |
return err |
519 | 519 |
} |
520 | 520 |
|
... | ... |
@@ -679,7 +679,7 @@ func (m *Manager) updateKEK(ctx context.Context, cluster *api.Cluster) error { |
679 | 679 |
return nil |
680 | 680 |
} |
681 | 681 |
|
682 |
-func (m *Manager) watchForKEKChanges(ctx context.Context) error { |
|
682 |
+func (m *Manager) watchForClusterChanges(ctx context.Context) error { |
|
683 | 683 |
clusterID := m.config.SecurityConfig.ClientTLSCreds.Organization() |
684 | 684 |
clusterWatch, clusterWatchCancel, err := store.ViewAndWatch(m.raftNode.MemoryStore(), |
685 | 685 |
func(tx store.ReadTx) error { |
... | ... |
@@ -687,6 +687,7 @@ func (m *Manager) watchForKEKChanges(ctx context.Context) error { |
687 | 687 |
if cluster == nil { |
688 | 688 |
return fmt.Errorf("unable to get current cluster") |
689 | 689 |
} |
690 |
+ m.caserver.UpdateRootCA(ctx, cluster) |
|
690 | 691 |
return m.updateKEK(ctx, cluster) |
691 | 692 |
}, |
692 | 693 |
state.EventUpdateCluster{ |
... | ... |
@@ -702,6 +703,7 @@ func (m *Manager) watchForKEKChanges(ctx context.Context) error { |
702 | 702 |
select { |
703 | 703 |
case event := <-clusterWatch: |
704 | 704 |
clusterEvent := event.(state.EventUpdateCluster) |
705 |
+ m.caserver.UpdateRootCA(ctx, clusterEvent.Cluster) |
|
705 | 706 |
m.updateKEK(ctx, clusterEvent.Cluster) |
706 | 707 |
case <-ctx.Done(): |
707 | 708 |
clusterWatchCancel() |
... | ... |
@@ -1030,6 +1032,10 @@ func defaultClusterObject( |
1030 | 1030 |
encryptionConfig api.EncryptionConfig, |
1031 | 1031 |
initialUnlockKeys []*api.EncryptionKey, |
1032 | 1032 |
rootCA *ca.RootCA) *api.Cluster { |
1033 |
+ var caKey []byte |
|
1034 |
+ if rootCA.Signer != nil { |
|
1035 |
+ caKey = rootCA.Signer.Key |
|
1036 |
+ } |
|
1033 | 1037 |
|
1034 | 1038 |
return &api.Cluster{ |
1035 | 1039 |
ID: clusterID, |
... | ... |
@@ -1048,7 +1054,7 @@ func defaultClusterObject( |
1048 | 1048 |
EncryptionConfig: encryptionConfig, |
1049 | 1049 |
}, |
1050 | 1050 |
RootCA: api.RootCA{ |
1051 |
- CAKey: rootCA.Key, |
|
1051 |
+ CAKey: caKey, |
|
1052 | 1052 |
CACert: rootCA.Cert, |
1053 | 1053 |
CACertHash: rootCA.Digest.String(), |
1054 | 1054 |
JoinTokens: api.JoinTokens{ |
... | ... |
@@ -132,14 +132,6 @@ func (p *peer) resolveAddr(ctx context.Context, id uint64) (string, error) { |
132 | 132 |
return resp.Addr, nil |
133 | 133 |
} |
134 | 134 |
|
135 |
-func (p *peer) reportSnapshot(failure bool) { |
|
136 |
- if failure { |
|
137 |
- p.tr.config.ReportSnapshot(p.id, raft.SnapshotFailure) |
|
138 |
- return |
|
139 |
- } |
|
140 |
- p.tr.config.ReportSnapshot(p.id, raft.SnapshotFinish) |
|
141 |
-} |
|
142 |
- |
|
143 | 135 |
func (p *peer) sendProcessMessage(ctx context.Context, m raftpb.Message) error { |
144 | 136 |
ctx, cancel := context.WithTimeout(ctx, p.tr.config.SendTimeout) |
145 | 137 |
defer cancel() |
... | ... |
@@ -151,9 +143,9 @@ func (p *peer) sendProcessMessage(ctx context.Context, m raftpb.Message) error { |
151 | 151 |
if err != nil { |
152 | 152 |
p.tr.config.ReportSnapshot(m.To, raft.SnapshotFailure) |
153 | 153 |
} else { |
154 |
+ p.tr.config.ReportSnapshot(m.To, raft.SnapshotFinish) |
|
154 | 155 |
} |
155 | 156 |
} |
156 |
- p.reportSnapshot(err != nil) |
|
157 | 157 |
if err != nil { |
158 | 158 |
p.tr.config.ReportUnreachable(m.To) |
159 | 159 |
return err |
... | ... |
@@ -33,7 +33,10 @@ import ( |
33 | 33 |
"google.golang.org/grpc/credentials" |
34 | 34 |
) |
35 | 35 |
|
36 |
-const stateFilename = "state.json" |
|
36 |
+const ( |
|
37 |
+ stateFilename = "state.json" |
|
38 |
+ roleChangeTimeout = 16 * time.Second |
|
39 |
+) |
|
37 | 40 |
|
38 | 41 |
var ( |
39 | 42 |
errNodeStarted = errors.New("node: already started") |
... | ... |
@@ -269,12 +272,11 @@ func (n *Node) run(ctx context.Context) (err error) { |
269 | 269 |
} |
270 | 270 |
n.Lock() |
271 | 271 |
// If we got a role change, renew |
272 |
- lastRole := n.role |
|
273 | 272 |
role := ca.WorkerRole |
274 | 273 |
if node.Role == api.NodeRoleManager { |
275 | 274 |
role = ca.ManagerRole |
276 | 275 |
} |
277 |
- if lastRole == role { |
|
276 |
+ if n.role == role { |
|
278 | 277 |
n.Unlock() |
279 | 278 |
continue |
280 | 279 |
} |
... | ... |
@@ -284,23 +286,23 @@ func (n *Node) run(ctx context.Context) (err error) { |
284 | 284 |
} |
285 | 285 |
}() |
286 | 286 |
|
287 |
+ var wg sync.WaitGroup |
|
288 |
+ wg.Add(3) |
|
289 |
+ |
|
287 | 290 |
updates := ca.RenewTLSConfig(ctx, securityConfig, n.connBroker, forceCertRenewal) |
288 | 291 |
go func() { |
289 |
- for { |
|
290 |
- select { |
|
291 |
- case certUpdate := <-updates: |
|
292 |
- if certUpdate.Err != nil { |
|
293 |
- logrus.Warnf("error renewing TLS certificate: %v", certUpdate.Err) |
|
294 |
- continue |
|
295 |
- } |
|
296 |
- n.Lock() |
|
297 |
- n.role = certUpdate.Role |
|
298 |
- n.roleCond.Broadcast() |
|
299 |
- n.Unlock() |
|
300 |
- case <-ctx.Done(): |
|
301 |
- return |
|
292 |
+ for certUpdate := range updates { |
|
293 |
+ if certUpdate.Err != nil { |
|
294 |
+ logrus.Warnf("error renewing TLS certificate: %v", certUpdate.Err) |
|
295 |
+ continue |
|
302 | 296 |
} |
297 |
+ n.Lock() |
|
298 |
+ n.role = certUpdate.Role |
|
299 |
+ n.roleCond.Broadcast() |
|
300 |
+ n.Unlock() |
|
303 | 301 |
} |
302 |
+ |
|
303 |
+ wg.Done() |
|
304 | 304 |
}() |
305 | 305 |
|
306 | 306 |
role := n.role |
... | ... |
@@ -309,10 +311,8 @@ func (n *Node) run(ctx context.Context) (err error) { |
309 | 309 |
agentReady := make(chan struct{}) |
310 | 310 |
var managerErr error |
311 | 311 |
var agentErr error |
312 |
- var wg sync.WaitGroup |
|
313 |
- wg.Add(2) |
|
314 | 312 |
go func() { |
315 |
- managerErr = n.superviseManager(ctx, securityConfig, managerReady) // store err and loop |
|
313 |
+ managerErr = n.superviseManager(ctx, securityConfig, managerReady, forceCertRenewal) // store err and loop |
|
316 | 314 |
wg.Done() |
317 | 315 |
cancel() |
318 | 316 |
}() |
... | ... |
@@ -703,7 +703,7 @@ func (n *Node) waitRole(ctx context.Context, role string) error { |
703 | 703 |
return nil |
704 | 704 |
} |
705 | 705 |
|
706 |
-func (n *Node) runManager(ctx context.Context, securityConfig *ca.SecurityConfig, ready chan struct{}, workerRole <-chan struct{}) error { |
|
706 |
+func (n *Node) runManager(ctx context.Context, securityConfig *ca.SecurityConfig, ready chan struct{}, workerRole <-chan struct{}) (bool, error) { |
|
707 | 707 |
var remoteAPI *manager.RemoteAddrs |
708 | 708 |
if n.config.ListenRemoteAPI != "" { |
709 | 709 |
remoteAPI = &manager.RemoteAddrs{ |
... | ... |
@@ -729,7 +729,7 @@ func (n *Node) runManager(ctx context.Context, securityConfig *ca.SecurityConfig |
729 | 729 |
PluginGetter: n.config.PluginGetter, |
730 | 730 |
}) |
731 | 731 |
if err != nil { |
732 |
- return err |
|
732 |
+ return false, err |
|
733 | 733 |
} |
734 | 734 |
done := make(chan struct{}) |
735 | 735 |
var runErr error |
... | ... |
@@ -762,7 +762,7 @@ func (n *Node) runManager(ctx context.Context, securityConfig *ca.SecurityConfig |
762 | 762 |
// wait for manager stop or for role change |
763 | 763 |
select { |
764 | 764 |
case <-done: |
765 |
- return runErr |
|
765 |
+ return false, runErr |
|
766 | 766 |
case <-workerRole: |
767 | 767 |
log.G(ctx).Info("role changed to worker, stopping manager") |
768 | 768 |
clearData = true |
... | ... |
@@ -770,12 +770,12 @@ func (n *Node) runManager(ctx context.Context, securityConfig *ca.SecurityConfig |
770 | 770 |
log.G(ctx).Info("manager removed from raft cluster, stopping manager") |
771 | 771 |
clearData = true |
772 | 772 |
case <-ctx.Done(): |
773 |
- return ctx.Err() |
|
773 |
+ return false, ctx.Err() |
|
774 | 774 |
} |
775 |
- return nil |
|
775 |
+ return clearData, nil |
|
776 | 776 |
} |
777 | 777 |
|
778 |
-func (n *Node) superviseManager(ctx context.Context, securityConfig *ca.SecurityConfig, ready chan struct{}) error { |
|
778 |
+func (n *Node) superviseManager(ctx context.Context, securityConfig *ca.SecurityConfig, ready chan struct{}, forceCertRenewal chan struct{}) error { |
|
779 | 779 |
for { |
780 | 780 |
if err := n.waitRole(ctx, ca.ManagerRole); err != nil { |
781 | 781 |
return err |
... | ... |
@@ -789,7 +789,8 @@ func (n *Node) superviseManager(ctx context.Context, securityConfig *ca.Security |
789 | 789 |
} |
790 | 790 |
}() |
791 | 791 |
|
792 |
- if err := n.runManager(ctx, securityConfig, ready, workerRole); err != nil { |
|
792 |
+ wasRemoved, err := n.runManager(ctx, securityConfig, ready, workerRole) |
|
793 |
+ if err != nil { |
|
793 | 794 |
waitRoleCancel() |
794 | 795 |
return errors.Wrap(err, "manager stopped") |
795 | 796 |
} |
... | ... |
@@ -798,18 +799,60 @@ func (n *Node) superviseManager(ctx context.Context, securityConfig *ca.Security |
798 | 798 |
// "manager", it's possible that the manager was demoted and |
799 | 799 |
// the agent hasn't realized this yet. We should wait for the |
800 | 800 |
// role to change instead of restarting the manager immediately. |
801 |
- timer := time.NewTimer(16 * time.Second) |
|
802 |
- select { |
|
803 |
- case <-timer.C: |
|
804 |
- log.G(ctx).Warn("failed to get worker role after manager stop, restarting manager") |
|
805 |
- case <-workerRole: |
|
806 |
- case <-ctx.Done(): |
|
807 |
- timer.Stop() |
|
808 |
- waitRoleCancel() |
|
809 |
- return ctx.Err() |
|
801 |
+ err = func() error { |
|
802 |
+ timer := time.NewTimer(roleChangeTimeout) |
|
803 |
+ defer timer.Stop() |
|
804 |
+ defer waitRoleCancel() |
|
805 |
+ |
|
806 |
+ select { |
|
807 |
+ case <-timer.C: |
|
808 |
+ case <-workerRole: |
|
809 |
+ return nil |
|
810 |
+ case <-ctx.Done(): |
|
811 |
+ return ctx.Err() |
|
812 |
+ } |
|
813 |
+ |
|
814 |
+ if !wasRemoved { |
|
815 |
+ log.G(ctx).Warn("failed to get worker role after manager stop, restarting manager") |
|
816 |
+ return nil |
|
817 |
+ } |
|
818 |
+ // We need to be extra careful about restarting the |
|
819 |
+ // manager. It may cause the node to wrongly join under |
|
820 |
+ // a new Raft ID. Since we didn't see a role change |
|
821 |
+ // yet, force a certificate renewal. If the certificate |
|
822 |
+ // comes back with a worker role, we know we shouldn't |
|
823 |
+ // restart the manager. However, if we don't see |
|
824 |
+ // workerRole get closed, it means we didn't switch to |
|
825 |
+ // a worker certificate, either because we couldn't |
|
826 |
+ // contact a working CA, or because we've been |
|
827 |
+ // re-promoted. In this case, we must assume we were |
|
828 |
+ // re-promoted, and restart the manager. |
|
829 |
+ log.G(ctx).Warn("failed to get worker role after manager stop, forcing certificate renewal") |
|
830 |
+ timer.Reset(roleChangeTimeout) |
|
831 |
+ |
|
832 |
+ select { |
|
833 |
+ case forceCertRenewal <- struct{}{}: |
|
834 |
+ case <-timer.C: |
|
835 |
+ log.G(ctx).Warn("failed to trigger certificate renewal after manager stop, restarting manager") |
|
836 |
+ return nil |
|
837 |
+ case <-ctx.Done(): |
|
838 |
+ return ctx.Err() |
|
839 |
+ } |
|
840 |
+ |
|
841 |
+ // Now that the renewal request has been sent to the |
|
842 |
+ // renewal goroutine, wait for a change in role. |
|
843 |
+ select { |
|
844 |
+ case <-timer.C: |
|
845 |
+ log.G(ctx).Warn("failed to get worker role after manager stop, restarting manager") |
|
846 |
+ case <-workerRole: |
|
847 |
+ case <-ctx.Done(): |
|
848 |
+ return ctx.Err() |
|
849 |
+ } |
|
850 |
+ return nil |
|
851 |
+ }() |
|
852 |
+ if err != nil { |
|
853 |
+ return err |
|
810 | 854 |
} |
811 |
- timer.Stop() |
|
812 |
- waitRoleCancel() |
|
813 | 855 |
|
814 | 856 |
ready = nil |
815 | 857 |
} |