executor: add pre 0.9 client and wrapper

This commit is contained in:
Nick Ethier
2019-01-13 16:05:07 -05:00
parent 9f7619344e
commit 2118d94b2d
8 changed files with 497 additions and 263 deletions

View File

@@ -0,0 +1,110 @@
package legacy
import (
"encoding/gob"
"net/rpc"
"os"
"syscall"
"time"
hclog "github.com/hashicorp/go-hclog"
"github.com/hashicorp/go-plugin"
cstructs "github.com/hashicorp/nomad/client/structs"
)
// Registering these types since we have to serialize and de-serialize the Task
// structs over the wire between drivers and the executor.
func init() {
gob.Register([]interface{}{})
gob.Register(map[string]interface{}{})
gob.Register([]map[string]string{})
gob.Register([]map[string]int{})
gob.Register(syscall.Signal(0x1))
}
type ExecutorRPC struct {
client *rpc.Client
logger hclog.Logger
}
type ProcessState struct {
Pid int
ExitCode int
Signal int
Time time.Time
}
type ExecutorVersion struct {
Version string
}
type ExecCmdArgs struct {
Deadline time.Time
Name string
Args []string
}
type ExecCmdReturn struct {
Output []byte
Code int
}
func (e *ExecutorRPC) Wait() (*ProcessState, error) {
var ps ProcessState
err := e.client.Call("Plugin.Wait", new(interface{}), &ps)
return &ps, err
}
func (e *ExecutorRPC) ShutDown() error {
return e.client.Call("Plugin.ShutDown", new(interface{}), new(interface{}))
}
func (e *ExecutorRPC) Exit() error {
return e.client.Call("Plugin.Exit", new(interface{}), new(interface{}))
}
func (e *ExecutorRPC) Version() (*ExecutorVersion, error) {
var version ExecutorVersion
err := e.client.Call("Plugin.Version", new(interface{}), &version)
return &version, err
}
func (e *ExecutorRPC) Stats() (*cstructs.TaskResourceUsage, error) {
var resourceUsage cstructs.TaskResourceUsage
err := e.client.Call("Plugin.Stats", new(interface{}), &resourceUsage)
return &resourceUsage, err
}
func (e *ExecutorRPC) Signal(s os.Signal) error {
return e.client.Call("Plugin.Signal", &s, new(interface{}))
}
func (e *ExecutorRPC) Exec(deadline time.Time, name string, args []string) ([]byte, int, error) {
req := ExecCmdArgs{
Deadline: deadline,
Name: name,
Args: args,
}
var resp *ExecCmdReturn
err := e.client.Call("Plugin.Exec", req, &resp)
if resp == nil {
return nil, 0, err
}
return resp.Output, resp.Code, err
}
type ExecutorPlugin struct {
logger hclog.Logger
}
func NewExecutorPlugin(logger hclog.Logger) plugin.Plugin {
return &ExecutorPlugin{logger: logger}
}
func (p *ExecutorPlugin) Client(b *plugin.MuxBroker, c *rpc.Client) (interface{}, error) {
return &ExecutorRPC{client: c, logger: p.logger}, nil
}
func (p *ExecutorPlugin) Server(*plugin.MuxBroker) (interface{}, error) {
panic("client only supported")
}

View File

@@ -0,0 +1,103 @@
package executor
import (
"os"
"time"
hclog "github.com/hashicorp/go-hclog"
cstructs "github.com/hashicorp/nomad/client/structs"
"github.com/hashicorp/nomad/drivers/shared/executor/legacy"
"github.com/hashicorp/nomad/plugins/drivers"
"golang.org/x/net/context"
)
type legacyExecutorWrapper struct {
client *legacy.ExecutorRPC
logger hclog.Logger
}
func (l *legacyExecutorWrapper) Launch(launchCmd *ExecCommand) (*ProcessState, error) {
panic("not implemented")
}
func (l *legacyExecutorWrapper) Wait(ctx context.Context) (*ProcessState, error) {
ps, err := l.client.Wait()
if err != nil {
return nil, err
}
return &ProcessState{
Pid: ps.Pid,
ExitCode: ps.ExitCode,
Signal: ps.Signal,
Time: ps.Time,
}, nil
}
func (l *legacyExecutorWrapper) Shutdown(signal string, gracePeriod time.Duration) error {
if err := l.client.ShutDown(); err != nil {
return err
}
if err := l.client.Exit(); err != nil {
return err
}
return nil
}
func (l *legacyExecutorWrapper) UpdateResources(*drivers.Resources) error {
panic("not implemented")
}
func (l *legacyExecutorWrapper) Version() (*ExecutorVersion, error) {
v, err := l.client.Version()
if err != nil {
return nil, err
}
return &ExecutorVersion{
Version: v.Version,
}, nil
}
func (l *legacyExecutorWrapper) Stats(ctx context.Context, interval time.Duration) (<-chan *cstructs.TaskResourceUsage, error) {
ch := make(chan *cstructs.TaskResourceUsage, 1)
stats, err := l.client.Stats()
if err != nil {
close(ch)
return nil, err
}
select {
case ch <- stats:
default:
}
go l.handleStats(ctx, interval, ch)
return ch, nil
}
func (l *legacyExecutorWrapper) handleStats(ctx context.Context, interval time.Duration, ch chan *cstructs.TaskResourceUsage) {
defer close(ch)
ticker := time.NewTicker(interval)
for range ticker.C {
stats, err := l.client.Stats()
if err != nil {
l.logger.Warn("stats collection from legacy executor failed, waiting for next interval", "error", err)
continue
}
if stats != nil {
select {
case ch <- stats:
default:
}
}
}
}
func (l *legacyExecutorWrapper) Signal(s os.Signal) error {
return l.client.Signal(s)
}
func (l *legacyExecutorWrapper) Exec(deadline time.Time, cmd string, args []string) ([]byte, int, error) {
return l.client.Exec(deadline, cmd, args)
}

View File

