From 829bf74aa8eafd8c4e241401135fe92e24515e7d Mon Sep 17 00:00:00 2001 From: Preetha Appan Date: Tue, 20 Nov 2018 18:30:39 -0600 Subject: [PATCH 1/5] modify fingerprint interface to use typed attribute struct --- client/fingerprint_manager.go | 10 +- client/logmon/proto/logmon.pb.go | 12 +- .../docker/docklog/proto/docker_logger.pb.go | 12 +- drivers/exec/driver.go | 5 +- drivers/exec/driver_test.go | 2 +- drivers/java/driver.go | 11 +- drivers/java/driver_test.go | 3 +- drivers/mock/driver.go | 7 +- drivers/qemu/driver.go | 9 +- drivers/qemu/driver_test.go | 11 +- drivers/rawexec/driver.go | 5 +- drivers/rawexec/driver_test.go | 3 +- drivers/rkt/driver.go | 11 +- drivers/rkt/driver_test.go | 3 +- plugins/base/proto/base.pb.go | 22 +- plugins/device/proto/device.pb.go | 32 +- plugins/drivers/client.go | 3 +- plugins/drivers/driver.go | 3 +- plugins/drivers/plugin_test.go | 5 +- plugins/drivers/proto/driver.pb.go | 469 +++++++++--------- plugins/drivers/proto/driver.proto | 3 +- plugins/drivers/server.go | 3 +- plugins/shared/hclspec/hcl_spec.pb.go | 26 +- plugins/shared/structs/proto/attribute.pb.go | 6 +- .../structs/proto/recoverable_error.pb.go | 6 +- plugins/shared/structs/proto/stats.pb.go | 8 +- 26 files changed, 357 insertions(+), 333 deletions(-) diff --git a/client/fingerprint_manager.go b/client/fingerprint_manager.go index 4b4c601f2..2adedede3 100644 --- a/client/fingerprint_manager.go +++ b/client/fingerprint_manager.go @@ -14,6 +14,7 @@ import ( "github.com/hashicorp/nomad/plugins/base" "github.com/hashicorp/nomad/plugins/drivers" "github.com/hashicorp/nomad/plugins/shared/loader" + pstructs "github.com/hashicorp/nomad/plugins/shared/structs" ) const ( @@ -321,7 +322,7 @@ func (fm *FingerprintManager) watchDriverFingerprint(fpChan <-chan *drivers.Fing // struct and updates the Node with it func (fm *FingerprintManager) processDriverFingerprint(fp *drivers.Fingerprint, driverName string) { di := &structs.DriverInfo{ - Attributes: fp.Attributes, + Attributes: stringify(fp.Attributes), Detected: fp.Health != drivers.HealthStateUndetected, Healthy: fp.Health == drivers.HealthStateHealthy, HealthDescription: fp.HealthDescription, @@ -331,6 +332,13 @@ func (fm *FingerprintManager) processDriverFingerprint(fp *drivers.Fingerprint, fm.setNode(n) } } +func stringify(attributes map[string]*pstructs.Attribute) map[string]string { + ret := make(map[string]string, len(attributes)) + for key, attribute := range attributes { + ret[key] = attribute.GoString() + } + return ret +} // dispenseDriverFingerprint dispenses a driver plugin for the given driver name // and requests a fingerprint channel. The channel and a context cancel function diff --git a/client/logmon/proto/logmon.pb.go b/client/logmon/proto/logmon.pb.go index ce2d44d53..ac1539b55 100644 --- a/client/logmon/proto/logmon.pb.go +++ b/client/logmon/proto/logmon.pb.go @@ -40,7 +40,7 @@ func (m *StartRequest) Reset() { *m = StartRequest{} } func (m *StartRequest) String() string { return proto.CompactTextString(m) } func (*StartRequest) ProtoMessage() {} func (*StartRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_logmon_c8f5fe5f286cd193, []int{0} + return fileDescriptor_logmon_6dbff459851a9ae9, []int{0} } func (m *StartRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StartRequest.Unmarshal(m, b) @@ -119,7 +119,7 @@ func (m *StartResponse) Reset() { *m = StartResponse{} } func (m *StartResponse) String() string { return proto.CompactTextString(m) } func (*StartResponse) ProtoMessage() {} func (*StartResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_logmon_c8f5fe5f286cd193, []int{1} + return fileDescriptor_logmon_6dbff459851a9ae9, []int{1} } func (m *StartResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StartResponse.Unmarshal(m, b) @@ -149,7 +149,7 @@ func (m *StopRequest) Reset() { *m = StopRequest{} } func (m *StopRequest) String() string { return proto.CompactTextString(m) } func (*StopRequest) ProtoMessage() {} func (*StopRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_logmon_c8f5fe5f286cd193, []int{2} + return fileDescriptor_logmon_6dbff459851a9ae9, []int{2} } func (m *StopRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StopRequest.Unmarshal(m, b) @@ -179,7 +179,7 @@ func (m *StopResponse) Reset() { *m = StopResponse{} } func (m *StopResponse) String() string { return proto.CompactTextString(m) } func (*StopResponse) ProtoMessage() {} func (*StopResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_logmon_c8f5fe5f286cd193, []int{3} + return fileDescriptor_logmon_6dbff459851a9ae9, []int{3} } func (m *StopResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StopResponse.Unmarshal(m, b) @@ -312,10 +312,10 @@ var _LogMon_serviceDesc = grpc.ServiceDesc{ } func init() { - proto.RegisterFile("client/logmon/proto/logmon.proto", fileDescriptor_logmon_c8f5fe5f286cd193) + proto.RegisterFile("client/logmon/proto/logmon.proto", fileDescriptor_logmon_6dbff459851a9ae9) } -var fileDescriptor_logmon_c8f5fe5f286cd193 = []byte{ +var fileDescriptor_logmon_6dbff459851a9ae9 = []byte{ // 320 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x90, 0x31, 0x6f, 0xc2, 0x30, 0x10, 0x85, 0x1b, 0x0a, 0xa1, 0x1c, 0x0d, 0x45, 0x5e, 0x1a, 0xd1, 0xa1, 0x28, 0x1d, 0xca, 0x14, diff --git a/drivers/docker/docklog/proto/docker_logger.pb.go b/drivers/docker/docklog/proto/docker_logger.pb.go index 464664b90..d6d2e0da6 100644 --- a/drivers/docker/docklog/proto/docker_logger.pb.go +++ b/drivers/docker/docklog/proto/docker_logger.pb.go @@ -40,7 +40,7 @@ func (m *StartRequest) Reset() { *m = StartRequest{} } func (m *StartRequest) String() string { return proto.CompactTextString(m) } func (*StartRequest) ProtoMessage() {} func (*StartRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_docker_logger_550e35425edc00c0, []int{0} + return fileDescriptor_docker_logger_0aa5a411831bd10e, []int{0} } func (m *StartRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StartRequest.Unmarshal(m, b) @@ -119,7 +119,7 @@ func (m *StartResponse) Reset() { *m = StartResponse{} } func (m *StartResponse) String() string { return proto.CompactTextString(m) } func (*StartResponse) ProtoMessage() {} func (*StartResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_docker_logger_550e35425edc00c0, []int{1} + return fileDescriptor_docker_logger_0aa5a411831bd10e, []int{1} } func (m *StartResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StartResponse.Unmarshal(m, b) @@ -149,7 +149,7 @@ func (m *StopRequest) Reset() { *m = StopRequest{} } func (m *StopRequest) String() string { return proto.CompactTextString(m) } func (*StopRequest) ProtoMessage() {} func (*StopRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_docker_logger_550e35425edc00c0, []int{2} + return fileDescriptor_docker_logger_0aa5a411831bd10e, []int{2} } func (m *StopRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StopRequest.Unmarshal(m, b) @@ -179,7 +179,7 @@ func (m *StopResponse) Reset() { *m = StopResponse{} } func (m *StopResponse) String() string { return proto.CompactTextString(m) } func (*StopResponse) ProtoMessage() {} func (*StopResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_docker_logger_550e35425edc00c0, []int{3} + return fileDescriptor_docker_logger_0aa5a411831bd10e, []int{3} } func (m *StopResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StopResponse.Unmarshal(m, b) @@ -312,10 +312,10 @@ var _DockerLogger_serviceDesc = grpc.ServiceDesc{ } func init() { - proto.RegisterFile("drivers/docker/docklog/proto/docker_logger.proto", fileDescriptor_docker_logger_550e35425edc00c0) + proto.RegisterFile("drivers/docker/docklog/proto/docker_logger.proto", fileDescriptor_docker_logger_0aa5a411831bd10e) } -var fileDescriptor_docker_logger_550e35425edc00c0 = []byte{ +var fileDescriptor_docker_logger_0aa5a411831bd10e = []byte{ // 328 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x50, 0xb1, 0x4e, 0xeb, 0x40, 0x10, 0x7c, 0xce, 0x8b, 0x9d, 0x70, 0x49, 0x40, 0x3a, 0x09, 0x61, 0xd2, 0x00, 0xae, 0x28, 0x90, diff --git a/drivers/exec/driver.go b/drivers/exec/driver.go index b5f723de2..ae5bd2626 100644 --- a/drivers/exec/driver.go +++ b/drivers/exec/driver.go @@ -22,6 +22,7 @@ import ( "github.com/hashicorp/nomad/plugins/shared" "github.com/hashicorp/nomad/plugins/shared/hclspec" "github.com/hashicorp/nomad/plugins/shared/loader" + pstructs "github.com/hashicorp/nomad/plugins/shared/structs" ) const ( @@ -187,7 +188,7 @@ func (d *Driver) buildFingerprint() *drivers.Fingerprint { } fp := &drivers.Fingerprint{ - Attributes: map[string]string{}, + Attributes: map[string]*pstructs.Attribute{}, Health: drivers.HealthStateHealthy, HealthDescription: "healthy", } @@ -212,7 +213,7 @@ func (d *Driver) buildFingerprint() *drivers.Fingerprint { return fp } - fp.Attributes["driver.exec"] = "1" + fp.Attributes["driver.exec"] = pstructs.NewBoolAttribute(true) return fp } diff --git a/drivers/exec/driver_test.go b/drivers/exec/driver_test.go index 1d522d117..f09eef52b 100644 --- a/drivers/exec/driver_test.go +++ b/drivers/exec/driver_test.go @@ -67,7 +67,7 @@ func TestExecDriver_Fingerprint(t *testing.T) { select { case finger := <-fingerCh: require.Equal(drivers.HealthStateHealthy, finger.Health) - require.Equal("1", finger.Attributes["driver.exec"]) + require.True(finger.Attributes["driver.exec"].GetBool()) case <-time.After(time.Duration(testutil.TestMultiplier()*5) * time.Second): require.Fail("timeout receiving fingerprint") } diff --git a/drivers/java/driver.go b/drivers/java/driver.go index a1c75bc43..7a0d5b2d1 100644 --- a/drivers/java/driver.go +++ b/drivers/java/driver.go @@ -24,6 +24,7 @@ import ( "github.com/hashicorp/nomad/plugins/shared" "github.com/hashicorp/nomad/plugins/shared/hclspec" "github.com/hashicorp/nomad/plugins/shared/loader" + pstructs "github.com/hashicorp/nomad/plugins/shared/structs" ) const ( @@ -195,7 +196,7 @@ func (d *Driver) handleFingerprint(ctx context.Context, ch chan *drivers.Fingerp func (d *Driver) buildFingerprint() *drivers.Fingerprint { fp := &drivers.Fingerprint{ - Attributes: map[string]string{}, + Attributes: map[string]*pstructs.Attribute{}, Health: drivers.HealthStateHealthy, HealthDescription: "healthy", } @@ -232,10 +233,10 @@ func (d *Driver) buildFingerprint() *drivers.Fingerprint { return fp } - fp.Attributes[driverAttr] = "1" - fp.Attributes[driverVersionAttr] = version - fp.Attributes["driver.java.runtime"] = runtime - fp.Attributes["driver.java.vm"] = vm + fp.Attributes[driverAttr] = pstructs.NewBoolAttribute(true) + fp.Attributes[driverVersionAttr] = pstructs.NewStringAttribute(version) + fp.Attributes["driver.java.runtime"] = pstructs.NewStringAttribute(runtime) + fp.Attributes["driver.java.vm"] = pstructs.NewStringAttribute(vm) return fp } diff --git a/drivers/java/driver_test.go b/drivers/java/driver_test.go index 05acbc490..e9882febc 100644 --- a/drivers/java/driver_test.go +++ b/drivers/java/driver_test.go @@ -47,7 +47,8 @@ func TestJavaDriver_Fingerprint(t *testing.T) { select { case fp := <-fpCh: require.Equal(t, drivers.HealthStateHealthy, fp.Health) - require.Equal(t, "1", fp.Attributes["driver.java"]) + detected, _ := fp.Attributes["driver.java"].GetBool() + require.True(t, detected) case <-time.After(time.Duration(testutil.TestMultiplier()*5) * time.Second): require.Fail(t, "timeout receiving fingerprint") } diff --git a/drivers/mock/driver.go b/drivers/mock/driver.go index 8a21843b5..1b9abe436 100644 --- a/drivers/mock/driver.go +++ b/drivers/mock/driver.go @@ -17,6 +17,7 @@ import ( "github.com/hashicorp/nomad/plugins/drivers" "github.com/hashicorp/nomad/plugins/shared/hclspec" "github.com/hashicorp/nomad/plugins/shared/loader" + pstructs "github.com/hashicorp/nomad/plugins/shared/structs" ) const ( @@ -269,18 +270,18 @@ func (d *Driver) handleFingerprint(ctx context.Context, ch chan *drivers.Fingerp func (d *Driver) buildFingerprint() *drivers.Fingerprint { var health drivers.HealthState var desc string - attrs := map[string]string{} + attrs := map[string]*pstructs.Attribute{} if !d.shutdownFingerprintTime.IsZero() && time.Now().After(d.shutdownFingerprintTime) { health = drivers.HealthStateUndetected desc = "disabled" } else { health = drivers.HealthStateHealthy - attrs["driver.mock"] = "1" + attrs["driver.mock"] = pstructs.NewBoolAttribute(true) desc = "ready" } return &drivers.Fingerprint{ - Attributes: map[string]string{}, + Attributes: attrs, Health: health, HealthDescription: desc, } diff --git a/drivers/qemu/driver.go b/drivers/qemu/driver.go index c8a7ac50c..20cd50436 100644 --- a/drivers/qemu/driver.go +++ b/drivers/qemu/driver.go @@ -26,6 +26,7 @@ import ( "github.com/hashicorp/nomad/plugins/shared" "github.com/hashicorp/nomad/plugins/shared/hclspec" "github.com/hashicorp/nomad/plugins/shared/loader" + pstructs "github.com/hashicorp/nomad/plugins/shared/structs" ) const ( @@ -206,7 +207,7 @@ func (d *Driver) handleFingerprint(ctx context.Context, ch chan *drivers.Fingerp func (d *Driver) buildFingerprint() *drivers.Fingerprint { fingerprint := &drivers.Fingerprint{ - Attributes: map[string]string{}, + Attributes: map[string]*pstructs.Attribute{}, Health: drivers.HealthStateHealthy, HealthDescription: "ready", } @@ -234,8 +235,8 @@ func (d *Driver) buildFingerprint() *drivers.Fingerprint { return fingerprint } currentQemuVersion := matches[1] - fingerprint.Attributes[driverAttr] = "1" - fingerprint.Attributes[driverVersionAttr] = currentQemuVersion + fingerprint.Attributes[driverAttr] = pstructs.NewBoolAttribute(true) + fingerprint.Attributes[driverVersionAttr] = pstructs.NewStringAttribute(currentQemuVersion) return fingerprint } @@ -610,7 +611,7 @@ func (d *Driver) handleWait(ctx context.Context, handle *taskHandle, ch chan *dr func (d *Driver) getMonitorPath(dir string, fingerPrint *drivers.Fingerprint) (string, error) { var longPathSupport bool currentQemuVer := fingerPrint.Attributes[driverVersionAttr] - currentQemuSemver := semver.New(currentQemuVer) + currentQemuSemver := semver.New(currentQemuVer.GoString()) if currentQemuSemver.LessThan(*qemuVersionLongSocketPathFix) { longPathSupport = false d.logger.Debug("long socket paths are not available in this version of QEMU", "version", currentQemuVer) diff --git a/drivers/qemu/driver_test.go b/drivers/qemu/driver_test.go index fab7b1264..828f9315f 100644 --- a/drivers/qemu/driver_test.go +++ b/drivers/qemu/driver_test.go @@ -19,6 +19,7 @@ import ( "github.com/hashicorp/nomad/plugins/drivers" "github.com/hashicorp/nomad/plugins/shared" "github.com/hashicorp/nomad/plugins/shared/hclspec" + pstructs "github.com/hashicorp/nomad/plugins/shared/structs" "github.com/hashicorp/nomad/testutil" "github.com/stretchr/testify/require" ) @@ -115,8 +116,8 @@ func TestQemuDriver_GetMonitorPathOldQemu(t *testing.T) { defer cleanup() fingerPrint := &drivers.Fingerprint{ - Attributes: map[string]string{ - driverVersionAttr: "2.0.0", + Attributes: map[string]*pstructs.Attribute{ + driverVersionAttr: pstructs.NewStringAttribute("2.0.0"), }, } shortPath := strings.Repeat("x", 10) @@ -166,8 +167,8 @@ func TestQemuDriver_GetMonitorPathNewQemu(t *testing.T) { defer cleanup() fingerPrint := &drivers.Fingerprint{ - Attributes: map[string]string{ - driverVersionAttr: "2.99.99", + Attributes: map[string]*pstructs.Attribute{ + driverVersionAttr: pstructs.NewStringAttribute("2.99.99"), }, } shortPath := strings.Repeat("x", 10) @@ -363,7 +364,7 @@ func TestQemuDriver_Fingerprint(t *testing.T) { select { case finger := <-fingerCh: require.Equal(drivers.HealthStateHealthy, finger.Health) - require.Equal("1", finger.Attributes["driver.qemu"]) + require.True(finger.Attributes["driver.qemu"].GetBool()) case <-time.After(time.Duration(testutil.TestMultiplier()*5) * time.Second): require.Fail("timeout receiving fingerprint") } diff --git a/drivers/rawexec/driver.go b/drivers/rawexec/driver.go index afac6c550..3ae4091be 100644 --- a/drivers/rawexec/driver.go +++ b/drivers/rawexec/driver.go @@ -23,6 +23,7 @@ import ( "github.com/hashicorp/nomad/plugins/shared" "github.com/hashicorp/nomad/plugins/shared/hclspec" "github.com/hashicorp/nomad/plugins/shared/loader" + pstructs "github.com/hashicorp/nomad/plugins/shared/structs" ) const ( @@ -226,11 +227,11 @@ func (d *Driver) handleFingerprint(ctx context.Context, ch chan<- *drivers.Finge func (d *Driver) buildFingerprint() *drivers.Fingerprint { var health drivers.HealthState var desc string - attrs := map[string]string{} + attrs := map[string]*pstructs.Attribute{} if d.config.Enabled { health = drivers.HealthStateHealthy desc = "ready" - attrs["driver.raw_exec"] = "1" + attrs["driver.raw_exec"] = pstructs.NewBoolAttribute(true) } else { health = drivers.HealthStateUndetected desc = "disabled" diff --git a/drivers/rawexec/driver_test.go b/drivers/rawexec/driver_test.go index b78b19058..8e9cc6d29 100644 --- a/drivers/rawexec/driver_test.go +++ b/drivers/rawexec/driver_test.go @@ -21,6 +21,7 @@ import ( "github.com/hashicorp/nomad/plugins/drivers" "github.com/hashicorp/nomad/plugins/shared" "github.com/hashicorp/nomad/plugins/shared/hclspec" + pstructs "github.com/hashicorp/nomad/plugins/shared/structs" "github.com/hashicorp/nomad/testutil" "github.com/stretchr/testify/require" ) @@ -108,7 +109,7 @@ func TestRawExecDriver_Fingerprint(t *testing.T) { Enabled: true, }, Expected: drivers.Fingerprint{ - Attributes: map[string]string{"driver.raw_exec": "1"}, + Attributes: map[string]*pstructs.Attribute{"driver.raw_exec": pstructs.NewBoolAttribute(true)}, Health: drivers.HealthStateHealthy, HealthDescription: "ready", }, diff --git a/drivers/rkt/driver.go b/drivers/rkt/driver.go index 72cde8726..45f97f2b5 100644 --- a/drivers/rkt/driver.go +++ b/drivers/rkt/driver.go @@ -36,6 +36,7 @@ import ( "github.com/hashicorp/nomad/plugins/shared" "github.com/hashicorp/nomad/plugins/shared/hclspec" "github.com/hashicorp/nomad/plugins/shared/loader" + pstructs "github.com/hashicorp/nomad/plugins/shared/structs" rktv1 "github.com/rkt/rkt/api/v1" ) @@ -262,7 +263,7 @@ func (d *Driver) handleFingerprint(ctx context.Context, ch chan *drivers.Fingerp func (d *Driver) buildFingerprint() *drivers.Fingerprint { fingerprint := &drivers.Fingerprint{ - Attributes: map[string]string{}, + Attributes: map[string]*pstructs.Attribute{}, Health: drivers.HealthStateHealthy, HealthDescription: "ready", } @@ -302,11 +303,11 @@ func (d *Driver) buildFingerprint() *drivers.Fingerprint { return fingerprint } - fingerprint.Attributes["driver.rkt"] = "1" - fingerprint.Attributes["driver.rkt.version"] = rktMatches[1] - fingerprint.Attributes["driver.rkt.appc.version"] = appcMatches[1] + fingerprint.Attributes["driver.rkt"] = pstructs.NewBoolAttribute(true) + fingerprint.Attributes["driver.rkt.version"] = pstructs.NewStringAttribute(rktMatches[1]) + fingerprint.Attributes["driver.rkt.appc.version"] = pstructs.NewStringAttribute(appcMatches[1]) if d.config.VolumesEnabled { - fingerprint.Attributes["driver.rkt.volumes.enabled"] = "1" + fingerprint.Attributes["driver.rkt.volumes.enabled"] = pstructs.NewBoolAttribute(true) } return fingerprint diff --git a/drivers/rkt/driver_test.go b/drivers/rkt/driver_test.go index 7f0795b69..a306c5749 100644 --- a/drivers/rkt/driver_test.go +++ b/drivers/rkt/driver_test.go @@ -671,8 +671,7 @@ func TestRktDriver_Exec(t *testing.T) { testutil.WaitForResult(func() (bool, error) { res, err := d.ExecTask(task.ID, []string{"/etcd", "--cgdfgdfg"}, time.Second) require.False(res.ExitResult.Successful()) - fmt.Println(err) - fmt.Println(res.ExitResult.ExitCode) + require.Nil(err) raw := res.Stdout return bytes.Contains(raw, expected), fmt.Errorf("expected %q but found:\n%s", expected, raw) }, func(err error) { diff --git a/plugins/base/proto/base.pb.go b/plugins/base/proto/base.pb.go index 65482cb4c..dff5d046f 100644 --- a/plugins/base/proto/base.pb.go +++ b/plugins/base/proto/base.pb.go @@ -48,7 +48,7 @@ func (x PluginType) String() string { return proto.EnumName(PluginType_name, int32(x)) } func (PluginType) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_base_872caf0c39537377, []int{0} + return fileDescriptor_base_6813a9f13eda45d4, []int{0} } // PluginInfoRequest is used to request the plugins basic information. @@ -62,7 +62,7 @@ func (m *PluginInfoRequest) Reset() { *m = PluginInfoRequest{} } func (m *PluginInfoRequest) String() string { return proto.CompactTextString(m) } func (*PluginInfoRequest) ProtoMessage() {} func (*PluginInfoRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_base_872caf0c39537377, []int{0} + return fileDescriptor_base_6813a9f13eda45d4, []int{0} } func (m *PluginInfoRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PluginInfoRequest.Unmarshal(m, b) @@ -104,7 +104,7 @@ func (m *PluginInfoResponse) Reset() { *m = PluginInfoResponse{} } func (m *PluginInfoResponse) String() string { return proto.CompactTextString(m) } func (*PluginInfoResponse) ProtoMessage() {} func (*PluginInfoResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_base_872caf0c39537377, []int{1} + return fileDescriptor_base_6813a9f13eda45d4, []int{1} } func (m *PluginInfoResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_PluginInfoResponse.Unmarshal(m, b) @@ -163,7 +163,7 @@ func (m *ConfigSchemaRequest) Reset() { *m = ConfigSchemaRequest{} } func (m *ConfigSchemaRequest) String() string { return proto.CompactTextString(m) } func (*ConfigSchemaRequest) ProtoMessage() {} func (*ConfigSchemaRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_base_872caf0c39537377, []int{2} + return fileDescriptor_base_6813a9f13eda45d4, []int{2} } func (m *ConfigSchemaRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConfigSchemaRequest.Unmarshal(m, b) @@ -196,7 +196,7 @@ func (m *ConfigSchemaResponse) Reset() { *m = ConfigSchemaResponse{} } func (m *ConfigSchemaResponse) String() string { return proto.CompactTextString(m) } func (*ConfigSchemaResponse) ProtoMessage() {} func (*ConfigSchemaResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_base_872caf0c39537377, []int{3} + return fileDescriptor_base_6813a9f13eda45d4, []int{3} } func (m *ConfigSchemaResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ConfigSchemaResponse.Unmarshal(m, b) @@ -238,7 +238,7 @@ func (m *SetConfigRequest) Reset() { *m = SetConfigRequest{} } func (m *SetConfigRequest) String() string { return proto.CompactTextString(m) } func (*SetConfigRequest) ProtoMessage() {} func (*SetConfigRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_base_872caf0c39537377, []int{4} + return fileDescriptor_base_6813a9f13eda45d4, []int{4} } func (m *SetConfigRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetConfigRequest.Unmarshal(m, b) @@ -285,7 +285,7 @@ func (m *NomadConfig) Reset() { *m = NomadConfig{} } func (m *NomadConfig) String() string { return proto.CompactTextString(m) } func (*NomadConfig) ProtoMessage() {} func (*NomadConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_base_872caf0c39537377, []int{5} + return fileDescriptor_base_6813a9f13eda45d4, []int{5} } func (m *NomadConfig) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NomadConfig.Unmarshal(m, b) @@ -330,7 +330,7 @@ func (m *NomadDriverConfig) Reset() { *m = NomadDriverConfig{} } func (m *NomadDriverConfig) String() string { return proto.CompactTextString(m) } func (*NomadDriverConfig) ProtoMessage() {} func (*NomadDriverConfig) Descriptor() ([]byte, []int) { - return fileDescriptor_base_872caf0c39537377, []int{6} + return fileDescriptor_base_6813a9f13eda45d4, []int{6} } func (m *NomadDriverConfig) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NomadDriverConfig.Unmarshal(m, b) @@ -375,7 +375,7 @@ func (m *SetConfigResponse) Reset() { *m = SetConfigResponse{} } func (m *SetConfigResponse) String() string { return proto.CompactTextString(m) } func (*SetConfigResponse) ProtoMessage() {} func (*SetConfigResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_base_872caf0c39537377, []int{7} + return fileDescriptor_base_6813a9f13eda45d4, []int{7} } func (m *SetConfigResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SetConfigResponse.Unmarshal(m, b) @@ -551,9 +551,9 @@ var _BasePlugin_serviceDesc = grpc.ServiceDesc{ Metadata: "plugins/base/proto/base.proto", } -func init() { proto.RegisterFile("plugins/base/proto/base.proto", fileDescriptor_base_872caf0c39537377) } +func init() { proto.RegisterFile("plugins/base/proto/base.proto", fileDescriptor_base_6813a9f13eda45d4) } -var fileDescriptor_base_872caf0c39537377 = []byte{ +var fileDescriptor_base_6813a9f13eda45d4 = []byte{ // 519 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x93, 0x5d, 0x6b, 0x1a, 0x4d, 0x14, 0xc7, 0xb3, 0xea, 0x63, 0xc8, 0x51, 0x83, 0x99, 0x3c, 0x05, 0x11, 0x0a, 0x61, 0x69, 0x21, diff --git a/plugins/device/proto/device.pb.go b/plugins/device/proto/device.pb.go index 744eff163..9c8ffd714 100644 --- a/plugins/device/proto/device.pb.go +++ b/plugins/device/proto/device.pb.go @@ -37,7 +37,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_device_a4d1cccedbd8401c, []int{0} + return fileDescriptor_device_c21dc006d6a19ae5, []int{0} } func (m *FingerprintRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FingerprintRequest.Unmarshal(m, b) @@ -72,7 +72,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_device_a4d1cccedbd8401c, []int{1} + return fileDescriptor_device_c21dc006d6a19ae5, []int{1} } func (m *FingerprintResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FingerprintResponse.Unmarshal(m, b) @@ -121,7 +121,7 @@ func (m *DeviceGroup) Reset() { *m = DeviceGroup{} } func (m *DeviceGroup) String() string { return proto.CompactTextString(m) } func (*DeviceGroup) ProtoMessage() {} func (*DeviceGroup) Descriptor() ([]byte, []int) { - return fileDescriptor_device_a4d1cccedbd8401c, []int{2} + return fileDescriptor_device_c21dc006d6a19ae5, []int{2} } func (m *DeviceGroup) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeviceGroup.Unmarshal(m, b) @@ -198,7 +198,7 @@ func (m *DetectedDevice) Reset() { *m = DetectedDevice{} } func (m *DetectedDevice) String() string { return proto.CompactTextString(m) } func (*DetectedDevice) ProtoMessage() {} func (*DetectedDevice) Descriptor() ([]byte, []int) { - return fileDescriptor_device_a4d1cccedbd8401c, []int{3} + return fileDescriptor_device_c21dc006d6a19ae5, []int{3} } func (m *DetectedDevice) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DetectedDevice.Unmarshal(m, b) @@ -260,7 +260,7 @@ func (m *DeviceLocality) Reset() { *m = DeviceLocality{} } func (m *DeviceLocality) String() string { return proto.CompactTextString(m) } func (*DeviceLocality) ProtoMessage() {} func (*DeviceLocality) Descriptor() ([]byte, []int) { - return fileDescriptor_device_a4d1cccedbd8401c, []int{4} + return fileDescriptor_device_c21dc006d6a19ae5, []int{4} } func (m *DeviceLocality) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeviceLocality.Unmarshal(m, b) @@ -301,7 +301,7 @@ func (m *ReserveRequest) Reset() { *m = ReserveRequest{} } func (m *ReserveRequest) String() string { return proto.CompactTextString(m) } func (*ReserveRequest) ProtoMessage() {} func (*ReserveRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_device_a4d1cccedbd8401c, []int{5} + return fileDescriptor_device_c21dc006d6a19ae5, []int{5} } func (m *ReserveRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ReserveRequest.Unmarshal(m, b) @@ -344,7 +344,7 @@ func (m *ReserveResponse) Reset() { *m = ReserveResponse{} } func (m *ReserveResponse) String() string { return proto.CompactTextString(m) } func (*ReserveResponse) ProtoMessage() {} func (*ReserveResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_device_a4d1cccedbd8401c, []int{6} + return fileDescriptor_device_c21dc006d6a19ae5, []int{6} } func (m *ReserveResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ReserveResponse.Unmarshal(m, b) @@ -389,7 +389,7 @@ func (m *ContainerReservation) Reset() { *m = ContainerReservation{} } func (m *ContainerReservation) String() string { return proto.CompactTextString(m) } func (*ContainerReservation) ProtoMessage() {} func (*ContainerReservation) Descriptor() ([]byte, []int) { - return fileDescriptor_device_a4d1cccedbd8401c, []int{7} + return fileDescriptor_device_c21dc006d6a19ae5, []int{7} } func (m *ContainerReservation) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ContainerReservation.Unmarshal(m, b) @@ -448,7 +448,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_device_a4d1cccedbd8401c, []int{8} + return fileDescriptor_device_c21dc006d6a19ae5, []int{8} } func (m *Mount) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Mount.Unmarshal(m, b) @@ -509,7 +509,7 @@ func (m *DeviceSpec) Reset() { *m = DeviceSpec{} } func (m *DeviceSpec) String() string { return proto.CompactTextString(m) } func (*DeviceSpec) ProtoMessage() {} func (*DeviceSpec) Descriptor() ([]byte, []int) { - return fileDescriptor_device_a4d1cccedbd8401c, []int{9} + return fileDescriptor_device_c21dc006d6a19ae5, []int{9} } func (m *DeviceSpec) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeviceSpec.Unmarshal(m, b) @@ -563,7 +563,7 @@ func (m *StatsRequest) Reset() { *m = StatsRequest{} } func (m *StatsRequest) String() string { return proto.CompactTextString(m) } func (*StatsRequest) ProtoMessage() {} func (*StatsRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_device_a4d1cccedbd8401c, []int{10} + return fileDescriptor_device_c21dc006d6a19ae5, []int{10} } func (m *StatsRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StatsRequest.Unmarshal(m, b) @@ -603,7 +603,7 @@ func (m *StatsResponse) Reset() { *m = StatsResponse{} } func (m *StatsResponse) String() string { return proto.CompactTextString(m) } func (*StatsResponse) ProtoMessage() {} func (*StatsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_device_a4d1cccedbd8401c, []int{11} + return fileDescriptor_device_c21dc006d6a19ae5, []int{11} } func (m *StatsResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StatsResponse.Unmarshal(m, b) @@ -647,7 +647,7 @@ func (m *DeviceGroupStats) Reset() { *m = DeviceGroupStats{} } func (m *DeviceGroupStats) String() string { return proto.CompactTextString(m) } func (*DeviceGroupStats) ProtoMessage() {} func (*DeviceGroupStats) Descriptor() ([]byte, []int) { - return fileDescriptor_device_a4d1cccedbd8401c, []int{12} + return fileDescriptor_device_c21dc006d6a19ae5, []int{12} } func (m *DeviceGroupStats) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeviceGroupStats.Unmarshal(m, b) @@ -713,7 +713,7 @@ func (m *DeviceStats) Reset() { *m = DeviceStats{} } func (m *DeviceStats) String() string { return proto.CompactTextString(m) } func (*DeviceStats) ProtoMessage() {} func (*DeviceStats) Descriptor() ([]byte, []int) { - return fileDescriptor_device_a4d1cccedbd8401c, []int{13} + return fileDescriptor_device_c21dc006d6a19ae5, []int{13} } func (m *DeviceStats) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DeviceStats.Unmarshal(m, b) @@ -984,10 +984,10 @@ var _DevicePlugin_serviceDesc = grpc.ServiceDesc{ } func init() { - proto.RegisterFile("plugins/device/proto/device.proto", fileDescriptor_device_a4d1cccedbd8401c) + proto.RegisterFile("plugins/device/proto/device.proto", fileDescriptor_device_c21dc006d6a19ae5) } -var fileDescriptor_device_a4d1cccedbd8401c = []byte{ +var fileDescriptor_device_c21dc006d6a19ae5 = []byte{ // 979 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xef, 0x8e, 0x1b, 0x35, 0x10, 0x27, 0xb9, 0xcb, 0x25, 0x99, 0xdc, 0x5d, 0x8b, 0x7b, 0x42, 0x61, 0x81, 0xf6, 0x58, 0x09, diff --git a/plugins/drivers/client.go b/plugins/drivers/client.go index 4111f8b6d..83200c160 100644 --- a/plugins/drivers/client.go +++ b/plugins/drivers/client.go @@ -15,6 +15,7 @@ import ( "github.com/hashicorp/nomad/plugins/drivers/proto" "github.com/hashicorp/nomad/plugins/shared" "github.com/hashicorp/nomad/plugins/shared/hclspec" + pstructs "github.com/hashicorp/nomad/plugins/shared/structs" sproto "github.com/hashicorp/nomad/plugins/shared/structs/proto" "google.golang.org/grpc/status" ) @@ -105,7 +106,7 @@ func (d *driverPluginClient) handleFingerprint(ctx context.Context, ch chan *Fin } f := &Fingerprint{ - Attributes: pb.Attributes, + Attributes: pstructs.ConvertProtoAttributeMap(pb.Attributes), Health: healthStateFromProto(pb.Health), HealthDescription: pb.HealthDescription, } diff --git a/plugins/drivers/driver.go b/plugins/drivers/driver.go index a560a3344..fe628fb9d 100644 --- a/plugins/drivers/driver.go +++ b/plugins/drivers/driver.go @@ -13,6 +13,7 @@ import ( "github.com/hashicorp/nomad/nomad/structs" "github.com/hashicorp/nomad/plugins/base" "github.com/hashicorp/nomad/plugins/shared/hclspec" + pstructs "github.com/hashicorp/nomad/plugins/shared/structs" "github.com/zclconf/go-cty/cty" "github.com/zclconf/go-cty/cty/msgpack" ) @@ -73,7 +74,7 @@ var ( ) type Fingerprint struct { - Attributes map[string]string + Attributes map[string]*pstructs.Attribute Health HealthState HealthDescription string diff --git a/plugins/drivers/plugin_test.go b/plugins/drivers/plugin_test.go index 0bb01ed9f..026d86f66 100644 --- a/plugins/drivers/plugin_test.go +++ b/plugins/drivers/plugin_test.go @@ -9,6 +9,7 @@ import ( cstructs "github.com/hashicorp/nomad/client/structs" "github.com/hashicorp/nomad/nomad/structs" + pstructs "github.com/hashicorp/nomad/plugins/shared/structs" "github.com/stretchr/testify/require" "github.com/ugorji/go/codec" ) @@ -24,12 +25,12 @@ func TestBaseDriver_Fingerprint(t *testing.T) { fingerprints := []*Fingerprint{ { - Attributes: map[string]string{"foo": "bar"}, + Attributes: map[string]*pstructs.Attribute{"foo": pstructs.NewStringAttribute("bar")}, Health: HealthStateUnhealthy, HealthDescription: "starting up", }, { - Attributes: map[string]string{"foo": "bar"}, + Attributes: map[string]*pstructs.Attribute{"foo": pstructs.NewStringAttribute("bar")}, Health: HealthStateHealthy, HealthDescription: "running", }, diff --git a/plugins/drivers/proto/driver.pb.go b/plugins/drivers/proto/driver.pb.go index 3b80056d9..7199447ff 100644 --- a/plugins/drivers/proto/driver.pb.go +++ b/plugins/drivers/proto/driver.pb.go @@ -9,6 +9,7 @@ import math "math" import duration "github.com/golang/protobuf/ptypes/duration" import timestamp "github.com/golang/protobuf/ptypes/timestamp" import hclspec "github.com/hashicorp/nomad/plugins/shared/hclspec" +import proto1 "github.com/hashicorp/nomad/plugins/shared/structs/proto" import ( context "golang.org/x/net/context" @@ -49,7 +50,7 @@ func (x TaskState) String() string { return proto.EnumName(TaskState_name, int32(x)) } func (TaskState) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_driver_3be9ef6db94d5027, []int{0} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{0} } type FingerprintResponse_HealthState int32 @@ -75,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_3be9ef6db94d5027, []int{5, 0} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{5, 0} } type StartTaskResponse_Result int32 @@ -101,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_3be9ef6db94d5027, []int{9, 0} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{9, 0} } type DriverCapabilities_FSIsolation int32 @@ -127,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_3be9ef6db94d5027, []int{25, 0} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{25, 0} } type CPUUsage_Fields int32 @@ -162,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_3be9ef6db94d5027, []int{41, 0} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{41, 0} } type MemoryUsage_Fields int32 @@ -194,7 +195,7 @@ func (x MemoryUsage_Fields) String() string { return proto.EnumName(MemoryUsage_Fields_name, int32(x)) } func (MemoryUsage_Fields) EnumDescriptor() ([]byte, []int) { - return fileDescriptor_driver_3be9ef6db94d5027, []int{42, 0} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{42, 0} } type TaskConfigSchemaRequest struct { @@ -207,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_3be9ef6db94d5027, []int{0} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{0} } func (m *TaskConfigSchemaRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TaskConfigSchemaRequest.Unmarshal(m, b) @@ -239,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_3be9ef6db94d5027, []int{1} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{1} } func (m *TaskConfigSchemaResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TaskConfigSchemaResponse.Unmarshal(m, b) @@ -276,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_3be9ef6db94d5027, []int{2} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{2} } func (m *CapabilitiesRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CapabilitiesRequest.Unmarshal(m, b) @@ -311,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_3be9ef6db94d5027, []int{3} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{3} } func (m *CapabilitiesResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CapabilitiesResponse.Unmarshal(m, b) @@ -348,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_3be9ef6db94d5027, []int{4} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{4} } func (m *FingerprintRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FingerprintRequest.Unmarshal(m, b) @@ -371,7 +372,7 @@ var xxx_messageInfo_FingerprintRequest proto.InternalMessageInfo type FingerprintResponse struct { // 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,1,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]*proto1.Attribute `protobuf:"bytes,1,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` // Health is used to determine the state of the health the driver is in. // Health can be one of the following states: // * UNDETECTED: driver dependencies are not met and the driver can not start @@ -391,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_3be9ef6db94d5027, []int{5} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{5} } func (m *FingerprintResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_FingerprintResponse.Unmarshal(m, b) @@ -411,7 +412,7 @@ func (m *FingerprintResponse) XXX_DiscardUnknown() { var xxx_messageInfo_FingerprintResponse proto.InternalMessageInfo -func (m *FingerprintResponse) GetAttributes() map[string]string { +func (m *FingerprintResponse) GetAttributes() map[string]*proto1.Attribute { if m != nil { return m.Attributes } @@ -446,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_3be9ef6db94d5027, []int{6} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{6} } func (m *RecoverTaskRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_RecoverTaskRequest.Unmarshal(m, b) @@ -490,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_3be9ef6db94d5027, []int{7} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{7} } func (m *RecoverTaskResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_RecoverTaskResponse.Unmarshal(m, b) @@ -522,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_3be9ef6db94d5027, []int{8} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{8} } func (m *StartTaskRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StartTaskRequest.Unmarshal(m, b) @@ -576,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_3be9ef6db94d5027, []int{9} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{9} } func (m *StartTaskResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StartTaskResponse.Unmarshal(m, b) @@ -636,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_3be9ef6db94d5027, []int{10} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{10} } func (m *WaitTaskRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_WaitTaskRequest.Unmarshal(m, b) @@ -677,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_3be9ef6db94d5027, []int{11} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{11} } func (m *WaitTaskResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_WaitTaskResponse.Unmarshal(m, b) @@ -729,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_3be9ef6db94d5027, []int{12} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{12} } func (m *StopTaskRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StopTaskRequest.Unmarshal(m, b) @@ -780,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_3be9ef6db94d5027, []int{13} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{13} } func (m *StopTaskResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StopTaskResponse.Unmarshal(m, b) @@ -814,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_3be9ef6db94d5027, []int{14} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{14} } func (m *DestroyTaskRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DestroyTaskRequest.Unmarshal(m, b) @@ -858,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_3be9ef6db94d5027, []int{15} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{15} } func (m *DestroyTaskResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DestroyTaskResponse.Unmarshal(m, b) @@ -890,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_3be9ef6db94d5027, []int{16} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{16} } func (m *InspectTaskRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InspectTaskRequest.Unmarshal(m, b) @@ -933,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_3be9ef6db94d5027, []int{17} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{17} } func (m *InspectTaskResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_InspectTaskResponse.Unmarshal(m, b) @@ -986,7 +987,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_3be9ef6db94d5027, []int{18} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{18} } func (m *TaskStatsRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TaskStatsRequest.Unmarshal(m, b) @@ -1025,7 +1026,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_3be9ef6db94d5027, []int{19} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{19} } func (m *TaskStatsResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TaskStatsResponse.Unmarshal(m, b) @@ -1062,7 +1063,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_3be9ef6db94d5027, []int{20} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{20} } func (m *TaskEventsRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TaskEventsRequest.Unmarshal(m, b) @@ -1096,7 +1097,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_3be9ef6db94d5027, []int{21} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{21} } func (m *SignalTaskRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalTaskRequest.Unmarshal(m, b) @@ -1140,7 +1141,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_3be9ef6db94d5027, []int{22} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{22} } func (m *SignalTaskResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_SignalTaskResponse.Unmarshal(m, b) @@ -1177,7 +1178,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_3be9ef6db94d5027, []int{23} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{23} } func (m *ExecTaskRequest) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ExecTaskRequest.Unmarshal(m, b) @@ -1234,7 +1235,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_3be9ef6db94d5027, []int{24} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{24} } func (m *ExecTaskResponse) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ExecTaskResponse.Unmarshal(m, b) @@ -1293,7 +1294,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_3be9ef6db94d5027, []int{25} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{25} } func (m *DriverCapabilities) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DriverCapabilities.Unmarshal(m, b) @@ -1374,7 +1375,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_3be9ef6db94d5027, []int{26} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{26} } func (m *TaskConfig) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TaskConfig.Unmarshal(m, b) @@ -1506,7 +1507,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_3be9ef6db94d5027, []int{27} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{27} } func (m *Resources) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Resources.Unmarshal(m, b) @@ -1555,7 +1556,7 @@ func (m *RawResources) Reset() { *m = RawResources{} } func (m *RawResources) String() string { return proto.CompactTextString(m) } func (*RawResources) ProtoMessage() {} func (*RawResources) Descriptor() ([]byte, []int) { - return fileDescriptor_driver_3be9ef6db94d5027, []int{28} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{28} } func (m *RawResources) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_RawResources.Unmarshal(m, b) @@ -1626,7 +1627,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_3be9ef6db94d5027, []int{29} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{29} } func (m *NetworkResource) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NetworkResource.Unmarshal(m, b) @@ -1700,7 +1701,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_3be9ef6db94d5027, []int{30} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{30} } func (m *NetworkPort) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NetworkPort.Unmarshal(m, b) @@ -1760,7 +1761,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_3be9ef6db94d5027, []int{31} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{31} } func (m *LinuxResources) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_LinuxResources.Unmarshal(m, b) @@ -1852,7 +1853,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_3be9ef6db94d5027, []int{32} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{32} } func (m *Mount) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Mount.Unmarshal(m, b) @@ -1915,7 +1916,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_3be9ef6db94d5027, []int{33} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{33} } func (m *Device) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Device.Unmarshal(m, b) @@ -1973,7 +1974,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_3be9ef6db94d5027, []int{34} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{34} } func (m *TaskHandle) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TaskHandle.Unmarshal(m, b) @@ -2033,7 +2034,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_3be9ef6db94d5027, []int{35} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{35} } func (m *NetworkOverride) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_NetworkOverride.Unmarshal(m, b) @@ -2091,7 +2092,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_3be9ef6db94d5027, []int{36} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{36} } func (m *ExitResult) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_ExitResult.Unmarshal(m, b) @@ -2154,7 +2155,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_3be9ef6db94d5027, []int{37} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{37} } func (m *TaskStatus) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TaskStatus.Unmarshal(m, b) @@ -2229,7 +2230,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_3be9ef6db94d5027, []int{38} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{38} } func (m *TaskDriverStatus) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TaskDriverStatus.Unmarshal(m, b) @@ -2274,7 +2275,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_3be9ef6db94d5027, []int{39} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{39} } func (m *TaskStats) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TaskStats.Unmarshal(m, b) @@ -2336,7 +2337,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_3be9ef6db94d5027, []int{40} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{40} } func (m *TaskResourceUsage) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_TaskResourceUsage.Unmarshal(m, b) @@ -2388,7 +2389,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_3be9ef6db94d5027, []int{41} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{41} } func (m *CPUUsage) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_CPUUsage.Unmarshal(m, b) @@ -2474,7 +2475,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_3be9ef6db94d5027, []int{42} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{42} } func (m *MemoryUsage) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_MemoryUsage.Unmarshal(m, b) @@ -2554,7 +2555,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_3be9ef6db94d5027, []int{43} + return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{43} } func (m *DriverTaskEvent) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_DriverTaskEvent.Unmarshal(m, b) @@ -2609,7 +2610,7 @@ func init() { proto.RegisterType((*CapabilitiesResponse)(nil), "hashicorp.nomad.plugins.drivers.proto.CapabilitiesResponse") proto.RegisterType((*FingerprintRequest)(nil), "hashicorp.nomad.plugins.drivers.proto.FingerprintRequest") proto.RegisterType((*FingerprintResponse)(nil), "hashicorp.nomad.plugins.drivers.proto.FingerprintResponse") - proto.RegisterMapType((map[string]string)(nil), "hashicorp.nomad.plugins.drivers.proto.FingerprintResponse.AttributesEntry") + proto.RegisterMapType((map[string]*proto1.Attribute)(nil), "hashicorp.nomad.plugins.drivers.proto.FingerprintResponse.AttributesEntry") proto.RegisterType((*RecoverTaskRequest)(nil), "hashicorp.nomad.plugins.drivers.proto.RecoverTaskRequest") proto.RegisterType((*RecoverTaskResponse)(nil), "hashicorp.nomad.plugins.drivers.proto.RecoverTaskResponse") proto.RegisterType((*StartTaskRequest)(nil), "hashicorp.nomad.plugins.drivers.proto.StartTaskRequest") @@ -3245,186 +3246,188 @@ var _Driver_serviceDesc = grpc.ServiceDesc{ } func init() { - proto.RegisterFile("plugins/drivers/proto/driver.proto", fileDescriptor_driver_3be9ef6db94d5027) + proto.RegisterFile("plugins/drivers/proto/driver.proto", fileDescriptor_driver_f8c1fd114dd6e6a4) } -var fileDescriptor_driver_3be9ef6db94d5027 = []byte{ - // 2821 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x59, 0x4b, 0x6f, 0x23, 0xc7, - 0xf1, 0x17, 0x49, 0x91, 0x22, 0x8b, 0x14, 0x35, 0xdb, 0xbb, 0xfb, 0x37, 0x4d, 0xe3, 0x1f, 0xaf, - 0x07, 0x70, 0xb0, 0xb0, 0xbd, 0x94, 0x2d, 0x23, 0xde, 0x47, 0xe0, 0x07, 0x4d, 0xcd, 0xae, 0xe4, - 0x95, 0x28, 0xa5, 0x49, 0x61, 0xbd, 0x49, 0xec, 0xc9, 0x68, 0xa6, 0x45, 0xce, 0x8a, 0xf3, 0x70, - 0xf7, 0x8c, 0x56, 0x42, 0x10, 0x24, 0x48, 0x80, 0x20, 0x09, 0x10, 0x20, 0x97, 0x20, 0x40, 0x8e, - 0xc9, 0x29, 0xc8, 0x35, 0xa7, 0x04, 0xb9, 0x04, 0xc8, 0x77, 0xc8, 0x31, 0x97, 0x00, 0xb9, 0xe6, - 0x1b, 0x04, 0xfd, 0x98, 0xe1, 0x50, 0xd2, 0xda, 0x43, 0x2a, 0x27, 0x4e, 0x57, 0x77, 0xfd, 0xba, - 0x58, 0x55, 0x5d, 0x55, 0xdd, 0x05, 0x7a, 0x38, 0x89, 0x47, 0xae, 0xcf, 0xd6, 0x1d, 0xea, 0x9e, - 0x10, 0xca, 0xd6, 0x43, 0x1a, 0x44, 0x81, 0x1a, 0x75, 0xc4, 0x00, 0xbd, 0x3e, 0xb6, 0xd8, 0xd8, - 0xb5, 0x03, 0x1a, 0x76, 0xfc, 0xc0, 0xb3, 0x9c, 0x8e, 0xe2, 0xe9, 0x28, 0x1e, 0xb9, 0xac, 0xfd, - 0xb5, 0x51, 0x10, 0x8c, 0x26, 0x44, 0x22, 0x1c, 0xc6, 0x47, 0xeb, 0x4e, 0x4c, 0xad, 0xc8, 0x0d, - 0x7c, 0x35, 0xff, 0xea, 0xf9, 0xf9, 0xc8, 0xf5, 0x08, 0x8b, 0x2c, 0x2f, 0x54, 0x0b, 0x3e, 0x1a, - 0xb9, 0xd1, 0x38, 0x3e, 0xec, 0xd8, 0x81, 0xb7, 0x9e, 0x6e, 0xb9, 0x2e, 0xb6, 0x5c, 0x4f, 0xc4, - 0x64, 0x63, 0x8b, 0x12, 0x67, 0x7d, 0x6c, 0x4f, 0x58, 0x48, 0x6c, 0xfe, 0x6b, 0xf2, 0x0f, 0x89, - 0xa0, 0xbf, 0x0c, 0x2f, 0x0d, 0x2d, 0x76, 0xdc, 0x0b, 0xfc, 0x23, 0x77, 0x34, 0xb0, 0xc7, 0xc4, - 0xb3, 0x30, 0xf9, 0x22, 0x26, 0x2c, 0xd2, 0xbf, 0x0b, 0xad, 0x8b, 0x53, 0x2c, 0x0c, 0x7c, 0x46, - 0xd0, 0x47, 0xb0, 0xcc, 0x41, 0x5a, 0x85, 0x5b, 0x85, 0xdb, 0xf5, 0x8d, 0xb7, 0x3a, 0x2f, 0xfa, - 0xbf, 0x72, 0xf3, 0x8e, 0xda, 0xbc, 0x33, 0x08, 0x89, 0x8d, 0x05, 0xa7, 0x7e, 0x13, 0xae, 0xf7, - 0xac, 0xd0, 0x3a, 0x74, 0x27, 0x6e, 0xe4, 0x12, 0x96, 0x6c, 0x1a, 0xc3, 0x8d, 0x59, 0xb2, 0xda, - 0xf0, 0x33, 0x68, 0xd8, 0x19, 0xba, 0xda, 0xf8, 0x7e, 0x27, 0x97, 0xa2, 0x3b, 0x9b, 0x62, 0x34, - 0x03, 0x3c, 0x03, 0xa7, 0xdf, 0x00, 0xf4, 0xd0, 0xf5, 0x47, 0x84, 0x86, 0xd4, 0xf5, 0xa3, 0x44, - 0x98, 0x5f, 0x94, 0xe0, 0xfa, 0x0c, 0x59, 0x09, 0xf3, 0x0c, 0xc0, 0x8a, 0x22, 0xea, 0x1e, 0xc6, - 0x91, 0x10, 0xa5, 0x74, 0xbb, 0xbe, 0xf1, 0x49, 0x4e, 0x51, 0x2e, 0xc1, 0xeb, 0x74, 0x53, 0x30, - 0xc3, 0x8f, 0xe8, 0x19, 0xce, 0xa0, 0xa3, 0xcf, 0xa1, 0x32, 0x26, 0xd6, 0x24, 0x1a, 0xb7, 0x8a, - 0xb7, 0x0a, 0xb7, 0x9b, 0x1b, 0x0f, 0xaf, 0xb0, 0xcf, 0x96, 0x00, 0x1a, 0x44, 0x56, 0x44, 0xb0, - 0x42, 0x45, 0x77, 0x00, 0xc9, 0x2f, 0xd3, 0x21, 0xcc, 0xa6, 0x6e, 0xc8, 0xfd, 0xaf, 0x55, 0xba, - 0x55, 0xb8, 0x5d, 0xc3, 0xd7, 0xe4, 0xcc, 0xe6, 0x74, 0xa2, 0xfd, 0x3e, 0xac, 0x9d, 0x93, 0x16, - 0x69, 0x50, 0x3a, 0x26, 0x67, 0xc2, 0x22, 0x35, 0xcc, 0x3f, 0xd1, 0x0d, 0x28, 0x9f, 0x58, 0x93, - 0x98, 0x08, 0x91, 0x6b, 0x58, 0x0e, 0x1e, 0x14, 0xef, 0x15, 0xf4, 0xfb, 0x50, 0xcf, 0x08, 0x81, - 0x9a, 0x00, 0x07, 0xfd, 0x4d, 0x63, 0x68, 0xf4, 0x86, 0xc6, 0xa6, 0xb6, 0x84, 0x56, 0xa1, 0x76, - 0xd0, 0xdf, 0x32, 0xba, 0x3b, 0xc3, 0xad, 0xa7, 0x5a, 0x01, 0xd5, 0x61, 0x25, 0x19, 0x14, 0xf5, - 0x53, 0x40, 0x98, 0xd8, 0xc1, 0x09, 0xa1, 0xdc, 0x2b, 0x95, 0x89, 0xd0, 0x4b, 0xb0, 0x12, 0x59, - 0xec, 0xd8, 0x74, 0x1d, 0x25, 0x40, 0x85, 0x0f, 0xb7, 0x1d, 0xb4, 0x0d, 0x95, 0xb1, 0xe5, 0x3b, - 0x13, 0x29, 0x44, 0x7d, 0xe3, 0x9d, 0x9c, 0x7a, 0xe3, 0xe0, 0x5b, 0x82, 0x11, 0x2b, 0x00, 0xee, - 0xaa, 0x33, 0x3b, 0x4b, 0x6d, 0xea, 0x4f, 0x41, 0x1b, 0x44, 0x16, 0x8d, 0xb2, 0xe2, 0x18, 0xb0, - 0xcc, 0xf7, 0x57, 0xee, 0x39, 0xcf, 0x9e, 0xf2, 0x98, 0x61, 0xc1, 0xae, 0xff, 0xa7, 0x08, 0xd7, - 0x32, 0xd8, 0xca, 0xed, 0x9e, 0x40, 0x85, 0x12, 0x16, 0x4f, 0x22, 0x01, 0xdf, 0xdc, 0xf8, 0x30, - 0x27, 0xfc, 0x05, 0xa4, 0x0e, 0x16, 0x30, 0x58, 0xc1, 0xa1, 0xdb, 0xa0, 0x49, 0x0e, 0x93, 0x50, - 0x1a, 0x50, 0xd3, 0x63, 0x23, 0x65, 0xba, 0xa6, 0xa4, 0x1b, 0x9c, 0xbc, 0xcb, 0x46, 0x19, 0xad, - 0x96, 0xae, 0xa8, 0x55, 0x64, 0x81, 0xe6, 0x93, 0xe8, 0x79, 0x40, 0x8f, 0x4d, 0xae, 0x5a, 0xea, - 0x3a, 0xa4, 0xb5, 0x2c, 0x40, 0xdf, 0xcb, 0x09, 0xda, 0x97, 0xec, 0x7b, 0x8a, 0x1b, 0xaf, 0xf9, - 0xb3, 0x04, 0xfd, 0x4d, 0xa8, 0xc8, 0x7f, 0xca, 0x3d, 0x69, 0x70, 0xd0, 0xeb, 0x19, 0x83, 0x81, - 0xb6, 0x84, 0x6a, 0x50, 0xc6, 0xc6, 0x10, 0x73, 0x0f, 0xab, 0x41, 0xf9, 0x61, 0x77, 0xd8, 0xdd, - 0xd1, 0x8a, 0xfa, 0x1b, 0xb0, 0xf6, 0xc4, 0x72, 0xa3, 0x3c, 0xce, 0xa5, 0x07, 0xa0, 0x4d, 0xd7, - 0x2a, 0xeb, 0x6c, 0xcf, 0x58, 0x27, 0xbf, 0x6a, 0x8c, 0x53, 0x37, 0x3a, 0x67, 0x0f, 0x0d, 0x4a, - 0x84, 0x52, 0x65, 0x02, 0xfe, 0xa9, 0x3f, 0x87, 0xb5, 0x41, 0x14, 0x84, 0xb9, 0x3c, 0xff, 0x5d, - 0x58, 0xe1, 0x79, 0x22, 0x88, 0x23, 0xe5, 0xfa, 0x2f, 0x77, 0x64, 0x1e, 0xe9, 0x24, 0x79, 0xa4, - 0xb3, 0xa9, 0xf2, 0x0c, 0x4e, 0x56, 0xa2, 0xff, 0x83, 0x0a, 0x73, 0x47, 0xbe, 0x35, 0x51, 0x47, - 0x5f, 0x8d, 0x74, 0xc4, 0x9d, 0x3c, 0xd9, 0x58, 0x39, 0x7e, 0x0f, 0xd0, 0x26, 0x61, 0x11, 0x0d, - 0xce, 0x72, 0xc9, 0x73, 0x03, 0xca, 0x47, 0x01, 0xb5, 0xe5, 0x41, 0xac, 0x62, 0x39, 0xe0, 0x87, - 0x6a, 0x06, 0x44, 0x61, 0xdf, 0x01, 0xb4, 0xed, 0xf3, 0x04, 0x91, 0xcf, 0x10, 0xbf, 0x2a, 0xc2, - 0xf5, 0x99, 0xf5, 0xca, 0x18, 0x8b, 0x9f, 0x43, 0x1e, 0x98, 0x62, 0x26, 0xcf, 0x21, 0xda, 0x83, - 0x8a, 0x5c, 0xa1, 0x34, 0x79, 0x77, 0x0e, 0x20, 0x99, 0x73, 0x14, 0x9c, 0x82, 0xb9, 0xd4, 0xe9, - 0x4b, 0xff, 0x6b, 0xa7, 0xd7, 0x92, 0xff, 0xc1, 0xbe, 0x52, 0x7f, 0xdf, 0x81, 0x6b, 0x99, 0xc5, - 0x4a, 0x79, 0x0f, 0xa1, 0xcc, 0x38, 0x41, 0x69, 0xef, 0xed, 0x39, 0xb5, 0xc7, 0xb0, 0x64, 0xd7, - 0xaf, 0x4b, 0x70, 0xe3, 0x84, 0xf8, 0xa9, 0x28, 0xfa, 0x26, 0x5c, 0x1b, 0x08, 0xd7, 0xca, 0xe5, - 0x3b, 0x53, 0xb7, 0x2c, 0xce, 0xb8, 0xe5, 0x0d, 0x40, 0x59, 0x14, 0xe5, 0x3c, 0x67, 0xb0, 0x66, - 0x9c, 0x12, 0x3b, 0x17, 0x72, 0x0b, 0x56, 0xec, 0xc0, 0xf3, 0x2c, 0xdf, 0x69, 0x15, 0x6f, 0x95, - 0x6e, 0xd7, 0x70, 0x32, 0xcc, 0x9e, 0x9f, 0x52, 0xde, 0xf3, 0xa3, 0xff, 0xb2, 0x00, 0xda, 0x74, - 0x6f, 0xa5, 0x48, 0x2e, 0x7d, 0xe4, 0x70, 0x20, 0xbe, 0x77, 0x03, 0xab, 0x91, 0xa2, 0x27, 0x47, - 0x5c, 0xd2, 0x09, 0xa5, 0x99, 0x10, 0x52, 0xba, 0x62, 0x08, 0xd1, 0xff, 0x55, 0x00, 0x74, 0xb1, - 0xea, 0x41, 0xaf, 0x41, 0x83, 0x11, 0xdf, 0x31, 0xa5, 0x1a, 0xa5, 0x85, 0xab, 0xb8, 0xce, 0x69, - 0x52, 0x9f, 0x0c, 0x21, 0x58, 0x26, 0xa7, 0xc4, 0x56, 0xa7, 0x55, 0x7c, 0xa3, 0x31, 0x34, 0x8e, - 0x98, 0xe9, 0xb2, 0x60, 0x62, 0xa5, 0xe5, 0x41, 0x73, 0xc3, 0x58, 0xb8, 0xfa, 0xea, 0x3c, 0x1c, - 0x6c, 0x27, 0x60, 0xb8, 0x7e, 0xc4, 0xd2, 0x81, 0xde, 0x81, 0x7a, 0x66, 0x0e, 0x55, 0x61, 0xb9, - 0xbf, 0xd7, 0x37, 0xb4, 0x25, 0x04, 0x50, 0xe9, 0x6d, 0xe1, 0xbd, 0xbd, 0xa1, 0x8c, 0xda, 0xdb, - 0xbb, 0xdd, 0x47, 0x86, 0x56, 0xd4, 0x7f, 0x5b, 0x06, 0x98, 0xa6, 0x4f, 0xd4, 0x84, 0x62, 0x6a, - 0xe9, 0xa2, 0xeb, 0xf0, 0x3f, 0xe3, 0x5b, 0x5e, 0x52, 0x88, 0x88, 0x6f, 0xb4, 0x01, 0x37, 0x3d, - 0x36, 0x0a, 0x2d, 0xfb, 0xd8, 0x54, 0x59, 0xcf, 0x16, 0xcc, 0xe2, 0x5f, 0x35, 0xf0, 0x75, 0x35, - 0xa9, 0xa4, 0x96, 0xb8, 0x3b, 0x50, 0x22, 0xfe, 0x49, 0x6b, 0x59, 0x94, 0x7a, 0x0f, 0xe6, 0x4e, - 0xeb, 0x1d, 0xc3, 0x3f, 0x91, 0xa5, 0x1d, 0x87, 0x41, 0x7d, 0xa8, 0x51, 0xc2, 0x82, 0x98, 0xda, - 0x84, 0xb5, 0xca, 0x73, 0x1d, 0x32, 0x9c, 0xf0, 0xe1, 0x29, 0x04, 0xda, 0x84, 0x8a, 0x17, 0xc4, - 0x7e, 0xc4, 0x5a, 0x15, 0x21, 0xe0, 0x5b, 0x39, 0xc1, 0x76, 0x39, 0x13, 0x56, 0xbc, 0xe8, 0x11, - 0xac, 0x38, 0xe4, 0xc4, 0xe5, 0x32, 0xad, 0x08, 0x98, 0x3b, 0x79, 0xed, 0x2b, 0xb8, 0x70, 0xc2, - 0xcd, 0x95, 0x1e, 0x33, 0x42, 0x5b, 0x55, 0xa9, 0x74, 0xfe, 0x8d, 0x5e, 0x81, 0x9a, 0x35, 0x99, - 0x04, 0xb6, 0xe9, 0xb8, 0xb4, 0x55, 0x13, 0x13, 0x55, 0x41, 0xd8, 0x74, 0x29, 0x7a, 0x15, 0xea, - 0xf2, 0x64, 0x98, 0xa1, 0x15, 0x8d, 0x5b, 0x20, 0xa6, 0x41, 0x92, 0xf6, 0xad, 0x68, 0xac, 0x16, - 0x10, 0x4a, 0xe5, 0x82, 0x7a, 0xba, 0x80, 0x50, 0x2a, 0x16, 0x7c, 0x1d, 0xd6, 0xc4, 0x31, 0x1f, - 0xd1, 0x20, 0x0e, 0x4d, 0x61, 0xf2, 0x86, 0x58, 0xb4, 0xca, 0xc9, 0x8f, 0x38, 0xb5, 0xcf, 0x6d, - 0xff, 0x32, 0x54, 0x9f, 0x05, 0x87, 0x72, 0xc1, 0xaa, 0x58, 0xb0, 0xf2, 0x2c, 0x38, 0x4c, 0xa6, - 0xa4, 0x84, 0xae, 0xd3, 0x6a, 0xca, 0x29, 0x31, 0xde, 0x76, 0xda, 0xef, 0x41, 0x35, 0x31, 0xe0, - 0x5c, 0xd5, 0xee, 0xdf, 0x0b, 0x50, 0x4b, 0x0d, 0x86, 0x3e, 0x85, 0x55, 0x6a, 0x3d, 0x37, 0xa7, - 0x96, 0x97, 0xe1, 0xf5, 0xdd, 0xbc, 0x96, 0xb7, 0x9e, 0x4f, 0x8d, 0xdf, 0xa0, 0x99, 0x11, 0xfa, - 0x1c, 0xd6, 0x26, 0xae, 0x1f, 0x9f, 0x66, 0xb0, 0x65, 0xbe, 0xfa, 0x46, 0x4e, 0xec, 0x1d, 0xce, - 0x3d, 0x45, 0x6f, 0x4e, 0x66, 0xc6, 0xfa, 0x9f, 0x0a, 0xd0, 0xc8, 0x6e, 0xcf, 0x95, 0x60, 0x87, - 0xb1, 0xf8, 0x03, 0x25, 0xcc, 0x3f, 0x79, 0x48, 0xf3, 0x88, 0x17, 0xd0, 0x33, 0xb1, 0x73, 0x09, - 0xab, 0x11, 0xf7, 0x05, 0xc7, 0x65, 0xc7, 0xe2, 0x6c, 0x95, 0xb0, 0xf8, 0xe6, 0x34, 0x37, 0x08, - 0x99, 0xa8, 0xf6, 0x4a, 0x58, 0x7c, 0x23, 0x0c, 0x55, 0x95, 0xc8, 0xf8, 0x89, 0x28, 0xcd, 0x9f, - 0x10, 0x13, 0xe1, 0x70, 0x8a, 0xa3, 0xff, 0xa6, 0x08, 0x6b, 0xe7, 0x66, 0xb9, 0x9c, 0xd2, 0x4d, - 0x93, 0x74, 0x20, 0x47, 0x5c, 0x26, 0xdb, 0x75, 0x92, 0x9a, 0x4b, 0x7c, 0x8b, 0x60, 0x12, 0xaa, - 0x7a, 0xa8, 0xe8, 0x86, 0xdc, 0xd0, 0xde, 0xa1, 0x1b, 0x49, 0xc1, 0xcb, 0x58, 0x0e, 0xd0, 0x53, - 0x68, 0x52, 0xc2, 0x08, 0x3d, 0x21, 0x8e, 0x19, 0x06, 0x34, 0x4a, 0xe4, 0xdf, 0x98, 0x4f, 0xfe, - 0xfd, 0x80, 0x46, 0x78, 0x35, 0x41, 0xe2, 0x23, 0x86, 0x9e, 0xc0, 0xaa, 0x73, 0xe6, 0x5b, 0x9e, - 0x6b, 0x2b, 0xe4, 0xca, 0xc2, 0xc8, 0x0d, 0x05, 0x24, 0x80, 0xf9, 0x35, 0x2c, 0x33, 0xc9, 0xff, - 0xd8, 0xc4, 0x3a, 0x24, 0x13, 0xa5, 0x13, 0x39, 0x98, 0xf5, 0xeb, 0xb2, 0xf2, 0x6b, 0xfd, 0xf7, - 0x45, 0x68, 0xce, 0xba, 0x0b, 0xfa, 0x7f, 0x00, 0x3b, 0x8c, 0xcd, 0x90, 0x50, 0x37, 0x70, 0x94, - 0x53, 0xd4, 0xec, 0x30, 0xde, 0x17, 0x04, 0x7e, 0xf4, 0xf9, 0xf4, 0x17, 0x71, 0x10, 0x59, 0xca, - 0x3b, 0xaa, 0x76, 0x18, 0x7f, 0x8b, 0x8f, 0x13, 0x5e, 0xf1, 0x4e, 0xc0, 0x94, 0x97, 0xf0, 0xe5, - 0x03, 0x41, 0x40, 0x6f, 0x01, 0x92, 0x8e, 0x64, 0x4e, 0x5c, 0xcf, 0x8d, 0xcc, 0xc3, 0x33, 0x7e, - 0xe3, 0x96, 0x8e, 0xa3, 0xc9, 0x99, 0x1d, 0x3e, 0xf1, 0x31, 0xa7, 0x23, 0x1d, 0x56, 0x83, 0xc0, - 0x33, 0x99, 0x1d, 0x50, 0x62, 0x5a, 0xce, 0x33, 0x11, 0x5b, 0x4b, 0xb8, 0x1e, 0x04, 0xde, 0x80, - 0xd3, 0xba, 0xce, 0x33, 0x1e, 0x4a, 0xec, 0x30, 0x66, 0x24, 0x32, 0xf9, 0x4f, 0xab, 0x22, 0x43, - 0x89, 0x24, 0xf5, 0xc2, 0x98, 0x65, 0x16, 0x78, 0xc4, 0xe3, 0xa1, 0x30, 0xb3, 0x60, 0x97, 0x78, - 0x7c, 0x97, 0xc6, 0x3e, 0xa1, 0x36, 0xf1, 0xa3, 0xa1, 0x6b, 0x1f, 0x33, 0x11, 0xe6, 0x0a, 0x78, - 0x86, 0xa6, 0x7f, 0x06, 0x65, 0x11, 0x5c, 0xf9, 0x9f, 0x17, 0x81, 0x49, 0xc4, 0x2d, 0xa9, 0xde, - 0x2a, 0x27, 0x88, 0xa8, 0xf5, 0x0a, 0xd4, 0xc6, 0x01, 0x53, 0x51, 0x4f, 0x7a, 0x5e, 0x95, 0x13, - 0xc4, 0x64, 0x1b, 0xaa, 0x94, 0x58, 0x4e, 0xe0, 0x4f, 0xce, 0x84, 0x5e, 0xaa, 0x38, 0x1d, 0xeb, - 0x5f, 0x40, 0x45, 0x06, 0xdd, 0x2b, 0xe0, 0xdf, 0x01, 0x64, 0xcb, 0x70, 0x19, 0x12, 0xea, 0xb9, - 0x8c, 0xb9, 0x81, 0xcf, 0x92, 0x8b, 0xbf, 0x9c, 0xd9, 0x9f, 0x4e, 0xe8, 0x7f, 0x2b, 0xc8, 0x44, - 0x2b, 0x6f, 0x71, 0xbc, 0x54, 0x51, 0x59, 0x73, 0xe1, 0xab, 0xae, 0x02, 0x48, 0xca, 0x4d, 0xa2, - 0x1e, 0x38, 0xe6, 0x2d, 0x37, 0x89, 0x2c, 0x37, 0x09, 0xaf, 0x6d, 0x54, 0x3e, 0x97, 0x70, 0x32, - 0x9d, 0xd7, 0x9d, 0xb4, 0x0e, 0x27, 0xfa, 0xbf, 0x0b, 0x69, 0x44, 0x48, 0xea, 0x65, 0xf4, 0x39, - 0x54, 0xf9, 0xe1, 0x32, 0x3d, 0x2b, 0x54, 0x4f, 0x39, 0xbd, 0xc5, 0x4a, 0xf1, 0x0e, 0x3f, 0x4b, - 0xbb, 0x56, 0x28, 0x13, 0xfd, 0x4a, 0x28, 0x47, 0x3c, 0xb2, 0x58, 0xce, 0x34, 0xb2, 0xf0, 0x6f, - 0xf4, 0x3a, 0x34, 0xad, 0x38, 0x0a, 0x4c, 0xcb, 0x39, 0x21, 0x34, 0x72, 0x19, 0x51, 0x16, 0x5e, - 0xe5, 0xd4, 0x6e, 0x42, 0x6c, 0x3f, 0x80, 0x46, 0x16, 0xf3, 0xab, 0x72, 0x4f, 0x39, 0x9b, 0x7b, - 0xbe, 0x07, 0x30, 0x2d, 0x0b, 0xb9, 0x27, 0x90, 0x53, 0x37, 0x32, 0xed, 0xc0, 0x91, 0x91, 0xaf, - 0x8c, 0xab, 0x9c, 0xd0, 0x0b, 0x1c, 0x72, 0xae, 0xc8, 0x2e, 0x27, 0x45, 0x36, 0x3f, 0x9b, 0xfc, - 0x38, 0x1d, 0xbb, 0x93, 0x09, 0x71, 0x94, 0x84, 0xb5, 0x20, 0xf0, 0x1e, 0x0b, 0x82, 0xfe, 0xd7, - 0xa2, 0xf4, 0x08, 0x79, 0xc5, 0xc9, 0x55, 0x7a, 0xa5, 0xa6, 0x2e, 0x5d, 0xcd, 0xd4, 0xf7, 0x01, - 0x58, 0x64, 0xd1, 0x88, 0x38, 0xa6, 0x15, 0xa9, 0x57, 0x83, 0xf6, 0x85, 0x2a, 0x7d, 0x98, 0xbc, - 0x96, 0xe2, 0x9a, 0x5a, 0xdd, 0x8d, 0xd0, 0xfb, 0xd0, 0xb0, 0x03, 0x2f, 0x9c, 0x10, 0xc5, 0x5c, - 0xfe, 0x4a, 0xe6, 0x7a, 0xba, 0xbe, 0x1b, 0x65, 0x4a, 0xf4, 0xca, 0x55, 0x4b, 0xf4, 0x3f, 0x17, - 0xe4, 0x4d, 0x2d, 0x7b, 0x51, 0x44, 0xa3, 0x4b, 0x9e, 0x16, 0x1f, 0x2d, 0x78, 0xeb, 0xfc, 0xb2, - 0x77, 0xc5, 0xab, 0x3e, 0xe4, 0xfd, 0xa5, 0x04, 0xb5, 0xf4, 0xc2, 0x77, 0xc1, 0xf6, 0xf7, 0xa0, - 0x96, 0x3e, 0x55, 0xab, 0x52, 0xe4, 0x4b, 0xcd, 0x93, 0x2e, 0x46, 0x47, 0x80, 0xac, 0xd1, 0x28, - 0x2d, 0x64, 0xcc, 0x98, 0x59, 0xa3, 0xe4, 0x8a, 0x7c, 0x6f, 0x0e, 0x3d, 0x24, 0xd9, 0xe9, 0x80, - 0xf3, 0x63, 0xcd, 0x1a, 0x8d, 0x66, 0x28, 0xe8, 0xfb, 0x70, 0x73, 0x76, 0x0f, 0xf3, 0xf0, 0xcc, - 0x0c, 0x5d, 0x47, 0x95, 0xf8, 0x5b, 0xf3, 0xde, 0x79, 0x3b, 0x33, 0xf0, 0x1f, 0x9f, 0xed, 0xbb, - 0x8e, 0xd4, 0x39, 0xa2, 0x17, 0x26, 0xda, 0x3f, 0x84, 0x97, 0x5e, 0xb0, 0xfc, 0x12, 0x1b, 0xf4, - 0xb3, 0x36, 0xb8, 0x8a, 0x12, 0x32, 0xd6, 0xfb, 0x5d, 0x41, 0x5e, 0xcd, 0x67, 0x75, 0xd2, 0x9d, - 0x56, 0x75, 0xf5, 0x8d, 0xf5, 0x9c, 0xfb, 0xf4, 0xf6, 0x0f, 0x24, 0xbc, 0x28, 0x03, 0x3f, 0x99, - 0x29, 0x03, 0xf3, 0x97, 0x2a, 0xbb, 0x82, 0x49, 0x02, 0x29, 0x04, 0xfd, 0x8f, 0x25, 0xa8, 0x26, - 0xe8, 0xe2, 0x06, 0x70, 0xc6, 0x22, 0xe2, 0x99, 0x5e, 0x12, 0xc2, 0x0a, 0x18, 0x24, 0x69, 0x97, - 0x07, 0xb1, 0x57, 0xa0, 0xc6, 0x2f, 0x1a, 0x72, 0xba, 0x28, 0xa6, 0xab, 0x9c, 0x20, 0x26, 0x5f, - 0x85, 0x7a, 0x14, 0x44, 0xd6, 0xc4, 0x8c, 0x44, 0xc6, 0x2e, 0x49, 0x6e, 0x41, 0x12, 0xf9, 0x1a, - 0xbd, 0x09, 0xd7, 0xa2, 0x31, 0x0d, 0xa2, 0x68, 0xc2, 0xab, 0x38, 0x51, 0xb7, 0xc8, 0x32, 0x63, - 0x19, 0x6b, 0xe9, 0x84, 0xac, 0x67, 0x18, 0x8f, 0xde, 0xd3, 0xc5, 0xdc, 0x75, 0x45, 0x10, 0x59, - 0xc6, 0xab, 0x29, 0x95, 0xbb, 0x36, 0x6a, 0xc1, 0x4a, 0x28, 0x6b, 0x02, 0x11, 0x2b, 0x0a, 0x38, - 0x19, 0x22, 0x13, 0xd6, 0x3c, 0x62, 0xb1, 0x98, 0x12, 0xc7, 0x3c, 0x72, 0xc9, 0xc4, 0x91, 0x37, - 0xae, 0x66, 0xee, 0x9a, 0x37, 0x51, 0x4b, 0xe7, 0xa1, 0xe0, 0xc6, 0xcd, 0x04, 0x4e, 0x8e, 0x79, - 0x7d, 0x20, 0xbf, 0xd0, 0x1a, 0xd4, 0x07, 0x4f, 0x07, 0x43, 0x63, 0xd7, 0xdc, 0xdd, 0xdb, 0x34, - 0xd4, 0x13, 0xfb, 0xc0, 0xc0, 0x72, 0x58, 0xe0, 0xf3, 0xc3, 0xbd, 0x61, 0x77, 0xc7, 0x1c, 0x6e, - 0xf7, 0x1e, 0x0f, 0xb4, 0x22, 0xba, 0x09, 0xd7, 0x86, 0x5b, 0x78, 0x6f, 0x38, 0xdc, 0x31, 0x36, - 0xcd, 0x7d, 0x03, 0x6f, 0xef, 0x6d, 0x0e, 0xb4, 0x12, 0x42, 0xd0, 0x9c, 0x92, 0x87, 0xdb, 0xbb, - 0x86, 0xb6, 0x8c, 0xea, 0xb0, 0xb2, 0x6f, 0xe0, 0x9e, 0xd1, 0x1f, 0x6a, 0x65, 0xfd, 0x1f, 0x45, - 0xa8, 0x67, 0xac, 0xc8, 0x1d, 0x99, 0x32, 0x79, 0xc7, 0x59, 0xc6, 0xfc, 0x93, 0x07, 0x13, 0xdb, - 0xb2, 0xc7, 0xd2, 0x3a, 0xcb, 0x58, 0x0e, 0xb8, 0xdd, 0x3c, 0xeb, 0x34, 0x73, 0xce, 0x97, 0x71, - 0xd5, 0xb3, 0x4e, 0x25, 0xc8, 0x6b, 0xd0, 0x38, 0x26, 0xd4, 0x27, 0x13, 0x35, 0x2f, 0x2d, 0x52, - 0x97, 0x34, 0xb9, 0xe4, 0x36, 0x68, 0x6a, 0xc9, 0x14, 0x46, 0x9a, 0xa3, 0x29, 0xe9, 0xbb, 0x09, - 0xd8, 0xe1, 0x45, 0xad, 0x57, 0x84, 0xd6, 0xef, 0xcf, 0xef, 0xa4, 0x2f, 0x52, 0xfc, 0x20, 0x55, - 0xfc, 0x0a, 0x94, 0x70, 0xf2, 0xda, 0xdc, 0xeb, 0xf6, 0xb6, 0xb8, 0xb2, 0x57, 0xa1, 0xb6, 0xdb, - 0xfd, 0xd4, 0x3c, 0x18, 0x88, 0xb7, 0x0b, 0xa4, 0x41, 0xe3, 0xb1, 0x81, 0xfb, 0xc6, 0x8e, 0xa2, - 0x94, 0xd0, 0x0d, 0xd0, 0x14, 0x65, 0xba, 0x6e, 0x59, 0xff, 0x43, 0x11, 0xd6, 0x64, 0x5c, 0x4f, - 0x9f, 0xd3, 0x5e, 0xfc, 0xae, 0xb5, 0x78, 0xe8, 0x6d, 0xc1, 0x8a, 0x47, 0x58, 0x6a, 0x87, 0x1a, - 0x4e, 0x86, 0xc8, 0x85, 0xba, 0xe5, 0xfb, 0x41, 0x24, 0xde, 0x64, 0x98, 0x0a, 0x91, 0x8f, 0xe6, - 0x7a, 0xfd, 0x49, 0x25, 0xef, 0x74, 0xa7, 0x48, 0x32, 0x42, 0x66, 0xb1, 0xdb, 0x1f, 0x80, 0x76, - 0x7e, 0xc1, 0x3c, 0x79, 0xe9, 0x8d, 0x77, 0xa6, 0x69, 0x89, 0x70, 0x07, 0x3d, 0xe8, 0x3f, 0xee, - 0xef, 0x3d, 0xe9, 0x6b, 0x4b, 0x7c, 0x80, 0x0f, 0xfa, 0xfd, 0xed, 0xfe, 0x23, 0xad, 0x80, 0x00, - 0x2a, 0xc6, 0xa7, 0xdb, 0x43, 0x63, 0x53, 0x2b, 0x6e, 0xfc, 0x73, 0x15, 0x2a, 0x52, 0x48, 0xf4, - 0x6b, 0x95, 0x92, 0xb3, 0x3d, 0x4f, 0xf4, 0xc1, 0xdc, 0xa5, 0xed, 0x4c, 0x1f, 0xb5, 0xfd, 0xe1, - 0xc2, 0xfc, 0xea, 0x59, 0x73, 0x09, 0xfd, 0xbc, 0x00, 0x8d, 0x99, 0x77, 0xbc, 0xbc, 0x4f, 0x50, - 0x97, 0xb4, 0x58, 0xdb, 0xdf, 0x5c, 0x88, 0x37, 0x95, 0xe5, 0x67, 0x05, 0xa8, 0x67, 0x9a, 0x8b, - 0xe8, 0xfe, 0x22, 0x0d, 0x49, 0x29, 0xc9, 0x83, 0xc5, 0x7b, 0x99, 0xfa, 0xd2, 0xdb, 0x05, 0xf4, - 0xd3, 0x02, 0xd4, 0x33, 0x9d, 0xb9, 0xdc, 0xa2, 0x5c, 0xec, 0x23, 0xe6, 0x16, 0xe5, 0xb2, 0x46, - 0xe0, 0x12, 0xfa, 0x51, 0x01, 0x6a, 0x69, 0x97, 0x0d, 0xdd, 0x9d, 0xbf, 0x2f, 0x27, 0x85, 0xb8, - 0xb7, 0x68, 0x43, 0x4f, 0x5f, 0x42, 0x3f, 0x80, 0x6a, 0xd2, 0x92, 0x42, 0x79, 0xd3, 0xc8, 0xb9, - 0x7e, 0x57, 0xfb, 0xee, 0xdc, 0x7c, 0xd9, 0xed, 0x93, 0x3e, 0x51, 0xee, 0xed, 0xcf, 0x75, 0xb4, - 0xda, 0x77, 0xe7, 0xe6, 0x4b, 0xb7, 0xe7, 0x9e, 0x90, 0x69, 0x27, 0xe5, 0xf6, 0x84, 0x8b, 0x7d, - 0xac, 0xdc, 0x9e, 0x70, 0x59, 0xf7, 0x4a, 0x0a, 0x92, 0x69, 0x48, 0xe5, 0x16, 0xe4, 0x62, 0xd3, - 0x2b, 0xb7, 0x20, 0x97, 0xf4, 0xbf, 0x94, 0x4b, 0x4e, 0x0b, 0xf4, 0xbb, 0x73, 0xf7, 0x70, 0xe6, - 0x74, 0xc9, 0x0b, 0x5d, 0x24, 0x7d, 0x09, 0xfd, 0x58, 0x3d, 0x19, 0xc8, 0x06, 0x10, 0x9a, 0x07, - 0x6a, 0xa6, 0x67, 0xd4, 0x7e, 0x6f, 0xb1, 0x54, 0x23, 0x62, 0xc4, 0x4f, 0x0a, 0x00, 0xd3, 0x56, - 0x51, 0x6e, 0x21, 0x2e, 0xf4, 0xa8, 0xda, 0xf7, 0x17, 0xe0, 0xcc, 0x1e, 0x8f, 0xa4, 0x3b, 0x94, - 0xfb, 0x78, 0x9c, 0x6b, 0x65, 0xe5, 0x3e, 0x1e, 0xe7, 0xdb, 0x50, 0xfa, 0xd2, 0xc7, 0x2b, 0xdf, - 0x2e, 0xcb, 0xdc, 0x5f, 0x11, 0x3f, 0xef, 0xfe, 0x37, 0x00, 0x00, 0xff, 0xff, 0xf4, 0x66, 0x76, - 0x4f, 0xc5, 0x24, 0x00, 0x00, +var fileDescriptor_driver_f8c1fd114dd6e6a4 = []byte{ + // 2858 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x59, 0xcd, 0x6f, 0x23, 0xc7, + 0xb1, 0x17, 0x49, 0x91, 0x22, 0x8b, 0x14, 0x35, 0xdb, 0xbb, 0xfb, 0x4c, 0xd3, 0x78, 0xcf, 0xeb, + 0x01, 0xfc, 0xb0, 0xb0, 0xbd, 0x94, 0x2d, 0xe3, 0x79, 0x3f, 0x1e, 0xfc, 0x41, 0x53, 0xb3, 0x92, + 0xbc, 0x12, 0xa5, 0x34, 0x29, 0xac, 0x37, 0x89, 0x3d, 0x19, 0xcd, 0xb4, 0xc8, 0x59, 0x71, 0x3e, + 0xdc, 0x3d, 0xa3, 0x95, 0x10, 0x04, 0x09, 0x12, 0x20, 0x48, 0x0e, 0x01, 0x72, 0x09, 0x02, 0xe4, + 0x98, 0x9c, 0x82, 0x5c, 0x73, 0x4a, 0xe0, 0x4b, 0x80, 0xfc, 0x0f, 0x39, 0xe6, 0x12, 0x20, 0xd7, + 0xfc, 0x07, 0x41, 0x7f, 0xcc, 0x70, 0x28, 0x69, 0xbd, 0x43, 0x6e, 0x4e, 0x9c, 0xae, 0xee, 0xfa, + 0x75, 0xb1, 0xaa, 0xba, 0xaa, 0xba, 0x0b, 0xf4, 0x70, 0x12, 0x8f, 0x5c, 0x9f, 0xad, 0x3b, 0xd4, + 0x3d, 0x25, 0x94, 0xad, 0x87, 0x34, 0x88, 0x02, 0x35, 0xea, 0x88, 0x01, 0x7a, 0x73, 0x6c, 0xb1, + 0xb1, 0x6b, 0x07, 0x34, 0xec, 0xf8, 0x81, 0x67, 0x39, 0x1d, 0xc5, 0xd3, 0x51, 0x3c, 0x72, 0x59, + 0xfb, 0x7f, 0x46, 0x41, 0x30, 0x9a, 0x10, 0x89, 0x70, 0x14, 0x1f, 0xaf, 0x3b, 0x31, 0xb5, 0x22, + 0x37, 0xf0, 0xd5, 0xfc, 0xeb, 0x17, 0xe7, 0x23, 0xd7, 0x23, 0x2c, 0xb2, 0xbc, 0x50, 0x2d, 0xf8, + 0x64, 0xe4, 0x46, 0xe3, 0xf8, 0xa8, 0x63, 0x07, 0xde, 0x7a, 0xba, 0xe5, 0xba, 0xd8, 0x72, 0x3d, + 0x11, 0x93, 0x8d, 0x2d, 0x4a, 0x9c, 0xf5, 0xb1, 0x3d, 0x61, 0x21, 0xb1, 0xf9, 0xaf, 0xc9, 0x3f, + 0x14, 0xc2, 0x56, 0x7e, 0x04, 0x16, 0xd1, 0xd8, 0x8e, 0x92, 0xff, 0x6b, 0x45, 0x11, 0x75, 0x8f, + 0xe2, 0x88, 0x48, 0x20, 0xfd, 0x55, 0x78, 0x65, 0x68, 0xb1, 0x93, 0x5e, 0xe0, 0x1f, 0xbb, 0xa3, + 0x81, 0x3d, 0x26, 0x9e, 0x85, 0xc9, 0x57, 0x31, 0x61, 0x91, 0xfe, 0x5d, 0x68, 0x5d, 0x9e, 0x62, + 0x61, 0xe0, 0x33, 0x82, 0x3e, 0x81, 0x65, 0x2e, 0x4d, 0xab, 0x70, 0xab, 0x70, 0xbb, 0xbe, 0xf1, + 0x4e, 0xe7, 0x79, 0x8a, 0x93, 0x32, 0x74, 0xd4, 0xbf, 0xe8, 0x0c, 0x42, 0x62, 0x63, 0xc1, 0xa9, + 0xdf, 0x84, 0xeb, 0x3d, 0x2b, 0xb4, 0x8e, 0xdc, 0x89, 0x1b, 0xb9, 0x84, 0x25, 0x9b, 0xc6, 0x70, + 0x63, 0x96, 0xac, 0x36, 0xfc, 0x02, 0x1a, 0x76, 0x86, 0xae, 0x36, 0xbe, 0xdf, 0xc9, 0x65, 0xb1, + 0xce, 0xa6, 0x18, 0xcd, 0x00, 0xcf, 0xc0, 0xe9, 0x37, 0x00, 0x3d, 0x74, 0xfd, 0x11, 0xa1, 0x21, + 0x75, 0xfd, 0x28, 0x11, 0xe6, 0xeb, 0x12, 0x5c, 0x9f, 0x21, 0x2b, 0x61, 0x9e, 0x02, 0xa4, 0x7a, + 0xe4, 0xa2, 0x94, 0x6e, 0xd7, 0x37, 0x3e, 0xcb, 0x29, 0xca, 0x15, 0x78, 0x9d, 0x6e, 0x0a, 0x66, + 0xf8, 0x11, 0x3d, 0xc7, 0x19, 0x74, 0xf4, 0x25, 0x54, 0xc6, 0xc4, 0x9a, 0x44, 0xe3, 0x56, 0xf1, + 0x56, 0xe1, 0x76, 0x73, 0xe3, 0xe1, 0x4b, 0xec, 0xb3, 0x2d, 0x80, 0x06, 0x91, 0x15, 0x11, 0xac, + 0x50, 0xd1, 0x1d, 0x40, 0xf2, 0xcb, 0x74, 0x08, 0xb3, 0xa9, 0x1b, 0x72, 0x47, 0x6e, 0x95, 0x6e, + 0x15, 0x6e, 0xd7, 0xf0, 0x35, 0x39, 0xb3, 0x39, 0x9d, 0x68, 0x87, 0xb0, 0x76, 0x41, 0x5a, 0xa4, + 0x41, 0xe9, 0x84, 0x9c, 0x0b, 0x8b, 0xd4, 0x30, 0xff, 0x44, 0x5b, 0x50, 0x3e, 0xb5, 0x26, 0x31, + 0x11, 0x22, 0xd7, 0x37, 0xde, 0x7b, 0x91, 0x7b, 0x28, 0x17, 0x9d, 0xea, 0x01, 0x4b, 0xfe, 0x07, + 0xc5, 0x7b, 0x05, 0xfd, 0x3e, 0xd4, 0x33, 0x72, 0xa3, 0x26, 0xc0, 0x61, 0x7f, 0xd3, 0x18, 0x1a, + 0xbd, 0xa1, 0xb1, 0xa9, 0x2d, 0xa1, 0x55, 0xa8, 0x1d, 0xf6, 0xb7, 0x8d, 0xee, 0xee, 0x70, 0xfb, + 0x89, 0x56, 0x40, 0x75, 0x58, 0x49, 0x06, 0x45, 0xfd, 0x0c, 0x10, 0x26, 0x76, 0x70, 0x4a, 0x28, + 0x77, 0x64, 0x65, 0x55, 0xf4, 0x0a, 0xac, 0x44, 0x16, 0x3b, 0x31, 0x5d, 0x47, 0xc9, 0x5c, 0xe1, + 0xc3, 0x1d, 0x07, 0xed, 0x40, 0x65, 0x6c, 0xf9, 0xce, 0xe4, 0xc5, 0x72, 0xcf, 0xaa, 0x9a, 0x83, + 0x6f, 0x0b, 0x46, 0xac, 0x00, 0xb8, 0x77, 0xcf, 0xec, 0x2c, 0x0d, 0xa0, 0x3f, 0x01, 0x6d, 0x10, + 0x59, 0x34, 0xca, 0x8a, 0x63, 0xc0, 0x32, 0xdf, 0x5f, 0x79, 0xf4, 0x3c, 0x7b, 0xca, 0x93, 0x89, + 0x05, 0xbb, 0xfe, 0xaf, 0x22, 0x5c, 0xcb, 0x60, 0x2b, 0x4f, 0x7d, 0x0c, 0x15, 0x4a, 0x58, 0x3c, + 0x89, 0x04, 0x7c, 0x73, 0xe3, 0xe3, 0x9c, 0xf0, 0x97, 0x90, 0x3a, 0x58, 0xc0, 0x60, 0x05, 0x87, + 0x6e, 0x83, 0x26, 0x39, 0x4c, 0x42, 0x69, 0x40, 0x4d, 0x8f, 0x8d, 0x84, 0xd6, 0x6a, 0xb8, 0x29, + 0xe9, 0x06, 0x27, 0xef, 0xb1, 0x51, 0x46, 0xab, 0xa5, 0x97, 0xd4, 0x2a, 0xb2, 0x40, 0xf3, 0x49, + 0xf4, 0x2c, 0xa0, 0x27, 0x26, 0x57, 0x2d, 0x75, 0x1d, 0xd2, 0x5a, 0x16, 0xa0, 0x1f, 0xe4, 0x04, + 0xed, 0x4b, 0xf6, 0x7d, 0xc5, 0x8d, 0xd7, 0xfc, 0x59, 0x82, 0xfe, 0x36, 0x54, 0xe4, 0x3f, 0xe5, + 0x9e, 0x34, 0x38, 0xec, 0xf5, 0x8c, 0xc1, 0x40, 0x5b, 0x42, 0x35, 0x28, 0x63, 0x63, 0x88, 0xb9, + 0x87, 0xd5, 0xa0, 0xfc, 0xb0, 0x3b, 0xec, 0xee, 0x6a, 0x45, 0xfd, 0x2d, 0x58, 0x7b, 0x6c, 0xb9, + 0x51, 0x1e, 0xe7, 0xd2, 0x03, 0xd0, 0xa6, 0x6b, 0x95, 0x75, 0x76, 0x66, 0xac, 0x93, 0x5f, 0x35, + 0xc6, 0x99, 0x1b, 0x5d, 0xb0, 0x87, 0x06, 0x25, 0x42, 0xa9, 0x32, 0x01, 0xff, 0xd4, 0x9f, 0xc1, + 0xda, 0x20, 0x0a, 0xc2, 0x5c, 0x9e, 0xff, 0x3e, 0xac, 0xf0, 0x1c, 0x15, 0xc4, 0x91, 0x72, 0xfd, + 0x57, 0x3b, 0x32, 0x87, 0x75, 0x92, 0x1c, 0xd6, 0xd9, 0x54, 0x39, 0x0e, 0x27, 0x2b, 0xd1, 0x7f, + 0x41, 0x85, 0xb9, 0x23, 0xdf, 0x9a, 0xa8, 0x68, 0xa1, 0x46, 0x3a, 0xe2, 0x4e, 0x9e, 0x6c, 0xac, + 0x1c, 0xbf, 0x07, 0x68, 0x93, 0xb0, 0x88, 0x06, 0xe7, 0xb9, 0xe4, 0xb9, 0x01, 0xe5, 0xe3, 0x80, + 0xda, 0xf2, 0x20, 0x56, 0xb1, 0x1c, 0xf0, 0x43, 0x35, 0x03, 0xa2, 0xb0, 0xef, 0x00, 0xda, 0xf1, + 0x79, 0x4e, 0xc9, 0x67, 0x88, 0x5f, 0x16, 0xe1, 0xfa, 0xcc, 0x7a, 0x65, 0x8c, 0xc5, 0xcf, 0x21, + 0x0f, 0x4c, 0x31, 0x93, 0xe7, 0x10, 0xed, 0x43, 0x45, 0xae, 0x50, 0x9a, 0xbc, 0x3b, 0x07, 0x90, + 0x4c, 0x53, 0x0a, 0x4e, 0xc1, 0x5c, 0xe9, 0xf4, 0xa5, 0xff, 0xb4, 0xd3, 0x6b, 0xc9, 0xff, 0x60, + 0x2f, 0xd4, 0xdf, 0x77, 0xe0, 0x5a, 0x66, 0xb1, 0x52, 0xde, 0x43, 0x28, 0x33, 0x4e, 0x50, 0xda, + 0x7b, 0x77, 0x4e, 0xed, 0x31, 0x2c, 0xd9, 0xf5, 0xeb, 0x12, 0xdc, 0x38, 0x25, 0x7e, 0x2a, 0x8a, + 0xbe, 0x09, 0xd7, 0x06, 0xc2, 0xb5, 0x72, 0xf9, 0xce, 0xd4, 0x2d, 0x8b, 0x33, 0x6e, 0x79, 0x03, + 0x50, 0x16, 0x45, 0x39, 0xcf, 0x39, 0xac, 0x19, 0x67, 0xc4, 0xce, 0x85, 0xdc, 0x82, 0x15, 0x3b, + 0xf0, 0x3c, 0xcb, 0x77, 0x5a, 0xc5, 0x5b, 0xa5, 0xdb, 0x35, 0x9c, 0x0c, 0xb3, 0xe7, 0xa7, 0x94, + 0xf7, 0xfc, 0xe8, 0xbf, 0x28, 0x80, 0x36, 0xdd, 0x5b, 0x29, 0x92, 0x4b, 0x1f, 0x39, 0x1c, 0x88, + 0xef, 0xdd, 0xc0, 0x6a, 0xa4, 0xe8, 0xc9, 0x11, 0x97, 0x74, 0x42, 0x69, 0x26, 0x84, 0x94, 0x5e, + 0x32, 0x84, 0xe8, 0xff, 0x28, 0x00, 0xba, 0x5c, 0x28, 0xa1, 0x37, 0xa0, 0xc1, 0x88, 0xef, 0x98, + 0x52, 0x8d, 0xd2, 0xc2, 0x55, 0x5c, 0xe7, 0x34, 0xa9, 0x4f, 0x86, 0x10, 0x2c, 0x93, 0x33, 0x62, + 0xab, 0xd3, 0x2a, 0xbe, 0xd1, 0x18, 0x1a, 0xc7, 0xcc, 0x74, 0x59, 0x30, 0xb1, 0xd2, 0x8a, 0xa2, + 0xb9, 0x61, 0x2c, 0x5c, 0xb0, 0x75, 0x1e, 0x0e, 0x76, 0x12, 0x30, 0x5c, 0x3f, 0x66, 0xe9, 0x40, + 0xef, 0x40, 0x3d, 0x33, 0x87, 0xaa, 0xb0, 0xdc, 0xdf, 0xef, 0x1b, 0xda, 0x12, 0x02, 0xa8, 0xf4, + 0xb6, 0xf1, 0xfe, 0xfe, 0x50, 0x46, 0xed, 0x9d, 0xbd, 0xee, 0x96, 0xa1, 0x15, 0xf5, 0xdf, 0x94, + 0x01, 0xa6, 0xe9, 0x13, 0x35, 0xa1, 0x98, 0x5a, 0xba, 0xe8, 0x3a, 0xfc, 0xcf, 0xf8, 0x96, 0x47, + 0x94, 0xf7, 0x88, 0x6f, 0xb4, 0x01, 0x37, 0x3d, 0x36, 0x0a, 0x2d, 0xfb, 0xc4, 0x54, 0x59, 0xcf, + 0x16, 0xcc, 0xe2, 0x5f, 0x35, 0xf0, 0x75, 0x35, 0xa9, 0xa4, 0x96, 0xb8, 0xbb, 0x50, 0x22, 0xfe, + 0x69, 0x6b, 0x59, 0x54, 0x87, 0x0f, 0xe6, 0x4e, 0xeb, 0x1d, 0xc3, 0x3f, 0x95, 0xd5, 0x20, 0x87, + 0x41, 0x7d, 0xa8, 0x51, 0xc2, 0x82, 0x98, 0xda, 0x84, 0xb5, 0xca, 0x73, 0x1d, 0x32, 0x9c, 0xf0, + 0xe1, 0x29, 0x04, 0xda, 0x84, 0x8a, 0x17, 0xc4, 0x7e, 0xc4, 0x5a, 0x15, 0x21, 0xe0, 0x3b, 0x39, + 0xc1, 0xf6, 0x38, 0x13, 0x56, 0xbc, 0x68, 0x0b, 0x56, 0x1c, 0x72, 0xea, 0x72, 0x99, 0x56, 0x04, + 0xcc, 0x9d, 0xbc, 0xf6, 0x15, 0x5c, 0x38, 0xe1, 0xe6, 0x4a, 0x8f, 0x19, 0xa1, 0xad, 0xaa, 0x54, + 0x3a, 0xff, 0x46, 0xaf, 0x41, 0xcd, 0x9a, 0x4c, 0x02, 0xdb, 0x74, 0x5c, 0xda, 0xaa, 0x89, 0x89, + 0xaa, 0x20, 0x6c, 0xba, 0x14, 0xbd, 0x0e, 0x75, 0x79, 0x32, 0xcc, 0xd0, 0x8a, 0xc6, 0x2d, 0x10, + 0xd3, 0x20, 0x49, 0x07, 0x56, 0x34, 0x56, 0x0b, 0x08, 0xa5, 0x72, 0x41, 0x3d, 0x5d, 0x40, 0x28, + 0x15, 0x0b, 0xfe, 0x17, 0xd6, 0xc4, 0x31, 0x1f, 0xd1, 0x20, 0x0e, 0x4d, 0x61, 0xf2, 0x86, 0x58, + 0xb4, 0xca, 0xc9, 0x5b, 0x9c, 0xda, 0xe7, 0xb6, 0x7f, 0x15, 0xaa, 0x4f, 0x83, 0x23, 0xb9, 0x60, + 0x55, 0x2c, 0x58, 0x79, 0x1a, 0x1c, 0x25, 0x53, 0x52, 0x42, 0xd7, 0x69, 0x35, 0xe5, 0x94, 0x18, + 0xef, 0x38, 0xed, 0x0f, 0xa0, 0x9a, 0x18, 0xf0, 0x8a, 0x02, 0xf9, 0x46, 0xb6, 0x40, 0xae, 0x65, + 0xab, 0xdd, 0xbf, 0x16, 0xa0, 0x96, 0x1a, 0x0c, 0x7d, 0x0e, 0xab, 0xd4, 0x7a, 0x66, 0x4e, 0x2d, + 0x2f, 0xc3, 0xeb, 0xfb, 0x79, 0x2d, 0x6f, 0x3d, 0x9b, 0x1a, 0xbf, 0x41, 0x33, 0x23, 0xf4, 0x25, + 0xac, 0x4d, 0x5c, 0x3f, 0x3e, 0xcb, 0x60, 0xcb, 0x7c, 0xf5, 0x7f, 0x39, 0xb1, 0x77, 0x39, 0xf7, + 0x14, 0xbd, 0x39, 0x99, 0x19, 0xeb, 0x7f, 0x2c, 0x40, 0x23, 0xbb, 0x3d, 0x57, 0x82, 0x1d, 0xc6, + 0xe2, 0x0f, 0x94, 0x30, 0xff, 0xe4, 0x21, 0xcd, 0x23, 0x5e, 0x40, 0xcf, 0xc5, 0xce, 0x25, 0xac, + 0x46, 0xdc, 0x17, 0x1c, 0x97, 0x9d, 0x88, 0xb3, 0x55, 0xc2, 0xe2, 0x9b, 0xd3, 0xdc, 0x20, 0x64, + 0xa2, 0xda, 0x2b, 0x61, 0xf1, 0x8d, 0x30, 0x54, 0x55, 0x22, 0xe3, 0x27, 0xa2, 0x34, 0x7f, 0x42, + 0x4c, 0x84, 0xc3, 0x29, 0x8e, 0xfe, 0xeb, 0x22, 0xac, 0x5d, 0x98, 0xe5, 0x72, 0x4a, 0x37, 0x4d, + 0xd2, 0x81, 0x1c, 0x71, 0x99, 0x6c, 0xd7, 0x49, 0x6a, 0x2e, 0xf1, 0x2d, 0x82, 0x49, 0xa8, 0xea, + 0xa1, 0xa2, 0x1b, 0x72, 0x43, 0x7b, 0x47, 0x6e, 0x24, 0x05, 0x2f, 0x63, 0x39, 0x40, 0x4f, 0xa0, + 0x49, 0x09, 0x23, 0xf4, 0x94, 0x38, 0x66, 0x18, 0xd0, 0x28, 0x91, 0x7f, 0x63, 0x3e, 0xf9, 0x0f, + 0x02, 0x1a, 0xe1, 0xd5, 0x04, 0x89, 0x8f, 0x18, 0x7a, 0x0c, 0xab, 0xce, 0xb9, 0x6f, 0x79, 0xae, + 0xad, 0x90, 0x2b, 0x0b, 0x23, 0x37, 0x14, 0x90, 0x00, 0xe6, 0xd7, 0xb0, 0xcc, 0x24, 0xff, 0x63, + 0x13, 0xeb, 0x88, 0x4c, 0x94, 0x4e, 0xe4, 0x60, 0xd6, 0xaf, 0xcb, 0xca, 0xaf, 0xf5, 0xdf, 0x15, + 0xa1, 0x39, 0xeb, 0x2e, 0xe8, 0xbf, 0x01, 0xec, 0x30, 0x36, 0x43, 0x42, 0xdd, 0xc0, 0x51, 0x4e, + 0x51, 0xb3, 0xc3, 0xf8, 0x40, 0x10, 0xf8, 0xd1, 0xe7, 0xd3, 0x5f, 0xc5, 0x41, 0x64, 0x29, 0xef, + 0xa8, 0xda, 0x61, 0xfc, 0x2d, 0x3e, 0x4e, 0x78, 0xc5, 0xdd, 0x91, 0x29, 0x2f, 0xe1, 0xcb, 0x07, + 0x82, 0x80, 0xde, 0x01, 0x24, 0x1d, 0xc9, 0x9c, 0xb8, 0x9e, 0x1b, 0x99, 0x47, 0xe7, 0xfc, 0x92, + 0x2e, 0x1d, 0x47, 0x93, 0x33, 0xbb, 0x7c, 0xe2, 0x53, 0x4e, 0x47, 0x3a, 0xac, 0x06, 0x81, 0x67, + 0x32, 0x3b, 0xa0, 0xc4, 0xb4, 0x9c, 0xa7, 0x22, 0xb6, 0x96, 0x70, 0x3d, 0x08, 0xbc, 0x01, 0xa7, + 0x75, 0x9d, 0xa7, 0x3c, 0x94, 0xd8, 0x61, 0xcc, 0x48, 0x64, 0xf2, 0x9f, 0x56, 0x45, 0x86, 0x12, + 0x49, 0xea, 0x85, 0x31, 0xcb, 0x2c, 0xf0, 0x88, 0xc7, 0x43, 0x61, 0x66, 0xc1, 0x1e, 0xf1, 0xf8, + 0x2e, 0x8d, 0x03, 0x42, 0x6d, 0xe2, 0x47, 0x43, 0xd7, 0x3e, 0x61, 0x22, 0xcc, 0x15, 0xf0, 0x0c, + 0x4d, 0xff, 0x02, 0xca, 0x22, 0xb8, 0xf2, 0x3f, 0x2f, 0x02, 0x93, 0x88, 0x5b, 0x52, 0xbd, 0x55, + 0x4e, 0x10, 0x51, 0xeb, 0x35, 0xa8, 0x8d, 0x03, 0xa6, 0xa2, 0x9e, 0xf4, 0xbc, 0x2a, 0x27, 0x88, + 0xc9, 0x36, 0x54, 0x29, 0xb1, 0x9c, 0xc0, 0x9f, 0x9c, 0x0b, 0xbd, 0x54, 0x71, 0x3a, 0xd6, 0xbf, + 0x82, 0x8a, 0x0c, 0xba, 0x2f, 0x81, 0x7f, 0x07, 0x90, 0x2d, 0xc3, 0x65, 0x48, 0xa8, 0xe7, 0x32, + 0xe6, 0x06, 0x3e, 0x4b, 0xde, 0x0a, 0xe4, 0xcc, 0xc1, 0x74, 0x42, 0xff, 0x4b, 0x41, 0x26, 0x5a, + 0x79, 0x8b, 0xe3, 0xa5, 0x8a, 0xca, 0x9a, 0x0b, 0x5f, 0x75, 0x15, 0x40, 0x52, 0x6e, 0x12, 0xf5, + 0x26, 0x32, 0x6f, 0xb9, 0x49, 0x64, 0xb9, 0x49, 0x78, 0x6d, 0xa3, 0xf2, 0xb9, 0x84, 0x93, 0xe9, + 0xbc, 0xee, 0xa4, 0x75, 0x38, 0xd1, 0xff, 0x59, 0x48, 0x23, 0x42, 0x52, 0x2f, 0xa3, 0x2f, 0xa1, + 0xca, 0x0f, 0x97, 0xe9, 0x59, 0xa1, 0x7a, 0xfd, 0xe9, 0x2d, 0x56, 0x8a, 0x77, 0xf8, 0x59, 0xda, + 0xb3, 0x42, 0x99, 0xe8, 0x57, 0x42, 0x39, 0xe2, 0x91, 0xc5, 0x72, 0xa6, 0x91, 0x85, 0x7f, 0xa3, + 0x37, 0xa1, 0x69, 0xc5, 0x51, 0x60, 0x5a, 0xce, 0x29, 0xa1, 0x91, 0xcb, 0x88, 0xb2, 0xf0, 0x2a, + 0xa7, 0x76, 0x13, 0x62, 0xfb, 0x01, 0x34, 0xb2, 0x98, 0x2f, 0xca, 0x3d, 0xe5, 0x6c, 0xee, 0xf9, + 0x1e, 0xc0, 0xb4, 0x2c, 0xe4, 0x9e, 0x40, 0xce, 0xdc, 0xc8, 0xb4, 0x03, 0x47, 0x46, 0xbe, 0x32, + 0xae, 0x72, 0x42, 0x2f, 0x70, 0xc8, 0x85, 0x22, 0xbb, 0x9c, 0x14, 0xd9, 0xfc, 0x6c, 0xf2, 0xe3, + 0x74, 0xe2, 0x4e, 0x26, 0xc4, 0x51, 0x12, 0xd6, 0x82, 0xc0, 0x7b, 0x24, 0x08, 0xfa, 0xd7, 0x45, + 0xe9, 0x11, 0xf2, 0x8a, 0x93, 0xab, 0xf4, 0x4a, 0x4d, 0x5d, 0x7a, 0x39, 0x53, 0xdf, 0x07, 0x60, + 0x91, 0x45, 0x23, 0xe2, 0x98, 0x56, 0xa4, 0x5e, 0x0d, 0xda, 0x97, 0xaa, 0xf4, 0x61, 0xf2, 0x52, + 0x8b, 0x6b, 0x6a, 0x75, 0x37, 0x42, 0x1f, 0x42, 0xc3, 0x0e, 0xbc, 0x70, 0x42, 0x14, 0x73, 0xf9, + 0x85, 0xcc, 0xf5, 0x74, 0x7d, 0x37, 0xca, 0x94, 0xe8, 0x95, 0x97, 0x2d, 0xd1, 0xff, 0x54, 0x90, + 0x37, 0xb5, 0xec, 0x45, 0x11, 0x8d, 0xae, 0x78, 0x8d, 0xdc, 0x5a, 0xf0, 0xd6, 0xf9, 0x4d, 0x4f, + 0x91, 0xed, 0x0f, 0xf3, 0xbc, 0xfd, 0x3d, 0xbf, 0xb4, 0xf9, 0x73, 0x09, 0x6a, 0xe9, 0x85, 0xef, + 0x92, 0xed, 0xef, 0x41, 0x2d, 0x7d, 0x26, 0x57, 0xa5, 0xc8, 0x37, 0x9a, 0x27, 0x5d, 0x8c, 0x8e, + 0x01, 0x59, 0xa3, 0x51, 0x5a, 0xc8, 0x98, 0x31, 0xb3, 0x46, 0xc9, 0x15, 0xf9, 0xde, 0x1c, 0x7a, + 0x48, 0xb2, 0xd3, 0x21, 0xe7, 0xc7, 0x9a, 0x35, 0x1a, 0xcd, 0x50, 0xd0, 0xf7, 0xe1, 0xe6, 0xec, + 0x1e, 0xe6, 0xd1, 0xb9, 0x19, 0xba, 0x8e, 0x2a, 0xf1, 0xb7, 0xe7, 0xbd, 0xf3, 0x76, 0x66, 0xe0, + 0x3f, 0x3d, 0x3f, 0x70, 0x1d, 0xa9, 0x73, 0x44, 0x2f, 0x4d, 0xb4, 0x7f, 0x08, 0xaf, 0x3c, 0x67, + 0xf9, 0x15, 0x36, 0xe8, 0xcf, 0xbe, 0xbf, 0x2e, 0xae, 0x84, 0x8c, 0xf5, 0x7e, 0x5b, 0x90, 0x57, + 0xf3, 0x59, 0x9d, 0x74, 0xa7, 0x55, 0x5d, 0x7d, 0x63, 0x3d, 0xe7, 0x3e, 0xbd, 0x83, 0x43, 0x09, + 0x2f, 0xca, 0xc0, 0xcf, 0x66, 0xca, 0xc0, 0xfc, 0xa5, 0xca, 0x9e, 0x60, 0x92, 0x40, 0x0a, 0x41, + 0xff, 0x43, 0x09, 0xaa, 0x09, 0xba, 0xb8, 0x01, 0x9c, 0xb3, 0x88, 0x78, 0xa6, 0x97, 0x84, 0xb0, + 0x02, 0x06, 0x49, 0xda, 0xe3, 0x41, 0xec, 0x35, 0xa8, 0xf1, 0x8b, 0x86, 0x9c, 0x2e, 0x8a, 0xe9, + 0x2a, 0x27, 0x88, 0xc9, 0xd7, 0xa1, 0x1e, 0x05, 0x91, 0x35, 0x31, 0x23, 0x91, 0xb1, 0x4b, 0x92, + 0x5b, 0x90, 0x44, 0xbe, 0x46, 0x6f, 0xc3, 0xb5, 0x68, 0x4c, 0x83, 0x28, 0x9a, 0xf0, 0x2a, 0x4e, + 0xd4, 0x2d, 0xb2, 0xcc, 0x58, 0xc6, 0x5a, 0x3a, 0x21, 0xeb, 0x19, 0xc6, 0xa3, 0xf7, 0x74, 0x31, + 0x77, 0x5d, 0x11, 0x44, 0x96, 0xf1, 0x6a, 0x4a, 0xe5, 0xae, 0x8d, 0x5a, 0xb0, 0x12, 0xca, 0x9a, + 0x40, 0xc4, 0x8a, 0x02, 0x4e, 0x86, 0xc8, 0x84, 0x35, 0x8f, 0x58, 0x2c, 0xa6, 0xc4, 0x31, 0x8f, + 0x5d, 0x32, 0x71, 0xe4, 0x8d, 0xab, 0x99, 0xbb, 0xe6, 0x4d, 0xd4, 0xd2, 0x79, 0x28, 0xb8, 0x71, + 0x33, 0x81, 0x93, 0x63, 0x5e, 0x1f, 0xc8, 0x2f, 0xb4, 0x06, 0xf5, 0xc1, 0x93, 0xc1, 0xd0, 0xd8, + 0x33, 0xf7, 0xf6, 0x37, 0x0d, 0xf5, 0xc4, 0x3e, 0x30, 0xb0, 0x1c, 0x16, 0xf8, 0xfc, 0x70, 0x7f, + 0xd8, 0xdd, 0x35, 0x87, 0x3b, 0xbd, 0x47, 0x03, 0xad, 0x88, 0x6e, 0xc2, 0xb5, 0xe1, 0x36, 0xde, + 0x1f, 0x0e, 0x77, 0x8d, 0x4d, 0xf3, 0xc0, 0xc0, 0x3b, 0xfb, 0x9b, 0x03, 0xad, 0x84, 0x10, 0x34, + 0xa7, 0xe4, 0xe1, 0xce, 0x9e, 0xa1, 0x2d, 0xa3, 0x3a, 0xac, 0x1c, 0x18, 0xb8, 0x67, 0xf4, 0x87, + 0x5a, 0x59, 0xff, 0x5b, 0x11, 0xea, 0x19, 0x2b, 0x72, 0x47, 0xa6, 0x4c, 0xde, 0x71, 0x96, 0x31, + 0xff, 0xe4, 0xc1, 0xc4, 0xb6, 0xec, 0xb1, 0xb4, 0xce, 0x32, 0x96, 0x03, 0x6e, 0x37, 0xcf, 0x3a, + 0xcb, 0x9c, 0xf3, 0x65, 0x5c, 0xf5, 0xac, 0x33, 0x09, 0xf2, 0x06, 0x34, 0x4e, 0x08, 0xf5, 0xc9, + 0x44, 0xcd, 0x4b, 0x8b, 0xd4, 0x25, 0x4d, 0x2e, 0xb9, 0x0d, 0x9a, 0x5a, 0x32, 0x85, 0x91, 0xe6, + 0x68, 0x4a, 0xfa, 0x5e, 0x02, 0x76, 0x74, 0x59, 0xeb, 0x15, 0xa1, 0xf5, 0xfb, 0xf3, 0x3b, 0xe9, + 0xf3, 0x14, 0x3f, 0x48, 0x15, 0xbf, 0x02, 0x25, 0x9c, 0xbc, 0x36, 0xf7, 0xba, 0xbd, 0x6d, 0xae, + 0xec, 0x55, 0xa8, 0xed, 0x75, 0x3f, 0x37, 0x0f, 0x07, 0xe2, 0xed, 0x02, 0x69, 0xd0, 0x78, 0x64, + 0xe0, 0xbe, 0xb1, 0xab, 0x28, 0x25, 0x74, 0x03, 0x34, 0x45, 0x99, 0xae, 0x5b, 0xd6, 0x7f, 0x5f, + 0x84, 0x35, 0x19, 0xd7, 0xd3, 0xe7, 0xb4, 0xe7, 0xbf, 0x6b, 0x2d, 0x1e, 0x7a, 0x5b, 0xb0, 0xe2, + 0x11, 0x96, 0xda, 0xa1, 0x86, 0x93, 0x21, 0x72, 0xa1, 0x6e, 0xf9, 0x7e, 0x10, 0x89, 0x37, 0x19, + 0xa6, 0x42, 0xe4, 0xd6, 0x5c, 0xaf, 0x3f, 0xa9, 0xe4, 0x9d, 0xee, 0x14, 0x49, 0x46, 0xc8, 0x2c, + 0x76, 0xfb, 0x23, 0xd0, 0x2e, 0x2e, 0x98, 0x27, 0x2f, 0xbd, 0xf5, 0xde, 0x34, 0x2d, 0x11, 0xee, + 0xa0, 0x87, 0xfd, 0x47, 0xfd, 0xfd, 0xc7, 0x7d, 0x6d, 0x89, 0x0f, 0xf0, 0x61, 0xbf, 0xbf, 0xd3, + 0xdf, 0xd2, 0x0a, 0x08, 0xa0, 0x62, 0x7c, 0xbe, 0x33, 0x34, 0x36, 0xb5, 0xe2, 0xc6, 0xdf, 0x57, + 0xa1, 0x22, 0x85, 0x44, 0xbf, 0x52, 0x29, 0x39, 0xdb, 0x26, 0x45, 0x1f, 0xcd, 0x5d, 0xda, 0xce, + 0xb4, 0x5e, 0xdb, 0x1f, 0x2f, 0xcc, 0xaf, 0x9e, 0x35, 0x97, 0xd0, 0xcf, 0x0b, 0xd0, 0x98, 0x79, + 0xc7, 0xcb, 0xfb, 0x04, 0x75, 0x45, 0x57, 0xb6, 0xfd, 0xff, 0x0b, 0xf1, 0xa6, 0xb2, 0xfc, 0xac, + 0x00, 0xf5, 0x4c, 0x3f, 0x12, 0xdd, 0x5f, 0xa4, 0x87, 0x29, 0x25, 0x79, 0xb0, 0x78, 0xfb, 0x53, + 0x5f, 0x7a, 0xb7, 0x80, 0x7e, 0x5a, 0x80, 0x7a, 0xa6, 0x33, 0x97, 0x5b, 0x94, 0xcb, 0x7d, 0xc4, + 0xdc, 0xa2, 0x5c, 0xd5, 0x08, 0x5c, 0x42, 0x3f, 0x2a, 0x40, 0x2d, 0xed, 0xb2, 0xa1, 0xbb, 0xf3, + 0xf7, 0xe5, 0xa4, 0x10, 0xf7, 0x16, 0x6d, 0xe8, 0xe9, 0x4b, 0xe8, 0x07, 0x50, 0x4d, 0x5a, 0x52, + 0x28, 0x6f, 0x1a, 0xb9, 0xd0, 0xef, 0x6a, 0xdf, 0x9d, 0x9b, 0x2f, 0xbb, 0x7d, 0xd2, 0x27, 0xca, + 0xbd, 0xfd, 0x85, 0x8e, 0x56, 0xfb, 0xee, 0xdc, 0x7c, 0xe9, 0xf6, 0xdc, 0x13, 0x32, 0xed, 0xa4, + 0xdc, 0x9e, 0x70, 0xb9, 0x8f, 0x95, 0xdb, 0x13, 0xae, 0xea, 0x5e, 0x49, 0x41, 0x32, 0x0d, 0xa9, + 0xdc, 0x82, 0x5c, 0x6e, 0x7a, 0xe5, 0x16, 0xe4, 0x8a, 0xfe, 0x97, 0x72, 0xc9, 0x69, 0x81, 0x7e, + 0x77, 0xee, 0x1e, 0xce, 0x9c, 0x2e, 0x79, 0xa9, 0x8b, 0xa4, 0x2f, 0xa1, 0x1f, 0xab, 0x27, 0x03, + 0xd9, 0x00, 0x42, 0xf3, 0x40, 0xcd, 0xf4, 0x8c, 0xda, 0x1f, 0x2c, 0x96, 0x6a, 0x44, 0x8c, 0xf8, + 0x49, 0x01, 0x60, 0xda, 0x2a, 0xca, 0x2d, 0xc4, 0xa5, 0x1e, 0x55, 0xfb, 0xfe, 0x02, 0x9c, 0xd9, + 0xe3, 0x91, 0x74, 0x87, 0x72, 0x1f, 0x8f, 0x0b, 0xad, 0xac, 0xdc, 0xc7, 0xe3, 0x62, 0x1b, 0x4a, + 0x5f, 0xfa, 0x74, 0xe5, 0xdb, 0x65, 0x99, 0xfb, 0x2b, 0xe2, 0xe7, 0xfd, 0x7f, 0x07, 0x00, 0x00, + 0xff, 0xff, 0xf3, 0x57, 0x35, 0x86, 0x41, 0x25, 0x00, 0x00, } diff --git a/plugins/drivers/proto/driver.proto b/plugins/drivers/proto/driver.proto index 69e4df81f..5abc10a42 100644 --- a/plugins/drivers/proto/driver.proto +++ b/plugins/drivers/proto/driver.proto @@ -6,6 +6,7 @@ import "google/protobuf/duration.proto"; import "google/protobuf/timestamp.proto"; import "github.com/hashicorp/nomad/plugins/shared/hclspec/hcl_spec.proto"; +import "github.com/hashicorp/nomad/plugins/shared/structs/proto/attribute.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. @@ -97,7 +98,7 @@ message FingerprintResponse { // Attributes are key/value pairs that annotate the nomad client and can be // used in scheduling contraints and affinities. - map attributes = 1; + map attributes = 1; enum HealthState { UNDETECTED = 0; diff --git a/plugins/drivers/server.go b/plugins/drivers/server.go index 3474854d6..deff26e12 100644 --- a/plugins/drivers/server.go +++ b/plugins/drivers/server.go @@ -10,6 +10,7 @@ import ( cstructs "github.com/hashicorp/nomad/client/structs" "github.com/hashicorp/nomad/nomad/structs" "github.com/hashicorp/nomad/plugins/drivers/proto" + dstructs "github.com/hashicorp/nomad/plugins/shared/structs" sproto "github.com/hashicorp/nomad/plugins/shared/structs/proto" context "golang.org/x/net/context" "google.golang.org/grpc/codes" @@ -76,7 +77,7 @@ func (b *driverPluginServer) Fingerprint(req *proto.FingerprintRequest, srv prot return nil } resp := &proto.FingerprintResponse{ - Attributes: f.Attributes, + Attributes: dstructs.ConvertStructAttributeMap(f.Attributes), Health: healthStateToProto(f.Health), HealthDescription: f.HealthDescription, } diff --git a/plugins/shared/hclspec/hcl_spec.pb.go b/plugins/shared/hclspec/hcl_spec.pb.go index 6bbc916d6..e02b7ac7b 100644 --- a/plugins/shared/hclspec/hcl_spec.pb.go +++ b/plugins/shared/hclspec/hcl_spec.pb.go @@ -94,7 +94,7 @@ func (m *Spec) Reset() { *m = Spec{} } func (m *Spec) String() string { return proto.CompactTextString(m) } func (*Spec) ProtoMessage() {} func (*Spec) Descriptor() ([]byte, []int) { - return fileDescriptor_hcl_spec_8d078e4df12ae415, []int{0} + return fileDescriptor_hcl_spec_45ead239ae3df7c4, []int{0} } func (m *Spec) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Spec.Unmarshal(m, b) @@ -522,7 +522,7 @@ func (m *Attr) Reset() { *m = Attr{} } func (m *Attr) String() string { return proto.CompactTextString(m) } func (*Attr) ProtoMessage() {} func (*Attr) Descriptor() ([]byte, []int) { - return fileDescriptor_hcl_spec_8d078e4df12ae415, []int{1} + return fileDescriptor_hcl_spec_45ead239ae3df7c4, []int{1} } func (m *Attr) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Attr.Unmarshal(m, b) @@ -611,7 +611,7 @@ func (m *Block) Reset() { *m = Block{} } func (m *Block) String() string { return proto.CompactTextString(m) } func (*Block) ProtoMessage() {} func (*Block) Descriptor() ([]byte, []int) { - return fileDescriptor_hcl_spec_8d078e4df12ae415, []int{2} + return fileDescriptor_hcl_spec_45ead239ae3df7c4, []int{2} } func (m *Block) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Block.Unmarshal(m, b) @@ -697,7 +697,7 @@ func (m *BlockAttrs) Reset() { *m = BlockAttrs{} } func (m *BlockAttrs) String() string { return proto.CompactTextString(m) } func (*BlockAttrs) ProtoMessage() {} func (*BlockAttrs) Descriptor() ([]byte, []int) { - return fileDescriptor_hcl_spec_8d078e4df12ae415, []int{3} + return fileDescriptor_hcl_spec_45ead239ae3df7c4, []int{3} } func (m *BlockAttrs) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlockAttrs.Unmarshal(m, b) @@ -792,7 +792,7 @@ func (m *BlockList) Reset() { *m = BlockList{} } func (m *BlockList) String() string { return proto.CompactTextString(m) } func (*BlockList) ProtoMessage() {} func (*BlockList) Descriptor() ([]byte, []int) { - return fileDescriptor_hcl_spec_8d078e4df12ae415, []int{4} + return fileDescriptor_hcl_spec_45ead239ae3df7c4, []int{4} } func (m *BlockList) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlockList.Unmarshal(m, b) @@ -875,7 +875,7 @@ func (m *BlockSet) Reset() { *m = BlockSet{} } func (m *BlockSet) String() string { return proto.CompactTextString(m) } func (*BlockSet) ProtoMessage() {} func (*BlockSet) Descriptor() ([]byte, []int) { - return fileDescriptor_hcl_spec_8d078e4df12ae415, []int{5} + return fileDescriptor_hcl_spec_45ead239ae3df7c4, []int{5} } func (m *BlockSet) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlockSet.Unmarshal(m, b) @@ -974,7 +974,7 @@ func (m *BlockMap) Reset() { *m = BlockMap{} } func (m *BlockMap) String() string { return proto.CompactTextString(m) } func (*BlockMap) ProtoMessage() {} func (*BlockMap) Descriptor() ([]byte, []int) { - return fileDescriptor_hcl_spec_8d078e4df12ae415, []int{6} + return fileDescriptor_hcl_spec_45ead239ae3df7c4, []int{6} } func (m *BlockMap) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_BlockMap.Unmarshal(m, b) @@ -1044,7 +1044,7 @@ func (m *Literal) Reset() { *m = Literal{} } func (m *Literal) String() string { return proto.CompactTextString(m) } func (*Literal) ProtoMessage() {} func (*Literal) Descriptor() ([]byte, []int) { - return fileDescriptor_hcl_spec_8d078e4df12ae415, []int{7} + return fileDescriptor_hcl_spec_45ead239ae3df7c4, []int{7} } func (m *Literal) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Literal.Unmarshal(m, b) @@ -1108,7 +1108,7 @@ func (m *Default) Reset() { *m = Default{} } func (m *Default) String() string { return proto.CompactTextString(m) } func (*Default) ProtoMessage() {} func (*Default) Descriptor() ([]byte, []int) { - return fileDescriptor_hcl_spec_8d078e4df12ae415, []int{8} + return fileDescriptor_hcl_spec_45ead239ae3df7c4, []int{8} } func (m *Default) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Default.Unmarshal(m, b) @@ -1182,7 +1182,7 @@ func (m *Object) Reset() { *m = Object{} } func (m *Object) String() string { return proto.CompactTextString(m) } func (*Object) ProtoMessage() {} func (*Object) Descriptor() ([]byte, []int) { - return fileDescriptor_hcl_spec_8d078e4df12ae415, []int{9} + return fileDescriptor_hcl_spec_45ead239ae3df7c4, []int{9} } func (m *Object) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Object.Unmarshal(m, b) @@ -1238,7 +1238,7 @@ func (m *Array) Reset() { *m = Array{} } func (m *Array) String() string { return proto.CompactTextString(m) } func (*Array) ProtoMessage() {} func (*Array) Descriptor() ([]byte, []int) { - return fileDescriptor_hcl_spec_8d078e4df12ae415, []int{10} + return fileDescriptor_hcl_spec_45ead239ae3df7c4, []int{10} } func (m *Array) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Array.Unmarshal(m, b) @@ -1281,10 +1281,10 @@ func init() { } func init() { - proto.RegisterFile("plugins/shared/hclspec/hcl_spec.proto", fileDescriptor_hcl_spec_8d078e4df12ae415) + proto.RegisterFile("plugins/shared/hclspec/hcl_spec.proto", fileDescriptor_hcl_spec_45ead239ae3df7c4) } -var fileDescriptor_hcl_spec_8d078e4df12ae415 = []byte{ +var fileDescriptor_hcl_spec_45ead239ae3df7c4 = []byte{ // 624 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x96, 0x4d, 0x6f, 0xd3, 0x4c, 0x10, 0xc7, 0xe3, 0xc4, 0xaf, 0xd3, 0xc3, 0xf3, 0x68, 0x85, 0x90, 0x55, 0x0e, 0x54, 0x96, 0x40, diff --git a/plugins/shared/structs/proto/attribute.pb.go b/plugins/shared/structs/proto/attribute.pb.go index eaa0fca68..fa61b0cc1 100644 --- a/plugins/shared/structs/proto/attribute.pb.go +++ b/plugins/shared/structs/proto/attribute.pb.go @@ -38,7 +38,7 @@ func (m *Attribute) Reset() { *m = Attribute{} } func (m *Attribute) String() string { return proto.CompactTextString(m) } func (*Attribute) ProtoMessage() {} func (*Attribute) Descriptor() ([]byte, []int) { - return fileDescriptor_attribute_aa187fb710a98f5a, []int{0} + return fileDescriptor_attribute_47573829d12e3945, []int{0} } func (m *Attribute) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_Attribute.Unmarshal(m, b) @@ -230,10 +230,10 @@ func init() { } func init() { - proto.RegisterFile("plugins/shared/structs/proto/attribute.proto", fileDescriptor_attribute_aa187fb710a98f5a) + proto.RegisterFile("plugins/shared/structs/proto/attribute.proto", fileDescriptor_attribute_47573829d12e3945) } -var fileDescriptor_attribute_aa187fb710a98f5a = []byte{ +var fileDescriptor_attribute_47573829d12e3945 = []byte{ // 218 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x34, 0x8f, 0xb1, 0x4e, 0xc3, 0x30, 0x10, 0x40, 0x63, 0xda, 0x34, 0xc9, 0x8d, 0x99, 0x8a, 0x10, 0x22, 0x62, 0x40, 0x19, 0x90, 0x33, diff --git a/plugins/shared/structs/proto/recoverable_error.pb.go b/plugins/shared/structs/proto/recoverable_error.pb.go index fdaf7973e..236c50dfd 100644 --- a/plugins/shared/structs/proto/recoverable_error.pb.go +++ b/plugins/shared/structs/proto/recoverable_error.pb.go @@ -31,7 +31,7 @@ func (m *RecoverableError) Reset() { *m = RecoverableError{} } func (m *RecoverableError) String() string { return proto.CompactTextString(m) } func (*RecoverableError) ProtoMessage() {} func (*RecoverableError) Descriptor() ([]byte, []int) { - return fileDescriptor_recoverable_error_f746254fd69675b0, []int{0} + return fileDescriptor_recoverable_error_8c5d7f86073ca00c, []int{0} } func (m *RecoverableError) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_RecoverableError.Unmarshal(m, b) @@ -63,10 +63,10 @@ func init() { } func init() { - proto.RegisterFile("plugins/shared/structs/proto/recoverable_error.proto", fileDescriptor_recoverable_error_f746254fd69675b0) + proto.RegisterFile("plugins/shared/structs/proto/recoverable_error.proto", fileDescriptor_recoverable_error_8c5d7f86073ca00c) } -var fileDescriptor_recoverable_error_f746254fd69675b0 = []byte{ +var fileDescriptor_recoverable_error_8c5d7f86073ca00c = []byte{ // 138 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x32, 0x29, 0xc8, 0x29, 0x4d, 0xcf, 0xcc, 0x2b, 0xd6, 0x2f, 0xce, 0x48, 0x2c, 0x4a, 0x4d, 0xd1, 0x2f, 0x2e, 0x29, 0x2a, 0x4d, diff --git a/plugins/shared/structs/proto/stats.pb.go b/plugins/shared/structs/proto/stats.pb.go index 38267ebef..51ef147fa 100644 --- a/plugins/shared/structs/proto/stats.pb.go +++ b/plugins/shared/structs/proto/stats.pb.go @@ -35,7 +35,7 @@ func (m *StatObject) Reset() { *m = StatObject{} } func (m *StatObject) String() string { return proto.CompactTextString(m) } func (*StatObject) ProtoMessage() {} func (*StatObject) Descriptor() ([]byte, []int) { - return fileDescriptor_stats_73a5e405c9cf442c, []int{0} + return fileDescriptor_stats_9457a07d62f0d5fa, []int{0} } func (m *StatObject) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StatObject.Unmarshal(m, b) @@ -100,7 +100,7 @@ func (m *StatValue) Reset() { *m = StatValue{} } func (m *StatValue) String() string { return proto.CompactTextString(m) } func (*StatValue) ProtoMessage() {} func (*StatValue) Descriptor() ([]byte, []int) { - return fileDescriptor_stats_73a5e405c9cf442c, []int{1} + return fileDescriptor_stats_9457a07d62f0d5fa, []int{1} } func (m *StatValue) XXX_Unmarshal(b []byte) error { return xxx_messageInfo_StatValue.Unmarshal(m, b) @@ -184,10 +184,10 @@ func init() { } func init() { - proto.RegisterFile("plugins/shared/structs/proto/stats.proto", fileDescriptor_stats_73a5e405c9cf442c) + proto.RegisterFile("plugins/shared/structs/proto/stats.proto", fileDescriptor_stats_9457a07d62f0d5fa) } -var fileDescriptor_stats_73a5e405c9cf442c = []byte{ +var fileDescriptor_stats_9457a07d62f0d5fa = []byte{ // 444 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0xd2, 0xdf, 0x6a, 0x13, 0x41, 0x14, 0x06, 0x70, 0x36, 0xdb, 0x24, 0xcd, 0xc9, 0x45, 0xed, 0x14, 0x61, 0x89, 0x22, 0xa1, 0x17, From d36ba880a38b8e5c04fdf56933519cf377d65e19 Mon Sep 17 00:00:00 2001 From: Preetha Appan Date: Mon, 26 Nov 2018 14:44:39 -0600 Subject: [PATCH 2/5] Fix docker driver to use new fingerprint typed attributes --- drivers/docker/fingerprint.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/drivers/docker/fingerprint.go b/drivers/docker/fingerprint.go index 9c1db620c..85ca9bd5f 100644 --- a/drivers/docker/fingerprint.go +++ b/drivers/docker/fingerprint.go @@ -5,6 +5,7 @@ import ( "time" "github.com/hashicorp/nomad/plugins/drivers" + pstructs "github.com/hashicorp/nomad/plugins/shared/structs" ) func (d *Driver) Fingerprint(ctx context.Context) (<-chan *drivers.Fingerprint, error) { @@ -31,7 +32,7 @@ func (d *Driver) handleFingerprint(ctx context.Context, ch chan *drivers.Fingerp func (d *Driver) buildFingerprint() *drivers.Fingerprint { fp := &drivers.Fingerprint{ - Attributes: map[string]string{}, + Attributes: map[string]*pstructs.Attribute{}, Health: drivers.HealthStateHealthy, HealthDescription: "healthy", } @@ -53,14 +54,14 @@ func (d *Driver) buildFingerprint() *drivers.Fingerprint { } } - fp.Attributes["driver.docker"] = "1" - fp.Attributes["driver.docker.version"] = env.Get("Version") + fp.Attributes["driver.docker"] = pstructs.NewBoolAttribute(true) + fp.Attributes["driver.docker.version"] = pstructs.NewStringAttribute(env.Get("Version")) if d.config.AllowPrivileged { - fp.Attributes["driver.docker.privileged.enabled"] = "1" + fp.Attributes["driver.docker.privileged.enabled"] = pstructs.NewBoolAttribute(true) } if d.config.Volumes.Enabled { - fp.Attributes["driver.docker.volumes.enabled"] = "1" + fp.Attributes["driver.docker.volumes.enabled"] = pstructs.NewBoolAttribute(true) } if nets, err := client.ListNetworks(); err != nil { @@ -77,7 +78,7 @@ func (d *Driver) buildFingerprint() *drivers.Fingerprint { } if n.IPAM.Config[0].Gateway != "" { - fp.Attributes["driver.docker.bridge_ip"] = n.IPAM.Config[0].Gateway + fp.Attributes["driver.docker.bridge_ip"] = pstructs.NewStringAttribute(n.IPAM.Config[0].Gateway) } else { // Docker 17.09.0-ce dropped the Gateway IP from the bridge network // See https://github.com/moby/moby/issues/32648 From 27fb643f5ef70b96d696d6abd91989e933d1f242 Mon Sep 17 00:00:00 2001 From: Preetha Appan Date: Wed, 28 Nov 2018 10:09:10 -0600 Subject: [PATCH 3/5] Fix LXC driver fingerprint to use typedattributes --- drivers/lxc/driver.go | 14 +++++++------- drivers/lxc/driver_test.go | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/lxc/driver.go b/drivers/lxc/driver.go index 1495921d8..6d51e0e35 100644 --- a/drivers/lxc/driver.go +++ b/drivers/lxc/driver.go @@ -8,7 +8,7 @@ import ( "strconv" "time" - hclog "github.com/hashicorp/go-hclog" + "github.com/hashicorp/go-hclog" "github.com/hashicorp/nomad/client/stats" cstructs "github.com/hashicorp/nomad/client/structs" "github.com/hashicorp/nomad/drivers/shared/eventer" @@ -16,8 +16,8 @@ import ( "github.com/hashicorp/nomad/plugins/drivers" "github.com/hashicorp/nomad/plugins/shared/hclspec" "github.com/hashicorp/nomad/plugins/shared/loader" - - lxc "gopkg.in/lxc/go-lxc.v2" + pstructs "github.com/hashicorp/nomad/plugins/shared/structs" + "gopkg.in/lxc/go-lxc.v2" ) const ( @@ -252,22 +252,22 @@ func (d *Driver) handleFingerprint(ctx context.Context, ch chan<- *drivers.Finge func (d *Driver) buildFingerprint() *drivers.Fingerprint { var health drivers.HealthState var desc string - attrs := map[string]string{} + attrs := map[string]*pstructs.Attribute{} lxcVersion := lxc.Version() if d.config.Enabled && lxcVersion != "" { health = drivers.HealthStateHealthy desc = "ready" - attrs["driver.lxc"] = "1" - attrs["driver.lxc.version"] = lxcVersion + attrs["driver.lxc"] = pstructs.NewBoolAttribute(true) + attrs["driver.lxc.version"] = pstructs.NewStringAttribute(lxcVersion) } else { health = drivers.HealthStateUndetected desc = "disabled" } if d.config.AllowVolumes { - attrs["driver.lxc.volumes.enabled"] = "1" + attrs["driver.lxc.volumes.enabled"] = pstructs.NewBoolAttribute(true) } return &drivers.Fingerprint{ diff --git a/drivers/lxc/driver_test.go b/drivers/lxc/driver_test.go index 5122846e1..5541f9f85 100644 --- a/drivers/lxc/driver_test.go +++ b/drivers/lxc/driver_test.go @@ -40,8 +40,8 @@ func TestLXCDriver_Fingerprint(t *testing.T) { select { case finger := <-fingerCh: require.Equal(drivers.HealthStateHealthy, finger.Health) - require.Equal("1", finger.Attributes["driver.lxc"]) - require.NotEmpty(finger.Attributes["driver.lxc.version"]) + require.True(finger.Attributes["driver.lxc"].GetBool()) + require.NotEmpty(finger.Attributes["driver.lxc.version"].GetString()) case <-time.After(time.Duration(testutil.TestMultiplier()*5) * time.Second): require.Fail("timeout receiving fingerprint") } From 76f27a111d68fd6c7fbb53a6966583202aa87360 Mon Sep 17 00:00:00 2001 From: Preetha Appan Date: Wed, 28 Nov 2018 11:05:35 -0600 Subject: [PATCH 4/5] Fix failing lxc test --- drivers/lxc/driver_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/lxc/driver_test.go b/drivers/lxc/driver_test.go index 5541f9f85..2fb583451 100644 --- a/drivers/lxc/driver_test.go +++ b/drivers/lxc/driver_test.go @@ -62,8 +62,8 @@ func TestLXCDriver_FingerprintNotEnabled(t *testing.T) { select { case finger := <-fingerCh: require.Equal(drivers.HealthStateUndetected, finger.Health) - require.Equal("", finger.Attributes["driver.lxc"]) - require.Empty(finger.Attributes["driver.lxc.version"]) + require.Empty(finger.Attributes["driver.lxc"].GetString()) + require.Empty(finger.Attributes["driver.lxc.version"].GetString()) case <-time.After(time.Duration(testutil.TestMultiplier()*5) * time.Second): require.Fail("timeout receiving fingerprint") } From 22ddb4d18d1ae07ff62610a5db69f1d0d9a0b733 Mon Sep 17 00:00:00 2001 From: Preetha Appan Date: Wed, 28 Nov 2018 13:56:17 -0600 Subject: [PATCH 5/5] Fix lxc test panic --- drivers/lxc/driver_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/lxc/driver_test.go b/drivers/lxc/driver_test.go index 2fb583451..e46076bf5 100644 --- a/drivers/lxc/driver_test.go +++ b/drivers/lxc/driver_test.go @@ -62,8 +62,8 @@ func TestLXCDriver_FingerprintNotEnabled(t *testing.T) { select { case finger := <-fingerCh: require.Equal(drivers.HealthStateUndetected, finger.Health) - require.Empty(finger.Attributes["driver.lxc"].GetString()) - require.Empty(finger.Attributes["driver.lxc.version"].GetString()) + require.Empty(finger.Attributes["driver.lxc"]) + require.Empty(finger.Attributes["driver.lxc.version"]) case <-time.After(time.Duration(testutil.TestMultiplier()*5) * time.Second): require.Fail("timeout receiving fingerprint") }