driver/base: add task event emitting to proto

This commit is contained in:
Nick Ethier 2018-08-15 00:06:08 -04:00 committed by Nick Ethier
parent a2c32dda57
commit 3a817dc7c9
2 changed files with 350 additions and 184 deletions

View File

@ -9,6 +9,7 @@ import math "math"
import duration "github.com/golang/protobuf/ptypes/duration"
import empty "github.com/golang/protobuf/ptypes/empty"
import timestamp "github.com/golang/protobuf/ptypes/timestamp"
import hclspec "github.com/hashicorp/nomad/plugins/shared/hclspec"
import (
context "golang.org/x/net/context"
@ -29,27 +30,27 @@ const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
type TaskState int32
const (
TaskState_TASK_UNKNOWN TaskState = 0
TaskState_TASK_RUNNING TaskState = 1
TaskState_TASK_EXITED TaskState = 2
TaskState_UNKNOWN TaskState = 0
TaskState_RUNNING TaskState = 1
TaskState_EXITED TaskState = 2
)
var TaskState_name = map[int32]string{
0: "TASK_UNKNOWN",
1: "TASK_RUNNING",
2: "TASK_EXITED",
0: "UNKNOWN",
1: "RUNNING",
2: "EXITED",
}
var TaskState_value = map[string]int32{
"TASK_UNKNOWN": 0,
"TASK_RUNNING": 1,
"TASK_EXITED": 2,
"UNKNOWN": 0,
"RUNNING": 1,
"EXITED": 2,
}
func (x TaskState) String() string {
return proto.EnumName(TaskState_name, int32(x))
}
func (TaskState) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_driver_b830f3fbdc9ff108, []int{0}
return fileDescriptor_driver_b26cb45d2a523f58, []int{0}
}
type CPUUsage_Fields int32
@ -84,7 +85,7 @@ func (x CPUUsage_Fields) String() string {
return proto.EnumName(CPUUsage_Fields_name, int32(x))
}
func (CPUUsage_Fields) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_driver_b830f3fbdc9ff108, []int{27, 0}
return fileDescriptor_driver_b26cb45d2a523f58, []int{27, 0}
}
type MemoryUsage_Fields int32
@ -116,21 +117,23 @@ func (x MemoryUsage_Fields) String() string {
return proto.EnumName(MemoryUsage_Fields_name, int32(x))
}
func (MemoryUsage_Fields) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_driver_b830f3fbdc9ff108, []int{28, 0}
return fileDescriptor_driver_b26cb45d2a523f58, []int{28, 0}
}
type FingerprintResponse struct {
// Spec is the configuration schema for the job driver config stanza
Spec *hclspec.Spec `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"`
// Capabilities provides a way for the driver to denote if it implements
// non-core RPCs. Some Driver service RPCs expose additional information
// or functionality outside of the core task management functions. These
// RPCs are only implemented if the driver sets the corresponding capability.
Capabilities *DriverCapabilities `protobuf:"bytes,1,opt,name=capabilities,proto3" json:"capabilities,omitempty"`
Capabilities *DriverCapabilities `protobuf:"bytes,2,opt,name=capabilities,proto3" json:"capabilities,omitempty"`
// Attributes are key/value pairs that annotate the nomad client and can be
// used in scheduling contraints and affinities.
Attributes map[string]string `protobuf:"bytes,2,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
Attributes map[string]string `protobuf:"bytes,3,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
// Detected signifies if the necessary dependancies of the drive are met for
// nominal operation.
Detected bool `protobuf:"varint,3,opt,name=detected,proto3" json:"detected,omitempty"`
Detected bool `protobuf:"varint,4,opt,name=detected,proto3" json:"detected,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@ -140,7 +143,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_b830f3fbdc9ff108, []int{0}
return fileDescriptor_driver_b26cb45d2a523f58, []int{0}
}
func (m *FingerprintResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FingerprintResponse.Unmarshal(m, b)
@ -160,6 +163,13 @@ func (m *FingerprintResponse) XXX_DiscardUnknown() {
var xxx_messageInfo_FingerprintResponse proto.InternalMessageInfo
func (m *FingerprintResponse) GetSpec() *hclspec.Spec {
if m != nil {
return m.Spec
}
return nil
}
func (m *FingerprintResponse) GetCapabilities() *DriverCapabilities {
if m != nil {
return m.Capabilities
@ -195,7 +205,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_b830f3fbdc9ff108, []int{1}
return fileDescriptor_driver_b26cb45d2a523f58, []int{1}
}
func (m *RecoverTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RecoverTaskRequest.Unmarshal(m, b)
@ -241,7 +251,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_b830f3fbdc9ff108, []int{2}
return fileDescriptor_driver_b26cb45d2a523f58, []int{2}
}
func (m *StartTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StartTaskRequest.Unmarshal(m, b)
@ -281,7 +291,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_b830f3fbdc9ff108, []int{3}
return fileDescriptor_driver_b26cb45d2a523f58, []int{3}
}
func (m *StartTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StartTaskResponse.Unmarshal(m, b)
@ -320,7 +330,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_b830f3fbdc9ff108, []int{4}
return fileDescriptor_driver_b26cb45d2a523f58, []int{4}
}
func (m *WaitTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_WaitTaskRequest.Unmarshal(m, b)
@ -363,7 +373,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_b830f3fbdc9ff108, []int{5}
return fileDescriptor_driver_b26cb45d2a523f58, []int{5}
}
func (m *WaitTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_WaitTaskResponse.Unmarshal(m, b)
@ -422,7 +432,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_b830f3fbdc9ff108, []int{6}
return fileDescriptor_driver_b26cb45d2a523f58, []int{6}
}
func (m *StopTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StopTaskRequest.Unmarshal(m, b)
@ -475,7 +485,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_b830f3fbdc9ff108, []int{7}
return fileDescriptor_driver_b26cb45d2a523f58, []int{7}
}
func (m *DestroyTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DestroyTaskRequest.Unmarshal(m, b)
@ -512,7 +522,7 @@ func (m *ListTasksRequest) Reset() { *m = ListTasksRequest{} }
func (m *ListTasksRequest) String() string { return proto.CompactTextString(m) }
func (*ListTasksRequest) ProtoMessage() {}
func (*ListTasksRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_b830f3fbdc9ff108, []int{8}
return fileDescriptor_driver_b26cb45d2a523f58, []int{8}
}
func (m *ListTasksRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListTasksRequest.Unmarshal(m, b)
@ -544,7 +554,7 @@ func (m *ListTasksResponse) Reset() { *m = ListTasksResponse{} }
func (m *ListTasksResponse) String() string { return proto.CompactTextString(m) }
func (*ListTasksResponse) ProtoMessage() {}
func (*ListTasksResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_b830f3fbdc9ff108, []int{9}
return fileDescriptor_driver_b26cb45d2a523f58, []int{9}
}
func (m *ListTasksResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ListTasksResponse.Unmarshal(m, b)
@ -583,7 +593,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_b830f3fbdc9ff108, []int{10}
return fileDescriptor_driver_b26cb45d2a523f58, []int{10}
}
func (m *InspectTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InspectTaskRequest.Unmarshal(m, b)
@ -622,7 +632,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_b830f3fbdc9ff108, []int{11}
return fileDescriptor_driver_b26cb45d2a523f58, []int{11}
}
func (m *InspectTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InspectTaskResponse.Unmarshal(m, b)
@ -661,7 +671,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_b830f3fbdc9ff108, []int{12}
return fileDescriptor_driver_b26cb45d2a523f58, []int{12}
}
func (m *TaskStatsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskStatsRequest.Unmarshal(m, b)
@ -700,7 +710,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_b830f3fbdc9ff108, []int{13}
return fileDescriptor_driver_b26cb45d2a523f58, []int{13}
}
func (m *TaskStatsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskStatsResponse.Unmarshal(m, b)
@ -741,7 +751,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_b830f3fbdc9ff108, []int{14}
return fileDescriptor_driver_b26cb45d2a523f58, []int{14}
}
func (m *SignalTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalTaskRequest.Unmarshal(m, b)
@ -792,7 +802,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_b830f3fbdc9ff108, []int{15}
return fileDescriptor_driver_b26cb45d2a523f58, []int{15}
}
func (m *ExecTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExecTaskRequest.Unmarshal(m, b)
@ -843,7 +853,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_b830f3fbdc9ff108, []int{16}
return fileDescriptor_driver_b26cb45d2a523f58, []int{16}
}
func (m *ExecTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExecTaskResponse.Unmarshal(m, b)
@ -879,7 +889,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_b830f3fbdc9ff108, []int{17}
return fileDescriptor_driver_b26cb45d2a523f58, []int{17}
}
func (m *DriverCapabilities) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DriverCapabilities.Unmarshal(m, b)
@ -944,7 +954,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_b830f3fbdc9ff108, []int{18}
return fileDescriptor_driver_b26cb45d2a523f58, []int{18}
}
func (m *TaskConfig) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskConfig.Unmarshal(m, b)
@ -1051,7 +1061,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_b830f3fbdc9ff108, []int{19}
return fileDescriptor_driver_b26cb45d2a523f58, []int{19}
}
func (m *Resources) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Resources.Unmarshal(m, b)
@ -1136,7 +1146,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_b830f3fbdc9ff108, []int{20}
return fileDescriptor_driver_b26cb45d2a523f58, []int{20}
}
func (m *Mount) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Mount.Unmarshal(m, b)
@ -1199,7 +1209,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_b830f3fbdc9ff108, []int{21}
return fileDescriptor_driver_b26cb45d2a523f58, []int{21}
}
func (m *Device) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Device.Unmarshal(m, b)
@ -1259,7 +1269,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_b830f3fbdc9ff108, []int{22}
return fileDescriptor_driver_b26cb45d2a523f58, []int{22}
}
func (m *TaskHandle) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskHandle.Unmarshal(m, b)
@ -1297,7 +1307,7 @@ func (m *TaskHandle) GetState() TaskState {
if m != nil {
return m.State
}
return TaskState_TASK_UNKNOWN
return TaskState_UNKNOWN
}
func (m *TaskHandle) GetDriverState() []byte {
@ -1325,7 +1335,7 @@ func (m *TaskSummary) Reset() { *m = TaskSummary{} }
func (m *TaskSummary) String() string { return proto.CompactTextString(m) }
func (*TaskSummary) ProtoMessage() {}
func (*TaskSummary) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_b830f3fbdc9ff108, []int{23}
return fileDescriptor_driver_b26cb45d2a523f58, []int{23}
}
func (m *TaskSummary) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskSummary.Unmarshal(m, b)
@ -1363,7 +1373,7 @@ func (m *TaskSummary) GetState() TaskState {
if m != nil {
return m.State
}
return TaskState_TASK_UNKNOWN
return TaskState_UNKNOWN
}
func (m *TaskSummary) GetStartedAt() *timestamp.Timestamp {
@ -1398,7 +1408,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_b830f3fbdc9ff108, []int{24}
return fileDescriptor_driver_b26cb45d2a523f58, []int{24}
}
func (m *TaskStatus) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskStatus.Unmarshal(m, b)
@ -1436,7 +1446,7 @@ func (m *TaskStatus) GetState() TaskState {
if m != nil {
return m.State
}
return TaskState_TASK_UNKNOWN
return TaskState_UNKNOWN
}
func (m *TaskStatus) GetStartedAt() *timestamp.Timestamp {
@ -1485,7 +1495,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_b830f3fbdc9ff108, []int{25}
return fileDescriptor_driver_b26cb45d2a523f58, []int{25}
}
func (m *TaskStats) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskStats.Unmarshal(m, b)
@ -1547,7 +1557,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_b830f3fbdc9ff108, []int{26}
return fileDescriptor_driver_b26cb45d2a523f58, []int{26}
}
func (m *TaskResourceUsage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskResourceUsage.Unmarshal(m, b)
@ -1599,7 +1609,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_b830f3fbdc9ff108, []int{27}
return fileDescriptor_driver_b26cb45d2a523f58, []int{27}
}
func (m *CPUUsage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CPUUsage.Unmarshal(m, b)
@ -1685,7 +1695,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_b830f3fbdc9ff108, []int{28}
return fileDescriptor_driver_b26cb45d2a523f58, []int{28}
}
func (m *MemoryUsage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MemoryUsage.Unmarshal(m, b)
@ -1747,6 +1757,63 @@ func (m *MemoryUsage) GetMeasuredFields() []MemoryUsage_Fields {
return nil
}
type TaskEvent struct {
// TaskId is the id of the task for the event
TaskId string `protobuf:"bytes,1,opt,name=task_id,json=taskId,proto3" json:"task_id,omitempty"`
// Message is the body of the event
Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"`
// Annotations allows for additional key/value data to be sent along with the event
Annotations map[string]string `protobuf:"bytes,3,rep,name=annotations,proto3" json:"annotations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *TaskEvent) Reset() { *m = TaskEvent{} }
func (m *TaskEvent) String() string { return proto.CompactTextString(m) }
func (*TaskEvent) ProtoMessage() {}
func (*TaskEvent) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_b26cb45d2a523f58, []int{29}
}
func (m *TaskEvent) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskEvent.Unmarshal(m, b)
}
func (m *TaskEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_TaskEvent.Marshal(b, m, deterministic)
}
func (dst *TaskEvent) XXX_Merge(src proto.Message) {
xxx_messageInfo_TaskEvent.Merge(dst, src)
}
func (m *TaskEvent) XXX_Size() int {
return xxx_messageInfo_TaskEvent.Size(m)
}
func (m *TaskEvent) XXX_DiscardUnknown() {
xxx_messageInfo_TaskEvent.DiscardUnknown(m)
}
var xxx_messageInfo_TaskEvent proto.InternalMessageInfo
func (m *TaskEvent) GetTaskId() string {
if m != nil {
return m.TaskId
}
return ""
}
func (m *TaskEvent) GetMessage() string {
if m != nil {
return m.Message
}
return ""
}
func (m *TaskEvent) GetAnnotations() map[string]string {
if m != nil {
return m.Annotations
}
return nil
}
func init() {
proto.RegisterType((*FingerprintResponse)(nil), "hashicorp.nomad.plugins.drivers.base.proto.FingerprintResponse")
proto.RegisterMapType((map[string]string)(nil), "hashicorp.nomad.plugins.drivers.base.proto.FingerprintResponse.AttributesEntry")
@ -1781,6 +1848,8 @@ func init() {
proto.RegisterType((*TaskResourceUsage)(nil), "hashicorp.nomad.plugins.drivers.base.proto.TaskResourceUsage")
proto.RegisterType((*CPUUsage)(nil), "hashicorp.nomad.plugins.drivers.base.proto.CPUUsage")
proto.RegisterType((*MemoryUsage)(nil), "hashicorp.nomad.plugins.drivers.base.proto.MemoryUsage")
proto.RegisterType((*TaskEvent)(nil), "hashicorp.nomad.plugins.drivers.base.proto.TaskEvent")
proto.RegisterMapType((map[string]string)(nil), "hashicorp.nomad.plugins.drivers.base.proto.TaskEvent.AnnotationsEntry")
proto.RegisterEnum("hashicorp.nomad.plugins.drivers.base.proto.TaskState", TaskState_name, TaskState_value)
proto.RegisterEnum("hashicorp.nomad.plugins.drivers.base.proto.CPUUsage_Fields", CPUUsage_Fields_name, CPUUsage_Fields_value)
proto.RegisterEnum("hashicorp.nomad.plugins.drivers.base.proto.MemoryUsage_Fields", MemoryUsage_Fields_name, MemoryUsage_Fields_value)
@ -1814,8 +1883,9 @@ type DriverClient interface {
// If the task does not exit on its own within the given timeout, it will be
// forcefully killed.
StopTask(ctx context.Context, in *StopTaskRequest, opts ...grpc.CallOption) (*empty.Empty, error)
// DestroyTask removes the task from the driver's internal state. It cannot
// be called on a running task.
// DestroyTask removes the task from the driver's internal state and cleans
// up any additional resources created by the driver. It cannot be called
// on a running task.
DestroyTask(ctx context.Context, in *DestroyTaskRequest, opts ...grpc.CallOption) (*empty.Empty, error)
// ListTasks returns a list of summary information of all the tasks the
// driver is tracking.
@ -1824,6 +1894,9 @@ type DriverClient interface {
InspectTask(ctx context.Context, in *InspectTaskRequest, opts ...grpc.CallOption) (*InspectTaskResponse, error)
// TaskStats collects and returns runtime metrics for the given task
TaskStats(ctx context.Context, in *TaskStatsRequest, opts ...grpc.CallOption) (*TaskStatsResponse, error)
// TaskEvents starts a streaming RPC where all task events emitted by the
// driver are streamed to the caller.
TaskEvents(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (Driver_TaskEventsClient, error)
// SignalTask sends a signal to the task
SignalTask(ctx context.Context, in *SignalTaskRequest, opts ...grpc.CallOption) (*empty.Empty, error)
// ExecTask executes a command inside the tasks execution context
@ -1919,6 +1992,38 @@ func (c *driverClient) TaskStats(ctx context.Context, in *TaskStatsRequest, opts
return out, nil
}
func (c *driverClient) TaskEvents(ctx context.Context, in *empty.Empty, opts ...grpc.CallOption) (Driver_TaskEventsClient, error) {
stream, err := c.cc.NewStream(ctx, &_Driver_serviceDesc.Streams[0], "/hashicorp.nomad.plugins.drivers.base.proto.Driver/TaskEvents", opts...)
if err != nil {
return nil, err
}
x := &driverTaskEventsClient{stream}
if err := x.ClientStream.SendMsg(in); err != nil {
return nil, err
}
if err := x.ClientStream.CloseSend(); err != nil {
return nil, err
}
return x, nil
}
type Driver_TaskEventsClient interface {
Recv() (*TaskEvent, error)
grpc.ClientStream
}
type driverTaskEventsClient struct {
grpc.ClientStream
}
func (x *driverTaskEventsClient) Recv() (*TaskEvent, error) {
m := new(TaskEvent)
if err := x.ClientStream.RecvMsg(m); err != nil {
return nil, err
}
return m, nil
}
func (c *driverClient) SignalTask(ctx context.Context, in *SignalTaskRequest, opts ...grpc.CallOption) (*empty.Empty, error) {
out := new(empty.Empty)
err := c.cc.Invoke(ctx, "/hashicorp.nomad.plugins.drivers.base.proto.Driver/SignalTask", in, out, opts...)
@ -1955,8 +2060,9 @@ type DriverServer interface {
// If the task does not exit on its own within the given timeout, it will be
// forcefully killed.
StopTask(context.Context, *StopTaskRequest) (*empty.Empty, error)
// DestroyTask removes the task from the driver's internal state. It cannot
// be called on a running task.
// DestroyTask removes the task from the driver's internal state and cleans
// up any additional resources created by the driver. It cannot be called
// on a running task.
DestroyTask(context.Context, *DestroyTaskRequest) (*empty.Empty, error)
// ListTasks returns a list of summary information of all the tasks the
// driver is tracking.
@ -1965,6 +2071,9 @@ type DriverServer interface {
InspectTask(context.Context, *InspectTaskRequest) (*InspectTaskResponse, error)
// TaskStats collects and returns runtime metrics for the given task
TaskStats(context.Context, *TaskStatsRequest) (*TaskStatsResponse, error)
// TaskEvents starts a streaming RPC where all task events emitted by the
// driver are streamed to the caller.
TaskEvents(*empty.Empty, Driver_TaskEventsServer) error
// SignalTask sends a signal to the task
SignalTask(context.Context, *SignalTaskRequest) (*empty.Empty, error)
// ExecTask executes a command inside the tasks execution context
@ -2137,6 +2246,27 @@ func _Driver_TaskStats_Handler(srv interface{}, ctx context.Context, dec func(in
return interceptor(ctx, in, info, handler)
}
func _Driver_TaskEvents_Handler(srv interface{}, stream grpc.ServerStream) error {
m := new(empty.Empty)
if err := stream.RecvMsg(m); err != nil {
return err
}
return srv.(DriverServer).TaskEvents(m, &driverTaskEventsServer{stream})
}
type Driver_TaskEventsServer interface {
Send(*TaskEvent) error
grpc.ServerStream
}
type driverTaskEventsServer struct {
grpc.ServerStream
}
func (x *driverTaskEventsServer) Send(m *TaskEvent) error {
return x.ServerStream.SendMsg(m)
}
func _Driver_SignalTask_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SignalTaskRequest)
if err := dec(in); err != nil {
@ -2222,134 +2352,148 @@ var _Driver_serviceDesc = grpc.ServiceDesc{
Handler: _Driver_ExecTask_Handler,
},
},
Streams: []grpc.StreamDesc{},
Streams: []grpc.StreamDesc{
{
StreamName: "TaskEvents",
Handler: _Driver_TaskEvents_Handler,
ServerStreams: true,
},
},
Metadata: "driver.proto",
}
func init() { proto.RegisterFile("driver.proto", fileDescriptor_driver_b830f3fbdc9ff108) }
func init() { proto.RegisterFile("driver.proto", fileDescriptor_driver_b26cb45d2a523f58) }
var fileDescriptor_driver_b830f3fbdc9ff108 = []byte{
// 1941 bytes of a gzipped FileDescriptorProto
var fileDescriptor_driver_b26cb45d2a523f58 = []byte{
// 2071 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x58, 0x4b, 0x73, 0x23, 0x49,
0xf1, 0xb7, 0x9e, 0x96, 0xb2, 0xfd, 0x68, 0xd7, 0xec, 0xec, 0xea, 0xaf, 0x89, 0x3f, 0x33, 0xdb,
0x11, 0x44, 0x4c, 0xcc, 0x06, 0xda, 0x58, 0x2f, 0x2c, 0x0b, 0xcc, 0x03, 0x8d, 0xad, 0x99, 0x31,
0xb6, 0x6c, 0x6f, 0xb5, 0x1c, 0xbb, 0x4b, 0x04, 0x34, 0xe5, 0xee, 0x1a, 0xa9, 0xd7, 0xea, 0xc7,
0x74, 0x55, 0x1b, 0xeb, 0x40, 0x04, 0x07, 0x22, 0x88, 0xe0, 0x40, 0xf0, 0x41, 0x38, 0x70, 0xe5,
0x0e, 0x37, 0x3e, 0x02, 0xdc, 0xf8, 0x1e, 0x10, 0xf5, 0x68, 0xa9, 0x2d, 0xcd, 0x43, 0x2d, 0xef,
0x85, 0x93, 0xba, 0x32, 0xb3, 0xb2, 0xb2, 0xf2, 0x97, 0x99, 0x95, 0x4a, 0xd8, 0xf0, 0x12, 0xff,
0x92, 0x26, 0x9d, 0x38, 0x89, 0x78, 0x84, 0x1e, 0x8c, 0x08, 0x1b, 0xf9, 0x6e, 0x94, 0xc4, 0x9d,
0x30, 0x0a, 0x88, 0xd7, 0x89, 0xc7, 0xe9, 0xd0, 0x0f, 0x59, 0x47, 0x49, 0xb1, 0xce, 0x39, 0x61,
0x54, 0xc9, 0xb6, 0xef, 0x0c, 0xa3, 0x68, 0x38, 0xa6, 0x1f, 0xcb, 0xd5, 0x79, 0xfa, 0xf2, 0x63,
0x1a, 0xc4, 0x7c, 0xa2, 0x99, 0xdf, 0x99, 0x67, 0x7a, 0x69, 0x42, 0xb8, 0x1f, 0x85, 0x9a, 0x7f,
0x77, 0x9e, 0xcf, 0xfd, 0x80, 0x32, 0x4e, 0x82, 0x58, 0x09, 0x58, 0x7f, 0x2f, 0xc3, 0xad, 0x67,
0x7e, 0x38, 0xa4, 0x49, 0x9c, 0xf8, 0x21, 0xc7, 0x94, 0xc5, 0x51, 0xc8, 0x28, 0x3a, 0x87, 0x0d,
0x97, 0xc4, 0xe4, 0xdc, 0x1f, 0xfb, 0xdc, 0xa7, 0xac, 0x55, 0xba, 0x57, 0xba, 0x6f, 0xec, 0x3e,
0xee, 0x2c, 0x6f, 0x78, 0x67, 0x5f, 0x92, 0xf6, 0x72, 0x5a, 0xf0, 0x35, 0x9d, 0x28, 0x02, 0x20,
0x9c, 0x27, 0xfe, 0x79, 0xca, 0x29, 0x6b, 0x95, 0xef, 0x55, 0xee, 0x1b, 0xbb, 0x27, 0x45, 0x4e,
0x78, 0x8d, 0xe1, 0x9d, 0xee, 0x54, 0x63, 0x2f, 0xe4, 0xc9, 0x04, 0xe7, 0x8e, 0x40, 0x6d, 0x68,
0x78, 0x94, 0x53, 0x97, 0x53, 0xaf, 0x55, 0xb9, 0x57, 0xba, 0xdf, 0xc0, 0xd3, 0x75, 0xfb, 0x11,
0x6c, 0xcf, 0x6d, 0x45, 0x26, 0x54, 0x2e, 0xe8, 0x44, 0x5e, 0xbd, 0x89, 0xc5, 0x27, 0x7a, 0x0f,
0x6a, 0x97, 0x64, 0x9c, 0xd2, 0x56, 0x59, 0xd2, 0xd4, 0xe2, 0xc7, 0xe5, 0xcf, 0x4b, 0xd6, 0x6f,
0x00, 0x61, 0xea, 0x46, 0x97, 0x34, 0x19, 0x10, 0x76, 0x81, 0xe9, 0xab, 0x94, 0x32, 0x8e, 0x3e,
0x80, 0x75, 0x4e, 0xd8, 0x85, 0xe3, 0x7b, 0x5a, 0x4b, 0x5d, 0x2c, 0x0f, 0x3c, 0x74, 0x0c, 0xf5,
0x11, 0x09, 0xbd, 0xb1, 0xd2, 0x64, 0xec, 0x7e, 0x56, 0xe4, 0xda, 0xe2, 0x84, 0x17, 0x72, 0x37,
0xd6, 0x5a, 0xac, 0x5f, 0x82, 0x69, 0x73, 0x92, 0xf0, 0xfc, 0xe1, 0x3f, 0x83, 0xaa, 0x38, 0x4d,
0x43, 0x57, 0xf8, 0x84, 0xbd, 0x28, 0x7c, 0xe9, 0x0f, 0xb1, 0xd4, 0x61, 0xb9, 0xb0, 0x93, 0xd3,
0xaf, 0x63, 0x64, 0x76, 0x89, 0xd2, 0xb7, 0x72, 0x89, 0x07, 0xb0, 0xfd, 0x25, 0xf1, 0xf9, 0x32,
0x0e, 0xb4, 0xbe, 0x06, 0x73, 0x26, 0xab, 0xed, 0xb9, 0x03, 0x4d, 0x7a, 0xe5, 0x73, 0xc7, 0x8d,
0x3c, 0x65, 0x52, 0x0d, 0x37, 0x04, 0x61, 0x2f, 0xf2, 0x28, 0x7a, 0x1f, 0xea, 0xcc, 0x1f, 0x86,
0x64, 0x2c, 0x3d, 0x5e, 0xc3, 0x7a, 0x25, 0x40, 0xa6, 0x49, 0x22, 0xc3, 0xa1, 0x89, 0xc5, 0xa7,
0xf5, 0x6b, 0xd8, 0xb6, 0x79, 0x14, 0x2f, 0x85, 0xe3, 0xa7, 0xb0, 0x2e, 0x32, 0x2a, 0x4a, 0xb9,
0x06, 0xf2, 0xff, 0x3a, 0x2a, 0xe3, 0x3a, 0x59, 0xc6, 0x75, 0xf6, 0x75, 0x46, 0xe2, 0x4c, 0x32,
0x67, 0x8a, 0x3a, 0x55, 0xaf, 0xac, 0xef, 0x01, 0xda, 0xa7, 0x8c, 0x27, 0xd1, 0x64, 0x29, 0x17,
0x20, 0x30, 0x8f, 0x7c, 0x26, 0x5d, 0xc0, 0xb4, 0xb0, 0x75, 0x0e, 0x3b, 0x39, 0x9a, 0xf6, 0x4b,
0x1f, 0x6a, 0x62, 0x8b, 0x48, 0x62, 0x91, 0x62, 0x3f, 0x2c, 0x0a, 0x93, 0x9d, 0x06, 0x01, 0x49,
0x26, 0x58, 0x69, 0x11, 0x66, 0x1e, 0x84, 0x2c, 0xa6, 0xee, 0x72, 0x48, 0x11, 0xb8, 0x75, 0x4d,
0x5c, 0x1b, 0x75, 0xc3, 0xe8, 0xb4, 0x39, 0xe1, 0x29, 0xd3, 0xd1, 0xf9, 0x11, 0x98, 0x19, 0x8d,
0xbd, 0xd3, 0x9e, 0x5f, 0xc1, 0x4e, 0x4e, 0x58, 0x5b, 0x73, 0x08, 0x35, 0x26, 0x08, 0xda, 0x9c,
0x1f, 0xac, 0x62, 0x0e, 0xc3, 0x4a, 0x87, 0xb5, 0x0f, 0x3b, 0xb6, 0x44, 0x74, 0xa9, 0x10, 0xba,
0x1e, 0x98, 0xb3, 0x68, 0x98, 0xc0, 0x76, 0xef, 0x8a, 0xba, 0x4b, 0xe9, 0x68, 0xc1, 0xba, 0x1b,
0x05, 0x01, 0x09, 0x3d, 0x59, 0x46, 0x9b, 0x38, 0x5b, 0xe6, 0x03, 0xb4, 0xb2, 0x6c, 0x80, 0x8a,
0xc8, 0x9a, 0x1d, 0xad, 0x3c, 0x64, 0x1d, 0x02, 0x5a, 0x2c, 0xe8, 0xe8, 0x43, 0xd8, 0x60, 0x34,
0xf4, 0x1c, 0x65, 0xb3, 0x72, 0x5f, 0x03, 0x1b, 0x82, 0xa6, 0x5c, 0xc0, 0x10, 0x82, 0x2a, 0xbd,
0xa2, 0xae, 0xbc, 0x5d, 0x03, 0xcb, 0x6f, 0xeb, 0x8f, 0x55, 0x80, 0x59, 0x8d, 0x41, 0x5b, 0x50,
0x9e, 0x5e, 0xa9, 0xec, 0x7b, 0x62, 0x4b, 0x48, 0x82, 0xac, 0xca, 0xca, 0x6f, 0xb4, 0x0b, 0xb7,
0x03, 0x36, 0x8c, 0x89, 0x7b, 0xe1, 0x28, 0x0c, 0x1c, 0x57, 0x6e, 0x96, 0xd7, 0xda, 0xc0, 0xb7,
0x34, 0x53, 0xdb, 0xa8, 0xf4, 0x7e, 0x01, 0x15, 0x1a, 0x5e, 0xb6, 0xaa, 0x32, 0xec, 0x9f, 0xac,
0x56, 0x00, 0x3b, 0xbd, 0xf0, 0x52, 0xbd, 0x24, 0x42, 0x17, 0xb2, 0xa1, 0x99, 0x50, 0x16, 0xa5,
0x89, 0x4b, 0x59, 0xab, 0x56, 0x3c, 0x58, 0x70, 0xb6, 0x19, 0xcf, 0xf4, 0xa0, 0x03, 0xa8, 0x07,
0x51, 0x1a, 0x72, 0xd6, 0xaa, 0x4b, 0x53, 0x3f, 0x29, 0xa2, 0xb1, 0x2f, 0x76, 0x62, 0xad, 0x00,
0x1d, 0xc1, 0xba, 0x47, 0x2f, 0x7d, 0x61, 0xdd, 0xba, 0xd4, 0xb5, 0x5b, 0xe8, 0xc9, 0x96, 0x5b,
0x71, 0xa6, 0x42, 0x00, 0x91, 0x32, 0x9a, 0xb4, 0x1a, 0x0a, 0x08, 0xf1, 0x2d, 0xaa, 0x2c, 0x19,
0x8f, 0x23, 0xd7, 0xf1, 0xfc, 0xa4, 0xd5, 0x94, 0x8c, 0x86, 0x24, 0xec, 0xfb, 0x49, 0xfb, 0x33,
0x68, 0x64, 0xfe, 0x2a, 0xf4, 0x7c, 0xfe, 0xa7, 0x04, 0xcd, 0xa9, 0x6b, 0xd0, 0xff, 0x03, 0xb8,
0x71, 0xea, 0xc4, 0x34, 0xf1, 0x23, 0x15, 0x17, 0x15, 0xdc, 0x74, 0xe3, 0xf4, 0x54, 0x12, 0x84,
0x05, 0x82, 0xfd, 0x2a, 0x8d, 0x38, 0x91, 0xaa, 0x2a, 0xb8, 0xe1, 0xc6, 0xe9, 0x17, 0x62, 0x9d,
0xed, 0x65, 0x23, 0x92, 0x50, 0x26, 0x83, 0x43, 0xed, 0xb5, 0x25, 0x01, 0x7d, 0x02, 0xb7, 0x03,
0x1a, 0x44, 0xc9, 0xc4, 0x19, 0xfb, 0x81, 0xcf, 0x1d, 0x3f, 0x74, 0xce, 0x27, 0xa2, 0xfd, 0xa8,
0x4a, 0x49, 0xa4, 0x98, 0x47, 0x82, 0x77, 0x10, 0x3e, 0x15, 0x1c, 0x64, 0xc1, 0x66, 0x14, 0x05,
0x0e, 0x73, 0xa3, 0x84, 0x3a, 0xc4, 0xfb, 0x46, 0xc2, 0x5e, 0xc1, 0x46, 0x14, 0x05, 0xb6, 0xa0,
0x75, 0xbd, 0x6f, 0xd0, 0x5d, 0x30, 0xdc, 0x38, 0x65, 0x94, 0x3b, 0xe2, 0xa7, 0x55, 0x97, 0xf7,
0x03, 0x45, 0xda, 0x8b, 0x53, 0x96, 0x13, 0x08, 0x68, 0x20, 0xb0, 0xc9, 0x09, 0xf4, 0x69, 0xc0,
0xac, 0x5f, 0x40, 0x4d, 0x22, 0x29, 0x6e, 0x27, 0x93, 0x3c, 0x26, 0x7c, 0xa4, 0x9d, 0xd7, 0x10,
0x84, 0x53, 0xc2, 0x47, 0x82, 0x39, 0x8a, 0x18, 0x57, 0x4c, 0xe5, 0xc5, 0x86, 0x20, 0x48, 0x66,
0x1b, 0x1a, 0x09, 0x25, 0x5e, 0x14, 0x8e, 0x27, 0x59, 0x7b, 0x93, 0xad, 0x2d, 0x0f, 0xea, 0x0a,
0xdc, 0x1b, 0xe8, 0xbf, 0x07, 0x46, 0x4c, 0x93, 0xc0, 0x67, 0xcc, 0x8f, 0x42, 0xa6, 0x1f, 0xaf,
0x3c, 0xc9, 0xfa, 0x77, 0x49, 0xe5, 0xb5, 0x7a, 0xd8, 0x45, 0x69, 0x53, 0x41, 0x96, 0x95, 0x2b,
0xb5, 0x12, 0x8d, 0x83, 0x4e, 0xde, 0xf2, 0x8d, 0x7a, 0x13, 0xad, 0x25, 0xab, 0xde, 0x54, 0x9a,
0xb4, 0xb5, 0x5a, 0xf5, 0xa6, 0xaa, 0x7a, 0x53, 0x51, 0xd2, 0x74, 0x81, 0x51, 0x3a, 0xab, 0xb2,
0xbe, 0x18, 0x8a, 0x26, 0x25, 0xad, 0xbf, 0x96, 0xc0, 0xc8, 0x3d, 0x8c, 0x4b, 0xd5, 0xaf, 0x6f,
0xd5, 0xc6, 0x1f, 0x01, 0x30, 0xd1, 0x8e, 0x51, 0xcf, 0x21, 0x5c, 0x5a, 0x68, 0xec, 0xb6, 0x17,
0x0a, 0xfb, 0x20, 0xeb, 0xf5, 0x71, 0x53, 0x4b, 0x77, 0xb9, 0xf5, 0xb7, 0x8a, 0x82, 0x48, 0x3d,
0xa0, 0xff, 0x4b, 0xa6, 0xa3, 0x47, 0xb0, 0xe1, 0x46, 0x41, 0x3c, 0xa6, 0x7a, 0x73, 0xed, 0x9d,
0x9b, 0x8d, 0xa9, 0x7c, 0x97, 0x5f, 0x6f, 0x0f, 0xeb, 0x73, 0xed, 0x61, 0x00, 0x9b, 0x39, 0xd4,
0xd3, 0xac, 0x7a, 0xbe, 0x58, 0xad, 0x2f, 0xd1, 0xff, 0x7d, 0xd4, 0x42, 0xbd, 0x1e, 0x1b, 0x5e,
0x8e, 0xd4, 0x7e, 0x02, 0x3b, 0x0b, 0x22, 0x85, 0x0a, 0xe6, 0x3f, 0x2a, 0xd0, 0x9c, 0x36, 0x1e,
0x0b, 0x28, 0x7e, 0x0e, 0xcd, 0xe9, 0x1f, 0x3d, 0x9d, 0x63, 0x6f, 0xf5, 0xf1, 0x54, 0x18, 0x5d,
0x00, 0x22, 0xc3, 0xa1, 0x93, 0xbd, 0x4d, 0x4e, 0xca, 0xc8, 0x90, 0xea, 0xd6, 0xe1, 0x51, 0x51,
0x67, 0x64, 0x15, 0xfd, 0x4c, 0x28, 0xc1, 0x26, 0x19, 0x0e, 0xaf, 0x51, 0xd0, 0x6f, 0x4b, 0x70,
0xfb, 0xfa, 0x49, 0xce, 0xf9, 0xc4, 0x89, 0x7d, 0x4f, 0x3f, 0xd9, 0xfd, 0x95, 0xda, 0xb0, 0xce,
0xb5, 0x43, 0x9e, 0x4e, 0x4e, 0x7d, 0x4f, 0x41, 0x80, 0x92, 0x05, 0x46, 0xfb, 0x77, 0x25, 0xf8,
0xe0, 0x0d, 0xf2, 0xaf, 0xc1, 0xc3, 0xce, 0xe3, 0x71, 0x63, 0x87, 0xe4, 0xe0, 0xfc, 0x73, 0x49,
0x75, 0xa5, 0xd7, 0xfd, 0xf3, 0x0c, 0x2a, 0x6e, 0x9c, 0xea, 0x9e, 0xf4, 0xfb, 0x45, 0x0e, 0xdb,
0x3b, 0x3d, 0x53, 0x67, 0x08, 0x05, 0xe8, 0x04, 0xea, 0xea, 0x5d, 0xd3, 0x76, 0x17, 0xfa, 0x07,
0xd0, 0x97, 0x3b, 0x95, 0x36, 0xad, 0xc6, 0xfa, 0x4b, 0x05, 0x1a, 0xd9, 0x11, 0xe2, 0x69, 0x63,
0x13, 0xc6, 0x69, 0xe0, 0x04, 0xd9, 0x1f, 0xaf, 0x12, 0x06, 0x45, 0xea, 0x8b, 0xdc, 0xba, 0x03,
0x4d, 0xd1, 0x39, 0x28, 0x76, 0x59, 0xb2, 0x1b, 0x82, 0x20, 0x99, 0x77, 0xc1, 0xe0, 0x11, 0x27,
0x63, 0x87, 0xfb, 0xee, 0x85, 0x7a, 0x54, 0x4a, 0x18, 0x24, 0x69, 0x20, 0x28, 0xe8, 0x23, 0xd8,
0xe1, 0xa3, 0x24, 0xe2, 0x7c, 0x4c, 0x3d, 0xdd, 0x12, 0xa8, 0xd7, 0xba, 0x8a, 0xcd, 0x29, 0x43,
0x75, 0x06, 0x0c, 0x7d, 0x17, 0xb6, 0x66, 0xc2, 0x22, 0xaa, 0x65, 0x91, 0xa8, 0xe2, 0xcd, 0x29,
0x55, 0x44, 0xbd, 0xe8, 0x97, 0x63, 0x9a, 0xb8, 0x34, 0xe4, 0xb2, 0x10, 0x94, 0x70, 0xb6, 0x44,
0x1e, 0x6c, 0x07, 0x94, 0xb0, 0x34, 0xa1, 0x9e, 0xf3, 0xd2, 0xa7, 0x63, 0x4f, 0x55, 0x82, 0xad,
0xdd, 0x9f, 0xac, 0xe2, 0xfe, 0xce, 0x33, 0xa9, 0x02, 0x6f, 0x65, 0x3a, 0xd5, 0xda, 0x7a, 0x05,
0x75, 0xf5, 0x85, 0xb6, 0xc1, 0xb0, 0xbf, 0xb6, 0x07, 0xbd, 0xbe, 0xd3, 0x3f, 0xd9, 0xef, 0x99,
0x6b, 0x68, 0x13, 0x9a, 0x67, 0x76, 0x0f, 0xab, 0x65, 0x49, 0xf0, 0x07, 0x27, 0x83, 0xee, 0x91,
0x33, 0x38, 0xd8, 0x3b, 0xb4, 0xcd, 0x32, 0xba, 0x0d, 0x3b, 0x83, 0x17, 0xf8, 0x64, 0x30, 0x38,
0xea, 0xed, 0x3b, 0xa7, 0x3d, 0x7c, 0x70, 0xb2, 0x6f, 0x9b, 0x15, 0x84, 0x60, 0x6b, 0x46, 0x1e,
0x1c, 0xf4, 0x7b, 0x66, 0x15, 0x19, 0xb0, 0x7e, 0xda, 0xc3, 0x7b, 0xbd, 0xe3, 0x81, 0x59, 0xb3,
0xfe, 0x55, 0x06, 0x23, 0x07, 0xa5, 0x08, 0xee, 0x84, 0xa9, 0x86, 0xbd, 0x8a, 0xc5, 0xa7, 0x28,
0x36, 0x2e, 0x71, 0x47, 0x0a, 0xa2, 0x2a, 0x56, 0x0b, 0x01, 0x5e, 0x40, 0xae, 0x72, 0x75, 0xa0,
0x8a, 0x1b, 0x01, 0xb9, 0x52, 0x4a, 0x3e, 0x84, 0x8d, 0x0b, 0x9a, 0x84, 0x74, 0xac, 0xf9, 0x0a,
0x16, 0x43, 0xd1, 0x94, 0xc8, 0x7d, 0x30, 0xb5, 0xc8, 0x4c, 0x8d, 0xc2, 0x64, 0x4b, 0xd1, 0xfb,
0x99, 0xb2, 0xe1, 0xa2, 0xeb, 0xeb, 0xd2, 0xf5, 0x8f, 0x57, 0x0c, 0xd7, 0x37, 0x79, 0xdf, 0x9e,
0x7a, 0x7f, 0x1d, 0x2a, 0xd8, 0xb6, 0xcd, 0x35, 0xd4, 0x84, 0xda, 0x5e, 0x77, 0xef, 0x85, 0xf0,
0xf8, 0x26, 0x34, 0xfb, 0xdd, 0xaf, 0x9c, 0xb3, 0xae, 0xfd, 0xbc, 0x67, 0x96, 0x91, 0x09, 0x1b,
0x87, 0x3d, 0x7c, 0xdc, 0x3b, 0x72, 0xce, 0xec, 0xee, 0xf3, 0x9e, 0x59, 0x41, 0xef, 0x81, 0xa9,
0x29, 0x52, 0x4e, 0x52, 0xab, 0x0f, 0x7e, 0x3a, 0xab, 0xc7, 0xc2, 0xb9, 0x1b, 0x83, 0xae, 0x7d,
0xe8, 0x9c, 0x1d, 0x1f, 0x1e, 0x9f, 0x7c, 0x79, 0x6c, 0xae, 0x4d, 0x29, 0xf8, 0xec, 0xf8, 0xf8,
0xe0, 0xf8, 0xb9, 0x46, 0x56, 0x50, 0x7a, 0x5f, 0x1d, 0x0c, 0x7a, 0xfb, 0x66, 0x79, 0xf7, 0x9f,
0x00, 0x75, 0xf5, 0x28, 0xa0, 0x11, 0x18, 0xb9, 0xd9, 0x16, 0x7a, 0x7f, 0xa1, 0x76, 0xf7, 0x82,
0x98, 0x4f, 0xda, 0x4f, 0x6e, 0x38, 0x2c, 0xb3, 0xd6, 0xd0, 0x10, 0x8c, 0xdc, 0xdc, 0x0a, 0x3d,
0x2e, 0xf6, 0x5f, 0x66, 0x7e, 0xe0, 0xd5, 0x7e, 0x83, 0xa5, 0xd6, 0x1a, 0xfa, 0x43, 0x09, 0x9a,
0xd3, 0x11, 0x12, 0x7a, 0x58, 0xe4, 0x9c, 0xf9, 0xc9, 0x56, 0xfb, 0xd1, 0x8a, 0xbb, 0xa7, 0xb7,
0xfe, 0x7d, 0x09, 0x1a, 0xd9, 0xf8, 0x08, 0x15, 0xca, 0xec, 0xb9, 0x01, 0x55, 0xfb, 0xe1, 0x6a,
0x9b, 0xa7, 0x96, 0x10, 0x68, 0x64, 0xc3, 0xa6, 0x62, 0x86, 0xcc, 0x8d, 0xa8, 0xde, 0xe2, 0xf9,
0x21, 0x18, 0xb9, 0xb1, 0x52, 0x31, 0x88, 0x17, 0xe7, 0x51, 0xef, 0x80, 0x78, 0x3a, 0x7d, 0x2a,
0x06, 0xf1, 0xfc, 0x20, 0xab, 0x18, 0xc4, 0x0b, 0x23, 0x2f, 0x6b, 0x0d, 0xfd, 0xa9, 0x04, 0x46,
0x6e, 0xee, 0x54, 0xec, 0xda, 0x8b, 0xf3, 0xad, 0x62, 0xb9, 0xf6, 0x9a, 0x81, 0x97, 0xf6, 0xcf,
0xac, 0x67, 0x7b, 0xb8, 0xda, 0x8c, 0x69, 0x15, 0xff, 0x2c, 0xcc, 0xbb, 0xac, 0x35, 0x44, 0x01,
0x66, 0x43, 0x2a, 0x54, 0x2c, 0xa3, 0xe6, 0x87, 0x5b, 0x6f, 0x89, 0x09, 0x91, 0x69, 0xd9, 0x2c,
0xa9, 0x58, 0x80, 0xcf, 0x0d, 0xbf, 0x8a, 0x65, 0xda, 0xc2, 0xf8, 0x6a, 0xed, 0xe9, 0xfa, 0xcf,
0x6b, 0xca, 0xba, 0xba, 0xfc, 0xf9, 0xf4, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0x1a, 0xa5, 0xc9,
0x69, 0x93, 0x19, 0x00, 0x00,
0x11, 0x76, 0xeb, 0x65, 0x29, 0xdb, 0x8f, 0x76, 0xed, 0xce, 0xae, 0xd0, 0x04, 0x8c, 0xb7, 0x23,
0x88, 0x70, 0xcc, 0x82, 0xcc, 0x78, 0xd9, 0x65, 0x81, 0x79, 0xac, 0xc6, 0xd6, 0xcc, 0x18, 0x5b,
0xb6, 0xb7, 0x5a, 0x8e, 0xdd, 0x25, 0x02, 0x9a, 0x76, 0x77, 0x8d, 0xd4, 0x6b, 0xf5, 0x63, 0xba,
0xaa, 0x8d, 0x75, 0x20, 0x82, 0x03, 0x11, 0x1b, 0xc1, 0x81, 0xe0, 0x87, 0x70, 0xe0, 0xca, 0x81,
0x1b, 0x47, 0xfe, 0x02, 0x37, 0x0e, 0xfc, 0x0b, 0x88, 0x7a, 0xb4, 0xd4, 0x96, 0xc6, 0x33, 0x6e,
0x79, 0x2f, 0x9c, 0xba, 0x2b, 0x33, 0xeb, 0xab, 0xac, 0xcc, 0xac, 0xac, 0xac, 0x84, 0x15, 0x2f,
0xf1, 0x2f, 0x48, 0xd2, 0x8e, 0x93, 0x88, 0x45, 0xe8, 0xfe, 0xd0, 0xa1, 0x43, 0xdf, 0x8d, 0x92,
0xb8, 0x1d, 0x46, 0x81, 0xe3, 0xb5, 0xe3, 0x51, 0x3a, 0xf0, 0x43, 0xda, 0x96, 0x52, 0xb4, 0x7d,
0xe6, 0x50, 0x22, 0x65, 0x5b, 0x77, 0x07, 0x51, 0x34, 0x18, 0x91, 0x6d, 0x31, 0x3a, 0x4b, 0x5f,
0x6e, 0x93, 0x20, 0x66, 0x63, 0xc5, 0xfc, 0xde, 0x2c, 0xd3, 0x4b, 0x13, 0x87, 0xf9, 0x51, 0xa8,
0xf8, 0xf7, 0x66, 0xf9, 0xcc, 0x0f, 0x08, 0x65, 0x4e, 0x10, 0x2b, 0x81, 0xcf, 0x06, 0x3e, 0x1b,
0xa6, 0x67, 0x6d, 0x37, 0x0a, 0xb6, 0x27, 0x4a, 0x6d, 0x0b, 0xa5, 0xb6, 0x95, 0x52, 0xdb, 0x74,
0xe8, 0x24, 0xc4, 0xdb, 0x1e, 0xba, 0x23, 0x1a, 0x13, 0x97, 0x7f, 0x6d, 0xfe, 0x23, 0x11, 0xcc,
0x6f, 0xca, 0xf0, 0xce, 0x33, 0x3f, 0x1c, 0x90, 0x24, 0x4e, 0xfc, 0x90, 0x61, 0x42, 0xe3, 0x28,
0xa4, 0x04, 0x7d, 0x06, 0x15, 0x2e, 0xd5, 0xd4, 0x36, 0xb5, 0x2d, 0x7d, 0xe7, 0x07, 0xed, 0xeb,
0xb6, 0x2c, 0xd1, 0xdb, 0x0a, 0xbd, 0x6d, 0xc5, 0xc4, 0xc5, 0x62, 0x26, 0x3a, 0x83, 0x15, 0xd7,
0x89, 0x9d, 0x33, 0x7f, 0xe4, 0x33, 0x9f, 0xd0, 0x66, 0x49, 0x20, 0x3d, 0x6e, 0xdf, 0xdc, 0x78,
0xed, 0x3d, 0x41, 0xda, 0xcd, 0xa1, 0xe0, 0x2b, 0x98, 0x28, 0x02, 0x70, 0x18, 0x4b, 0xfc, 0xb3,
0x94, 0x11, 0xda, 0x2c, 0x6f, 0x96, 0xb7, 0xf4, 0x9d, 0xe3, 0x22, 0x2b, 0xbc, 0x66, 0xeb, 0xed,
0xce, 0x04, 0xb1, 0x1b, 0xb2, 0x64, 0x8c, 0x73, 0x4b, 0xa0, 0x16, 0xd4, 0x3d, 0xc2, 0x88, 0xcb,
0x88, 0xd7, 0xac, 0x6c, 0x6a, 0x5b, 0x75, 0x3c, 0x19, 0xb7, 0x1e, 0xc1, 0xfa, 0xcc, 0x54, 0x64,
0x40, 0xf9, 0x9c, 0x8c, 0x85, 0x11, 0x1b, 0x98, 0xff, 0xa2, 0x77, 0xa1, 0x7a, 0xe1, 0x8c, 0x52,
0x22, 0xcc, 0xd1, 0xc0, 0x72, 0xf0, 0xb3, 0xd2, 0xa7, 0x9a, 0xf9, 0x3b, 0x40, 0x98, 0xb8, 0xd1,
0x05, 0x49, 0xfa, 0x0e, 0x3d, 0xc7, 0xe4, 0x55, 0x4a, 0x28, 0x43, 0xef, 0xc3, 0x32, 0x73, 0xe8,
0xb9, 0xed, 0x7b, 0x0a, 0xa5, 0xc6, 0x87, 0xfb, 0x1e, 0x3a, 0x82, 0xda, 0xd0, 0x09, 0xbd, 0x11,
0x51, 0x86, 0xfd, 0xa4, 0xc8, 0xb6, 0xf9, 0x0a, 0x2f, 0xc4, 0x6c, 0xac, 0x50, 0xcc, 0x5f, 0x83,
0x61, 0x31, 0x27, 0x61, 0xf9, 0xc5, 0x7f, 0x01, 0x15, 0xbe, 0x9a, 0x0a, 0x82, 0xc2, 0x2b, 0xec,
0x46, 0xe1, 0x4b, 0x7f, 0x80, 0x05, 0x86, 0xe9, 0xc2, 0x46, 0x0e, 0x5f, 0x45, 0xd9, 0x74, 0x13,
0xda, 0xb7, 0xb2, 0x89, 0xfb, 0xb0, 0xfe, 0x85, 0xe3, 0xb3, 0x9b, 0x18, 0xd0, 0xfc, 0x0a, 0x8c,
0xa9, 0xac, 0xd2, 0xe7, 0x2e, 0x34, 0xc8, 0xa5, 0xcf, 0x6c, 0x37, 0xf2, 0xa4, 0x4a, 0x55, 0x5c,
0xe7, 0x84, 0xdd, 0xc8, 0x23, 0xe8, 0x3d, 0xa8, 0x51, 0x7f, 0x10, 0x3a, 0x23, 0x61, 0xf1, 0x2a,
0x56, 0x23, 0xee, 0x64, 0x92, 0x24, 0xcd, 0xb2, 0x74, 0x32, 0x49, 0x12, 0xf3, 0xb7, 0xb0, 0x6e,
0xb1, 0x28, 0xbe, 0x91, 0x1f, 0x3f, 0x82, 0x65, 0x7e, 0xaa, 0xa3, 0x94, 0x29, 0x47, 0x7e, 0xa7,
0x2d, 0x4f, 0x7d, 0x3b, 0x3b, 0xf5, 0xed, 0x3d, 0x95, 0x15, 0x70, 0x26, 0x99, 0x53, 0x45, 0xae,
0xaa, 0x46, 0xe6, 0x0f, 0x01, 0xed, 0x11, 0xca, 0x92, 0x68, 0x7c, 0x23, 0x13, 0x20, 0x30, 0x0e,
0x7d, 0x2a, 0x4c, 0x40, 0x95, 0xb0, 0x79, 0x06, 0x1b, 0x39, 0x9a, 0xb2, 0x4b, 0x0f, 0xaa, 0x7c,
0x0a, 0x6d, 0x6a, 0xe2, 0x88, 0xfd, 0xa4, 0xa8, 0x9b, 0xac, 0x34, 0x08, 0x9c, 0x64, 0x8c, 0x25,
0x0a, 0x57, 0x73, 0x3f, 0xe4, 0x49, 0xe2, 0x66, 0x9e, 0x72, 0xe0, 0x9d, 0x2b, 0xe2, 0x4a, 0xa9,
0x5b, 0x46, 0xa7, 0xc5, 0x1c, 0x96, 0x52, 0x15, 0x9d, 0x1f, 0x82, 0x91, 0xd1, 0xe8, 0x5b, 0xf5,
0xf9, 0x0d, 0x6c, 0xe4, 0x84, 0x95, 0x36, 0x07, 0x50, 0xa5, 0x9c, 0xa0, 0xd4, 0xf9, 0x78, 0x11,
0x75, 0x28, 0x96, 0x18, 0xe6, 0x1e, 0x6c, 0x58, 0xc2, 0xa3, 0x37, 0x0a, 0xa1, 0xab, 0x81, 0x39,
0x8d, 0x86, 0x31, 0xac, 0x77, 0x2f, 0x89, 0x7b, 0x23, 0x8c, 0x26, 0x2c, 0xbb, 0x51, 0x10, 0x38,
0xa1, 0xd7, 0x2c, 0x6d, 0x96, 0xb7, 0x1a, 0x38, 0x1b, 0xe6, 0x03, 0xb4, 0x7c, 0xd3, 0x00, 0xe5,
0x91, 0x35, 0x5d, 0x5a, 0x5a, 0xc8, 0x3c, 0x00, 0x34, 0x9f, 0xd0, 0xd1, 0x07, 0xb0, 0x42, 0x49,
0xe8, 0xd9, 0x52, 0x67, 0x69, 0xbe, 0x3a, 0xd6, 0x39, 0x4d, 0x9a, 0x80, 0x22, 0x04, 0x15, 0x72,
0x49, 0x5c, 0xb1, 0xbb, 0x3a, 0x16, 0xff, 0xe6, 0x9f, 0x2a, 0x00, 0xd3, 0x1c, 0x83, 0xd6, 0xa0,
0x34, 0xd9, 0x52, 0xc9, 0xf7, 0xf8, 0x94, 0xd0, 0x09, 0xb2, 0x2c, 0x2b, 0xfe, 0xd1, 0x0e, 0xdc,
0x09, 0xe8, 0x20, 0x76, 0xdc, 0x73, 0x5b, 0xfa, 0xc0, 0x76, 0xc5, 0x64, 0xb1, 0xad, 0x15, 0xfc,
0x8e, 0x62, 0x2a, 0x1d, 0x25, 0xee, 0xe7, 0x50, 0x26, 0xe1, 0x45, 0xb3, 0x22, 0xc2, 0xfe, 0xc9,
0x62, 0x09, 0xb0, 0xdd, 0x0d, 0x2f, 0xe4, 0x4d, 0xc2, 0xb1, 0x90, 0x05, 0x8d, 0x84, 0xd0, 0x28,
0x4d, 0x5c, 0x42, 0x9b, 0xd5, 0xe2, 0xc1, 0x82, 0xb3, 0xc9, 0x78, 0x8a, 0x83, 0xf6, 0xa1, 0x16,
0x44, 0x69, 0xc8, 0x68, 0xb3, 0x26, 0x54, 0x7d, 0x50, 0x04, 0xb1, 0xc7, 0x67, 0x62, 0x05, 0x80,
0x0e, 0x61, 0xd9, 0x23, 0x17, 0x3e, 0xd7, 0x6e, 0x59, 0x60, 0xed, 0x14, 0xba, 0xb2, 0xc5, 0x54,
0x9c, 0x41, 0x70, 0x47, 0xa4, 0x94, 0x24, 0xcd, 0xba, 0x74, 0x04, 0xff, 0xe7, 0x59, 0xd6, 0x19,
0x8d, 0x22, 0xd7, 0xf6, 0xfc, 0xa4, 0xd9, 0x10, 0x8c, 0xba, 0x20, 0xec, 0xf9, 0x49, 0xeb, 0x13,
0xa8, 0x67, 0xf6, 0x2a, 0x74, 0x7d, 0xfe, 0x57, 0x83, 0xc6, 0xc4, 0x34, 0xe8, 0xbb, 0x00, 0x6e,
0x9c, 0xda, 0x31, 0x49, 0xfc, 0x48, 0xc6, 0x45, 0x19, 0x37, 0xdc, 0x38, 0x3d, 0x11, 0x04, 0xae,
0x01, 0x67, 0xbf, 0x4a, 0x23, 0xe6, 0x08, 0xa8, 0x32, 0xae, 0xbb, 0x71, 0xfa, 0x39, 0x1f, 0x67,
0x73, 0x45, 0x65, 0x43, 0x45, 0x70, 0xc8, 0xb9, 0x96, 0x20, 0xa0, 0x07, 0x70, 0x27, 0x20, 0x41,
0x94, 0x8c, 0xed, 0x91, 0x1f, 0xf8, 0xcc, 0xf6, 0x43, 0xfb, 0x6c, 0xcc, 0xcb, 0x8f, 0x8a, 0x90,
0x44, 0x92, 0x79, 0xc8, 0x79, 0xfb, 0xe1, 0x53, 0xce, 0x41, 0x26, 0xac, 0x46, 0x51, 0x60, 0x53,
0x37, 0x4a, 0x88, 0xed, 0x78, 0x5f, 0x0b, 0xb7, 0x97, 0xb1, 0x1e, 0x45, 0x81, 0xc5, 0x69, 0x1d,
0xef, 0x6b, 0x74, 0x0f, 0x74, 0x37, 0x4e, 0x29, 0x61, 0x36, 0xff, 0x34, 0x6b, 0x62, 0x7f, 0x20,
0x49, 0xbb, 0x71, 0x4a, 0x73, 0x02, 0x01, 0x09, 0xb8, 0x6f, 0x72, 0x02, 0x3d, 0x12, 0x50, 0xf3,
0x57, 0x50, 0x15, 0x9e, 0xe4, 0xbb, 0x13, 0x87, 0x3c, 0x76, 0xd8, 0x50, 0x19, 0xaf, 0xce, 0x09,
0x27, 0x0e, 0x1b, 0x72, 0xe6, 0x30, 0xa2, 0x4c, 0x32, 0xa5, 0x15, 0xeb, 0x9c, 0x20, 0x98, 0x2d,
0xa8, 0x27, 0xc4, 0xf1, 0xa2, 0x70, 0x34, 0x16, 0x1b, 0xaf, 0xe3, 0xc9, 0xd8, 0xf4, 0xa0, 0x26,
0x9d, 0x7b, 0x0b, 0xfc, 0x4d, 0xd0, 0x63, 0x92, 0x04, 0x3e, 0xa5, 0x7e, 0x14, 0x52, 0x75, 0x79,
0xe5, 0x49, 0xe6, 0xbf, 0x35, 0x79, 0xae, 0xe5, 0xc5, 0xce, 0x53, 0x9b, 0x0c, 0xb2, 0x2c, 0x5d,
0xc9, 0x11, 0x2f, 0x1c, 0xd4, 0xe1, 0x2d, 0xdd, 0xaa, 0x36, 0x51, 0x28, 0x59, 0xf6, 0x26, 0x42,
0xa5, 0xb5, 0xc5, 0xb2, 0x37, 0x91, 0xd9, 0x9b, 0xf0, 0x94, 0xa6, 0x12, 0x8c, 0xc4, 0xac, 0x88,
0xfc, 0xa2, 0x4b, 0x9a, 0x90, 0x34, 0xff, 0xa6, 0x81, 0x9e, 0xbb, 0x18, 0x6f, 0x94, 0xbf, 0xbe,
0x55, 0x1d, 0x7f, 0x0a, 0x40, 0x79, 0x39, 0x46, 0x3c, 0xdb, 0x61, 0x42, 0x43, 0x7d, 0xa7, 0x35,
0x97, 0xd8, 0xfb, 0xd9, 0x7b, 0x03, 0x37, 0x94, 0x74, 0x87, 0x99, 0xff, 0x28, 0x4b, 0x17, 0xc9,
0x0b, 0xf4, 0xff, 0x49, 0x75, 0xf4, 0x08, 0x56, 0xdc, 0x28, 0x88, 0x47, 0x44, 0x4d, 0xae, 0xbe,
0x75, 0xb2, 0x3e, 0x91, 0xef, 0xb0, 0xab, 0xe5, 0x61, 0x6d, 0xa6, 0x3c, 0x0c, 0x60, 0x35, 0xe7,
0xf5, 0x34, 0xcb, 0x9e, 0x2f, 0x16, 0xab, 0x4b, 0xd4, 0xdb, 0x47, 0x0e, 0xe4, 0xed, 0xb1, 0xe2,
0xe5, 0x48, 0xad, 0x27, 0xb0, 0x31, 0x27, 0x52, 0x28, 0x61, 0xfe, 0xb3, 0x0c, 0x8d, 0x49, 0xe1,
0x31, 0xe7, 0xc5, 0x4f, 0xa1, 0x31, 0x79, 0x6c, 0xaa, 0x33, 0xf6, 0x46, 0x1b, 0x4f, 0x84, 0xd1,
0x39, 0x20, 0x67, 0x30, 0xb0, 0xb3, 0xbb, 0xc9, 0x4e, 0xa9, 0x33, 0x20, 0xaa, 0x74, 0x78, 0x54,
0xd4, 0x18, 0x59, 0x46, 0x3f, 0xe5, 0x20, 0xd8, 0x70, 0x06, 0x83, 0x2b, 0x14, 0xf4, 0x7b, 0x0d,
0xee, 0x5c, 0x5d, 0xc9, 0x3e, 0x1b, 0xdb, 0xb1, 0xef, 0xa9, 0x2b, 0xbb, 0xb7, 0x50, 0x19, 0xd6,
0xbe, 0xb2, 0xc8, 0xd3, 0xf1, 0x89, 0xef, 0x49, 0x17, 0xa0, 0x64, 0x8e, 0xd1, 0xfa, 0x83, 0x06,
0xef, 0x5f, 0x23, 0xff, 0x1a, 0x7f, 0x58, 0x79, 0x7f, 0xdc, 0xda, 0x20, 0x39, 0x77, 0xfe, 0x45,
0x93, 0x55, 0xe9, 0x55, 0xfb, 0x3c, 0x83, 0xb2, 0x1b, 0xa7, 0xaa, 0x26, 0xfd, 0x71, 0x91, 0xc5,
0x76, 0x4f, 0x4e, 0xe5, 0x1a, 0x1c, 0x00, 0x1d, 0x43, 0x4d, 0xde, 0x6b, 0x4a, 0xef, 0x42, 0x2f,
0x80, 0x9e, 0x98, 0x29, 0xd1, 0x14, 0x8c, 0xf9, 0xd7, 0x32, 0xd4, 0xb3, 0x25, 0xf8, 0xd5, 0x46,
0xc7, 0x94, 0x91, 0xc0, 0x0e, 0xb2, 0x87, 0x97, 0x86, 0x41, 0x92, 0x7a, 0xfc, 0x6c, 0xdd, 0x85,
0x06, 0xaf, 0x1c, 0x24, 0xbb, 0x24, 0xd8, 0x75, 0x4e, 0x10, 0xcc, 0x7b, 0xa0, 0xb3, 0x88, 0x39,
0x23, 0x9b, 0xf9, 0xee, 0xb9, 0xbc, 0x54, 0x34, 0x0c, 0x82, 0xd4, 0xe7, 0x14, 0xf4, 0x21, 0x6c,
0xb0, 0x61, 0x12, 0x31, 0x36, 0x22, 0x9e, 0x2a, 0x09, 0xe4, 0x6d, 0x5d, 0xc1, 0xc6, 0x84, 0x21,
0x2b, 0x03, 0x8a, 0xbe, 0x0f, 0x6b, 0x53, 0x61, 0x1e, 0xd5, 0x22, 0x49, 0x54, 0xf0, 0xea, 0x84,
0xca, 0xa3, 0x9e, 0xd7, 0xcb, 0x31, 0x49, 0x5c, 0x12, 0x32, 0x91, 0x08, 0x34, 0x9c, 0x0d, 0x91,
0x07, 0xeb, 0x01, 0x71, 0x68, 0x9a, 0x10, 0xcf, 0x7e, 0xe9, 0x93, 0x91, 0x27, 0x33, 0xc1, 0xda,
0xce, 0xcf, 0x17, 0x31, 0x7f, 0xfb, 0x99, 0x80, 0xc0, 0x6b, 0x19, 0xa6, 0x1c, 0x9b, 0xaf, 0xa0,
0x26, 0xff, 0xd0, 0x3a, 0xe8, 0xd6, 0x57, 0x56, 0xbf, 0xdb, 0xb3, 0x7b, 0xc7, 0x7b, 0x5d, 0x63,
0x09, 0xad, 0x42, 0xe3, 0xd4, 0xea, 0x62, 0x39, 0xd4, 0x38, 0xbf, 0x7f, 0xdc, 0xef, 0x1c, 0xda,
0xfd, 0xfd, 0xdd, 0x03, 0xcb, 0x28, 0xa1, 0x3b, 0xb0, 0xd1, 0x7f, 0x81, 0x8f, 0xfb, 0xfd, 0xc3,
0xee, 0x9e, 0x7d, 0xd2, 0xc5, 0xfb, 0xc7, 0x7b, 0x96, 0x51, 0x46, 0x08, 0xd6, 0xa6, 0xe4, 0xfe,
0x7e, 0xaf, 0x6b, 0x54, 0x90, 0x0e, 0xcb, 0x27, 0x5d, 0xbc, 0xdb, 0x3d, 0xea, 0x1b, 0x55, 0xf3,
0x5f, 0x25, 0xd0, 0x73, 0xae, 0xe4, 0xc1, 0x9d, 0x50, 0x59, 0xb0, 0x57, 0x30, 0xff, 0xe5, 0xc9,
0xc6, 0x75, 0xdc, 0xa1, 0x74, 0x51, 0x05, 0xcb, 0x01, 0x77, 0x5e, 0xe0, 0x5c, 0xe6, 0xf2, 0x40,
0x05, 0xd7, 0x03, 0xe7, 0x52, 0x82, 0x7c, 0x00, 0x2b, 0xe7, 0x24, 0x09, 0xc9, 0x48, 0xf1, 0xa5,
0x5b, 0x74, 0x49, 0x93, 0x22, 0x5b, 0x60, 0x28, 0x91, 0x29, 0x8c, 0xf4, 0xc9, 0x9a, 0xa4, 0xf7,
0x32, 0xb0, 0xc1, 0xbc, 0xe9, 0x6b, 0xc2, 0xf4, 0x8f, 0x17, 0x0c, 0xd7, 0xeb, 0xac, 0x6f, 0x4d,
0xac, 0xbf, 0x0c, 0x65, 0x6c, 0x59, 0xc6, 0x12, 0x6a, 0x40, 0x75, 0xb7, 0xb3, 0xfb, 0x82, 0x5b,
0x7c, 0x15, 0x1a, 0xbd, 0xce, 0x97, 0xf6, 0x69, 0xc7, 0x7a, 0xde, 0x35, 0x4a, 0xc8, 0x80, 0x95,
0x83, 0x2e, 0x3e, 0xea, 0x1e, 0xda, 0xa7, 0x56, 0xe7, 0x79, 0xd7, 0x28, 0xa3, 0x77, 0xc1, 0x50,
0x14, 0x21, 0x27, 0xa8, 0x15, 0xf3, 0x3f, 0x9a, 0x4c, 0xc8, 0xdd, 0x0b, 0x1e, 0x46, 0x6f, 0x7a,
0xa9, 0x05, 0x84, 0x0a, 0x2b, 0xc8, 0x9c, 0x9e, 0x0d, 0xd1, 0x10, 0x74, 0x27, 0x0c, 0x23, 0x26,
0xde, 0x62, 0x59, 0x3b, 0xec, 0x59, 0xd1, 0x0c, 0x23, 0x96, 0x6f, 0x77, 0xa6, 0x40, 0x32, 0xf5,
0xe5, 0xa1, 0x5b, 0x8f, 0xc1, 0x98, 0x15, 0x28, 0x72, 0xf7, 0xdc, 0x7f, 0x30, 0xbd, 0x7a, 0x08,
0x0f, 0xb2, 0xd3, 0xa3, 0x83, 0xa3, 0xe3, 0x2f, 0x8e, 0x8c, 0x25, 0x3e, 0xc0, 0xa7, 0x47, 0x47,
0xfb, 0x47, 0xcf, 0x0d, 0x0d, 0x01, 0xd4, 0xba, 0x5f, 0xee, 0xf7, 0xbb, 0x7b, 0x46, 0x69, 0xe7,
0xef, 0x3a, 0xd4, 0xe4, 0x85, 0xc7, 0xf7, 0x99, 0xeb, 0xdb, 0xa1, 0xf7, 0xe6, 0xee, 0xa5, 0x6e,
0x10, 0xb3, 0x71, 0xeb, 0xc9, 0x2d, 0x1b, 0x81, 0xe6, 0x12, 0x1a, 0x80, 0x9e, 0xeb, 0xc9, 0xa1,
0xc7, 0xc5, 0xde, 0x69, 0xb3, 0xcd, 0xbc, 0xd6, 0x35, 0x9a, 0x9a, 0x4b, 0xe8, 0x8f, 0x1a, 0x34,
0x26, 0xed, 0x31, 0xf4, 0xb0, 0xc8, 0x3a, 0xb3, 0x5d, 0xbb, 0xd6, 0xa3, 0x05, 0x67, 0x4f, 0x76,
0xfd, 0x8d, 0x06, 0xf5, 0xac, 0x35, 0x86, 0x0a, 0x65, 0xad, 0x99, 0xe6, 0x5b, 0xeb, 0xe1, 0x62,
0x93, 0x27, 0x9a, 0x38, 0x50, 0xcf, 0x1a, 0x69, 0xc5, 0x14, 0x99, 0x69, 0xbf, 0xbd, 0xc1, 0xf2,
0x03, 0xd0, 0x73, 0x2d, 0xb3, 0x62, 0x2e, 0x9e, 0xef, 0xb5, 0xbd, 0xc5, 0xc5, 0x93, 0xce, 0x5a,
0x31, 0x17, 0xcf, 0x36, 0xe9, 0x8a, 0xb9, 0x78, 0xae, 0x9d, 0x67, 0x2e, 0xa1, 0x3f, 0x6b, 0xa0,
0xe7, 0x7a, 0x6a, 0xc5, 0xb6, 0x3d, 0xdf, 0xbb, 0x2b, 0x76, 0xd6, 0x5e, 0xd3, 0xcc, 0x53, 0xf6,
0x99, 0xd6, 0xa3, 0x0f, 0x17, 0xeb, 0x9f, 0x2d, 0x62, 0x9f, 0xb9, 0x5e, 0x9e, 0xb9, 0x84, 0x6c,
0xf9, 0xc4, 0x11, 0xb9, 0x90, 0x5e, 0x9b, 0x61, 0x3e, 0x5e, 0x28, 0xb7, 0x9a, 0x4b, 0x3f, 0xd2,
0x10, 0x01, 0x98, 0x76, 0xf8, 0x50, 0xb1, 0x23, 0x3b, 0xdb, 0x19, 0x7c, 0x43, 0xd0, 0xf1, 0xa3,
0x9c, 0x35, 0xe2, 0x8a, 0x9d, 0xa0, 0x99, 0xce, 0x61, 0xb1, 0xa3, 0x3c, 0xd7, 0xfb, 0x5b, 0x7a,
0xba, 0xfc, 0xcb, 0xaa, 0xd4, 0xae, 0x26, 0x3e, 0x1f, 0xfd, 0x2f, 0x00, 0x00, 0xff, 0xff, 0x09,
0xb8, 0x19, 0x07, 0x54, 0x1b, 0x00, 0x00,
}

View File

@ -6,6 +6,8 @@ import "google/protobuf/empty.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/timestamp.proto";
import "github.com/hashicorp/nomad/plugins/shared/hclspec/hcl_spec.proto";
// Driver service defines RPCs used to communicate with a nomad runtime driver.
// Some rpcs may not be implemented by the driver based on it's capabilities.
service Driver {
@ -31,8 +33,9 @@ service Driver {
// forcefully killed.
rpc StopTask(StopTaskRequest) returns (google.protobuf.Empty) {}
// DestroyTask removes the task from the driver's internal state. It cannot
// be called on a running task.
// DestroyTask removes the task from the driver's internal state and cleans
// up any additional resources created by the driver. It cannot be called
// on a running task.
rpc DestroyTask(DestroyTaskRequest) returns (google.protobuf.Empty) {}
// ListTasks returns a list of summary information of all the tasks the
@ -45,6 +48,10 @@ service Driver {
// TaskStats collects and returns runtime metrics for the given task
rpc TaskStats(TaskStatsRequest) returns (TaskStatsResponse) {}
// TaskEvents starts a streaming RPC where all task events emitted by the
// driver are streamed to the caller.
rpc TaskEvents(google.protobuf.Empty) returns (stream TaskEvent) {}
// The following RPCs are only implemented if the driver sets the
// corresponding capability.
@ -58,19 +65,22 @@ service Driver {
message FingerprintResponse {
// Spec is the configuration schema for the job driver config stanza
hashicorp.nomad.plugins.shared.hclspec.Spec spec = 1;
// Capabilities provides a way for the driver to denote if it implements
// non-core RPCs. Some Driver service RPCs expose additional information
// or functionality outside of the core task management functions. These
// RPCs are only implemented if the driver sets the corresponding capability.
DriverCapabilities capabilities = 1;
DriverCapabilities capabilities = 2;
// Attributes are key/value pairs that annotate the nomad client and can be
// used in scheduling contraints and affinities.
map<string, string> attributes = 2;
map<string, string> attributes = 3;
// Detected signifies if the necessary dependancies of the drive are met for
// nominal operation.
bool detected = 3;
bool detected = 4;
}
message RecoverTaskRequest {
@ -281,9 +291,9 @@ message Device {
}
enum TaskState {
TASK_UNKNOWN = 0;
TASK_RUNNING = 1;
TASK_EXITED = 2;
UNKNOWN = 0;
RUNNING = 1;
EXITED = 2;
}
// TaskHandle is created when starting a task and is used to recover task
@ -401,3 +411,15 @@ message MemoryUsage {
// MeasuredFields indicates which fields were actually sampled
repeated Fields measured_fields = 6;
}
message TaskEvent {
// TaskId is the id of the task for the event
string task_id = 1;
// Message is the body of the event
string message = 2;
// Annotations allows for additional key/value data to be sent along with the event
map<string,string> annotations = 3;
}