@@ -5,6 +5,7 @@ import (
hclog "github.com/hashicorp/go-hclog"
plugin "github.com/hashicorp/go-plugin"
"github.com/hashicorp/nomad/drivers/shared/executor/legacy"
)
// ExecutorConfig is the config that Nomad passes to the executor
@@ -30,6 +31,20 @@ func GetPluginMap(logger hclog.Logger, fsIsolation bool) map[string]plugin.Plugi
}
}
func GetVersionedPluginMap(logger hclog.Logger, fsIsolation bool) map[int]map[string]plugin.Plugin {
return map[int]map[string]plugin.Plugin{
1: {
"executor": legacy.NewExecutorPlugin(logger),
},
2: {
"executor": ExecutorPlugin{
logger: logger,
fsIsolation: fsIsolation,
},
},
}
}
// ExecutorReattachConfig is the config that we serialize and de-serialize and
// store in disk
type PluginReattachConfig struct {

View File

@@ -25,7 +25,6 @@ const (
var (
// Handshake is a common handshake that is shared by all plugins and Nomad.
Handshake = plugin.HandshakeConfig{
ProtocolVersion: 1,
MagicCookieKey: "NOMAD_PLUGIN_MAGIC_COOKIE",
MagicCookieValue: "e4327c2e01eabfd75a8a67adb114fb34a757d57eee7728d857a8cec6e91a7255",
}

View File

@@ -50,7 +50,7 @@ func (x TaskState) String() string {
return proto.EnumName(TaskState_name, int32(x))
}
func (TaskState) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{0}
return fileDescriptor_driver_c5667ca6005812fb, []int{0}
}
type FingerprintResponse_HealthState int32
@@ -76,7 +76,7 @@ func (x FingerprintResponse_HealthState) String() string {
return proto.EnumName(FingerprintResponse_HealthState_name, int32(x))
}
func (FingerprintResponse_HealthState) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{5, 0}
return fileDescriptor_driver_c5667ca6005812fb, []int{5, 0}
}
type StartTaskResponse_Result int32
@@ -102,7 +102,7 @@ func (x StartTaskResponse_Result) String() string {
return proto.EnumName(StartTaskResponse_Result_name, int32(x))
}
func (StartTaskResponse_Result) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{9, 0}
return fileDescriptor_driver_c5667ca6005812fb, []int{9, 0}
}
type DriverCapabilities_FSIsolation int32
@@ -128,7 +128,7 @@ func (x DriverCapabilities_FSIsolation) String() string {
return proto.EnumName(DriverCapabilities_FSIsolation_name, int32(x))
}
func (DriverCapabilities_FSIsolation) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{25, 0}
return fileDescriptor_driver_c5667ca6005812fb, []int{25, 0}
}
type CPUUsage_Fields int32
@@ -163,7 +163,7 @@ func (x CPUUsage_Fields) String() string {
return proto.EnumName(CPUUsage_Fields_name, int32(x))
}
func (CPUUsage_Fields) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{43, 0}
return fileDescriptor_driver_c5667ca6005812fb, []int{43, 0}
}
type MemoryUsage_Fields int32
@@ -174,7 +174,6 @@ const (
MemoryUsage_MAX_USAGE MemoryUsage_Fields = 2
MemoryUsage_KERNEL_USAGE MemoryUsage_Fields = 3
MemoryUsage_KERNEL_MAX_USAGE MemoryUsage_Fields = 4
MemoryUsage_USAGE MemoryUsage_Fields = 5
)
var MemoryUsage_Fields_name = map[int32]string{
@@ -183,7 +182,6 @@ var MemoryUsage_Fields_name = map[int32]string{
2: "MAX_USAGE",
3: "KERNEL_USAGE",
4: "KERNEL_MAX_USAGE",
5: "USAGE",
}
var MemoryUsage_Fields_value = map[string]int32{
"RSS": 0,
@@ -191,14 +189,13 @@ var MemoryUsage_Fields_value = map[string]int32{
"MAX_USAGE": 2,
"KERNEL_USAGE": 3,
"KERNEL_MAX_USAGE": 4,
"USAGE": 5,
}
func (x MemoryUsage_Fields) String() string {
return proto.EnumName(MemoryUsage_Fields_name, int32(x))
}
func (MemoryUsage_Fields) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{44, 0}
return fileDescriptor_driver_c5667ca6005812fb, []int{44, 0}
}
type TaskConfigSchemaRequest struct {
@@ -211,7 +208,7 @@ func (m *TaskConfigSchemaRequest) Reset() { *m = TaskConfigSchemaRequest
func (m *TaskConfigSchemaRequest) String() string { return proto.CompactTextString(m) }
func (*TaskConfigSchemaRequest) ProtoMessage() {}
func (*TaskConfigSchemaRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{0}
return fileDescriptor_driver_c5667ca6005812fb, []int{0}
}
func (m *TaskConfigSchemaRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskConfigSchemaRequest.Unmarshal(m, b)
@@ -243,7 +240,7 @@ func (m *TaskConfigSchemaResponse) Reset() { *m = TaskConfigSchemaRespon
func (m *TaskConfigSchemaResponse) String() string { return proto.CompactTextString(m) }
func (*TaskConfigSchemaResponse) ProtoMessage() {}
func (*TaskConfigSchemaResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{1}
return fileDescriptor_driver_c5667ca6005812fb, []int{1}
}
func (m *TaskConfigSchemaResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskConfigSchemaResponse.Unmarshal(m, b)
@@ -280,7 +277,7 @@ func (m *CapabilitiesRequest) Reset() { *m = CapabilitiesRequest{} }
func (m *CapabilitiesRequest) String() string { return proto.CompactTextString(m) }
func (*CapabilitiesRequest) ProtoMessage() {}
func (*CapabilitiesRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{2}
return fileDescriptor_driver_c5667ca6005812fb, []int{2}
}
func (m *CapabilitiesRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CapabilitiesRequest.Unmarshal(m, b)
@@ -315,7 +312,7 @@ func (m *CapabilitiesResponse) Reset() { *m = CapabilitiesResponse{} }
func (m *CapabilitiesResponse) String() string { return proto.CompactTextString(m) }
func (*CapabilitiesResponse) ProtoMessage() {}
func (*CapabilitiesResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{3}
return fileDescriptor_driver_c5667ca6005812fb, []int{3}
}
func (m *CapabilitiesResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CapabilitiesResponse.Unmarshal(m, b)
@@ -352,7 +349,7 @@ func (m *FingerprintRequest) Reset() { *m = FingerprintRequest{} }
func (m *FingerprintRequest) String() string { return proto.CompactTextString(m) }
func (*FingerprintRequest) ProtoMessage() {}
func (*FingerprintRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{4}
return fileDescriptor_driver_c5667ca6005812fb, []int{4}
}
func (m *FingerprintRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FingerprintRequest.Unmarshal(m, b)
@@ -395,7 +392,7 @@ func (m *FingerprintResponse) Reset() { *m = FingerprintResponse{} }
func (m *FingerprintResponse) String() string { return proto.CompactTextString(m) }
func (*FingerprintResponse) ProtoMessage() {}
func (*FingerprintResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{5}
return fileDescriptor_driver_c5667ca6005812fb, []int{5}
}
func (m *FingerprintResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FingerprintResponse.Unmarshal(m, b)
@@ -450,7 +447,7 @@ func (m *RecoverTaskRequest) Reset() { *m = RecoverTaskRequest{} }
func (m *RecoverTaskRequest) String() string { return proto.CompactTextString(m) }
func (*RecoverTaskRequest) ProtoMessage() {}
func (*RecoverTaskRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{6}
return fileDescriptor_driver_c5667ca6005812fb, []int{6}
}
func (m *RecoverTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RecoverTaskRequest.Unmarshal(m, b)
@@ -494,7 +491,7 @@ func (m *RecoverTaskResponse) Reset() { *m = RecoverTaskResponse{} }
func (m *RecoverTaskResponse) String() string { return proto.CompactTextString(m) }
func (*RecoverTaskResponse) ProtoMessage() {}
func (*RecoverTaskResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{7}
return fileDescriptor_driver_c5667ca6005812fb, []int{7}
}
func (m *RecoverTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RecoverTaskResponse.Unmarshal(m, b)
@@ -526,7 +523,7 @@ func (m *StartTaskRequest) Reset() { *m = StartTaskRequest{} }
func (m *StartTaskRequest) String() string { return proto.CompactTextString(m) }
func (*StartTaskRequest) ProtoMessage() {}
func (*StartTaskRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{8}
return fileDescriptor_driver_c5667ca6005812fb, []int{8}
}
func (m *StartTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StartTaskRequest.Unmarshal(m, b)
@@ -580,7 +577,7 @@ func (m *StartTaskResponse) Reset() { *m = StartTaskResponse{} }
func (m *StartTaskResponse) String() string { return proto.CompactTextString(m) }
func (*StartTaskResponse) ProtoMessage() {}
func (*StartTaskResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{9}
return fileDescriptor_driver_c5667ca6005812fb, []int{9}
}
func (m *StartTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StartTaskResponse.Unmarshal(m, b)
@@ -640,7 +637,7 @@ func (m *WaitTaskRequest) Reset() { *m = WaitTaskRequest{} }
func (m *WaitTaskRequest) String() string { return proto.CompactTextString(m) }
func (*WaitTaskRequest) ProtoMessage() {}
func (*WaitTaskRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{10}
return fileDescriptor_driver_c5667ca6005812fb, []int{10}
}
func (m *WaitTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_WaitTaskRequest.Unmarshal(m, b)
@@ -681,7 +678,7 @@ func (m *WaitTaskResponse) Reset() { *m = WaitTaskResponse{} }
func (m *WaitTaskResponse) String() string { return proto.CompactTextString(m) }
func (*WaitTaskResponse) ProtoMessage() {}
func (*WaitTaskResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{11}
return fileDescriptor_driver_c5667ca6005812fb, []int{11}
}
func (m *WaitTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_WaitTaskResponse.Unmarshal(m, b)
@@ -733,7 +730,7 @@ func (m *StopTaskRequest) Reset() { *m = StopTaskRequest{} }
func (m *StopTaskRequest) String() string { return proto.CompactTextString(m) }
func (*StopTaskRequest) ProtoMessage() {}
func (*StopTaskRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{12}
return fileDescriptor_driver_c5667ca6005812fb, []int{12}
}
func (m *StopTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StopTaskRequest.Unmarshal(m, b)
@@ -784,7 +781,7 @@ func (m *StopTaskResponse) Reset() { *m = StopTaskResponse{} }
func (m *StopTaskResponse) String() string { return proto.CompactTextString(m) }
func (*StopTaskResponse) ProtoMessage() {}
func (*StopTaskResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{13}
return fileDescriptor_driver_c5667ca6005812fb, []int{13}
}
func (m *StopTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StopTaskResponse.Unmarshal(m, b)
@@ -818,7 +815,7 @@ func (m *DestroyTaskRequest) Reset() { *m = DestroyTaskRequest{} }
func (m *DestroyTaskRequest) String() string { return proto.CompactTextString(m) }
func (*DestroyTaskRequest) ProtoMessage() {}
func (*DestroyTaskRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{14}
return fileDescriptor_driver_c5667ca6005812fb, []int{14}
}
func (m *DestroyTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DestroyTaskRequest.Unmarshal(m, b)
@@ -862,7 +859,7 @@ func (m *DestroyTaskResponse) Reset() { *m = DestroyTaskResponse{} }
func (m *DestroyTaskResponse) String() string { return proto.CompactTextString(m) }
func (*DestroyTaskResponse) ProtoMessage() {}
func (*DestroyTaskResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{15}
return fileDescriptor_driver_c5667ca6005812fb, []int{15}
}
func (m *DestroyTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DestroyTaskResponse.Unmarshal(m, b)
@@ -894,7 +891,7 @@ func (m *InspectTaskRequest) Reset() { *m = InspectTaskRequest{} }
func (m *InspectTaskRequest) String() string { return proto.CompactTextString(m) }
func (*InspectTaskRequest) ProtoMessage() {}
func (*InspectTaskRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{16}
return fileDescriptor_driver_c5667ca6005812fb, []int{16}
}
func (m *InspectTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InspectTaskRequest.Unmarshal(m, b)
@@ -937,7 +934,7 @@ func (m *InspectTaskResponse) Reset() { *m = InspectTaskResponse{} }
func (m *InspectTaskResponse) String() string { return proto.CompactTextString(m) }
func (*InspectTaskResponse) ProtoMessage() {}
func (*InspectTaskResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{17}
return fileDescriptor_driver_c5667ca6005812fb, []int{17}
}
func (m *InspectTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InspectTaskResponse.Unmarshal(m, b)
@@ -992,7 +989,7 @@ func (m *TaskStatsRequest) Reset() { *m = TaskStatsRequest{} }
func (m *TaskStatsRequest) String() string { return proto.CompactTextString(m) }
func (*TaskStatsRequest) ProtoMessage() {}
func (*TaskStatsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{18}
return fileDescriptor_driver_c5667ca6005812fb, []int{18}
}
func (m *TaskStatsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskStatsRequest.Unmarshal(m, b)
@@ -1038,7 +1035,7 @@ func (m *TaskStatsResponse) Reset() { *m = TaskStatsResponse{} }
func (m *TaskStatsResponse) String() string { return proto.CompactTextString(m) }
func (*TaskStatsResponse) ProtoMessage() {}
func (*TaskStatsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{19}
return fileDescriptor_driver_c5667ca6005812fb, []int{19}
}
func (m *TaskStatsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskStatsResponse.Unmarshal(m, b)
@@ -1075,7 +1072,7 @@ func (m *TaskEventsRequest) Reset() { *m = TaskEventsRequest{} }
func (m *TaskEventsRequest) String() string { return proto.CompactTextString(m) }
func (*TaskEventsRequest) ProtoMessage() {}
func (*TaskEventsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{20}
return fileDescriptor_driver_c5667ca6005812fb, []int{20}
}
func (m *TaskEventsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskEventsRequest.Unmarshal(m, b)
@@ -1109,7 +1106,7 @@ func (m *SignalTaskRequest) Reset() { *m = SignalTaskRequest{} }
func (m *SignalTaskRequest) String() string { return proto.CompactTextString(m) }
func (*SignalTaskRequest) ProtoMessage() {}
func (*SignalTaskRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{21}
return fileDescriptor_driver_c5667ca6005812fb, []int{21}
}
func (m *SignalTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalTaskRequest.Unmarshal(m, b)
@@ -1153,7 +1150,7 @@ func (m *SignalTaskResponse) Reset() { *m = SignalTaskResponse{} }
func (m *SignalTaskResponse) String() string { return proto.CompactTextString(m) }
func (*SignalTaskResponse) ProtoMessage() {}
func (*SignalTaskResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{22}
return fileDescriptor_driver_c5667ca6005812fb, []int{22}
}
func (m *SignalTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalTaskResponse.Unmarshal(m, b)
@@ -1190,7 +1187,7 @@ func (m *ExecTaskRequest) Reset() { *m = ExecTaskRequest{} }
func (m *ExecTaskRequest) String() string { return proto.CompactTextString(m) }
func (*ExecTaskRequest) ProtoMessage() {}
func (*ExecTaskRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{23}
return fileDescriptor_driver_c5667ca6005812fb, []int{23}
}
func (m *ExecTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExecTaskRequest.Unmarshal(m, b)
@@ -1247,7 +1244,7 @@ func (m *ExecTaskResponse) Reset() { *m = ExecTaskResponse{} }
func (m *ExecTaskResponse) String() string { return proto.CompactTextString(m) }
func (*ExecTaskResponse) ProtoMessage() {}
func (*ExecTaskResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{24}
return fileDescriptor_driver_c5667ca6005812fb, []int{24}
}
func (m *ExecTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExecTaskResponse.Unmarshal(m, b)
@@ -1306,7 +1303,7 @@ func (m *DriverCapabilities) Reset() { *m = DriverCapabilities{} }
func (m *DriverCapabilities) String() string { return proto.CompactTextString(m) }
func (*DriverCapabilities) ProtoMessage() {}
func (*DriverCapabilities) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{25}
return fileDescriptor_driver_c5667ca6005812fb, []int{25}
}
func (m *DriverCapabilities) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DriverCapabilities.Unmarshal(m, b)
@@ -1392,7 +1389,7 @@ func (m *TaskConfig) Reset() { *m = TaskConfig{} }
func (m *TaskConfig) String() string { return proto.CompactTextString(m) }
func (*TaskConfig) ProtoMessage() {}
func (*TaskConfig) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{26}
return fileDescriptor_driver_c5667ca6005812fb, []int{26}
}
func (m *TaskConfig) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskConfig.Unmarshal(m, b)
@@ -1531,7 +1528,7 @@ func (m *Resources) Reset() { *m = Resources{} }
func (m *Resources) String() string { return proto.CompactTextString(m) }
func (*Resources) ProtoMessage() {}
func (*Resources) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{27}
return fileDescriptor_driver_c5667ca6005812fb, []int{27}
}
func (m *Resources) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Resources.Unmarshal(m, b)
@@ -1578,7 +1575,7 @@ func (m *AllocatedTaskResources) Reset() { *m = AllocatedTaskResources{}
func (m *AllocatedTaskResources) String() string { return proto.CompactTextString(m) }
func (*AllocatedTaskResources) ProtoMessage() {}
func (*AllocatedTaskResources) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{28}
return fileDescriptor_driver_c5667ca6005812fb, []int{28}
}
func (m *AllocatedTaskResources) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AllocatedTaskResources.Unmarshal(m, b)
@@ -1630,7 +1627,7 @@ func (m *AllocatedCpuResources) Reset() { *m = AllocatedCpuResources{} }
func (m *AllocatedCpuResources) String() string { return proto.CompactTextString(m) }
func (*AllocatedCpuResources) ProtoMessage() {}
func (*AllocatedCpuResources) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{29}
return fileDescriptor_driver_c5667ca6005812fb, []int{29}
}
func (m *AllocatedCpuResources) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AllocatedCpuResources.Unmarshal(m, b)
@@ -1668,7 +1665,7 @@ func (m *AllocatedMemoryResources) Reset() { *m = AllocatedMemoryResourc
func (m *AllocatedMemoryResources) String() string { return proto.CompactTextString(m) }
func (*AllocatedMemoryResources) ProtoMessage() {}
func (*AllocatedMemoryResources) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{30}
return fileDescriptor_driver_c5667ca6005812fb, []int{30}
}
func (m *AllocatedMemoryResources) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AllocatedMemoryResources.Unmarshal(m, b)
@@ -1711,7 +1708,7 @@ func (m *NetworkResource) Reset() { *m = NetworkResource{} }
func (m *NetworkResource) String() string { return proto.CompactTextString(m) }
func (*NetworkResource) ProtoMessage() {}
func (*NetworkResource) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{31}
return fileDescriptor_driver_c5667ca6005812fb, []int{31}
}
func (m *NetworkResource) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NetworkResource.Unmarshal(m, b)
@@ -1785,7 +1782,7 @@ func (m *NetworkPort) Reset() { *m = NetworkPort{} }
func (m *NetworkPort) String() string { return proto.CompactTextString(m) }
func (*NetworkPort) ProtoMessage() {}
func (*NetworkPort) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{32}
return fileDescriptor_driver_c5667ca6005812fb, []int{32}
}
func (m *NetworkPort) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NetworkPort.Unmarshal(m, b)
@@ -1845,7 +1842,7 @@ func (m *LinuxResources) Reset() { *m = LinuxResources{} }
func (m *LinuxResources) String() string { return proto.CompactTextString(m) }
func (*LinuxResources) ProtoMessage() {}
func (*LinuxResources) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{33}
return fileDescriptor_driver_c5667ca6005812fb, []int{33}
}
func (m *LinuxResources) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LinuxResources.Unmarshal(m, b)
@@ -1937,7 +1934,7 @@ func (m *Mount) Reset() { *m = Mount{} }
func (m *Mount) String() string { return proto.CompactTextString(m) }
func (*Mount) ProtoMessage() {}
func (*Mount) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{34}
return fileDescriptor_driver_c5667ca6005812fb, []int{34}
}
func (m *Mount) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Mount.Unmarshal(m, b)
@@ -2000,7 +1997,7 @@ func (m *Device) Reset() { *m = Device{} }
func (m *Device) String() string { return proto.CompactTextString(m) }
func (*Device) ProtoMessage() {}
func (*Device) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{35}
return fileDescriptor_driver_c5667ca6005812fb, []int{35}
}
func (m *Device) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Device.Unmarshal(m, b)
@@ -2043,12 +2040,14 @@ func (m *Device) GetCgroupPermissions() string {
// TaskHandle is created when starting a task and is used to recover task
type TaskHandle struct {
// Version is used by the driver to version the DriverState schema
Version int32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"`
// Config is the TaskConfig for the task
Config *TaskConfig `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"`
Config *TaskConfig `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"`
// State is the state of the task's execution
State TaskState `protobuf:"varint,2,opt,name=state,proto3,enum=hashicorp.nomad.plugins.drivers.proto.TaskState" json:"state,omitempty"`
State TaskState `protobuf:"varint,3,opt,name=state,proto3,enum=hashicorp.nomad.plugins.drivers.proto.TaskState" json:"state,omitempty"`
// DriverState is the encoded state for the specific driver
DriverState []byte `protobuf:"bytes,3,opt,name=driver_state,json=driverState,proto3" json:"driver_state,omitempty"`
DriverState []byte `protobuf:"bytes,4,opt,name=driver_state,json=driverState,proto3" json:"driver_state,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@@ -2058,7 +2057,7 @@ func (m *TaskHandle) Reset() { *m = TaskHandle{} }
func (m *TaskHandle) String() string { return proto.CompactTextString(m) }
func (*TaskHandle) ProtoMessage() {}
func (*TaskHandle) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{36}
return fileDescriptor_driver_c5667ca6005812fb, []int{36}
}
func (m *TaskHandle) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskHandle.Unmarshal(m, b)
@@ -2078,6 +2077,13 @@ func (m *TaskHandle) XXX_DiscardUnknown() {
var xxx_messageInfo_TaskHandle proto.InternalMessageInfo
func (m *TaskHandle) GetVersion() int32 {
if m != nil {
return m.Version
}
return 0
}
func (m *TaskHandle) GetConfig() *TaskConfig {
if m != nil {
return m.Config
@@ -2118,7 +2124,7 @@ func (m *NetworkOverride) Reset() { *m = NetworkOverride{} }
func (m *NetworkOverride) String() string { return proto.CompactTextString(m) }
func (*NetworkOverride) ProtoMessage() {}
func (*NetworkOverride) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{37}
return fileDescriptor_driver_c5667ca6005812fb, []int{37}
}
func (m *NetworkOverride) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NetworkOverride.Unmarshal(m, b)
@@ -2176,7 +2182,7 @@ func (m *ExitResult) Reset() { *m = ExitResult{} }
func (m *ExitResult) String() string { return proto.CompactTextString(m) }
func (*ExitResult) ProtoMessage() {}
func (*ExitResult) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{38}
return fileDescriptor_driver_c5667ca6005812fb, []int{38}
}
func (m *ExitResult) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExitResult.Unmarshal(m, b)
@@ -2239,7 +2245,7 @@ func (m *TaskStatus) Reset() { *m = TaskStatus{} }
func (m *TaskStatus) String() string { return proto.CompactTextString(m) }
func (*TaskStatus) ProtoMessage() {}
func (*TaskStatus) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{39}
return fileDescriptor_driver_c5667ca6005812fb, []int{39}
}
func (m *TaskStatus) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskStatus.Unmarshal(m, b)
@@ -2314,7 +2320,7 @@ func (m *TaskDriverStatus) Reset() { *m = TaskDriverStatus{} }
func (m *TaskDriverStatus) String() string { return proto.CompactTextString(m) }
func (*TaskDriverStatus) ProtoMessage() {}
func (*TaskDriverStatus) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{40}
return fileDescriptor_driver_c5667ca6005812fb, []int{40}
}
func (m *TaskDriverStatus) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskDriverStatus.Unmarshal(m, b)
@@ -2359,7 +2365,7 @@ func (m *TaskStats) Reset() { *m = TaskStats{} }
func (m *TaskStats) String() string { return proto.CompactTextString(m) }
func (*TaskStats) ProtoMessage() {}
func (*TaskStats) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{41}
return fileDescriptor_driver_c5667ca6005812fb, []int{41}
}
func (m *TaskStats) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskStats.Unmarshal(m, b)
@@ -2421,7 +2427,7 @@ func (m *TaskResourceUsage) Reset() { *m = TaskResourceUsage{} }
func (m *TaskResourceUsage) String() string { return proto.CompactTextString(m) }
func (*TaskResourceUsage) ProtoMessage() {}
func (*TaskResourceUsage) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{42}
return fileDescriptor_driver_c5667ca6005812fb, []int{42}
}
func (m *TaskResourceUsage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskResourceUsage.Unmarshal(m, b)
@@ -2473,7 +2479,7 @@ func (m *CPUUsage) Reset() { *m = CPUUsage{} }
func (m *CPUUsage) String() string { return proto.CompactTextString(m) }
func (*CPUUsage) ProtoMessage() {}
func (*CPUUsage) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{43}
return fileDescriptor_driver_c5667ca6005812fb, []int{43}
}
func (m *CPUUsage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CPUUsage.Unmarshal(m, b)
@@ -2548,7 +2554,6 @@ type MemoryUsage struct {
MaxUsage uint64 `protobuf:"varint,3,opt,name=max_usage,json=maxUsage,proto3" json:"max_usage,omitempty"`
KernelUsage uint64 `protobuf:"varint,4,opt,name=kernel_usage,json=kernelUsage,proto3" json:"kernel_usage,omitempty"`
KernelMaxUsage uint64 `protobuf:"varint,5,opt,name=kernel_max_usage,json=kernelMaxUsage,proto3" json:"kernel_max_usage,omitempty"`
Usage uint64 `protobuf:"varint,7,opt,name=usage,proto3" json:"usage,omitempty"`
// MeasuredFields indicates which fields were actually sampled
MeasuredFields []MemoryUsage_Fields `protobuf:"varint,6,rep,packed,name=measured_fields,json=measuredFields,proto3,enum=hashicorp.nomad.plugins.drivers.proto.MemoryUsage_Fields" json:"measured_fields,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -2560,7 +2565,7 @@ func (m *MemoryUsage) Reset() { *m = MemoryUsage{} }
func (m *MemoryUsage) String() string { return proto.CompactTextString(m) }
func (*MemoryUsage) ProtoMessage() {}
func (*MemoryUsage) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{44}
return fileDescriptor_driver_c5667ca6005812fb, []int{44}
}
func (m *MemoryUsage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MemoryUsage.Unmarshal(m, b)
@@ -2615,13 +2620,6 @@ func (m *MemoryUsage) GetKernelMaxUsage() uint64 {
return 0
}
func (m *MemoryUsage) GetUsage() uint64 {
if m != nil {
return m.Usage
}
return 0
}
func (m *MemoryUsage) GetMeasuredFields() []MemoryUsage_Fields {
if m != nil {
return m.MeasuredFields
@@ -2651,7 +2649,7 @@ func (m *DriverTaskEvent) Reset() { *m = DriverTaskEvent{} }
func (m *DriverTaskEvent) String() string { return proto.CompactTextString(m) }
func (*DriverTaskEvent) ProtoMessage() {}
func (*DriverTaskEvent) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_c4182101cb9dea81, []int{45}
return fileDescriptor_driver_c5667ca6005812fb, []int{45}
}
func (m *DriverTaskEvent) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DriverTaskEvent.Unmarshal(m, b)
@@ -3386,195 +3384,195 @@ var _Driver_serviceDesc = grpc.ServiceDesc{
}
func init() {
proto.RegisterFile("plugins/drivers/proto/driver.proto", fileDescriptor_driver_c4182101cb9dea81)
proto.RegisterFile("plugins/drivers/proto/driver.proto", fileDescriptor_driver_c5667ca6005812fb)
}
var fileDescriptor_driver_c4182101cb9dea81 = []byte{
// 2968 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x59, 0x4b, 0x6f, 0x23, 0xc7,
0xf1, 0x17, 0xdf, 0x64, 0x51, 0xa2, 0x66, 0x7b, 0xb5, 0x36, 0x4d, 0xe3, 0xff, 0xf7, 0x7a, 0x00,
0x07, 0x82, 0xed, 0xa5, 0x6c, 0x19, 0xd9, 0x57, 0xfc, 0xa2, 0xc9, 0x59, 0x49, 0x5e, 0x89, 0x52,
0x9a, 0x14, 0xd6, 0x9b, 0xc4, 0x3b, 0x19, 0xcd, 0xb4, 0xc8, 0x59, 0x71, 0x1e, 0x9e, 0xe9, 0x91,
0x25, 0x04, 0x41, 0x02, 0x07, 0x08, 0x92, 0x43, 0x80, 0x5c, 0x8c, 0xdc, 0x93, 0x63, 0x3e, 0x41,
0x12, 0xf8, 0x92, 0xaf, 0x91, 0x53, 0x02, 0x04, 0xc8, 0x35, 0xc7, 0xdc, 0x82, 0x7e, 0xcc, 0x70,
0x28, 0x69, 0xbd, 0x43, 0x6e, 0x4e, 0x33, 0x5d, 0xdd, 0xf5, 0xeb, 0xea, 0xae, 0xea, 0xaa, 0xea,
0x2e, 0x50, 0xfd, 0x49, 0x34, 0xb2, 0xdd, 0x70, 0xc3, 0x0a, 0xec, 0x53, 0x12, 0x84, 0x1b, 0x7e,
0xe0, 0x51, 0x4f, 0xb6, 0xda, 0xbc, 0x81, 0xde, 0x18, 0x1b, 0xe1, 0xd8, 0x36, 0xbd, 0xc0, 0x6f,
0xbb, 0x9e, 0x63, 0x58, 0x6d, 0xc9, 0xd3, 0x96, 0x3c, 0x62, 0x58, 0xeb, 0xff, 0x47, 0x9e, 0x37,
0x9a, 0x10, 0x81, 0x70, 0x14, 0x1d, 0x6f, 0x58, 0x51, 0x60, 0x50, 0xdb, 0x73, 0x65, 0xff, 0x6b,
0x17, 0xfb, 0xa9, 0xed, 0x90, 0x90, 0x1a, 0x8e, 0x2f, 0x07, 0x7c, 0x3c, 0xb2, 0xe9, 0x38, 0x3a,
0x6a, 0x9b, 0x9e, 0xb3, 0x91, 0x4c, 0xb9, 0xc1, 0xa7, 0xdc, 0x88, 0xc5, 0x0c, 0xc7, 0x46, 0x40,
0xac, 0x8d, 0xb1, 0x39, 0x09, 0x7d, 0x62, 0xb2, 0xaf, 0xce, 0x7e, 0x24, 0xc2, 0x56, 0x76, 0x84,
0x90, 0x06, 0x91, 0x49, 0xe3, 0xf5, 0x1a, 0x94, 0x06, 0xf6, 0x51, 0x44, 0x89, 0x00, 0x52, 0x5f,
0x81, 0x97, 0x87, 0x46, 0x78, 0xd2, 0xf5, 0xdc, 0x63, 0x7b, 0x34, 0x30, 0xc7, 0xc4, 0x31, 0x30,
0xf9, 0x22, 0x22, 0x21, 0x55, 0x7f, 0x04, 0xcd, 0xcb, 0x5d, 0xa1, 0xef, 0xb9, 0x21, 0x41, 0x1f,
0x43, 0x91, 0x49, 0xd3, 0xcc, 0xdd, 0xcc, 0xad, 0xd7, 0x37, 0xdf, 0x6e, 0x3f, 0x6b, 0xe3, 0x84,
0x0c, 0x6d, 0xb9, 0x8a, 0xf6, 0xc0, 0x27, 0x26, 0xe6, 0x9c, 0xea, 0x0d, 0xb8, 0xde, 0x35, 0x7c,
0xe3, 0xc8, 0x9e, 0xd8, 0xd4, 0x26, 0x61, 0x3c, 0x69, 0x04, 0x6b, 0xb3, 0x64, 0x39, 0xe1, 0xe7,
0xb0, 0x6c, 0xa6, 0xe8, 0x72, 0xe2, 0x7b, 0xed, 0x4c, 0x1a, 0x6b, 0xf7, 0x78, 0x6b, 0x06, 0x78,
0x06, 0x4e, 0x5d, 0x03, 0xf4, 0xc0, 0x76, 0x47, 0x24, 0xf0, 0x03, 0xdb, 0xa5, 0xb1, 0x30, 0xdf,
0x14, 0xe0, 0xfa, 0x0c, 0x59, 0x0a, 0xf3, 0x14, 0x20, 0xd9, 0x47, 0x26, 0x4a, 0x61, 0xbd, 0xbe,
0xf9, 0x69, 0x46, 0x51, 0xae, 0xc0, 0x6b, 0x77, 0x12, 0x30, 0xcd, 0xa5, 0xc1, 0x39, 0x4e, 0xa1,
0xa3, 0x27, 0x50, 0x1e, 0x13, 0x63, 0x42, 0xc7, 0xcd, 0xfc, 0xcd, 0xdc, 0x7a, 0x63, 0xf3, 0xc1,
0x0b, 0xcc, 0xb3, 0xcd, 0x81, 0x06, 0xd4, 0xa0, 0x04, 0x4b, 0x54, 0x74, 0x0b, 0x90, 0xf8, 0xd3,
0x2d, 0x12, 0x9a, 0x81, 0xed, 0x33, 0x43, 0x6e, 0x16, 0x6e, 0xe6, 0xd6, 0x6b, 0xf8, 0x9a, 0xe8,
0xe9, 0x4d, 0x3b, 0x5a, 0x3e, 0xac, 0x5e, 0x90, 0x16, 0x29, 0x50, 0x38, 0x21, 0xe7, 0x5c, 0x23,
0x35, 0xcc, 0x7e, 0xd1, 0x16, 0x94, 0x4e, 0x8d, 0x49, 0x44, 0xb8, 0xc8, 0xf5, 0xcd, 0x77, 0x9f,
0x67, 0x1e, 0xd2, 0x44, 0xa7, 0xfb, 0x80, 0x05, 0xff, 0xfd, 0xfc, 0xdd, 0x9c, 0x7a, 0x0f, 0xea,
0x29, 0xb9, 0x51, 0x03, 0xe0, 0xb0, 0xdf, 0xd3, 0x86, 0x5a, 0x77, 0xa8, 0xf5, 0x94, 0x25, 0xb4,
0x02, 0xb5, 0xc3, 0xfe, 0xb6, 0xd6, 0xd9, 0x1d, 0x6e, 0x3f, 0x56, 0x72, 0xa8, 0x0e, 0x95, 0xb8,
0x91, 0x57, 0xcf, 0x00, 0x61, 0x62, 0x7a, 0xa7, 0x24, 0x60, 0x86, 0x2c, 0xb5, 0x8a, 0x5e, 0x86,
0x0a, 0x35, 0xc2, 0x13, 0xdd, 0xb6, 0xa4, 0xcc, 0x65, 0xd6, 0xdc, 0xb1, 0xd0, 0x0e, 0x94, 0xc7,
0x86, 0x6b, 0x4d, 0x9e, 0x2f, 0xf7, 0xec, 0x56, 0x33, 0xf0, 0x6d, 0xce, 0x88, 0x25, 0x00, 0xb3,
0xee, 0x99, 0x99, 0x85, 0x02, 0xd4, 0xc7, 0xa0, 0x0c, 0xa8, 0x11, 0xd0, 0xb4, 0x38, 0x1a, 0x14,
0xd9, 0xfc, 0xd2, 0xa2, 0xe7, 0x99, 0x53, 0x9c, 0x4c, 0xcc, 0xd9, 0xd5, 0x7f, 0xe7, 0xe1, 0x5a,
0x0a, 0x5b, 0x5a, 0xea, 0x23, 0x28, 0x07, 0x24, 0x8c, 0x26, 0x94, 0xc3, 0x37, 0x36, 0x3f, 0xca,
0x08, 0x7f, 0x09, 0xa9, 0x8d, 0x39, 0x0c, 0x96, 0x70, 0x68, 0x1d, 0x14, 0xc1, 0xa1, 0x93, 0x20,
0xf0, 0x02, 0xdd, 0x09, 0x47, 0x7c, 0xd7, 0x6a, 0xb8, 0x21, 0xe8, 0x1a, 0x23, 0xef, 0x85, 0xa3,
0xd4, 0xae, 0x16, 0x5e, 0x70, 0x57, 0x91, 0x01, 0x8a, 0x4b, 0xe8, 0x97, 0x5e, 0x70, 0xa2, 0xb3,
0xad, 0x0d, 0x6c, 0x8b, 0x34, 0x8b, 0x1c, 0xf4, 0x76, 0x46, 0xd0, 0xbe, 0x60, 0xdf, 0x97, 0xdc,
0x78, 0xd5, 0x9d, 0x25, 0xa8, 0x6f, 0x41, 0x59, 0xac, 0x94, 0x59, 0xd2, 0xe0, 0xb0, 0xdb, 0xd5,
0x06, 0x03, 0x65, 0x09, 0xd5, 0xa0, 0x84, 0xb5, 0x21, 0x66, 0x16, 0x56, 0x83, 0xd2, 0x83, 0xce,
0xb0, 0xb3, 0xab, 0xe4, 0xd5, 0x37, 0x61, 0xf5, 0x91, 0x61, 0xd3, 0x2c, 0xc6, 0xa5, 0x7a, 0xa0,
0x4c, 0xc7, 0x4a, 0xed, 0xec, 0xcc, 0x68, 0x27, 0xfb, 0xd6, 0x68, 0x67, 0x36, 0xbd, 0xa0, 0x0f,
0x05, 0x0a, 0x24, 0x08, 0xa4, 0x0a, 0xd8, 0xaf, 0xfa, 0x25, 0xac, 0x0e, 0xa8, 0xe7, 0x67, 0xb2,
0xfc, 0xf7, 0xa0, 0xc2, 0x62, 0x94, 0x17, 0x51, 0x69, 0xfa, 0xaf, 0xb4, 0x45, 0x0c, 0x6b, 0xc7,
0x31, 0xac, 0xdd, 0x93, 0x31, 0x0e, 0xc7, 0x23, 0xd1, 0x4b, 0x50, 0x0e, 0xed, 0x91, 0x6b, 0x4c,
0xa4, 0xb7, 0x90, 0x2d, 0x15, 0x31, 0x23, 0x8f, 0x27, 0x96, 0x86, 0xdf, 0x05, 0xd4, 0x23, 0x21,
0x0d, 0xbc, 0xf3, 0x4c, 0xf2, 0xac, 0x41, 0xe9, 0xd8, 0x0b, 0x4c, 0x71, 0x10, 0xab, 0x58, 0x34,
0xd8, 0xa1, 0x9a, 0x01, 0x91, 0xd8, 0xb7, 0x00, 0xed, 0xb8, 0x2c, 0xa6, 0x64, 0x53, 0xc4, 0x6f,
0xf3, 0x70, 0x7d, 0x66, 0xbc, 0x54, 0xc6, 0xe2, 0xe7, 0x90, 0x39, 0xa6, 0x28, 0x14, 0xe7, 0x10,
0xed, 0x43, 0x59, 0x8c, 0x90, 0x3b, 0x79, 0x67, 0x0e, 0x20, 0x11, 0xa6, 0x24, 0x9c, 0x84, 0xb9,
0xd2, 0xe8, 0x0b, 0xff, 0x5b, 0xa3, 0xdf, 0x02, 0x25, 0x5e, 0x47, 0xf8, 0x5c, 0xdd, 0xb4, 0xa0,
0x6a, 0xbb, 0x94, 0x04, 0xa7, 0xc6, 0x84, 0x2f, 0xb1, 0x80, 0x93, 0xb6, 0xfa, 0x43, 0xb8, 0x96,
0x02, 0x92, 0x1b, 0xfb, 0x00, 0x4a, 0x21, 0x23, 0xc8, 0x9d, 0x7d, 0x67, 0xce, 0x9d, 0x0d, 0xb1,
0x60, 0x57, 0xaf, 0x0b, 0x70, 0xed, 0x94, 0xb8, 0x89, 0x98, 0x6a, 0x0f, 0xae, 0x0d, 0xb8, 0xd9,
0x65, 0xb2, 0xab, 0xa9, 0xc9, 0xe6, 0x67, 0x4c, 0x76, 0x0d, 0x50, 0x1a, 0x45, 0x1a, 0xd6, 0x39,
0xac, 0x6a, 0x67, 0xc4, 0xcc, 0x84, 0xdc, 0x84, 0x8a, 0xe9, 0x39, 0x8e, 0xe1, 0x5a, 0xcd, 0xfc,
0xcd, 0xc2, 0x7a, 0x0d, 0xc7, 0xcd, 0xf4, 0xd9, 0x2a, 0x64, 0x3d, 0x5b, 0xea, 0x6f, 0x72, 0xa0,
0x4c, 0xe7, 0x96, 0x1b, 0xc9, 0xa4, 0xa7, 0x16, 0x03, 0x62, 0x73, 0x2f, 0x63, 0xd9, 0x92, 0xf4,
0xf8, 0xf8, 0x0b, 0x3a, 0x09, 0x82, 0x94, 0x7b, 0x29, 0xbc, 0xa0, 0x7b, 0x51, 0xff, 0x99, 0x03,
0x74, 0x39, 0x89, 0x42, 0xaf, 0xc3, 0x72, 0x48, 0x5c, 0x4b, 0x17, 0xdb, 0x28, 0x34, 0x5c, 0xc5,
0x75, 0x46, 0x13, 0xfb, 0x19, 0x22, 0x04, 0x45, 0x72, 0x46, 0x4c, 0x79, 0x92, 0xf9, 0x3f, 0x1a,
0xc3, 0xf2, 0x71, 0xa8, 0xdb, 0xa1, 0x37, 0x31, 0x92, 0x6c, 0xa3, 0xb1, 0xa9, 0x2d, 0x9c, 0xcc,
0xb5, 0x1f, 0x0c, 0x76, 0x62, 0x30, 0x5c, 0x3f, 0x0e, 0x93, 0x86, 0xda, 0x86, 0x7a, 0xaa, 0x0f,
0x55, 0xa1, 0xd8, 0xdf, 0xef, 0x6b, 0xca, 0x12, 0x02, 0x28, 0x77, 0xb7, 0xf1, 0xfe, 0xfe, 0x50,
0x78, 0xf4, 0x9d, 0xbd, 0xce, 0x96, 0xa6, 0xe4, 0xd5, 0x3f, 0x95, 0x01, 0xa6, 0xa1, 0x15, 0x35,
0x20, 0x9f, 0x68, 0x3a, 0x6f, 0x5b, 0x6c, 0x31, 0xae, 0xe1, 0x10, 0x69, 0x3d, 0xfc, 0x1f, 0x6d,
0xc2, 0x0d, 0x27, 0x1c, 0xf9, 0x86, 0x79, 0xa2, 0xcb, 0x88, 0x68, 0x72, 0x66, 0xbe, 0xaa, 0x65,
0x7c, 0x5d, 0x76, 0x4a, 0xa9, 0x05, 0xee, 0x2e, 0x14, 0x88, 0x7b, 0xda, 0x2c, 0xf2, 0xcc, 0xf1,
0xfe, 0xdc, 0x21, 0xbf, 0xad, 0xb9, 0xa7, 0x22, 0x53, 0x64, 0x30, 0x48, 0x07, 0xb0, 0xc8, 0xa9,
0x6d, 0x12, 0x9d, 0x81, 0x96, 0x38, 0xe8, 0xc7, 0xf3, 0x83, 0xf6, 0x38, 0x46, 0x02, 0x5d, 0xb3,
0xe2, 0x36, 0xea, 0x43, 0x2d, 0x20, 0xa1, 0x17, 0x05, 0x26, 0x09, 0x9b, 0xe5, 0xb9, 0x4e, 0x31,
0x8e, 0xf9, 0xf0, 0x14, 0x02, 0xf5, 0xa0, 0xec, 0x78, 0x91, 0x4b, 0xc3, 0x66, 0x85, 0x0b, 0xfb,
0x76, 0x46, 0xb0, 0x3d, 0xc6, 0x84, 0x25, 0x2f, 0xda, 0x82, 0x8a, 0x10, 0x31, 0x6c, 0x56, 0x39,
0xcc, 0xad, 0xac, 0x06, 0xc4, 0xb9, 0x70, 0xcc, 0xcd, 0xb4, 0x1a, 0x85, 0x24, 0x68, 0xd6, 0x84,
0x56, 0xd9, 0x3f, 0x7a, 0x15, 0x6a, 0xc6, 0x64, 0xe2, 0x99, 0xba, 0x65, 0x07, 0x4d, 0xe0, 0x1d,
0x55, 0x4e, 0xe8, 0xd9, 0x01, 0x7a, 0x0d, 0xea, 0xe2, 0xe8, 0xe9, 0xbe, 0x41, 0xc7, 0xcd, 0x3a,
0xef, 0x06, 0x41, 0x3a, 0x30, 0xe8, 0x58, 0x0e, 0x20, 0x41, 0x20, 0x06, 0x2c, 0x27, 0x03, 0x48,
0x10, 0xf0, 0x01, 0xdf, 0x81, 0x55, 0xee, 0x47, 0x46, 0x81, 0x17, 0xf9, 0x3a, 0xb7, 0xa9, 0x15,
0x3e, 0x68, 0x85, 0x91, 0xb7, 0x18, 0xb5, 0xcf, 0x8c, 0xeb, 0x15, 0xa8, 0x3e, 0xf5, 0x8e, 0xc4,
0x80, 0x06, 0x1f, 0x50, 0x79, 0xea, 0x1d, 0xc5, 0x5d, 0x42, 0x42, 0xdb, 0x6a, 0xae, 0x8a, 0x2e,
0xde, 0xde, 0xb1, 0x5a, 0xb7, 0xa1, 0x1a, 0xab, 0xf1, 0x8a, 0xec, 0x7c, 0x2d, 0x9d, 0x9d, 0xd7,
0x52, 0xa9, 0x76, 0xeb, 0x7d, 0x68, 0xcc, 0x1a, 0xc1, 0x3c, 0xdc, 0xea, 0xdf, 0x72, 0x50, 0x4b,
0xd4, 0x8d, 0x5c, 0xb8, 0xce, 0xc5, 0x31, 0x28, 0xb1, 0xf4, 0xa9, 0xf5, 0x88, 0x18, 0xf0, 0x41,
0x46, 0x4d, 0x75, 0x62, 0x04, 0xe9, 0x07, 0xa5, 0x29, 0xa1, 0x04, 0x79, 0x3a, 0xdf, 0x13, 0x58,
0x9d, 0xd8, 0x6e, 0x74, 0x96, 0x9a, 0x4b, 0x04, 0xe0, 0xef, 0x66, 0x9c, 0x6b, 0x97, 0x71, 0x4f,
0xe7, 0x68, 0x4c, 0x66, 0xda, 0xea, 0xd7, 0x79, 0x78, 0xe9, 0x6a, 0x71, 0x50, 0x1f, 0x0a, 0xa6,
0x1f, 0xc9, 0xa5, 0xbd, 0x3f, 0xef, 0xd2, 0xba, 0x7e, 0x34, 0x9d, 0x95, 0x01, 0xb1, 0xa4, 0xdd,
0x21, 0x8e, 0x17, 0x9c, 0xcb, 0x15, 0x7c, 0x34, 0x2f, 0xe4, 0x1e, 0xe7, 0x9e, 0xa2, 0x4a, 0x38,
0x84, 0xa1, 0x2a, 0x43, 0x7f, 0x28, 0xdd, 0xc4, 0x9c, 0x29, 0x44, 0x0c, 0x89, 0x13, 0x1c, 0xf5,
0x36, 0xdc, 0xb8, 0x72, 0x29, 0xe8, 0xff, 0x00, 0x4c, 0x3f, 0xd2, 0xf9, 0x15, 0x4f, 0xe8, 0xbd,
0x80, 0x6b, 0xa6, 0x1f, 0x0d, 0x38, 0x41, 0xbd, 0x03, 0xcd, 0x67, 0xc9, 0xcb, 0x0e, 0x9f, 0x90,
0x58, 0x77, 0x8e, 0xe2, 0x1c, 0x43, 0x10, 0xf6, 0x8e, 0xd4, 0xdf, 0xe5, 0x61, 0xf5, 0x82, 0x38,
0x2c, 0x02, 0x8a, 0xc3, 0x1c, 0x47, 0x65, 0xd1, 0x62, 0x27, 0xdb, 0xb4, 0xad, 0x38, 0x2d, 0xe6,
0xff, 0xdc, 0xa7, 0xfb, 0x32, 0x65, 0xcd, 0xdb, 0x3e, 0x33, 0x68, 0xe7, 0xc8, 0xa6, 0x21, 0xbf,
0x49, 0x94, 0xb0, 0x68, 0xa0, 0xc7, 0xd0, 0x08, 0x48, 0x48, 0x82, 0x53, 0x62, 0xe9, 0xbe, 0x17,
0xd0, 0x78, 0xc3, 0x36, 0xe7, 0xdb, 0xb0, 0x03, 0x2f, 0xa0, 0x78, 0x25, 0x46, 0x62, 0xad, 0x10,
0x3d, 0x82, 0x15, 0xeb, 0xdc, 0x35, 0x1c, 0xdb, 0x94, 0xc8, 0xe5, 0x85, 0x91, 0x97, 0x25, 0x10,
0x07, 0x66, 0x37, 0xe5, 0x54, 0x27, 0x5b, 0xd8, 0xc4, 0x38, 0x22, 0x13, 0xb9, 0x27, 0xa2, 0x31,
0x7b, 0x7e, 0x4b, 0xf2, 0xfc, 0xaa, 0x7f, 0xc8, 0x43, 0x63, 0xf6, 0x00, 0xc4, 0xfa, 0xf3, 0x49,
0x60, 0x7b, 0x56, 0x4a, 0x7f, 0x07, 0x9c, 0xc0, 0x74, 0xc4, 0xba, 0xbf, 0x88, 0x3c, 0x6a, 0xc4,
0x3a, 0x32, 0xfd, 0xe8, 0xfb, 0xac, 0x7d, 0x41, 0xf7, 0x85, 0x0b, 0xba, 0x47, 0x6f, 0x03, 0x92,
0xfa, 0x9d, 0xd8, 0x8e, 0x4d, 0xf5, 0xa3, 0x73, 0x4a, 0xc4, 0xfe, 0x17, 0xb0, 0x22, 0x7a, 0x76,
0x59, 0xc7, 0x27, 0x8c, 0x8e, 0x54, 0x58, 0xf1, 0x3c, 0x47, 0x0f, 0x4d, 0x2f, 0x20, 0xba, 0x61,
0x3d, 0x6d, 0x96, 0xf8, 0xc0, 0xba, 0xe7, 0x39, 0x03, 0x46, 0xeb, 0x58, 0x4f, 0x99, 0xc3, 0x35,
0xfd, 0x28, 0x24, 0x54, 0x67, 0x1f, 0x1e, 0xa3, 0x6a, 0x18, 0x04, 0xa9, 0xeb, 0x47, 0x61, 0x6a,
0x80, 0x43, 0x1c, 0x16, 0x77, 0x52, 0x03, 0xf6, 0x88, 0xc3, 0x66, 0x59, 0x3e, 0x20, 0x81, 0x49,
0x5c, 0x3a, 0xb4, 0xcd, 0x13, 0x16, 0x52, 0x72, 0xeb, 0x39, 0x3c, 0x43, 0x53, 0x3f, 0x87, 0x12,
0x0f, 0x41, 0x6c, 0xf1, 0xdc, 0x7d, 0x73, 0xef, 0x2e, 0xb6, 0xb7, 0xca, 0x08, 0xdc, 0xb7, 0xbf,
0x0a, 0xb5, 0xb1, 0x17, 0xca, 0xd8, 0x20, 0x2c, 0xaf, 0xca, 0x08, 0xbc, 0xb3, 0x05, 0xd5, 0x80,
0x18, 0x96, 0xe7, 0x4e, 0xce, 0xf9, 0xbe, 0x54, 0x71, 0xd2, 0x56, 0xbf, 0x80, 0xb2, 0x70, 0xbf,
0x2f, 0x80, 0x7f, 0x0b, 0x90, 0x29, 0x82, 0x8a, 0x4f, 0x02, 0xc7, 0x0e, 0x43, 0xdb, 0x73, 0xc3,
0xf8, 0x39, 0x47, 0xf4, 0x1c, 0x4c, 0x3b, 0xd4, 0xbf, 0xe6, 0x44, 0xbe, 0x23, 0x2e, 0xda, 0x2c,
0x63, 0x94, 0xc9, 0xcb, 0xc2, 0xaf, 0x11, 0x12, 0x20, 0xce, 0xfa, 0x89, 0x7c, 0xb6, 0x9a, 0x37,
0xeb, 0x27, 0x22, 0xeb, 0x27, 0x2c, 0xc5, 0x94, 0x69, 0x95, 0x80, 0x13, 0x59, 0x55, 0xdd, 0x4a,
0xae, 0x4a, 0x44, 0xfd, 0x57, 0x2e, 0xf1, 0x08, 0xf1, 0x95, 0x06, 0x3d, 0x81, 0x2a, 0x3b, 0x5c,
0xba, 0x63, 0xf8, 0xf2, 0x81, 0xae, 0xbb, 0xd8, 0x6d, 0xa9, 0xcd, 0xce, 0xd2, 0x9e, 0xe1, 0x8b,
0xa4, 0xa8, 0xe2, 0x8b, 0x16, 0xf3, 0x2c, 0x86, 0x35, 0xf5, 0x2c, 0xec, 0x1f, 0xbd, 0x01, 0x0d,
0x23, 0xa2, 0x9e, 0x6e, 0x58, 0xa7, 0x24, 0xa0, 0x76, 0x48, 0xa4, 0x86, 0x57, 0x18, 0xb5, 0x13,
0x13, 0x5b, 0xf7, 0x61, 0x39, 0x8d, 0xf9, 0xbc, 0x18, 0x5b, 0x4a, 0xc7, 0xd8, 0x1f, 0x03, 0x4c,
0xb3, 0x73, 0x66, 0x09, 0xe4, 0xcc, 0xa6, 0xba, 0xe9, 0x59, 0xc2, 0xf3, 0x95, 0x70, 0x95, 0x11,
0xba, 0x9e, 0x45, 0x2e, 0xdc, 0x75, 0x4a, 0xf1, 0x5d, 0x87, 0x9d, 0x4d, 0x76, 0x9c, 0x4e, 0xec,
0xc9, 0x84, 0x58, 0x52, 0xc2, 0x9a, 0xe7, 0x39, 0x0f, 0x39, 0x41, 0xfd, 0x26, 0x2f, 0x2c, 0x42,
0xdc, 0x42, 0x33, 0x65, 0xc0, 0x89, 0xaa, 0x0b, 0x2f, 0xa6, 0xea, 0x7b, 0x00, 0x21, 0x35, 0x02,
0x96, 0x30, 0x18, 0x54, 0x3e, 0xec, 0xb4, 0x2e, 0x5d, 0x96, 0x86, 0xf1, 0x63, 0x3a, 0xae, 0xc9,
0xd1, 0x1d, 0x8a, 0x3e, 0x80, 0x65, 0xd3, 0x73, 0xfc, 0x09, 0x91, 0xcc, 0xa5, 0xe7, 0x32, 0xd7,
0x93, 0xf1, 0x1d, 0x9a, 0xba, 0x29, 0x95, 0x5f, 0xf4, 0xa6, 0xf4, 0xe7, 0x9c, 0xb8, 0x4c, 0xa7,
0xef, 0xf2, 0x68, 0x74, 0xc5, 0x83, 0xf1, 0xd6, 0x82, 0x0f, 0x03, 0xdf, 0xf6, 0x5a, 0xdc, 0xfa,
0x20, 0xcb, 0xf3, 0xec, 0xb3, 0x53, 0xb8, 0xbf, 0x14, 0xa0, 0x96, 0xdc, 0xbb, 0x2f, 0xe9, 0xfe,
0x2e, 0xd4, 0x92, 0x4a, 0x86, 0x4c, 0x4d, 0xbe, 0x55, 0x3d, 0xc9, 0x60, 0x74, 0x0c, 0xc8, 0x18,
0x8d, 0x92, 0xd4, 0x4c, 0x8f, 0x42, 0x63, 0x14, 0xbf, 0x62, 0xdc, 0x9d, 0x63, 0x1f, 0xe2, 0xe8,
0x74, 0xc8, 0xf8, 0xb1, 0x62, 0x8c, 0x46, 0x33, 0x14, 0xf4, 0x13, 0xb8, 0x31, 0x3b, 0x87, 0x7e,
0x74, 0xae, 0xfb, 0xb6, 0x25, 0x6f, 0x5a, 0xdb, 0xf3, 0x3e, 0x3d, 0xb4, 0x67, 0xe0, 0x3f, 0x39,
0x3f, 0xb0, 0x2d, 0xb1, 0xe7, 0x28, 0xb8, 0xd4, 0xd1, 0xfa, 0x19, 0xbc, 0xfc, 0x8c, 0xe1, 0x57,
0xe8, 0xa0, 0x3f, 0xfb, 0x44, 0xbe, 0xf8, 0x26, 0xa4, 0xb4, 0xf7, 0xfb, 0x9c, 0x78, 0x21, 0x99,
0xdd, 0x93, 0x4e, 0x3a, 0x3b, 0xdd, 0xc8, 0x38, 0x4f, 0xf7, 0xe0, 0x50, 0xc0, 0xf3, 0x84, 0xf4,
0xd3, 0x0b, 0x09, 0x69, 0xd6, 0x54, 0x45, 0xe4, 0x75, 0x02, 0x48, 0x22, 0xa8, 0x7f, 0x2c, 0x40,
0x35, 0x46, 0xe7, 0xf7, 0xa4, 0xf3, 0x90, 0x12, 0x47, 0x77, 0x62, 0x17, 0x96, 0xc3, 0x20, 0x48,
0x7b, 0xcc, 0x89, 0xbd, 0x0a, 0x35, 0x76, 0x1d, 0x13, 0xdd, 0x79, 0xde, 0x5d, 0x65, 0x04, 0xde,
0xf9, 0x1a, 0xd4, 0xa9, 0x47, 0x8d, 0x89, 0x4e, 0x79, 0xc4, 0x2e, 0x08, 0x6e, 0x4e, 0xe2, 0xf1,
0x1a, 0xbd, 0x05, 0xd7, 0xe8, 0x38, 0xf0, 0x28, 0x9d, 0xb0, 0x2c, 0x8e, 0xe7, 0x2d, 0x22, 0xcd,
0x28, 0x62, 0x25, 0xe9, 0x10, 0xf9, 0x4c, 0xc8, 0xbc, 0xf7, 0x74, 0x30, 0x33, 0x5d, 0xee, 0x44,
0x8a, 0x78, 0x25, 0xa1, 0x32, 0xd3, 0x46, 0x4d, 0xa8, 0xf8, 0x22, 0x27, 0xe0, 0xbe, 0x22, 0x87,
0xe3, 0x26, 0xd2, 0x61, 0xd5, 0x21, 0x46, 0x18, 0x05, 0xc4, 0xd2, 0x8f, 0x6d, 0x32, 0xb1, 0xc4,
0xf5, 0xb6, 0x91, 0x39, 0xc9, 0x8e, 0xb7, 0xa5, 0xfd, 0x80, 0x73, 0xe3, 0x46, 0x0c, 0x27, 0xda,
0x2c, 0x3f, 0x10, 0x7f, 0x68, 0x15, 0xea, 0x83, 0xc7, 0x83, 0xa1, 0xb6, 0xa7, 0xef, 0xed, 0xf7,
0x34, 0x59, 0x05, 0x19, 0x68, 0x58, 0x34, 0x73, 0xac, 0x7f, 0xb8, 0x3f, 0xec, 0xec, 0xea, 0xc3,
0x9d, 0xee, 0xc3, 0x81, 0x92, 0x47, 0x37, 0xe0, 0xda, 0x70, 0x1b, 0xef, 0x0f, 0x87, 0xbb, 0x5a,
0x4f, 0x3f, 0xd0, 0xf0, 0xce, 0x7e, 0x6f, 0xa0, 0x14, 0x10, 0x82, 0xc6, 0x94, 0x3c, 0xdc, 0xd9,
0xd3, 0x94, 0x22, 0xaa, 0x43, 0xe5, 0x40, 0xc3, 0x5d, 0xad, 0x3f, 0x54, 0x4a, 0xea, 0x7f, 0xf2,
0x50, 0x4f, 0x69, 0x91, 0x19, 0x72, 0x10, 0x8a, 0x6c, 0xbe, 0x88, 0xd9, 0x2f, 0x73, 0x26, 0xa6,
0x61, 0x8e, 0x85, 0x76, 0x8a, 0x58, 0x34, 0x78, 0x06, 0x6f, 0x9c, 0xa5, 0xce, 0x79, 0x11, 0x57,
0x1d, 0xe3, 0x4c, 0x80, 0xbc, 0x0e, 0xcb, 0x27, 0x24, 0x70, 0xc9, 0x44, 0xf6, 0x0b, 0x8d, 0xd4,
0x05, 0x4d, 0x0c, 0x59, 0x07, 0x45, 0x0e, 0x99, 0xc2, 0x08, 0x75, 0x34, 0x04, 0x7d, 0x2f, 0x06,
0x5b, 0x83, 0x92, 0xe8, 0xae, 0x88, 0xf9, 0x79, 0x03, 0x1d, 0x5d, 0xd6, 0x45, 0x99, 0xeb, 0xe2,
0xde, 0xfc, 0xa6, 0xfb, 0x2c, 0x75, 0x3c, 0x49, 0xd4, 0x51, 0x81, 0x02, 0x8e, 0xcb, 0x04, 0xdd,
0x4e, 0x77, 0x9b, 0xa9, 0x60, 0x05, 0x6a, 0x7b, 0x9d, 0xcf, 0xf4, 0xc3, 0x01, 0x7f, 0x58, 0x42,
0x0a, 0x2c, 0x3f, 0xd4, 0x70, 0x5f, 0xdb, 0x95, 0x94, 0x02, 0x5a, 0x03, 0x45, 0x52, 0xa6, 0xe3,
0x8a, 0x0c, 0x41, 0xfc, 0x96, 0xd4, 0xbf, 0xe7, 0x61, 0x55, 0x38, 0xfe, 0xe4, 0xd9, 0xf3, 0xd9,
0xef, 0x8f, 0xe9, 0xd7, 0x80, 0xfc, 0xcc, 0x6b, 0x40, 0x92, 0x4c, 0xf2, 0xb8, 0x5d, 0x98, 0x26,
0x93, 0xfc, 0x15, 0x61, 0xc6, 0xa7, 0x17, 0xe7, 0xf1, 0xe9, 0x4d, 0xa8, 0x38, 0x24, 0x4c, 0x34,
0x53, 0xc3, 0x71, 0x13, 0xd9, 0x50, 0x37, 0x5c, 0xd7, 0xa3, 0xfc, 0xcd, 0x2d, 0xbe, 0xde, 0x6c,
0xcd, 0xf5, 0xba, 0x97, 0xac, 0xb8, 0xdd, 0x99, 0x22, 0x09, 0xd7, 0x9b, 0xc6, 0x6e, 0x7d, 0x08,
0xca, 0xc5, 0x01, 0xf3, 0x04, 0xbc, 0x37, 0xdf, 0x9d, 0xc6, 0x3b, 0xc2, 0x2c, 0xff, 0xb0, 0xff,
0xb0, 0xbf, 0xff, 0xa8, 0xaf, 0x2c, 0xb1, 0x06, 0x3e, 0xec, 0xf7, 0x77, 0xfa, 0x5b, 0x4a, 0x0e,
0x01, 0x94, 0xb5, 0xcf, 0x76, 0x86, 0x5a, 0x4f, 0xc9, 0x6f, 0xfe, 0x63, 0x05, 0xca, 0x42, 0x48,
0xf4, 0xb5, 0x8c, 0xf5, 0xe9, 0x12, 0x39, 0xfa, 0x70, 0xee, 0x9c, 0x79, 0xa6, 0xec, 0xde, 0xfa,
0x68, 0x61, 0x7e, 0xf9, 0x6c, 0xbd, 0x84, 0x7e, 0x9d, 0x83, 0xe5, 0x99, 0x77, 0xda, 0xac, 0x4f,
0x8c, 0x57, 0x54, 0xe4, 0x5b, 0xdf, 0x5b, 0x88, 0x37, 0x91, 0xe5, 0x57, 0x39, 0xa8, 0xa7, 0x6a,
0xd1, 0xe8, 0xde, 0x22, 0xf5, 0x6b, 0x21, 0xc9, 0xfd, 0xc5, 0x4b, 0xdf, 0xea, 0xd2, 0x3b, 0x39,
0xf4, 0xcb, 0x1c, 0xd4, 0x53, 0x55, 0xd9, 0xcc, 0xa2, 0x5c, 0xae, 0x21, 0x67, 0x16, 0xe5, 0xaa,
0x22, 0xf0, 0x12, 0xfa, 0x79, 0x0e, 0x6a, 0x49, 0x85, 0x15, 0xdd, 0x99, 0xbf, 0x26, 0x2b, 0x84,
0xb8, 0xbb, 0x68, 0x31, 0x57, 0x5d, 0x42, 0x3f, 0x85, 0x6a, 0x5c, 0x8e, 0x44, 0x59, 0xe3, 0xd3,
0x85, 0x5a, 0x67, 0xeb, 0xce, 0xdc, 0x7c, 0xe9, 0xe9, 0xe3, 0x1a, 0x61, 0xe6, 0xe9, 0x2f, 0x54,
0x33, 0x5b, 0x77, 0xe6, 0xe6, 0x4b, 0xa6, 0x67, 0x96, 0x90, 0x2a, 0x25, 0x66, 0xb6, 0x84, 0xcb,
0x35, 0xcc, 0xcc, 0x96, 0x70, 0x55, 0xe5, 0x52, 0x08, 0x92, 0x2a, 0x46, 0x66, 0x16, 0xe4, 0x72,
0xc1, 0x33, 0xb3, 0x20, 0x57, 0xd4, 0x3e, 0xd5, 0x25, 0xf4, 0x55, 0x2e, 0x9d, 0xf9, 0xdf, 0x99,
0xbb, 0x46, 0x37, 0xa7, 0x49, 0x5e, 0xaa, 0x12, 0xf2, 0x03, 0xfa, 0x95, 0x7c, 0x8d, 0x10, 0x25,
0x3e, 0x34, 0x0f, 0xd8, 0x4c, 0x55, 0xb0, 0x75, 0x7b, 0xb1, 0x60, 0xc3, 0x85, 0xf8, 0x45, 0x0e,
0x60, 0x5a, 0x0c, 0xcc, 0x2c, 0xc4, 0xa5, 0x2a, 0x64, 0xeb, 0xde, 0x02, 0x9c, 0xe9, 0x03, 0x12,
0xd7, 0xff, 0x32, 0x1f, 0x90, 0x0b, 0xc5, 0xca, 0xcc, 0x07, 0xe4, 0x62, 0xa1, 0x51, 0x5d, 0xfa,
0xa4, 0xf2, 0x83, 0x92, 0x88, 0xfe, 0x65, 0xfe, 0x79, 0xef, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff,
0xe1, 0x95, 0x71, 0x38, 0x3f, 0x27, 0x00, 0x00,
var fileDescriptor_driver_c5667ca6005812fb = []byte{
// 2962 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x59, 0xdd, 0x6f, 0xe3, 0xc6,
0x11, 0x37, 0xf5, 0x65, 0x69, 0x64, 0xcb, 0xbc, 0xbd, 0xbb, 0x44, 0x51, 0xd0, 0xe6, 0x42, 0x20,
0x85, 0x91, 0xe4, 0xe4, 0xc4, 0x41, 0xef, 0xab, 0xf9, 0x52, 0x24, 0x9e, 0xed, 0x9c, 0x2d, 0xbb,
0x2b, 0x19, 0x97, 0x6b, 0x9b, 0xb0, 0x34, 0xb9, 0x27, 0xf1, 0x2c, 0x7e, 0x84, 0x5c, 0x3a, 0x36,
0x8a, 0xa2, 0x45, 0x0a, 0x14, 0xed, 0x43, 0x81, 0xbe, 0x04, 0x7d, 0x6f, 0x1f, 0xfb, 0x17, 0xb4,
0x45, 0xfe, 0x8f, 0x02, 0xed, 0x4b, 0x0b, 0x14, 0xe8, 0x6b, 0xff, 0x83, 0x62, 0x3f, 0x48, 0x51,
0xb6, 0x2f, 0x47, 0xe9, 0xf2, 0x24, 0xed, 0xec, 0xce, 0x6f, 0x87, 0x33, 0xb3, 0x33, 0xb3, 0x3b,
0xa0, 0x05, 0x93, 0x78, 0xe4, 0x78, 0xd1, 0x86, 0x1d, 0x3a, 0x27, 0x24, 0x8c, 0x36, 0x82, 0xd0,
0xa7, 0xbe, 0x1c, 0xb5, 0xf9, 0x00, 0xbd, 0x36, 0x36, 0xa3, 0xb1, 0x63, 0xf9, 0x61, 0xd0, 0xf6,
0x7c, 0xd7, 0xb4, 0xdb, 0x92, 0xa7, 0x2d, 0x79, 0xc4, 0xb2, 0xd6, 0x77, 0x47, 0xbe, 0x3f, 0x9a,
0x10, 0x81, 0x70, 0x14, 0x3f, 0xde, 0xb0, 0xe3, 0xd0, 0xa4, 0x8e, 0xef, 0xc9, 0xf9, 0x57, 0xce,
0xcf, 0x53, 0xc7, 0x25, 0x11, 0x35, 0xdd, 0x40, 0x2e, 0xf8, 0x70, 0xe4, 0xd0, 0x71, 0x7c, 0xd4,
0xb6, 0x7c, 0x77, 0x23, 0xdd, 0x72, 0x83, 0x6f, 0xb9, 0x91, 0x88, 0x19, 0x8d, 0xcd, 0x90, 0xd8,
0x1b, 0x63, 0x6b, 0x12, 0x05, 0xc4, 0x62, 0xbf, 0x06, 0xfb, 0x23, 0x11, 0xb6, 0xf2, 0x23, 0x44,
0x34, 0x8c, 0x2d, 0x9a, 0x7c, 0xaf, 0x49, 0x69, 0xe8, 0x1c, 0xc5, 0x94, 0x08, 0x20, 0xed, 0x25,
0x78, 0x71, 0x68, 0x46, 0xc7, 0x5d, 0xdf, 0x7b, 0xec, 0x8c, 0x06, 0xd6, 0x98, 0xb8, 0x26, 0x26,
0x9f, 0xc7, 0x24, 0xa2, 0xda, 0x4f, 0xa0, 0x79, 0x71, 0x2a, 0x0a, 0x7c, 0x2f, 0x22, 0xe8, 0x43,
0x28, 0x31, 0x69, 0x9a, 0xca, 0x0d, 0x65, 0xbd, 0xbe, 0xf9, 0x66, 0xfb, 0x69, 0x8a, 0x13, 0x32,
0xb4, 0xe5, 0x57, 0xb4, 0x07, 0x01, 0xb1, 0x30, 0xe7, 0xd4, 0xae, 0xc3, 0xd5, 0xae, 0x19, 0x98,
0x47, 0xce, 0xc4, 0xa1, 0x0e, 0x89, 0x92, 0x4d, 0x63, 0xb8, 0x36, 0x4b, 0x96, 0x1b, 0x7e, 0x0a,
0x2b, 0x56, 0x86, 0x2e, 0x37, 0xbe, 0xdb, 0xce, 0x65, 0xb1, 0x76, 0x8f, 0x8f, 0x66, 0x80, 0x67,
0xe0, 0xb4, 0x6b, 0x80, 0xee, 0x3b, 0xde, 0x88, 0x84, 0x41, 0xe8, 0x78, 0x34, 0x11, 0xe6, 0xeb,
0x22, 0x5c, 0x9d, 0x21, 0x4b, 0x61, 0x9e, 0x00, 0xa4, 0x7a, 0x64, 0xa2, 0x14, 0xd7, 0xeb, 0x9b,
0x1f, 0xe7, 0x14, 0xe5, 0x12, 0xbc, 0x76, 0x27, 0x05, 0xd3, 0x3d, 0x1a, 0x9e, 0xe1, 0x0c, 0x3a,
0xfa, 0x0c, 0x2a, 0x63, 0x62, 0x4e, 0xe8, 0xb8, 0x59, 0xb8, 0xa1, 0xac, 0x37, 0x36, 0xef, 0x3f,
0xc7, 0x3e, 0xdb, 0x1c, 0x68, 0x40, 0x4d, 0x4a, 0xb0, 0x44, 0x45, 0x37, 0x01, 0x89, 0x7f, 0x86,
0x4d, 0x22, 0x2b, 0x74, 0x02, 0xe6, 0xc8, 0xcd, 0xe2, 0x0d, 0x65, 0xbd, 0x86, 0xaf, 0x88, 0x99,
0xde, 0x74, 0xa2, 0x15, 0xc0, 0xda, 0x39, 0x69, 0x91, 0x0a, 0xc5, 0x63, 0x72, 0xc6, 0x2d, 0x52,
0xc3, 0xec, 0x2f, 0xda, 0x82, 0xf2, 0x89, 0x39, 0x89, 0x09, 0x17, 0xb9, 0xbe, 0xf9, 0xf6, 0xb3,
0xdc, 0x43, 0xba, 0xe8, 0x54, 0x0f, 0x58, 0xf0, 0xdf, 0x2b, 0xdc, 0x51, 0xb4, 0xbb, 0x50, 0xcf,
0xc8, 0x8d, 0x1a, 0x00, 0x87, 0xfd, 0x9e, 0x3e, 0xd4, 0xbb, 0x43, 0xbd, 0xa7, 0x2e, 0xa1, 0x55,
0xa8, 0x1d, 0xf6, 0xb7, 0xf5, 0xce, 0xee, 0x70, 0xfb, 0x91, 0xaa, 0xa0, 0x3a, 0x2c, 0x27, 0x83,
0x82, 0x76, 0x0a, 0x08, 0x13, 0xcb, 0x3f, 0x21, 0x21, 0x73, 0x64, 0x69, 0x55, 0xf4, 0x22, 0x2c,
0x53, 0x33, 0x3a, 0x36, 0x1c, 0x5b, 0xca, 0x5c, 0x61, 0xc3, 0x1d, 0x1b, 0xed, 0x40, 0x65, 0x6c,
0x7a, 0xf6, 0xe4, 0xd9, 0x72, 0xcf, 0xaa, 0x9a, 0x81, 0x6f, 0x73, 0x46, 0x2c, 0x01, 0x98, 0x77,
0xcf, 0xec, 0x2c, 0x0c, 0xa0, 0x3d, 0x02, 0x75, 0x40, 0xcd, 0x90, 0x66, 0xc5, 0xd1, 0xa1, 0xc4,
0xf6, 0x97, 0x1e, 0x3d, 0xcf, 0x9e, 0xe2, 0x64, 0x62, 0xce, 0xae, 0xfd, 0xaf, 0x00, 0x57, 0x32,
0xd8, 0xd2, 0x53, 0x1f, 0x42, 0x25, 0x24, 0x51, 0x3c, 0xa1, 0x1c, 0xbe, 0xb1, 0xf9, 0x41, 0x4e,
0xf8, 0x0b, 0x48, 0x6d, 0xcc, 0x61, 0xb0, 0x84, 0x43, 0xeb, 0xa0, 0x0a, 0x0e, 0x83, 0x84, 0xa1,
0x1f, 0x1a, 0x6e, 0x34, 0xe2, 0x5a, 0xab, 0xe1, 0x86, 0xa0, 0xeb, 0x8c, 0xbc, 0x17, 0x8d, 0x32,
0x5a, 0x2d, 0x3e, 0xa7, 0x56, 0x91, 0x09, 0xaa, 0x47, 0xe8, 0x17, 0x7e, 0x78, 0x6c, 0x30, 0xd5,
0x86, 0x8e, 0x4d, 0x9a, 0x25, 0x0e, 0x7a, 0x2b, 0x27, 0x68, 0x5f, 0xb0, 0xef, 0x4b, 0x6e, 0xbc,
0xe6, 0xcd, 0x12, 0xb4, 0x37, 0xa0, 0x22, 0xbe, 0x94, 0x79, 0xd2, 0xe0, 0xb0, 0xdb, 0xd5, 0x07,
0x03, 0x75, 0x09, 0xd5, 0xa0, 0x8c, 0xf5, 0x21, 0x66, 0x1e, 0x56, 0x83, 0xf2, 0xfd, 0xce, 0xb0,
0xb3, 0xab, 0x16, 0xb4, 0xd7, 0x61, 0xed, 0xa1, 0xe9, 0xd0, 0x3c, 0xce, 0xa5, 0xf9, 0xa0, 0x4e,
0xd7, 0x4a, 0xeb, 0xec, 0xcc, 0x58, 0x27, 0xbf, 0x6a, 0xf4, 0x53, 0x87, 0x9e, 0xb3, 0x87, 0x0a,
0x45, 0x12, 0x86, 0xd2, 0x04, 0xec, 0xaf, 0xf6, 0x05, 0xac, 0x0d, 0xa8, 0x1f, 0xe4, 0xf2, 0xfc,
0x77, 0x60, 0x99, 0xe5, 0x28, 0x3f, 0xa6, 0xd2, 0xf5, 0x5f, 0x6a, 0x8b, 0x1c, 0xd6, 0x4e, 0x72,
0x58, 0xbb, 0x27, 0x73, 0x1c, 0x4e, 0x56, 0xa2, 0x17, 0xa0, 0x12, 0x39, 0x23, 0xcf, 0x9c, 0xc8,
0x68, 0x21, 0x47, 0x1a, 0x62, 0x4e, 0x9e, 0x6c, 0x2c, 0x1d, 0xbf, 0x0b, 0xa8, 0x47, 0x22, 0x1a,
0xfa, 0x67, 0xb9, 0xe4, 0xb9, 0x06, 0xe5, 0xc7, 0x7e, 0x68, 0x89, 0x83, 0x58, 0xc5, 0x62, 0xc0,
0x0e, 0xd5, 0x0c, 0x88, 0xc4, 0xbe, 0x09, 0x68, 0xc7, 0x63, 0x39, 0x25, 0x9f, 0x21, 0x7e, 0x5f,
0x80, 0xab, 0x33, 0xeb, 0xa5, 0x31, 0x16, 0x3f, 0x87, 0x2c, 0x30, 0xc5, 0x91, 0x38, 0x87, 0x68,
0x1f, 0x2a, 0x62, 0x85, 0xd4, 0xe4, 0xed, 0x39, 0x80, 0x44, 0x9a, 0x92, 0x70, 0x12, 0xe6, 0x52,
0xa7, 0x2f, 0x7e, 0xbb, 0x4e, 0xbf, 0x05, 0x6a, 0xf2, 0x1d, 0xd1, 0x33, 0x6d, 0xd3, 0x82, 0xaa,
0xe3, 0x51, 0x12, 0x9e, 0x98, 0x13, 0xfe, 0x89, 0x45, 0x9c, 0x8e, 0xb5, 0x1f, 0xc3, 0x95, 0x0c,
0x90, 0x54, 0xec, 0x7d, 0x28, 0x47, 0x8c, 0x20, 0x35, 0xfb, 0xd6, 0x9c, 0x9a, 0x8d, 0xb0, 0x60,
0xd7, 0xae, 0x0a, 0x70, 0xfd, 0x84, 0x78, 0xa9, 0x98, 0x5a, 0x0f, 0xae, 0x0c, 0xb8, 0xdb, 0xe5,
0xf2, 0xab, 0xa9, 0xcb, 0x16, 0x66, 0x5c, 0xf6, 0x1a, 0xa0, 0x2c, 0x8a, 0x74, 0xac, 0x33, 0x58,
0xd3, 0x4f, 0x89, 0x95, 0x0b, 0xb9, 0x09, 0xcb, 0x96, 0xef, 0xba, 0xa6, 0x67, 0x37, 0x0b, 0x37,
0x8a, 0xeb, 0x35, 0x9c, 0x0c, 0xb3, 0x67, 0xab, 0x98, 0xf7, 0x6c, 0x69, 0xbf, 0x53, 0x40, 0x9d,
0xee, 0x2d, 0x15, 0xc9, 0xa4, 0xa7, 0x36, 0x03, 0x62, 0x7b, 0xaf, 0x60, 0x39, 0x92, 0xf4, 0xe4,
0xf8, 0x0b, 0x3a, 0x09, 0xc3, 0x4c, 0x78, 0x29, 0x3e, 0x67, 0x78, 0xd1, 0xfe, 0xa3, 0x00, 0xba,
0x58, 0x44, 0xa1, 0x57, 0x61, 0x25, 0x22, 0x9e, 0x6d, 0x08, 0x35, 0x0a, 0x0b, 0x57, 0x71, 0x9d,
0xd1, 0x84, 0x3e, 0x23, 0x84, 0xa0, 0x44, 0x4e, 0x89, 0x25, 0x4f, 0x32, 0xff, 0x8f, 0xc6, 0xb0,
0xf2, 0x38, 0x32, 0x9c, 0xc8, 0x9f, 0x98, 0x69, 0xb5, 0xd1, 0xd8, 0xd4, 0x17, 0x2e, 0xe6, 0xda,
0xf7, 0x07, 0x3b, 0x09, 0x18, 0xae, 0x3f, 0x8e, 0xd2, 0x81, 0xd6, 0x86, 0x7a, 0x66, 0x0e, 0x55,
0xa1, 0xd4, 0xdf, 0xef, 0xeb, 0xea, 0x12, 0x02, 0xa8, 0x74, 0xb7, 0xf1, 0xfe, 0xfe, 0x50, 0x44,
0xf4, 0x9d, 0xbd, 0xce, 0x96, 0xae, 0x16, 0xb4, 0xbf, 0x54, 0x00, 0xa6, 0xa9, 0x15, 0x35, 0xa0,
0x90, 0x5a, 0xba, 0xe0, 0xd8, 0xec, 0x63, 0x3c, 0xd3, 0x25, 0xd2, 0x7b, 0xf8, 0x7f, 0xb4, 0x09,
0xd7, 0xdd, 0x68, 0x14, 0x98, 0xd6, 0xb1, 0x21, 0x33, 0xa2, 0xc5, 0x99, 0xf9, 0x57, 0xad, 0xe0,
0xab, 0x72, 0x52, 0x4a, 0x2d, 0x70, 0x77, 0xa1, 0x48, 0xbc, 0x93, 0x66, 0x89, 0x57, 0x8e, 0xf7,
0xe6, 0x4e, 0xf9, 0x6d, 0xdd, 0x3b, 0x11, 0x95, 0x22, 0x83, 0x41, 0x06, 0x80, 0x4d, 0x4e, 0x1c,
0x8b, 0x18, 0x0c, 0xb4, 0xcc, 0x41, 0x3f, 0x9c, 0x1f, 0xb4, 0xc7, 0x31, 0x52, 0xe8, 0x9a, 0x9d,
0x8c, 0x51, 0x1f, 0x6a, 0x21, 0x89, 0xfc, 0x38, 0xb4, 0x48, 0xd4, 0xac, 0xcc, 0x75, 0x8a, 0x71,
0xc2, 0x87, 0xa7, 0x10, 0xa8, 0x07, 0x15, 0xd7, 0x8f, 0x3d, 0x1a, 0x35, 0x97, 0xb9, 0xb0, 0x6f,
0xe6, 0x04, 0xdb, 0x63, 0x4c, 0x58, 0xf2, 0xa2, 0x2d, 0x58, 0x16, 0x22, 0x46, 0xcd, 0x2a, 0x87,
0xb9, 0x99, 0xd7, 0x81, 0x38, 0x17, 0x4e, 0xb8, 0x99, 0x55, 0xe3, 0x88, 0x84, 0xcd, 0x9a, 0xb0,
0x2a, 0xfb, 0x8f, 0x5e, 0x86, 0x9a, 0x39, 0x99, 0xf8, 0x96, 0x61, 0x3b, 0x61, 0x13, 0xf8, 0x44,
0x95, 0x13, 0x7a, 0x4e, 0x88, 0x5e, 0x81, 0xba, 0x38, 0x7a, 0x46, 0x60, 0xd2, 0x71, 0xb3, 0xce,
0xa7, 0x41, 0x90, 0x0e, 0x4c, 0x3a, 0x96, 0x0b, 0x48, 0x18, 0x8a, 0x05, 0x2b, 0xe9, 0x02, 0x12,
0x86, 0x7c, 0xc1, 0xf7, 0x60, 0x8d, 0xc7, 0x91, 0x51, 0xe8, 0xc7, 0x81, 0xc1, 0x7d, 0x6a, 0x95,
0x2f, 0x5a, 0x65, 0xe4, 0x2d, 0x46, 0xed, 0x33, 0xe7, 0x7a, 0x09, 0xaa, 0x4f, 0xfc, 0x23, 0xb1,
0xa0, 0xc1, 0x17, 0x2c, 0x3f, 0xf1, 0x8f, 0x92, 0x29, 0x21, 0xa1, 0x63, 0x37, 0xd7, 0xc4, 0x14,
0x1f, 0xef, 0xd8, 0xad, 0x5b, 0x50, 0x4d, 0xcc, 0x78, 0x49, 0x75, 0x7e, 0x2d, 0x5b, 0x9d, 0xd7,
0x32, 0xa5, 0x76, 0xeb, 0x5d, 0x68, 0xcc, 0x3a, 0xc1, 0x3c, 0xdc, 0xda, 0x3f, 0x14, 0xa8, 0xa5,
0xe6, 0x46, 0x1e, 0x5c, 0xe5, 0xe2, 0x98, 0x94, 0xd8, 0xc6, 0xd4, 0x7b, 0x44, 0x0e, 0x78, 0x2f,
0xa7, 0xa5, 0x3a, 0x09, 0x82, 0x8c, 0x83, 0xd2, 0x95, 0x50, 0x8a, 0x3c, 0xdd, 0xef, 0x33, 0x58,
0x9b, 0x38, 0x5e, 0x7c, 0x9a, 0xd9, 0x4b, 0x24, 0xe0, 0xef, 0xe7, 0xdc, 0x6b, 0x97, 0x71, 0x4f,
0xf7, 0x68, 0x4c, 0x66, 0xc6, 0xda, 0x57, 0x05, 0x78, 0xe1, 0x72, 0x71, 0x50, 0x1f, 0x8a, 0x56,
0x10, 0xcb, 0x4f, 0x7b, 0x77, 0xde, 0x4f, 0xeb, 0x06, 0xf1, 0x74, 0x57, 0x06, 0xc4, 0x8a, 0x76,
0x97, 0xb8, 0x7e, 0x78, 0x26, 0xbf, 0xe0, 0x83, 0x79, 0x21, 0xf7, 0x38, 0xf7, 0x14, 0x55, 0xc2,
0x21, 0x0c, 0x55, 0x99, 0xfa, 0x23, 0x19, 0x26, 0xe6, 0x2c, 0x21, 0x12, 0x48, 0x9c, 0xe2, 0x68,
0xb7, 0xe0, 0xfa, 0xa5, 0x9f, 0x82, 0xbe, 0x03, 0x60, 0x05, 0xb1, 0xc1, 0xaf, 0x78, 0xc2, 0xee,
0x45, 0x5c, 0xb3, 0x82, 0x78, 0xc0, 0x09, 0xda, 0x6d, 0x68, 0x3e, 0x4d, 0x5e, 0x76, 0xf8, 0x84,
0xc4, 0x86, 0x7b, 0x94, 0xd4, 0x18, 0x82, 0xb0, 0x77, 0xa4, 0xfd, 0xa1, 0x00, 0x6b, 0xe7, 0xc4,
0x61, 0x19, 0x50, 0x1c, 0xe6, 0x24, 0x2b, 0x8b, 0x11, 0x3b, 0xd9, 0x96, 0x63, 0x27, 0x65, 0x31,
0xff, 0xcf, 0x63, 0x7a, 0x20, 0x4b, 0xd6, 0x82, 0x13, 0x30, 0x87, 0x76, 0x8f, 0x1c, 0x1a, 0xf1,
0x9b, 0x44, 0x19, 0x8b, 0x01, 0x7a, 0x04, 0x8d, 0x90, 0x44, 0x24, 0x3c, 0x21, 0xb6, 0x11, 0xf8,
0x21, 0x4d, 0x14, 0xb6, 0x39, 0x9f, 0xc2, 0x0e, 0xfc, 0x90, 0xe2, 0xd5, 0x04, 0x89, 0x8d, 0x22,
0xf4, 0x10, 0x56, 0xed, 0x33, 0xcf, 0x74, 0x1d, 0x4b, 0x22, 0x57, 0x16, 0x46, 0x5e, 0x91, 0x40,
0x1c, 0x98, 0xdd, 0x94, 0x33, 0x93, 0xec, 0xc3, 0x26, 0xe6, 0x11, 0x99, 0x48, 0x9d, 0x88, 0xc1,
0xec, 0xf9, 0x2d, 0xcb, 0xf3, 0xab, 0xfd, 0xa9, 0x00, 0x8d, 0xd9, 0x03, 0x90, 0xd8, 0x2f, 0x20,
0xa1, 0xe3, 0xdb, 0x19, 0xfb, 0x1d, 0x70, 0x02, 0xb3, 0x11, 0x9b, 0xfe, 0x3c, 0xf6, 0xa9, 0x99,
0xd8, 0xc8, 0x0a, 0xe2, 0x1f, 0xb2, 0xf1, 0x39, 0xdb, 0x17, 0xcf, 0xd9, 0x1e, 0xbd, 0x09, 0x48,
0xda, 0x77, 0xe2, 0xb8, 0x0e, 0x35, 0x8e, 0xce, 0x28, 0x11, 0xfa, 0x2f, 0x62, 0x55, 0xcc, 0xec,
0xb2, 0x89, 0x8f, 0x18, 0x1d, 0x69, 0xb0, 0xea, 0xfb, 0xae, 0x11, 0x59, 0x7e, 0x48, 0x0c, 0xd3,
0x7e, 0xd2, 0x2c, 0xf3, 0x85, 0x75, 0xdf, 0x77, 0x07, 0x8c, 0xd6, 0xb1, 0x9f, 0xb0, 0x80, 0x6b,
0x05, 0x71, 0x44, 0xa8, 0xc1, 0x7e, 0x78, 0x8e, 0xaa, 0x61, 0x10, 0xa4, 0x6e, 0x10, 0x47, 0x99,
0x05, 0x2e, 0x71, 0x59, 0xde, 0xc9, 0x2c, 0xd8, 0x23, 0x2e, 0xdb, 0x65, 0xe5, 0x80, 0x84, 0x16,
0xf1, 0xe8, 0xd0, 0xb1, 0x8e, 0x59, 0x4a, 0x51, 0xd6, 0x15, 0x3c, 0x43, 0xd3, 0x3e, 0x85, 0x32,
0x4f, 0x41, 0xec, 0xe3, 0x79, 0xf8, 0xe6, 0xd1, 0x5d, 0xa8, 0xb7, 0xca, 0x08, 0x3c, 0xb6, 0xbf,
0x0c, 0xb5, 0xb1, 0x1f, 0xc9, 0xdc, 0x20, 0x3c, 0xaf, 0xca, 0x08, 0x7c, 0xb2, 0x05, 0xd5, 0x90,
0x98, 0xb6, 0xef, 0x4d, 0xce, 0xb8, 0x5e, 0xaa, 0x38, 0x1d, 0x6b, 0x9f, 0x43, 0x45, 0x84, 0xdf,
0xe7, 0xc0, 0xbf, 0x09, 0xc8, 0x12, 0x49, 0x25, 0x20, 0xa1, 0xeb, 0x44, 0x91, 0xe3, 0x7b, 0x51,
0xf2, 0x9c, 0x23, 0x66, 0x0e, 0xa6, 0x13, 0xda, 0x3f, 0x15, 0x51, 0xef, 0x88, 0x8b, 0x36, 0xab,
0x62, 0x99, 0xa7, 0xb1, 0x9a, 0x4c, 0xe1, 0xee, 0x91, 0x0c, 0x59, 0x2d, 0x29, 0xcb, 0x9a, 0xc2,
0xa2, 0xef, 0x14, 0x12, 0x20, 0xb9, 0x0f, 0x10, 0x59, 0xf6, 0xcd, 0x7b, 0x1f, 0x20, 0xe2, 0x3e,
0x40, 0x58, 0xf1, 0x29, 0x0b, 0x2e, 0x01, 0x57, 0xe2, 0xf5, 0x56, 0xdd, 0x4e, 0x2f, 0x51, 0x44,
0xfb, 0xaf, 0x92, 0xc6, 0x8a, 0xe4, 0xb2, 0x83, 0x3e, 0x83, 0x2a, 0x3b, 0x76, 0x86, 0x6b, 0x06,
0xf2, 0xe9, 0xae, 0xbb, 0xd8, 0x3d, 0xaa, 0xcd, 0x4e, 0xd9, 0x9e, 0x19, 0x88, 0x72, 0x69, 0x39,
0x10, 0x23, 0x16, 0x73, 0x4c, 0x7b, 0x1a, 0x73, 0xd8, 0x7f, 0xf4, 0x1a, 0x34, 0xcc, 0x98, 0xfa,
0x86, 0x69, 0x9f, 0x90, 0x90, 0x3a, 0x11, 0x91, 0xb6, 0x5f, 0x65, 0xd4, 0x4e, 0x42, 0x6c, 0xdd,
0x83, 0x95, 0x2c, 0xe6, 0xb3, 0xb2, 0x6f, 0x39, 0x9b, 0x7d, 0x7f, 0x0a, 0x30, 0xad, 0xdb, 0x99,
0x8f, 0x90, 0x53, 0x87, 0x1a, 0x96, 0x6f, 0x13, 0x69, 0xca, 0x2a, 0x23, 0x74, 0x7d, 0x9b, 0x9c,
0xbb, 0x05, 0x95, 0x93, 0x5b, 0x10, 0x3b, 0xb5, 0xec, 0xa0, 0x1d, 0x3b, 0x93, 0x09, 0xb1, 0xa5,
0x84, 0x35, 0xdf, 0x77, 0x1f, 0x70, 0x82, 0xf6, 0x75, 0x41, 0xf8, 0x8a, 0xb8, 0x9f, 0xe6, 0xaa,
0x8d, 0xbf, 0x2d, 0x53, 0xdf, 0x05, 0x88, 0xa8, 0x19, 0xb2, 0x52, 0xc2, 0xa4, 0xf2, 0xc9, 0xa7,
0x75, 0xe1, 0x1a, 0x35, 0x4c, 0x9e, 0xd9, 0x71, 0x4d, 0xae, 0xee, 0x50, 0xf4, 0x1e, 0xac, 0x58,
0xbe, 0x1b, 0x4c, 0x88, 0x64, 0x2e, 0x3f, 0x93, 0xb9, 0x9e, 0xae, 0xef, 0xd0, 0xcc, 0x1d, 0xaa,
0xf2, 0xbc, 0x77, 0xa8, 0xbf, 0x2a, 0xe2, 0x9a, 0x9d, 0xbd, 0xe5, 0xa3, 0xd1, 0x25, 0x4f, 0xc9,
0x5b, 0x0b, 0x3e, 0x19, 0x7c, 0xd3, 0x3b, 0x72, 0xeb, 0xbd, 0x3c, 0x0f, 0xb7, 0x4f, 0x2f, 0xee,
0xfe, 0x56, 0x84, 0x5a, 0x7a, 0x23, 0xbf, 0x60, 0xfb, 0x3b, 0x50, 0x4b, 0x7b, 0x1c, 0x32, 0x40,
0x7c, 0xa3, 0x79, 0xd2, 0xc5, 0xe8, 0x31, 0x20, 0x73, 0x34, 0x4a, 0x8b, 0x36, 0x23, 0x8e, 0xcc,
0x51, 0xf2, 0xbe, 0x71, 0x67, 0x0e, 0x3d, 0x24, 0x79, 0xeb, 0x90, 0xf1, 0x63, 0xd5, 0x1c, 0x8d,
0x66, 0x28, 0xe8, 0x67, 0x70, 0x7d, 0x76, 0x0f, 0xe3, 0xe8, 0xcc, 0x08, 0x1c, 0x5b, 0xde, 0xc1,
0xb6, 0xe7, 0x7d, 0x94, 0x68, 0xcf, 0xc0, 0x7f, 0x74, 0x76, 0xe0, 0xd8, 0x42, 0xe7, 0x28, 0xbc,
0x30, 0xd1, 0xfa, 0x05, 0xbc, 0xf8, 0x94, 0xe5, 0x97, 0xd8, 0xa0, 0x3f, 0xfb, 0x78, 0xbe, 0xb8,
0x12, 0x32, 0xd6, 0xfb, 0xa3, 0x22, 0xde, 0x4e, 0x66, 0x75, 0xd2, 0xc9, 0xd6, 0xad, 0x1b, 0x39,
0xf7, 0xe9, 0x1e, 0x1c, 0x0a, 0x78, 0x5e, 0xaa, 0x7e, 0x7c, 0xae, 0x54, 0xcd, 0x5b, 0xc4, 0x88,
0x8a, 0x4f, 0x00, 0x49, 0x04, 0xed, 0xcf, 0x45, 0xa8, 0x26, 0xe8, 0xfc, 0x06, 0x75, 0x16, 0x51,
0xe2, 0x1a, 0x6e, 0x12, 0xc2, 0x14, 0x0c, 0x82, 0xb4, 0xc7, 0x82, 0xd8, 0xcb, 0x50, 0x63, 0x17,
0x35, 0x31, 0x5d, 0xe0, 0xd3, 0x55, 0x46, 0xe0, 0x93, 0xaf, 0x40, 0x9d, 0xfa, 0xd4, 0x9c, 0x18,
0x94, 0xe7, 0xf2, 0xa2, 0xe0, 0xe6, 0x24, 0x9e, 0xc9, 0xd1, 0x1b, 0x70, 0x85, 0x8e, 0x43, 0x9f,
0xd2, 0x09, 0xab, 0xef, 0x78, 0x45, 0x23, 0x0a, 0x90, 0x12, 0x56, 0xd3, 0x09, 0x51, 0xe9, 0x44,
0x2c, 0x7a, 0x4f, 0x17, 0x33, 0xd7, 0xe5, 0x41, 0xa4, 0x84, 0x57, 0x53, 0x2a, 0x73, 0x6d, 0x96,
0x3c, 0x03, 0x51, 0x2d, 0xf0, 0x58, 0xa1, 0xe0, 0x64, 0x88, 0x0c, 0x58, 0x73, 0x89, 0x19, 0xc5,
0x21, 0xb1, 0x8d, 0xc7, 0x0e, 0x99, 0xd8, 0xe2, 0xe2, 0xdb, 0xc8, 0x5d, 0x7e, 0x27, 0x6a, 0x69,
0xdf, 0xe7, 0xdc, 0xb8, 0x91, 0xc0, 0x89, 0x31, 0xab, 0x1c, 0xc4, 0x3f, 0xb4, 0x06, 0xf5, 0xc1,
0xa3, 0xc1, 0x50, 0xdf, 0x33, 0xf6, 0xf6, 0x7b, 0xba, 0xec, 0x8f, 0x0c, 0x74, 0x2c, 0x86, 0x0a,
0x9b, 0x1f, 0xee, 0x0f, 0x3b, 0xbb, 0xc6, 0x70, 0xa7, 0xfb, 0x60, 0xa0, 0x16, 0xd0, 0x75, 0xb8,
0x32, 0xdc, 0xc6, 0xfb, 0xc3, 0xe1, 0xae, 0xde, 0x33, 0x0e, 0x74, 0xbc, 0xb3, 0xdf, 0x1b, 0xa8,
0x45, 0x84, 0xa0, 0x31, 0x25, 0x0f, 0x77, 0xf6, 0x74, 0xb5, 0x84, 0xea, 0xb0, 0x7c, 0xa0, 0xe3,
0xae, 0xde, 0x1f, 0xaa, 0x65, 0xed, 0xef, 0x05, 0xa8, 0x67, 0xac, 0xc8, 0x1c, 0x39, 0x8c, 0x44,
0x9d, 0x5f, 0xc2, 0xec, 0x2f, 0x0b, 0x26, 0x96, 0x69, 0x8d, 0x85, 0x75, 0x4a, 0x58, 0x0c, 0x78,
0x6d, 0x6f, 0x9e, 0x66, 0xce, 0x79, 0x09, 0x57, 0x5d, 0xf3, 0x54, 0x80, 0xbc, 0x0a, 0x2b, 0xc7,
0x24, 0xf4, 0xc8, 0x44, 0xce, 0x0b, 0x8b, 0xd4, 0x05, 0x4d, 0x2c, 0x59, 0x07, 0x55, 0x2e, 0x99,
0xc2, 0x08, 0x73, 0x34, 0x04, 0x7d, 0x2f, 0x01, 0x3b, 0xba, 0xa8, 0xf5, 0x0a, 0xd7, 0xfa, 0xdd,
0xf9, 0x9d, 0xf4, 0x69, 0x8a, 0x1f, 0xa4, 0x8a, 0x5f, 0x86, 0x22, 0x4e, 0x5a, 0x05, 0xdd, 0x4e,
0x77, 0x9b, 0x29, 0x7b, 0x15, 0x6a, 0x7b, 0x9d, 0x4f, 0x8c, 0xc3, 0x01, 0x7f, 0x5c, 0x42, 0x2a,
0xac, 0x3c, 0xd0, 0x71, 0x5f, 0xdf, 0x95, 0x94, 0x22, 0xba, 0x06, 0xaa, 0xa4, 0x4c, 0xd7, 0x95,
0xb4, 0x7f, 0x15, 0x60, 0x4d, 0xc4, 0xf5, 0xf4, 0xbd, 0xf3, 0xe9, 0x0f, 0x8f, 0xd9, 0x67, 0x80,
0xc2, 0xcc, 0x33, 0x40, 0x5a, 0x45, 0xf2, 0xb4, 0x5c, 0x9c, 0x56, 0x91, 0xfc, 0xf9, 0x60, 0x26,
0x64, 0x97, 0xe6, 0x09, 0xd9, 0x4d, 0x58, 0x76, 0x49, 0x94, 0x2a, 0xbe, 0x86, 0x93, 0x21, 0x72,
0xa0, 0x6e, 0x7a, 0x9e, 0x4f, 0xf9, 0x63, 0x5b, 0x72, 0xaf, 0xd9, 0x9a, 0xeb, 0x59, 0x2f, 0xfd,
0xe2, 0x76, 0x67, 0x8a, 0x24, 0x22, 0x6b, 0x16, 0xbb, 0xf5, 0x3e, 0xa8, 0xe7, 0x17, 0xcc, 0x93,
0xcf, 0x5e, 0x7f, 0x7b, 0x9a, 0xce, 0x08, 0x73, 0xec, 0xc3, 0xfe, 0x83, 0xfe, 0xfe, 0xc3, 0xbe,
0xba, 0xc4, 0x06, 0xf8, 0xb0, 0xdf, 0xdf, 0xe9, 0x6f, 0xa9, 0x0a, 0x02, 0xa8, 0xe8, 0x9f, 0xec,
0x0c, 0xf5, 0x9e, 0x5a, 0xd8, 0xfc, 0xf7, 0x2a, 0x54, 0x84, 0x90, 0xe8, 0x2b, 0x99, 0xca, 0xb3,
0xbd, 0x71, 0xf4, 0xfe, 0xdc, 0x25, 0xf1, 0x4c, 0xbf, 0xbd, 0xf5, 0xc1, 0xc2, 0xfc, 0xf2, 0xbd,
0x7a, 0x09, 0xfd, 0x56, 0x81, 0x95, 0x99, 0x07, 0xda, 0xbc, 0x6f, 0x8b, 0x97, 0xb4, 0xe2, 0x5b,
0x3f, 0x58, 0x88, 0x37, 0x95, 0xe5, 0x37, 0x0a, 0xd4, 0x33, 0x4d, 0x68, 0x74, 0x77, 0x91, 0xc6,
0xb5, 0x90, 0xe4, 0xde, 0xe2, 0x3d, 0x6f, 0x6d, 0xe9, 0x2d, 0x05, 0xfd, 0x5a, 0x81, 0x7a, 0xa6,
0x1d, 0x9b, 0x5b, 0x94, 0x8b, 0xcd, 0xe3, 0xdc, 0xa2, 0x5c, 0xd6, 0xfd, 0x5d, 0x42, 0xbf, 0x54,
0xa0, 0x96, 0xb6, 0x56, 0xd1, 0xed, 0xf9, 0x9b, 0xb1, 0x42, 0x88, 0x3b, 0x8b, 0x76, 0x71, 0xb5,
0x25, 0xf4, 0x73, 0xa8, 0x26, 0x7d, 0x48, 0x94, 0x37, 0xfd, 0x9c, 0x6b, 0x72, 0xb6, 0x6e, 0xcf,
0xcd, 0x97, 0xdd, 0x3e, 0x69, 0x0e, 0xe6, 0xde, 0xfe, 0x5c, 0x1b, 0xb3, 0x75, 0x7b, 0x6e, 0xbe,
0x74, 0x7b, 0xe6, 0x09, 0x99, 0x1e, 0x62, 0x6e, 0x4f, 0xb8, 0xd8, 0xbc, 0xcc, 0xed, 0x09, 0x97,
0xb5, 0x2c, 0x85, 0x20, 0x99, 0x2e, 0x64, 0x6e, 0x41, 0x2e, 0x76, 0x3a, 0x73, 0x0b, 0x72, 0x49,
0xd3, 0x53, 0x5b, 0x42, 0x5f, 0x2a, 0xd9, 0xc2, 0xfe, 0xf6, 0xdc, 0xcd, 0xb9, 0x39, 0x5d, 0xf2,
0x42, 0x7b, 0x90, 0x1f, 0xd0, 0x2f, 0xe5, 0x33, 0x84, 0xe8, 0xed, 0xa1, 0x79, 0xc0, 0x66, 0xda,
0x81, 0xad, 0x5b, 0x8b, 0x25, 0x1b, 0x2e, 0xc4, 0xaf, 0x14, 0x80, 0x69, 0x17, 0x30, 0xb7, 0x10,
0x17, 0xda, 0x8f, 0xad, 0xbb, 0x0b, 0x70, 0x66, 0x0f, 0x48, 0xd2, 0xf8, 0xcb, 0x7d, 0x40, 0xce,
0x75, 0x29, 0x73, 0x1f, 0x90, 0xf3, 0x1d, 0x46, 0x6d, 0xe9, 0xa3, 0xe5, 0x1f, 0x95, 0x45, 0xf6,
0xaf, 0xf0, 0x9f, 0x77, 0xfe, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x6e, 0xa6, 0xcf, 0xe1, 0x38, 0x27,
0x00, 0x00,
}

View File

@@ -448,14 +448,17 @@ enum TaskState {
// TaskHandle is created when starting a task and is used to recover task
message TaskHandle {
// Version is used by the driver to version the DriverState schema
int32 version = 1;
// Config is the TaskConfig for the task
TaskConfig config = 1;
TaskConfig config = 2;
// State is the state of the task's execution
TaskState state = 2;
TaskState state = 3;
// DriverState is the encoded state for the specific driver
bytes driver_state = 3;
bytes driver_state = 4;
}
// NetworkOverride contains network settings which the driver may override

View File

@@ -8,14 +8,18 @@ import (
// It is returned to the client after starting the task and used
// for recovery of tasks during a driver restart.
type TaskHandle struct {
Driver string
// Version is set by the driver an allows it to handle upgrading from
// an older DriverState struct. Prior to 0.9 the only state stored for
// driver was the reattach config for the executor. To allow upgrading to
// 0.9, Version 0 is handled as if it is the json encoded reattach config.
Version int
Config *TaskConfig
State TaskState
DriverState []byte
}
func NewTaskHandle(driver string) *TaskHandle {
return &TaskHandle{Driver: driver}
func NewTaskHandle(version int) *TaskHandle {
return &TaskHandle{Version: version}
}
func (h *TaskHandle) SetDriverState(v interface{}) error {
@@ -34,7 +38,7 @@ func (h *TaskHandle) Copy() *TaskHandle {
}
handle := new(TaskHandle)
handle.Driver = h.Driver
handle.Version = h.Version
handle.Config = h.Config.Copy()
handle.State = h.State
handle.DriverState = make([]byte, len(h.DriverState))

View File

@@ -307,6 +307,7 @@ func taskHandleFromProto(pb *proto.TaskHandle) *TaskHandle {
return &TaskHandle{}
}
return &TaskHandle{
Version: int(pb.Version),
Config: taskConfigFromProto(pb.Config),
State: taskStateFromProtoMap[pb.State],
DriverState: pb.DriverState,
@@ -315,6 +316,7 @@ func taskHandleFromProto(pb *proto.TaskHandle) *TaskHandle {
func taskHandleToProto(handle *TaskHandle) *proto.TaskHandle {
return &proto.TaskHandle{
Version: int32(handle.Version),
Config: taskConfigToProto(handle.Config),
State: taskStateToProtoMap[handle.State],
DriverState: handle.DriverState,