Merge pull request #5002 from hashicorp/b-task-config-resources

Convert driver resource to AllocatedTaskResource
This commit is contained in:
Alex Dadgar 2018-12-18 16:46:34 -08:00 committed by GitHub
commit 9d1403d617
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 640 additions and 430 deletions

View File

@ -37,6 +37,7 @@ func TestAllocRunner_TaskLeader_KillTG(t *testing.T) {
t.Parallel()
alloc := mock.BatchAlloc()
tr := alloc.AllocatedResources.Tasks[alloc.Job.TaskGroups[0].Tasks[0].Name]
alloc.Job.TaskGroups[0].RestartPolicy.Attempts = 0
// Create two tasks in the task group
@ -56,7 +57,8 @@ func TestAllocRunner_TaskLeader_KillTG(t *testing.T) {
"run_for": "1s",
}
alloc.Job.TaskGroups[0].Tasks = append(alloc.Job.TaskGroups[0].Tasks, task2)
alloc.TaskResources[task2.Name] = task2.Resources
alloc.AllocatedResources.Tasks[task.Name] = tr
alloc.AllocatedResources.Tasks[task2.Name] = tr
conf, cleanup := testAllocRunnerConfig(t, alloc)
defer cleanup()
@ -121,6 +123,7 @@ func TestAllocRunner_TaskLeader_StopTG(t *testing.T) {
t.Parallel()
alloc := mock.Alloc()
tr := alloc.AllocatedResources.Tasks[alloc.Job.TaskGroups[0].Tasks[0].Name]
alloc.Job.TaskGroups[0].RestartPolicy.Attempts = 0
// Create 3 tasks in the task group
@ -146,7 +149,9 @@ func TestAllocRunner_TaskLeader_StopTG(t *testing.T) {
"run_for": "10s",
}
alloc.Job.TaskGroups[0].Tasks = append(alloc.Job.TaskGroups[0].Tasks, task2, task3)
alloc.TaskResources[task2.Name] = task2.Resources
alloc.AllocatedResources.Tasks[task.Name] = tr
alloc.AllocatedResources.Tasks[task2.Name] = tr
alloc.AllocatedResources.Tasks[task3.Name] = tr
conf, cleanup := testAllocRunnerConfig(t, alloc)
defer cleanup()
@ -216,6 +221,7 @@ func TestAllocRunner_TaskLeader_StopRestoredTG(t *testing.T) {
t.Parallel()
alloc := mock.Alloc()
tr := alloc.AllocatedResources.Tasks[alloc.Job.TaskGroups[0].Tasks[0].Name]
alloc.Job.TaskGroups[0].RestartPolicy.Attempts = 0
// Create a leader and follower task in the task group
@ -237,7 +243,8 @@ func TestAllocRunner_TaskLeader_StopRestoredTG(t *testing.T) {
}
alloc.Job.TaskGroups[0].Tasks = append(alloc.Job.TaskGroups[0].Tasks, task2)
alloc.TaskResources[task2.Name] = task2.Resources
alloc.AllocatedResources.Tasks[task.Name] = tr
alloc.AllocatedResources.Tasks[task2.Name] = tr
conf, cleanup := testAllocRunnerConfig(t, alloc)
defer cleanup()

View File

@ -58,8 +58,15 @@ func newServiceHook(c serviceHookConfig) *serviceHook {
delay: c.task.ShutdownDelay,
}
if res := c.alloc.TaskResources[c.task.Name]; res != nil {
h.networks = res.Networks
// COMPAT(0.10): Just use the AllocatedResources
if c.alloc.AllocatedResources != nil {
if res := c.alloc.AllocatedResources.Tasks[c.task.Name]; res != nil {
h.networks = res.Networks
}
} else {
if res := c.alloc.TaskResources[c.task.Name]; res != nil {
h.networks = res.Networks
}
}
if c.alloc.DeploymentStatus != nil && c.alloc.DeploymentStatus.Canary {
@ -103,9 +110,16 @@ func (h *serviceHook) Update(ctx context.Context, req *interfaces.TaskUpdateRequ
canary = req.Alloc.DeploymentStatus.Canary
}
// COMPAT(0.10): Just use the AllocatedResources
var networks structs.Networks
if res := req.Alloc.TaskResources[h.taskName]; res != nil {
networks = res.Networks
if req.Alloc.AllocatedResources != nil {
if res := req.Alloc.AllocatedResources.Tasks[h.taskName]; res != nil {
networks = res.Networks
}
} else {
if res := req.Alloc.TaskResources[h.taskName]; res != nil {
networks = res.Networks
}
}
task := req.Alloc.LookupTask(h.taskName)

View File

@ -265,12 +265,29 @@ func NewTaskRunner(config *Config) (*TaskRunner, error) {
// Pull out the task's resources
ares := tr.alloc.AllocatedResources
if ares != nil {
if tres, ok := ares.Tasks[tr.taskName]; ok {
tr.taskResources = tres
tres, ok := ares.Tasks[tr.taskName]
if !ok {
return nil, fmt.Errorf("no task resources found on allocation")
}
tr.taskResources = tres
} else {
// COMPAT(0.10): Upgrade from old resources to new resources
// Grab the old task resources
oldTr, ok := tr.alloc.TaskResources[tr.taskName]
if !ok {
return nil, fmt.Errorf("no task resources found on allocation")
}
// TODO in the else case should we do a migration from resources as an
// upgrade path
// Convert the old to new
tr.taskResources = &structs.AllocatedTaskResources{
Cpu: structs.AllocatedCpuResources{
CpuShares: int64(oldTr.CPU),
},
Memory: structs.AllocatedMemoryResources{
MemoryMB: int64(oldTr.MemoryMB),
},
Networks: oldTr.Networks,
}
}
// Build the restart tracker.
@ -697,17 +714,18 @@ func (tr *TaskRunner) buildTaskConfig() *drivers.TaskConfig {
task := tr.Task()
alloc := tr.Alloc()
invocationid := uuid.Generate()[:8]
taskResources := tr.taskResources
return &drivers.TaskConfig{
ID: fmt.Sprintf("%s/%s/%s", alloc.ID, task.Name, invocationid),
Name: task.Name,
JobName: alloc.Job.Name,
Resources: &drivers.Resources{
NomadResources: task.Resources,
NomadResources: taskResources,
LinuxResources: &drivers.LinuxResources{
MemoryLimitBytes: int64(task.Resources.MemoryMB) * 1024 * 1024,
CPUShares: int64(task.Resources.CPU),
PercentTicks: float64(task.Resources.CPU) / float64(tr.clientConfig.Node.NodeResources.Cpu.CpuShares),
MemoryLimitBytes: taskResources.Memory.MemoryMB * 1024 * 1024,
CPUShares: taskResources.Cpu.CpuShares,
PercentTicks: float64(taskResources.Cpu.CpuShares) / float64(tr.clientConfig.Node.NodeResources.Cpu.CpuShares),
},
},
Devices: tr.hookResources.getDevices(),

View File

@ -17,8 +17,6 @@ import (
"testing"
"time"
dtestutil "github.com/hashicorp/nomad/plugins/drivers/testutils"
docker "github.com/fsouza/go-dockerclient"
"github.com/hashicorp/consul/lib/freeport"
hclog "github.com/hashicorp/go-hclog"
@ -30,6 +28,7 @@ import (
"github.com/hashicorp/nomad/nomad/structs"
"github.com/hashicorp/nomad/plugins/base"
"github.com/hashicorp/nomad/plugins/drivers"
dtestutil "github.com/hashicorp/nomad/plugins/drivers/testutils"
"github.com/hashicorp/nomad/plugins/shared/loader"
tu "github.com/hashicorp/nomad/testutil"
"github.com/stretchr/testify/assert"
@ -38,10 +37,13 @@ import (
var (
basicResources = &drivers.Resources{
NomadResources: &structs.Resources{
MemoryMB: 256,
CPU: 512,
DiskMB: 20,
NomadResources: &structs.AllocatedTaskResources{
Memory: structs.AllocatedMemoryResources{
MemoryMB: 256,
},
Cpu: structs.AllocatedCpuResources{
CpuShares: 250,
},
},
LinuxResources: &drivers.LinuxResources{
CPUShares: 512,
@ -96,9 +98,13 @@ func dockerTask(t *testing.T) (*drivers.TaskConfig, *TaskConfig, []int) {
ID: uuid.Generate(),
Name: "redis-demo",
Resources: &drivers.Resources{
NomadResources: &structs.Resources{
MemoryMB: 256,
CPU: 512,
NomadResources: &structs.AllocatedTaskResources{
Memory: structs.AllocatedMemoryResources{
MemoryMB: 256,
},
Cpu: structs.AllocatedCpuResources{
CpuShares: 512,
},
Networks: []*structs.NetworkResource{
{
IP: "127.0.0.1",
@ -2259,7 +2265,7 @@ func TestDockerDriver_OOMKilled(t *testing.T) {
Resources: basicResources,
}
task.Resources.LinuxResources.MemoryLimitBytes = 10 * 1024 * 1024
task.Resources.NomadResources.MemoryMB = 10
task.Resources.NomadResources.Memory.MemoryMB = 10
require.NoError(t, task.EncodeConcreteDriverConfig(&taskCfg))

View File

@ -35,9 +35,13 @@ func TestMain(m *testing.M) {
}
var testResources = &drivers.Resources{
NomadResources: &structs.Resources{
MemoryMB: 128,
CPU: 100,
NomadResources: &structs.AllocatedTaskResources{
Memory: structs.AllocatedMemoryResources{
MemoryMB: 128,
},
Cpu: structs.AllocatedCpuResources{
CpuShares: 100,
},
},
LinuxResources: &drivers.LinuxResources{
MemoryLimitBytes: 134217728,

View File

@ -249,9 +249,13 @@ func basicTask(t *testing.T, name string, taskConfig map[string]interface{}) *dr
ID: uuid.Generate(),
Name: name,
Resources: &drivers.Resources{
NomadResources: &structs.Resources{
MemoryMB: 128,
CPU: 100,
NomadResources: &structs.AllocatedTaskResources{
Memory: structs.AllocatedMemoryResources{
MemoryMB: 128,
},
Cpu: structs.AllocatedCpuResources{
CpuShares: 100,
},
},
LinuxResources: &drivers.LinuxResources{
MemoryLimitBytes: 134217728,

View File

@ -102,9 +102,13 @@ func TestLXCDriver_Start_Wait(t *testing.T) {
ID: uuid.Generate(),
Name: "test",
Resources: &drivers.Resources{
NomadResources: &structs.Resources{
CPU: 1,
MemoryMB: 2,
NomadResources: &structs.AllocatedTaskResources{
Memory: structs.AllocatedMemoryResources{
MemoryMB: 2,
},
Cpu: structs.AllocatedCpuResources{
CpuShares: 1024,
},
},
LinuxResources: &drivers.LinuxResources{
CPUShares: 1024,
@ -196,9 +200,13 @@ func TestLXCDriver_Start_Stop(t *testing.T) {
ID: uuid.Generate(),
Name: "test",
Resources: &drivers.Resources{
NomadResources: &structs.Resources{
CPU: 1,
MemoryMB: 2,
NomadResources: &structs.AllocatedTaskResources{
Memory: structs.AllocatedMemoryResources{
MemoryMB: 2,
},
Cpu: structs.AllocatedCpuResources{
CpuShares: 1024,
},
},
LinuxResources: &drivers.LinuxResources{
CPUShares: 1024,

View File

@ -209,7 +209,7 @@ func (d *Driver) formatMount(hostPath, taskPath string, readOnly bool) string {
}
func (d *Driver) setResourceLimits(c *lxc.Container, cfg *drivers.TaskConfig) error {
if err := c.SetMemoryLimit(lxc.ByteSize(cfg.Resources.NomadResources.MemoryMB) * lxc.MB); err != nil {
if err := c.SetMemoryLimit(lxc.ByteSize(cfg.Resources.NomadResources.Memory.MemoryMB) * lxc.MB); err != nil {
return fmt.Errorf("unable to set memory limits: %v", err)
}

View File

@ -19,9 +19,13 @@ func TestLXCDriver_Mounts(t *testing.T) {
ID: uuid.Generate(),
Name: "test",
Resources: &drivers.Resources{
NomadResources: &structs.Resources{
CPU: 1,
MemoryMB: 2,
NomadResources: &structs.AllocatedTaskResources{
Memory: structs.AllocatedMemoryResources{
MemoryMB: 2,
},
Cpu: structs.AllocatedCpuResources{
CpuShares: 1024,
},
},
LinuxResources: &drivers.LinuxResources{
CPUShares: 1024,

View File

@ -318,10 +318,11 @@ func (d *Driver) StartTask(cfg *drivers.TaskConfig) (*drivers.TaskHandle, *cstru
accelerator = driverConfig.Accelerator
}
if cfg.Resources.NomadResources.MemoryMB < 128 || cfg.Resources.NomadResources.MemoryMB > 4000000 {
mb := cfg.Resources.NomadResources.Memory.MemoryMB
if mb < 128 || mb > 4000000 {
return nil, nil, fmt.Errorf("Qemu memory assignment out of bounds")
}
mem := fmt.Sprintf("%dM", cfg.Resources.NomadResources.MemoryMB)
mem := fmt.Sprintf("%dM", mb)
absPath, err := GetAbsolutePath("qemu-system-x86_64")
if err != nil {

View File

@ -1,24 +1,22 @@
package qemu
import (
"context"
"fmt"
"io"
"os"
"path/filepath"
"strings"
"testing"
"context"
"fmt"
"time"
dtestutil "github.com/hashicorp/nomad/plugins/drivers/testutils"
"github.com/hashicorp/hcl2/hcl"
ctestutil "github.com/hashicorp/nomad/client/testutil"
"github.com/hashicorp/nomad/helper/testlog"
"github.com/hashicorp/nomad/helper/uuid"
"github.com/hashicorp/nomad/nomad/structs"
"github.com/hashicorp/nomad/plugins/drivers"
dtestutil "github.com/hashicorp/nomad/plugins/drivers/testutils"
"github.com/hashicorp/nomad/plugins/shared"
"github.com/hashicorp/nomad/plugins/shared/hclspec"
pstructs "github.com/hashicorp/nomad/plugins/shared/structs"
@ -44,9 +42,13 @@ func TestQemuDriver_Start_Wait_Stop(t *testing.T) {
ID: uuid.Generate(),
Name: "linux",
Resources: &drivers.Resources{
NomadResources: &structs.Resources{
MemoryMB: 512,
CPU: 100,
NomadResources: &structs.AllocatedTaskResources{
Memory: structs.AllocatedMemoryResources{
MemoryMB: 512,
},
Cpu: structs.AllocatedCpuResources{
CpuShares: 100,
},
Networks: []*structs.NetworkResource{
{
ReservedPorts: []structs.Port{{Label: "main", Value: 22000}, {Label: "web", Value: 80}},
@ -102,9 +104,13 @@ func TestQemuDriver_GetMonitorPathOldQemu(t *testing.T) {
ID: uuid.Generate(),
Name: "linux",
Resources: &drivers.Resources{
NomadResources: &structs.Resources{
MemoryMB: 512,
CPU: 100,
NomadResources: &structs.AllocatedTaskResources{
Memory: structs.AllocatedMemoryResources{
MemoryMB: 512,
},
Cpu: structs.AllocatedCpuResources{
CpuShares: 100,
},
Networks: []*structs.NetworkResource{
{
ReservedPorts: []structs.Port{{Label: "main", Value: 22000}, {Label: "web", Value: 80}},
@ -153,9 +159,13 @@ func TestQemuDriver_GetMonitorPathNewQemu(t *testing.T) {
ID: uuid.Generate(),
Name: "linux",
Resources: &drivers.Resources{
NomadResources: &structs.Resources{
MemoryMB: 512,
CPU: 100,
NomadResources: &structs.AllocatedTaskResources{
Memory: structs.AllocatedMemoryResources{
MemoryMB: 512,
},
Cpu: structs.AllocatedCpuResources{
CpuShares: 100,
},
Networks: []*structs.NetworkResource{
{
ReservedPorts: []structs.Port{{Label: "main", Value: 22000}, {Label: "web", Value: 80}},
@ -243,9 +253,13 @@ func TestQemuDriver_User(t *testing.T) {
Name: "linux",
User: "alice",
Resources: &drivers.Resources{
NomadResources: &structs.Resources{
MemoryMB: 512,
CPU: 100,
NomadResources: &structs.AllocatedTaskResources{
Memory: structs.AllocatedMemoryResources{
MemoryMB: 512,
},
Cpu: structs.AllocatedCpuResources{
CpuShares: 100,
},
Networks: []*structs.NetworkResource{
{
ReservedPorts: []structs.Port{{Label: "main", Value: 22000}, {Label: "web", Value: 80}},
@ -295,9 +309,13 @@ func TestQemuDriver_Stats(t *testing.T) {
ID: uuid.Generate(),
Name: "linux",
Resources: &drivers.Resources{
NomadResources: &structs.Resources{
MemoryMB: 512,
CPU: 100,
NomadResources: &structs.AllocatedTaskResources{
Memory: structs.AllocatedMemoryResources{
MemoryMB: 512,
},
Cpu: structs.AllocatedCpuResources{
CpuShares: 100,
},
Networks: []*structs.NetworkResource{
{
ReservedPorts: []structs.Port{{Label: "main", Value: 22000}, {Label: "web", Value: 80}},

View File

@ -13,9 +13,6 @@ import (
"testing"
"time"
dtestutil "github.com/hashicorp/nomad/plugins/drivers/testutils"
"golang.org/x/sys/unix"
"github.com/hashicorp/hcl2/hcl"
ctestutil "github.com/hashicorp/nomad/client/testutil"
"github.com/hashicorp/nomad/helper/testlog"
@ -24,10 +21,12 @@ import (
"github.com/hashicorp/nomad/nomad/structs"
basePlug "github.com/hashicorp/nomad/plugins/base"
"github.com/hashicorp/nomad/plugins/drivers"
dtestutil "github.com/hashicorp/nomad/plugins/drivers/testutils"
"github.com/hashicorp/nomad/plugins/shared"
"github.com/hashicorp/nomad/plugins/shared/hclspec"
"github.com/hashicorp/nomad/testutil"
"github.com/stretchr/testify/require"
"golang.org/x/sys/unix"
)
var _ drivers.DriverPlugin = (*Driver)(nil)
@ -93,9 +92,13 @@ func TestRktDriver_Start_Wait_Stop_DNS(t *testing.T) {
AllocID: uuid.Generate(),
Name: "etcd",
Resources: &drivers.Resources{
NomadResources: &structs.Resources{
MemoryMB: 128,
CPU: 100,
NomadResources: &structs.AllocatedTaskResources{
Memory: structs.AllocatedMemoryResources{
MemoryMB: 128,
},
Cpu: structs.AllocatedCpuResources{
CpuShares: 100,
},
},
LinuxResources: &drivers.LinuxResources{
MemoryLimitBytes: 134217728,
@ -173,9 +176,13 @@ func TestRktDriver_Start_Wait_Stop(t *testing.T) {
AllocID: uuid.Generate(),
Name: "etcd",
Resources: &drivers.Resources{
NomadResources: &structs.Resources{
MemoryMB: 128,
CPU: 100,
NomadResources: &structs.AllocatedTaskResources{
Memory: structs.AllocatedMemoryResources{
MemoryMB: 128,
},
Cpu: structs.AllocatedCpuResources{
CpuShares: 100,
},
},
LinuxResources: &drivers.LinuxResources{
MemoryLimitBytes: 134217728,
@ -228,9 +235,13 @@ func TestRktDriver_Start_Wait_Skip_Trust(t *testing.T) {
AllocID: uuid.Generate(),
Name: "etcd",
Resources: &drivers.Resources{
NomadResources: &structs.Resources{
MemoryMB: 128,
CPU: 100,
NomadResources: &structs.AllocatedTaskResources{
Memory: structs.AllocatedMemoryResources{
MemoryMB: 128,
},
Cpu: structs.AllocatedCpuResources{
CpuShares: 100,
},
},
LinuxResources: &drivers.LinuxResources{
MemoryLimitBytes: 134217728,
@ -283,9 +294,13 @@ func TestRktDriver_InvalidTrustPrefix(t *testing.T) {
AllocID: uuid.Generate(),
Name: "etcd",
Resources: &drivers.Resources{
NomadResources: &structs.Resources{
MemoryMB: 128,
CPU: 100,
NomadResources: &structs.AllocatedTaskResources{
Memory: structs.AllocatedMemoryResources{
MemoryMB: 128,
},
Cpu: structs.AllocatedCpuResources{
CpuShares: 100,
},
},
LinuxResources: &drivers.LinuxResources{
MemoryLimitBytes: 134217728,
@ -334,9 +349,13 @@ func TestRktDriver_StartWaitRecoverWaitStop(t *testing.T) {
AllocID: uuid.Generate(),
Name: "etcd",
Resources: &drivers.Resources{
NomadResources: &structs.Resources{
MemoryMB: 128,
CPU: 100,
NomadResources: &structs.AllocatedTaskResources{
Memory: structs.AllocatedMemoryResources{
MemoryMB: 128,
},
Cpu: structs.AllocatedCpuResources{
CpuShares: 100,
},
},
LinuxResources: &drivers.LinuxResources{
MemoryLimitBytes: 134217728,
@ -434,9 +453,13 @@ func TestRktDriver_Start_Wait_Volume(t *testing.T) {
AllocID: uuid.Generate(),
Name: "rkttest_alpine",
Resources: &drivers.Resources{
NomadResources: &structs.Resources{
MemoryMB: 128,
CPU: 100,
NomadResources: &structs.AllocatedTaskResources{
Memory: structs.AllocatedMemoryResources{
MemoryMB: 128,
},
Cpu: structs.AllocatedCpuResources{
CpuShares: 100,
},
},
LinuxResources: &drivers.LinuxResources{
MemoryLimitBytes: 134217728,
@ -518,9 +541,13 @@ func TestRktDriver_Start_Wait_TaskMounts(t *testing.T) {
AllocID: uuid.Generate(),
Name: "rkttest_alpine",
Resources: &drivers.Resources{
NomadResources: &structs.Resources{
MemoryMB: 128,
CPU: 100,
NomadResources: &structs.AllocatedTaskResources{
Memory: structs.AllocatedMemoryResources{
MemoryMB: 128,
},
Cpu: structs.AllocatedCpuResources{
CpuShares: 100,
},
},
LinuxResources: &drivers.LinuxResources{
MemoryLimitBytes: 134217728,
@ -586,9 +613,13 @@ func TestRktDriver_PortMapping(t *testing.T) {
AllocID: uuid.Generate(),
Name: "redis",
Resources: &drivers.Resources{
NomadResources: &structs.Resources{
MemoryMB: 128,
CPU: 100,
NomadResources: &structs.AllocatedTaskResources{
Memory: structs.AllocatedMemoryResources{
MemoryMB: 128,
},
Cpu: structs.AllocatedCpuResources{
CpuShares: 100,
},
Networks: []*structs.NetworkResource{
{
IP: "127.0.0.1",
@ -640,9 +671,13 @@ func TestRktDriver_UserGroup(t *testing.T) {
User: "nobody",
Name: "rkttest_alpine",
Resources: &drivers.Resources{
NomadResources: &structs.Resources{
MemoryMB: 128,
CPU: 100,
NomadResources: &structs.AllocatedTaskResources{
Memory: structs.AllocatedMemoryResources{
MemoryMB: 128,
},
Cpu: structs.AllocatedCpuResources{
CpuShares: 100,
},
},
LinuxResources: &drivers.LinuxResources{
MemoryLimitBytes: 134217728,
@ -702,9 +737,13 @@ func TestRktDriver_Exec(t *testing.T) {
AllocID: uuid.Generate(),
Name: "etcd",
Resources: &drivers.Resources{
NomadResources: &structs.Resources{
MemoryMB: 128,
CPU: 100,
NomadResources: &structs.AllocatedTaskResources{
Memory: structs.AllocatedMemoryResources{
MemoryMB: 128,
},
Cpu: structs.AllocatedCpuResources{
CpuShares: 100,
},
},
LinuxResources: &drivers.LinuxResources{
MemoryLimitBytes: 134217728,
@ -780,9 +819,13 @@ func TestRktDriver_Stats(t *testing.T) {
AllocID: uuid.Generate(),
Name: "etcd",
Resources: &drivers.Resources{
NomadResources: &structs.Resources{
MemoryMB: 128,
CPU: 100,
NomadResources: &structs.AllocatedTaskResources{
Memory: structs.AllocatedMemoryResources{
MemoryMB: 128,
},
Cpu: structs.AllocatedCpuResources{
CpuShares: 100,
},
},
LinuxResources: &drivers.LinuxResources{
MemoryLimitBytes: 134217728,

View File

@ -105,7 +105,7 @@ func (l *LibcontainerExecutor) Launch(command *ExecCommand) (*ProcessState, erro
if command.Resources == nil {
command.Resources = &drivers.Resources{
NomadResources: &structs.Resources{},
NomadResources: &structs.AllocatedTaskResources{},
}
}
@ -578,20 +578,21 @@ func configureCgroups(cfg *lconfigs.Config, command *ExecCommand) error {
return nil
}
if command.Resources.NomadResources.MemoryMB > 0 {
if mb := command.Resources.NomadResources.Memory.MemoryMB; mb > 0 {
// Total amount of memory allowed to consume
cfg.Cgroups.Resources.Memory = int64(command.Resources.NomadResources.MemoryMB * 1024 * 1024)
cfg.Cgroups.Resources.Memory = mb * 1024 * 1024
// Disable swap to avoid issues on the machine
var memSwappiness uint64
cfg.Cgroups.Resources.MemorySwappiness = &memSwappiness
}
if command.Resources.NomadResources.CPU < 2 {
return fmt.Errorf("resources.CPU must be equal to or greater than 2: %v", command.Resources.NomadResources.CPU)
cpuShares := command.Resources.NomadResources.Cpu.CpuShares
if cpuShares < 2 {
return fmt.Errorf("resources.Cpu.CpuShares must be equal to or greater than 2: %v", cpuShares)
}
// Set the relative CPU shares for this cgroup.
cfg.Cgroups.Resources.CpuShares = uint64(command.Resources.NomadResources.CPU)
cfg.Cgroups.Resources.CpuShares = uint64(cpuShares)
return nil
}

View File

@ -69,7 +69,7 @@ func testExecutorCommandWithChroot(t *testing.T) (*ExecCommand, *allocdir.AllocD
Env: taskEnv.List(),
TaskDir: td.Dir,
Resources: &drivers.Resources{
NomadResources: task.Resources,
NomadResources: alloc.AllocatedResources.Tasks[task.Name],
},
}
configureTLogging(cmd)
@ -109,7 +109,7 @@ func TestExecutor_IsolationAndConstraints(t *testing.T) {
data, err := ioutil.ReadFile(memLimits)
require.NoError(err)
expectedMemLim := strconv.Itoa(execCmd.Resources.NomadResources.MemoryMB * 1024 * 1024)
expectedMemLim := strconv.Itoa(int(execCmd.Resources.NomadResources.Memory.MemoryMB * 1024 * 1024))
actualMemLim := strings.TrimSpace(string(data))
require.Equal(actualMemLim, expectedMemLim)
require.NoError(executor.Shutdown("", 0))

View File

@ -13,15 +13,14 @@ import (
"testing"
"time"
"github.com/hashicorp/nomad/plugins/drivers"
tu "github.com/hashicorp/nomad/testutil"
hclog "github.com/hashicorp/go-hclog"
"github.com/hashicorp/nomad/client/allocdir"
cstructs "github.com/hashicorp/nomad/client/structs"
"github.com/hashicorp/nomad/client/taskenv"
"github.com/hashicorp/nomad/helper/testlog"
"github.com/hashicorp/nomad/nomad/mock"
"github.com/hashicorp/nomad/plugins/drivers"
tu "github.com/hashicorp/nomad/testutil"
"github.com/stretchr/testify/require"
)
@ -55,7 +54,7 @@ func testExecutorCommand(t *testing.T) (*ExecCommand, *allocdir.AllocDir) {
Env: taskEnv.List(),
TaskDir: td.Dir,
Resources: &drivers.Resources{
NomadResources: task.Resources,
NomadResources: alloc.AllocatedResources.Tasks[task.Name],
},
}

View File

@ -47,7 +47,7 @@ func (m *LaunchRequest) Reset() { *m = LaunchRequest{} }
func (m *LaunchRequest) String() string { return proto.CompactTextString(m) }
func (*LaunchRequest) ProtoMessage() {}
func (*LaunchRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_executor_b646d273b48eddd5, []int{0}
return fileDescriptor_executor_6afb14e0d1b270fe, []int{0}
}
func (m *LaunchRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LaunchRequest.Unmarshal(m, b)
@ -162,7 +162,7 @@ func (m *LaunchResponse) Reset() { *m = LaunchResponse{} }
func (m *LaunchResponse) String() string { return proto.CompactTextString(m) }
func (*LaunchResponse) ProtoMessage() {}
func (*LaunchResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_executor_b646d273b48eddd5, []int{1}
return fileDescriptor_executor_6afb14e0d1b270fe, []int{1}
}
func (m *LaunchResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LaunchResponse.Unmarshal(m, b)
@ -199,7 +199,7 @@ func (m *WaitRequest) Reset() { *m = WaitRequest{} }
func (m *WaitRequest) String() string { return proto.CompactTextString(m) }
func (*WaitRequest) ProtoMessage() {}
func (*WaitRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_executor_b646d273b48eddd5, []int{2}
return fileDescriptor_executor_6afb14e0d1b270fe, []int{2}
}
func (m *WaitRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_WaitRequest.Unmarshal(m, b)
@ -230,7 +230,7 @@ func (m *WaitResponse) Reset() { *m = WaitResponse{} }
func (m *WaitResponse) String() string { return proto.CompactTextString(m) }
func (*WaitResponse) ProtoMessage() {}
func (*WaitResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_executor_b646d273b48eddd5, []int{3}
return fileDescriptor_executor_6afb14e0d1b270fe, []int{3}
}
func (m *WaitResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_WaitResponse.Unmarshal(m, b)
@ -269,7 +269,7 @@ func (m *ShutdownRequest) Reset() { *m = ShutdownRequest{} }
func (m *ShutdownRequest) String() string { return proto.CompactTextString(m) }
func (*ShutdownRequest) ProtoMessage() {}
func (*ShutdownRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_executor_b646d273b48eddd5, []int{4}
return fileDescriptor_executor_6afb14e0d1b270fe, []int{4}
}
func (m *ShutdownRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ShutdownRequest.Unmarshal(m, b)
@ -313,7 +313,7 @@ func (m *ShutdownResponse) Reset() { *m = ShutdownResponse{} }
func (m *ShutdownResponse) String() string { return proto.CompactTextString(m) }
func (*ShutdownResponse) ProtoMessage() {}
func (*ShutdownResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_executor_b646d273b48eddd5, []int{5}
return fileDescriptor_executor_6afb14e0d1b270fe, []int{5}
}
func (m *ShutdownResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ShutdownResponse.Unmarshal(m, b)
@ -344,7 +344,7 @@ func (m *UpdateResourcesRequest) Reset() { *m = UpdateResourcesRequest{}
func (m *UpdateResourcesRequest) String() string { return proto.CompactTextString(m) }
func (*UpdateResourcesRequest) ProtoMessage() {}
func (*UpdateResourcesRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_executor_b646d273b48eddd5, []int{6}
return fileDescriptor_executor_6afb14e0d1b270fe, []int{6}
}
func (m *UpdateResourcesRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UpdateResourcesRequest.Unmarshal(m, b)
@ -381,7 +381,7 @@ func (m *UpdateResourcesResponse) Reset() { *m = UpdateResourcesResponse
func (m *UpdateResourcesResponse) String() string { return proto.CompactTextString(m) }
func (*UpdateResourcesResponse) ProtoMessage() {}
func (*UpdateResourcesResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_executor_b646d273b48eddd5, []int{7}
return fileDescriptor_executor_6afb14e0d1b270fe, []int{7}
}
func (m *UpdateResourcesResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_UpdateResourcesResponse.Unmarshal(m, b)
@ -411,7 +411,7 @@ func (m *VersionRequest) Reset() { *m = VersionRequest{} }
func (m *VersionRequest) String() string { return proto.CompactTextString(m) }
func (*VersionRequest) ProtoMessage() {}
func (*VersionRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_executor_b646d273b48eddd5, []int{8}
return fileDescriptor_executor_6afb14e0d1b270fe, []int{8}
}
func (m *VersionRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_VersionRequest.Unmarshal(m, b)
@ -442,7 +442,7 @@ func (m *VersionResponse) Reset() { *m = VersionResponse{} }
func (m *VersionResponse) String() string { return proto.CompactTextString(m) }
func (*VersionResponse) ProtoMessage() {}
func (*VersionResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_executor_b646d273b48eddd5, []int{9}
return fileDescriptor_executor_6afb14e0d1b270fe, []int{9}
}
func (m *VersionResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_VersionResponse.Unmarshal(m, b)
@ -479,7 +479,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_executor_b646d273b48eddd5, []int{10}
return fileDescriptor_executor_6afb14e0d1b270fe, []int{10}
}
func (m *StatsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StatsRequest.Unmarshal(m, b)
@ -510,7 +510,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_executor_b646d273b48eddd5, []int{11}
return fileDescriptor_executor_6afb14e0d1b270fe, []int{11}
}
func (m *StatsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StatsResponse.Unmarshal(m, b)
@ -548,7 +548,7 @@ func (m *SignalRequest) Reset() { *m = SignalRequest{} }
func (m *SignalRequest) String() string { return proto.CompactTextString(m) }
func (*SignalRequest) ProtoMessage() {}
func (*SignalRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_executor_b646d273b48eddd5, []int{12}
return fileDescriptor_executor_6afb14e0d1b270fe, []int{12}
}
func (m *SignalRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalRequest.Unmarshal(m, b)
@ -585,7 +585,7 @@ func (m *SignalResponse) Reset() { *m = SignalResponse{} }
func (m *SignalResponse) String() string { return proto.CompactTextString(m) }
func (*SignalResponse) ProtoMessage() {}
func (*SignalResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_executor_b646d273b48eddd5, []int{13}
return fileDescriptor_executor_6afb14e0d1b270fe, []int{13}
}
func (m *SignalResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalResponse.Unmarshal(m, b)
@ -618,7 +618,7 @@ func (m *ExecRequest) Reset() { *m = ExecRequest{} }
func (m *ExecRequest) String() string { return proto.CompactTextString(m) }
func (*ExecRequest) ProtoMessage() {}
func (*ExecRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_executor_b646d273b48eddd5, []int{14}
return fileDescriptor_executor_6afb14e0d1b270fe, []int{14}
}
func (m *ExecRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExecRequest.Unmarshal(m, b)
@ -671,7 +671,7 @@ func (m *ExecResponse) Reset() { *m = ExecResponse{} }
func (m *ExecResponse) String() string { return proto.CompactTextString(m) }
func (*ExecResponse) ProtoMessage() {}
func (*ExecResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_executor_b646d273b48eddd5, []int{15}
return fileDescriptor_executor_6afb14e0d1b270fe, []int{15}
}
func (m *ExecResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExecResponse.Unmarshal(m, b)
@ -719,7 +719,7 @@ func (m *ProcessState) Reset() { *m = ProcessState{} }
func (m *ProcessState) String() string { return proto.CompactTextString(m) }
func (*ProcessState) ProtoMessage() {}
func (*ProcessState) Descriptor() ([]byte, []int) {
return fileDescriptor_executor_b646d273b48eddd5, []int{16}
return fileDescriptor_executor_6afb14e0d1b270fe, []int{16}
}
func (m *ProcessState) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ProcessState.Unmarshal(m, b)
@ -1091,10 +1091,10 @@ var _Executor_serviceDesc = grpc.ServiceDesc{
}
func init() {
proto.RegisterFile("drivers/shared/executor/proto/executor.proto", fileDescriptor_executor_b646d273b48eddd5)
proto.RegisterFile("drivers/shared/executor/proto/executor.proto", fileDescriptor_executor_6afb14e0d1b270fe)
}
var fileDescriptor_executor_b646d273b48eddd5 = []byte{
var fileDescriptor_executor_6afb14e0d1b270fe = []byte{
// 871 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x55, 0x4b, 0x8f, 0xdc, 0x44,
0x10, 0xce, 0xac, 0x77, 0x5e, 0xe5, 0xd9, 0x87, 0x5a, 0x68, 0x71, 0xcc, 0x21, 0x83, 0x0f, 0x64,

View File

@ -173,7 +173,7 @@ func (tc *TaskConfig) EncodeConcreteDriverConfig(t interface{}) error {
}
type Resources struct {
NomadResources *structs.Resources
NomadResources *structs.AllocatedTaskResources
LinuxResources *LinuxResources
}

View File

@ -50,7 +50,7 @@ func (x TaskState) String() string {
return proto.EnumName(TaskState_name, int32(x))
}
func (TaskState) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{0}
return fileDescriptor_driver_9320f8b051f51d4e, []int{0}
}
type FingerprintResponse_HealthState int32
@ -76,7 +76,7 @@ func (x FingerprintResponse_HealthState) String() string {
return proto.EnumName(FingerprintResponse_HealthState_name, int32(x))
}
func (FingerprintResponse_HealthState) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{5, 0}
return fileDescriptor_driver_9320f8b051f51d4e, []int{5, 0}
}
type StartTaskResponse_Result int32
@ -102,7 +102,7 @@ func (x StartTaskResponse_Result) String() string {
return proto.EnumName(StartTaskResponse_Result_name, int32(x))
}
func (StartTaskResponse_Result) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{9, 0}
return fileDescriptor_driver_9320f8b051f51d4e, []int{9, 0}
}
type DriverCapabilities_FSIsolation int32
@ -128,7 +128,7 @@ func (x DriverCapabilities_FSIsolation) String() string {
return proto.EnumName(DriverCapabilities_FSIsolation_name, int32(x))
}
func (DriverCapabilities_FSIsolation) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{25, 0}
return fileDescriptor_driver_9320f8b051f51d4e, []int{25, 0}
}
type CPUUsage_Fields int32
@ -163,7 +163,7 @@ func (x CPUUsage_Fields) String() string {
return proto.EnumName(CPUUsage_Fields_name, int32(x))
}
func (CPUUsage_Fields) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_driver_f8c1fd114dd6e6a4, []int{41, 0}
return fileDescriptor_driver_9320f8b051f51d4e, []int{43, 0}
}
type MemoryUsage_Fields int32
@ -195,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_f8c1fd114dd6e6a4, []int{42, 0}
return fileDescriptor_driver_9320f8b051f51d4e, []int{44, 0}
}
type TaskConfigSchemaRequest struct {
@ -208,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_f8c1fd114dd6e6a4, []int{0}
return fileDescriptor_driver_9320f8b051f51d4e, []int{0}
}
func (m *TaskConfigSchemaRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskConfigSchemaRequest.Unmarshal(m, b)
@ -240,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_f8c1fd114dd6e6a4, []int{1}
return fileDescriptor_driver_9320f8b051f51d4e, []int{1}
}
func (m *TaskConfigSchemaResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskConfigSchemaResponse.Unmarshal(m, b)
@ -277,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_f8c1fd114dd6e6a4, []int{2}
return fileDescriptor_driver_9320f8b051f51d4e, []int{2}
}
func (m *CapabilitiesRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CapabilitiesRequest.Unmarshal(m, b)
@ -312,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_f8c1fd114dd6e6a4, []int{3}
return fileDescriptor_driver_9320f8b051f51d4e, []int{3}
}
func (m *CapabilitiesResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CapabilitiesResponse.Unmarshal(m, b)
@ -349,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_f8c1fd114dd6e6a4, []int{4}
return fileDescriptor_driver_9320f8b051f51d4e, []int{4}
}
func (m *FingerprintRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FingerprintRequest.Unmarshal(m, b)
@ -392,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_f8c1fd114dd6e6a4, []int{5}
return fileDescriptor_driver_9320f8b051f51d4e, []int{5}
}
func (m *FingerprintResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_FingerprintResponse.Unmarshal(m, b)
@ -447,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_f8c1fd114dd6e6a4, []int{6}
return fileDescriptor_driver_9320f8b051f51d4e, []int{6}
}
func (m *RecoverTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RecoverTaskRequest.Unmarshal(m, b)
@ -491,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_f8c1fd114dd6e6a4, []int{7}
return fileDescriptor_driver_9320f8b051f51d4e, []int{7}
}
func (m *RecoverTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RecoverTaskResponse.Unmarshal(m, b)
@ -523,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_f8c1fd114dd6e6a4, []int{8}
return fileDescriptor_driver_9320f8b051f51d4e, []int{8}
}
func (m *StartTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StartTaskRequest.Unmarshal(m, b)
@ -577,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_f8c1fd114dd6e6a4, []int{9}
return fileDescriptor_driver_9320f8b051f51d4e, []int{9}
}
func (m *StartTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StartTaskResponse.Unmarshal(m, b)
@ -637,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_f8c1fd114dd6e6a4, []int{10}
return fileDescriptor_driver_9320f8b051f51d4e, []int{10}
}
func (m *WaitTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_WaitTaskRequest.Unmarshal(m, b)
@ -678,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_f8c1fd114dd6e6a4, []int{11}
return fileDescriptor_driver_9320f8b051f51d4e, []int{11}
}
func (m *WaitTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_WaitTaskResponse.Unmarshal(m, b)
@ -730,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_f8c1fd114dd6e6a4, []int{12}
return fileDescriptor_driver_9320f8b051f51d4e, []int{12}
}
func (m *StopTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StopTaskRequest.Unmarshal(m, b)
@ -781,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_f8c1fd114dd6e6a4, []int{13}
return fileDescriptor_driver_9320f8b051f51d4e, []int{13}
}
func (m *StopTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_StopTaskResponse.Unmarshal(m, b)
@ -815,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_f8c1fd114dd6e6a4, []int{14}
return fileDescriptor_driver_9320f8b051f51d4e, []int{14}
}
func (m *DestroyTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DestroyTaskRequest.Unmarshal(m, b)
@ -859,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_f8c1fd114dd6e6a4, []int{15}
return fileDescriptor_driver_9320f8b051f51d4e, []int{15}
}
func (m *DestroyTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DestroyTaskResponse.Unmarshal(m, b)
@ -891,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_f8c1fd114dd6e6a4, []int{16}
return fileDescriptor_driver_9320f8b051f51d4e, []int{16}
}
func (m *InspectTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InspectTaskRequest.Unmarshal(m, b)
@ -934,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_f8c1fd114dd6e6a4, []int{17}
return fileDescriptor_driver_9320f8b051f51d4e, []int{17}
}
func (m *InspectTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_InspectTaskResponse.Unmarshal(m, b)
@ -987,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_f8c1fd114dd6e6a4, []int{18}
return fileDescriptor_driver_9320f8b051f51d4e, []int{18}
}
func (m *TaskStatsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskStatsRequest.Unmarshal(m, b)
@ -1026,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_f8c1fd114dd6e6a4, []int{19}
return fileDescriptor_driver_9320f8b051f51d4e, []int{19}
}
func (m *TaskStatsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskStatsResponse.Unmarshal(m, b)
@ -1063,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_f8c1fd114dd6e6a4, []int{20}
return fileDescriptor_driver_9320f8b051f51d4e, []int{20}
}
func (m *TaskEventsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskEventsRequest.Unmarshal(m, b)
@ -1097,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_f8c1fd114dd6e6a4, []int{21}
return fileDescriptor_driver_9320f8b051f51d4e, []int{21}
}
func (m *SignalTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalTaskRequest.Unmarshal(m, b)
@ -1141,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_f8c1fd114dd6e6a4, []int{22}
return fileDescriptor_driver_9320f8b051f51d4e, []int{22}
}
func (m *SignalTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_SignalTaskResponse.Unmarshal(m, b)
@ -1178,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_f8c1fd114dd6e6a4, []int{23}
return fileDescriptor_driver_9320f8b051f51d4e, []int{23}
}
func (m *ExecTaskRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExecTaskRequest.Unmarshal(m, b)
@ -1235,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_f8c1fd114dd6e6a4, []int{24}
return fileDescriptor_driver_9320f8b051f51d4e, []int{24}
}
func (m *ExecTaskResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExecTaskResponse.Unmarshal(m, b)
@ -1294,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_f8c1fd114dd6e6a4, []int{25}
return fileDescriptor_driver_9320f8b051f51d4e, []int{25}
}
func (m *DriverCapabilities) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DriverCapabilities.Unmarshal(m, b)
@ -1375,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_f8c1fd114dd6e6a4, []int{26}
return fileDescriptor_driver_9320f8b051f51d4e, []int{26}
}
func (m *TaskConfig) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskConfig.Unmarshal(m, b)
@ -1494,8 +1494,8 @@ func (m *TaskConfig) GetAllocId() string {
}
type Resources struct {
// RawResources are the resources set for the task
RawResources *RawResources `protobuf:"bytes,1,opt,name=raw_resources,json=rawResources,proto3" json:"raw_resources,omitempty"`
// AllocatedResources are the resources set for the task
AllocatedResources *AllocatedTaskResources `protobuf:"bytes,1,opt,name=allocated_resources,json=allocatedResources,proto3" json:"allocated_resources,omitempty"`
// LinuxResources are the computed values to set for specific Linux features
LinuxResources *LinuxResources `protobuf:"bytes,2,opt,name=linux_resources,json=linuxResources,proto3" json:"linux_resources,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
@ -1507,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_f8c1fd114dd6e6a4, []int{27}
return fileDescriptor_driver_9320f8b051f51d4e, []int{27}
}
func (m *Resources) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Resources.Unmarshal(m, b)
@ -1527,9 +1527,9 @@ func (m *Resources) XXX_DiscardUnknown() {
var xxx_messageInfo_Resources proto.InternalMessageInfo
func (m *Resources) GetRawResources() *RawResources {
func (m *Resources) GetAllocatedResources() *AllocatedTaskResources {
if m != nil {
return m.RawResources
return m.AllocatedResources
}
return nil
}
@ -1541,76 +1541,136 @@ func (m *Resources) GetLinuxResources() *LinuxResources {
return nil
}
type RawResources struct {
Cpu int64 `protobuf:"varint,1,opt,name=cpu,proto3" json:"cpu,omitempty"`
Memory int64 `protobuf:"varint,2,opt,name=memory,proto3" json:"memory,omitempty"`
Disk int64 `protobuf:"varint,3,opt,name=disk,proto3" json:"disk,omitempty"`
Iops int64 `protobuf:"varint,4,opt,name=iops,proto3" json:"iops,omitempty"`
Networks []*NetworkResource `protobuf:"bytes,5,rep,name=networks,proto3" json:"networks,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
type AllocatedTaskResources struct {
Cpu *AllocatedCpuResources `protobuf:"bytes,1,opt,name=cpu,proto3" json:"cpu,omitempty"`
Memory *AllocatedMemoryResources `protobuf:"bytes,2,opt,name=memory,proto3" json:"memory,omitempty"`
Networks []*NetworkResource `protobuf:"bytes,5,rep,name=networks,proto3" json:"networks,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
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_f8c1fd114dd6e6a4, []int{28}
func (m *AllocatedTaskResources) Reset() { *m = AllocatedTaskResources{} }
func (m *AllocatedTaskResources) String() string { return proto.CompactTextString(m) }
func (*AllocatedTaskResources) ProtoMessage() {}
func (*AllocatedTaskResources) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_9320f8b051f51d4e, []int{28}
}
func (m *RawResources) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_RawResources.Unmarshal(m, b)
func (m *AllocatedTaskResources) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AllocatedTaskResources.Unmarshal(m, b)
}
func (m *RawResources) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_RawResources.Marshal(b, m, deterministic)
func (m *AllocatedTaskResources) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_AllocatedTaskResources.Marshal(b, m, deterministic)
}
func (dst *RawResources) XXX_Merge(src proto.Message) {
xxx_messageInfo_RawResources.Merge(dst, src)
func (dst *AllocatedTaskResources) XXX_Merge(src proto.Message) {
xxx_messageInfo_AllocatedTaskResources.Merge(dst, src)
}
func (m *RawResources) XXX_Size() int {
return xxx_messageInfo_RawResources.Size(m)
func (m *AllocatedTaskResources) XXX_Size() int {
return xxx_messageInfo_AllocatedTaskResources.Size(m)
}
func (m *RawResources) XXX_DiscardUnknown() {
xxx_messageInfo_RawResources.DiscardUnknown(m)
func (m *AllocatedTaskResources) XXX_DiscardUnknown() {
xxx_messageInfo_AllocatedTaskResources.DiscardUnknown(m)
}
var xxx_messageInfo_RawResources proto.InternalMessageInfo
var xxx_messageInfo_AllocatedTaskResources proto.InternalMessageInfo
func (m *RawResources) GetCpu() int64 {
func (m *AllocatedTaskResources) GetCpu() *AllocatedCpuResources {
if m != nil {
return m.Cpu
}
return 0
return nil
}
func (m *RawResources) GetMemory() int64 {
func (m *AllocatedTaskResources) GetMemory() *AllocatedMemoryResources {
if m != nil {
return m.Memory
}
return 0
return nil
}
func (m *RawResources) GetDisk() int64 {
if m != nil {
return m.Disk
}
return 0
}
func (m *RawResources) GetIops() int64 {
if m != nil {
return m.Iops
}
return 0
}
func (m *RawResources) GetNetworks() []*NetworkResource {
func (m *AllocatedTaskResources) GetNetworks() []*NetworkResource {
if m != nil {
return m.Networks
}
return nil
}
type AllocatedCpuResources struct {
CpuShares int64 `protobuf:"varint,1,opt,name=cpu_shares,json=cpuShares,proto3" json:"cpu_shares,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *AllocatedCpuResources) Reset() { *m = AllocatedCpuResources{} }
func (m *AllocatedCpuResources) String() string { return proto.CompactTextString(m) }
func (*AllocatedCpuResources) ProtoMessage() {}
func (*AllocatedCpuResources) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_9320f8b051f51d4e, []int{29}
}
func (m *AllocatedCpuResources) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AllocatedCpuResources.Unmarshal(m, b)
}
func (m *AllocatedCpuResources) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_AllocatedCpuResources.Marshal(b, m, deterministic)
}
func (dst *AllocatedCpuResources) XXX_Merge(src proto.Message) {
xxx_messageInfo_AllocatedCpuResources.Merge(dst, src)
}
func (m *AllocatedCpuResources) XXX_Size() int {
return xxx_messageInfo_AllocatedCpuResources.Size(m)
}
func (m *AllocatedCpuResources) XXX_DiscardUnknown() {
xxx_messageInfo_AllocatedCpuResources.DiscardUnknown(m)
}
var xxx_messageInfo_AllocatedCpuResources proto.InternalMessageInfo
func (m *AllocatedCpuResources) GetCpuShares() int64 {
if m != nil {
return m.CpuShares
}
return 0
}
type AllocatedMemoryResources struct {
MemoryMb int64 `protobuf:"varint,2,opt,name=memory_mb,json=memoryMb,proto3" json:"memory_mb,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *AllocatedMemoryResources) Reset() { *m = AllocatedMemoryResources{} }
func (m *AllocatedMemoryResources) String() string { return proto.CompactTextString(m) }
func (*AllocatedMemoryResources) ProtoMessage() {}
func (*AllocatedMemoryResources) Descriptor() ([]byte, []int) {
return fileDescriptor_driver_9320f8b051f51d4e, []int{30}
}
func (m *AllocatedMemoryResources) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_AllocatedMemoryResources.Unmarshal(m, b)
}
func (m *AllocatedMemoryResources) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_AllocatedMemoryResources.Marshal(b, m, deterministic)
}
func (dst *AllocatedMemoryResources) XXX_Merge(src proto.Message) {
xxx_messageInfo_AllocatedMemoryResources.Merge(dst, src)
}
func (m *AllocatedMemoryResources) XXX_Size() int {
return xxx_messageInfo_AllocatedMemoryResources.Size(m)
}
func (m *AllocatedMemoryResources) XXX_DiscardUnknown() {
xxx_messageInfo_AllocatedMemoryResources.DiscardUnknown(m)
}
var xxx_messageInfo_AllocatedMemoryResources proto.InternalMessageInfo
func (m *AllocatedMemoryResources) GetMemoryMb() int64 {
if m != nil {
return m.MemoryMb
}
return 0
}
type NetworkResource struct {
Device string `protobuf:"bytes,1,opt,name=device,proto3" json:"device,omitempty"`
Cidr string `protobuf:"bytes,2,opt,name=cidr,proto3" json:"cidr,omitempty"`
@ -1627,7 +1687,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_f8c1fd114dd6e6a4, []int{29}
return fileDescriptor_driver_9320f8b051f51d4e, []int{31}
}
func (m *NetworkResource) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NetworkResource.Unmarshal(m, b)
@ -1701,7 +1761,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_f8c1fd114dd6e6a4, []int{30}
return fileDescriptor_driver_9320f8b051f51d4e, []int{32}
}
func (m *NetworkPort) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NetworkPort.Unmarshal(m, b)
@ -1761,7 +1821,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_f8c1fd114dd6e6a4, []int{31}
return fileDescriptor_driver_9320f8b051f51d4e, []int{33}
}
func (m *LinuxResources) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_LinuxResources.Unmarshal(m, b)
@ -1853,7 +1913,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_f8c1fd114dd6e6a4, []int{32}
return fileDescriptor_driver_9320f8b051f51d4e, []int{34}
}
func (m *Mount) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Mount.Unmarshal(m, b)
@ -1916,7 +1976,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_f8c1fd114dd6e6a4, []int{33}
return fileDescriptor_driver_9320f8b051f51d4e, []int{35}
}
func (m *Device) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_Device.Unmarshal(m, b)
@ -1974,7 +2034,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_f8c1fd114dd6e6a4, []int{34}
return fileDescriptor_driver_9320f8b051f51d4e, []int{36}
}
func (m *TaskHandle) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskHandle.Unmarshal(m, b)
@ -2034,7 +2094,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_f8c1fd114dd6e6a4, []int{35}
return fileDescriptor_driver_9320f8b051f51d4e, []int{37}
}
func (m *NetworkOverride) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_NetworkOverride.Unmarshal(m, b)
@ -2092,7 +2152,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_f8c1fd114dd6e6a4, []int{36}
return fileDescriptor_driver_9320f8b051f51d4e, []int{38}
}
func (m *ExitResult) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_ExitResult.Unmarshal(m, b)
@ -2155,7 +2215,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_f8c1fd114dd6e6a4, []int{37}
return fileDescriptor_driver_9320f8b051f51d4e, []int{39}
}
func (m *TaskStatus) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskStatus.Unmarshal(m, b)
@ -2230,7 +2290,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_f8c1fd114dd6e6a4, []int{38}
return fileDescriptor_driver_9320f8b051f51d4e, []int{40}
}
func (m *TaskDriverStatus) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskDriverStatus.Unmarshal(m, b)
@ -2275,7 +2335,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_f8c1fd114dd6e6a4, []int{39}
return fileDescriptor_driver_9320f8b051f51d4e, []int{41}
}
func (m *TaskStats) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskStats.Unmarshal(m, b)
@ -2337,7 +2397,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_f8c1fd114dd6e6a4, []int{40}
return fileDescriptor_driver_9320f8b051f51d4e, []int{42}
}
func (m *TaskResourceUsage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_TaskResourceUsage.Unmarshal(m, b)
@ -2389,7 +2449,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_f8c1fd114dd6e6a4, []int{41}
return fileDescriptor_driver_9320f8b051f51d4e, []int{43}
}
func (m *CPUUsage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_CPUUsage.Unmarshal(m, b)
@ -2475,7 +2535,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_f8c1fd114dd6e6a4, []int{42}
return fileDescriptor_driver_9320f8b051f51d4e, []int{44}
}
func (m *MemoryUsage) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_MemoryUsage.Unmarshal(m, b)
@ -2555,7 +2615,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_f8c1fd114dd6e6a4, []int{43}
return fileDescriptor_driver_9320f8b051f51d4e, []int{45}
}
func (m *DriverTaskEvent) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_DriverTaskEvent.Unmarshal(m, b)
@ -2634,7 +2694,9 @@ func init() {
proto.RegisterType((*TaskConfig)(nil), "hashicorp.nomad.plugins.drivers.proto.TaskConfig")
proto.RegisterMapType((map[string]string)(nil), "hashicorp.nomad.plugins.drivers.proto.TaskConfig.EnvEntry")
proto.RegisterType((*Resources)(nil), "hashicorp.nomad.plugins.drivers.proto.Resources")
proto.RegisterType((*RawResources)(nil), "hashicorp.nomad.plugins.drivers.proto.RawResources")
proto.RegisterType((*AllocatedTaskResources)(nil), "hashicorp.nomad.plugins.drivers.proto.AllocatedTaskResources")
proto.RegisterType((*AllocatedCpuResources)(nil), "hashicorp.nomad.plugins.drivers.proto.AllocatedCpuResources")
proto.RegisterType((*AllocatedMemoryResources)(nil), "hashicorp.nomad.plugins.drivers.proto.AllocatedMemoryResources")
proto.RegisterType((*NetworkResource)(nil), "hashicorp.nomad.plugins.drivers.proto.NetworkResource")
proto.RegisterType((*NetworkPort)(nil), "hashicorp.nomad.plugins.drivers.proto.NetworkPort")
proto.RegisterType((*LinuxResources)(nil), "hashicorp.nomad.plugins.drivers.proto.LinuxResources")
@ -3246,188 +3308,190 @@ var _Driver_serviceDesc = grpc.ServiceDesc{
}
func init() {
proto.RegisterFile("plugins/drivers/proto/driver.proto", fileDescriptor_driver_f8c1fd114dd6e6a4)
proto.RegisterFile("plugins/drivers/proto/driver.proto", fileDescriptor_driver_9320f8b051f51d4e)
}
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,
var fileDescriptor_driver_9320f8b051f51d4e = []byte{
// 2888 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, 0x12, 0x35, 0xdb, 0xbb, 0x6b, 0xd3, 0x34, 0xfe, 0x7f, 0xaf,
0x07, 0x70, 0x20, 0xd8, 0x5e, 0xca, 0x96, 0x91, 0x7d, 0x25, 0x7e, 0xd0, 0xd4, 0xac, 0x24, 0xaf,
0x44, 0x29, 0x4d, 0x0a, 0xeb, 0x4d, 0x62, 0x4f, 0x46, 0x33, 0x2d, 0x72, 0x56, 0x9c, 0x87, 0xa7,
0x7b, 0x64, 0x09, 0x41, 0x90, 0x20, 0x01, 0x82, 0xe4, 0x10, 0x20, 0x17, 0x23, 0x40, 0x8e, 0xc9,
0x29, 0xc8, 0x37, 0x48, 0xe0, 0x4b, 0x3e, 0x45, 0x80, 0x5c, 0x72, 0x09, 0x90, 0x6b, 0xbe, 0x41,
0xd0, 0x8f, 0x19, 0x0e, 0x25, 0xad, 0x77, 0xc8, 0xcd, 0x89, 0xec, 0xea, 0xae, 0x5f, 0xd7, 0x54,
0x55, 0x57, 0x55, 0x77, 0x81, 0x1e, 0x8e, 0xe3, 0xa1, 0xeb, 0xd3, 0x75, 0x27, 0x72, 0x4f, 0x49,
0x44, 0xd7, 0xc3, 0x28, 0x60, 0x81, 0x1a, 0xb5, 0xc5, 0x00, 0xbd, 0x31, 0xb2, 0xe8, 0xc8, 0xb5,
0x83, 0x28, 0x6c, 0xfb, 0x81, 0x67, 0x39, 0x6d, 0xc5, 0xd3, 0x56, 0x3c, 0x72, 0x59, 0xeb, 0xff,
0x87, 0x41, 0x30, 0x1c, 0x13, 0x89, 0x70, 0x14, 0x1f, 0xaf, 0x3b, 0x71, 0x64, 0x31, 0x37, 0xf0,
0xd5, 0xfc, 0x6b, 0x17, 0xe7, 0x99, 0xeb, 0x11, 0xca, 0x2c, 0x2f, 0x54, 0x0b, 0x3e, 0x1a, 0xba,
0x6c, 0x14, 0x1f, 0xb5, 0xed, 0xc0, 0x5b, 0x4f, 0xb7, 0x5c, 0x17, 0x5b, 0xae, 0x27, 0x62, 0xd2,
0x91, 0x15, 0x11, 0x67, 0x7d, 0x64, 0x8f, 0x69, 0x48, 0x6c, 0xfe, 0x6b, 0xf2, 0x3f, 0x0a, 0x61,
0x2b, 0x3f, 0x02, 0x65, 0x51, 0x6c, 0xb3, 0xe4, 0x7b, 0x2d, 0xc6, 0x22, 0xf7, 0x28, 0x66, 0x44,
0x02, 0xe9, 0xaf, 0xc0, 0xcb, 0x03, 0x8b, 0x9e, 0x74, 0x03, 0xff, 0xd8, 0x1d, 0xf6, 0xed, 0x11,
0xf1, 0x2c, 0x4c, 0xbe, 0x88, 0x09, 0x65, 0xfa, 0x0f, 0xa1, 0x79, 0x79, 0x8a, 0x86, 0x81, 0x4f,
0x09, 0xfa, 0x08, 0x16, 0xb9, 0x34, 0xcd, 0xc2, 0xad, 0xc2, 0x5a, 0x7d, 0xe3, 0xed, 0xf6, 0xb3,
0x14, 0x27, 0x65, 0x68, 0xab, 0xaf, 0x68, 0xf7, 0x43, 0x62, 0x63, 0xc1, 0xa9, 0xdf, 0x84, 0xeb,
0x5d, 0x2b, 0xb4, 0x8e, 0xdc, 0xb1, 0xcb, 0x5c, 0x42, 0x93, 0x4d, 0x63, 0xb8, 0x31, 0x4d, 0x56,
0x1b, 0x7e, 0x06, 0xcb, 0x76, 0x86, 0xae, 0x36, 0xbe, 0xdf, 0xce, 0x65, 0xb1, 0xf6, 0xa6, 0x18,
0x4d, 0x01, 0x4f, 0xc1, 0xe9, 0x37, 0x00, 0x3d, 0x74, 0xfd, 0x21, 0x89, 0xc2, 0xc8, 0xf5, 0x59,
0x22, 0xcc, 0xd7, 0x25, 0xb8, 0x3e, 0x45, 0x56, 0xc2, 0x3c, 0x05, 0x48, 0xf5, 0xc8, 0x45, 0x29,
0xad, 0xd5, 0x37, 0x3e, 0xc9, 0x29, 0xca, 0x15, 0x78, 0xed, 0x4e, 0x0a, 0x66, 0xf8, 0x2c, 0x3a,
0xc7, 0x19, 0x74, 0xf4, 0x39, 0x54, 0x46, 0xc4, 0x1a, 0xb3, 0x51, 0xb3, 0x78, 0xab, 0xb0, 0xd6,
0xd8, 0x78, 0xf8, 0x02, 0xfb, 0x6c, 0x0b, 0xa0, 0x3e, 0xb3, 0x18, 0xc1, 0x0a, 0x15, 0xdd, 0x06,
0x24, 0xff, 0x99, 0x0e, 0xa1, 0x76, 0xe4, 0x86, 0xdc, 0x91, 0x9b, 0xa5, 0x5b, 0x85, 0xb5, 0x1a,
0xbe, 0x26, 0x67, 0x36, 0x27, 0x13, 0xad, 0x10, 0x56, 0x2f, 0x48, 0x8b, 0x34, 0x28, 0x9d, 0x90,
0x73, 0x61, 0x91, 0x1a, 0xe6, 0x7f, 0xd1, 0x16, 0x94, 0x4f, 0xad, 0x71, 0x4c, 0x84, 0xc8, 0xf5,
0x8d, 0x77, 0x9f, 0xe7, 0x1e, 0xca, 0x45, 0x27, 0x7a, 0xc0, 0x92, 0xff, 0x41, 0xf1, 0x5e, 0x41,
0xbf, 0x0f, 0xf5, 0x8c, 0xdc, 0xa8, 0x01, 0x70, 0xd8, 0xdb, 0x34, 0x06, 0x46, 0x77, 0x60, 0x6c,
0x6a, 0x0b, 0x68, 0x05, 0x6a, 0x87, 0xbd, 0x6d, 0xa3, 0xb3, 0x3b, 0xd8, 0x7e, 0xa2, 0x15, 0x50,
0x1d, 0x96, 0x92, 0x41, 0x51, 0x3f, 0x03, 0x84, 0x89, 0x1d, 0x9c, 0x92, 0x88, 0x3b, 0xb2, 0xb2,
0x2a, 0x7a, 0x19, 0x96, 0x98, 0x45, 0x4f, 0x4c, 0xd7, 0x51, 0x32, 0x57, 0xf8, 0x70, 0xc7, 0x41,
0x3b, 0x50, 0x19, 0x59, 0xbe, 0x33, 0x7e, 0xbe, 0xdc, 0xd3, 0xaa, 0xe6, 0xe0, 0xdb, 0x82, 0x11,
0x2b, 0x00, 0xee, 0xdd, 0x53, 0x3b, 0x4b, 0x03, 0xe8, 0x4f, 0x40, 0xeb, 0x33, 0x2b, 0x62, 0x59,
0x71, 0x0c, 0x58, 0xe4, 0xfb, 0x2b, 0x8f, 0x9e, 0x65, 0x4f, 0x79, 0x32, 0xb1, 0x60, 0xd7, 0xff,
0x53, 0x84, 0x6b, 0x19, 0x6c, 0xe5, 0xa9, 0x8f, 0xa1, 0x12, 0x11, 0x1a, 0x8f, 0x99, 0x80, 0x6f,
0x6c, 0x7c, 0x98, 0x13, 0xfe, 0x12, 0x52, 0x1b, 0x0b, 0x18, 0xac, 0xe0, 0xd0, 0x1a, 0x68, 0x92,
0xc3, 0x24, 0x51, 0x14, 0x44, 0xa6, 0x47, 0x87, 0x42, 0x6b, 0x35, 0xdc, 0x90, 0x74, 0x83, 0x93,
0xf7, 0xe8, 0x30, 0xa3, 0xd5, 0xd2, 0x0b, 0x6a, 0x15, 0x59, 0xa0, 0xf9, 0x84, 0x7d, 0x19, 0x44,
0x27, 0x26, 0x57, 0x6d, 0xe4, 0x3a, 0xa4, 0xb9, 0x28, 0x40, 0xef, 0xe4, 0x04, 0xed, 0x49, 0xf6,
0x7d, 0xc5, 0x8d, 0x57, 0xfd, 0x69, 0x82, 0xfe, 0x16, 0x54, 0xe4, 0x97, 0x72, 0x4f, 0xea, 0x1f,
0x76, 0xbb, 0x46, 0xbf, 0xaf, 0x2d, 0xa0, 0x1a, 0x94, 0xb1, 0x31, 0xc0, 0xdc, 0xc3, 0x6a, 0x50,
0x7e, 0xd8, 0x19, 0x74, 0x76, 0xb5, 0xa2, 0xfe, 0x26, 0xac, 0x3e, 0xb6, 0x5c, 0x96, 0xc7, 0xb9,
0xf4, 0x00, 0xb4, 0xc9, 0x5a, 0x65, 0x9d, 0x9d, 0x29, 0xeb, 0xe4, 0x57, 0x8d, 0x71, 0xe6, 0xb2,
0x0b, 0xf6, 0xd0, 0xa0, 0x44, 0xa2, 0x48, 0x99, 0x80, 0xff, 0xd5, 0xbf, 0x84, 0xd5, 0x3e, 0x0b,
0xc2, 0x5c, 0x9e, 0xff, 0x1e, 0x2c, 0xf1, 0x1c, 0x15, 0xc4, 0x4c, 0xb9, 0xfe, 0x2b, 0x6d, 0x99,
0xc3, 0xda, 0x49, 0x0e, 0x6b, 0x6f, 0xaa, 0x1c, 0x87, 0x93, 0x95, 0xe8, 0x25, 0xa8, 0x50, 0x77,
0xe8, 0x5b, 0x63, 0x15, 0x2d, 0xd4, 0x48, 0x47, 0xdc, 0xc9, 0x93, 0x8d, 0x95, 0xe3, 0x77, 0x01,
0x6d, 0x12, 0xca, 0xa2, 0xe0, 0x3c, 0x97, 0x3c, 0x37, 0xa0, 0x7c, 0x1c, 0x44, 0xb6, 0x3c, 0x88,
0x55, 0x2c, 0x07, 0xfc, 0x50, 0x4d, 0x81, 0x28, 0xec, 0xdb, 0x80, 0x76, 0x7c, 0x9e, 0x53, 0xf2,
0x19, 0xe2, 0xb7, 0x45, 0xb8, 0x3e, 0xb5, 0x5e, 0x19, 0x63, 0xfe, 0x73, 0xc8, 0x03, 0x53, 0x4c,
0xe5, 0x39, 0x44, 0xfb, 0x50, 0x91, 0x2b, 0x94, 0x26, 0xef, 0xce, 0x00, 0x24, 0xd3, 0x94, 0x82,
0x53, 0x30, 0x57, 0x3a, 0x7d, 0xe9, 0x7f, 0xed, 0xf4, 0x5a, 0xf2, 0x1d, 0xf4, 0xb9, 0xfa, 0xfb,
0x01, 0x5c, 0xcb, 0x2c, 0x56, 0xca, 0x7b, 0x08, 0x65, 0xca, 0x09, 0x4a, 0x7b, 0xef, 0xcc, 0xa8,
0x3d, 0x8a, 0x25, 0xbb, 0x7e, 0x5d, 0x82, 0x1b, 0xa7, 0xc4, 0x4f, 0x45, 0xd1, 0x37, 0xe1, 0x5a,
0x5f, 0xb8, 0x56, 0x2e, 0xdf, 0x99, 0xb8, 0x65, 0x71, 0xca, 0x2d, 0x6f, 0x00, 0xca, 0xa2, 0x28,
0xe7, 0x39, 0x87, 0x55, 0xe3, 0x8c, 0xd8, 0xb9, 0x90, 0x9b, 0xb0, 0x64, 0x07, 0x9e, 0x67, 0xf9,
0x4e, 0xb3, 0x78, 0xab, 0xb4, 0x56, 0xc3, 0xc9, 0x30, 0x7b, 0x7e, 0x4a, 0x79, 0xcf, 0x8f, 0xfe,
0x9b, 0x02, 0x68, 0x93, 0xbd, 0x95, 0x22, 0xb9, 0xf4, 0xcc, 0xe1, 0x40, 0x7c, 0xef, 0x65, 0xac,
0x46, 0x8a, 0x9e, 0x1c, 0x71, 0x49, 0x27, 0x51, 0x94, 0x09, 0x21, 0xa5, 0x17, 0x0c, 0x21, 0xfa,
0xbf, 0x0a, 0x80, 0x2e, 0x17, 0x4a, 0xe8, 0x75, 0x58, 0xa6, 0xc4, 0x77, 0x4c, 0xa9, 0x46, 0x69,
0xe1, 0x2a, 0xae, 0x73, 0x9a, 0xd4, 0x27, 0x45, 0x08, 0x16, 0xc9, 0x19, 0xb1, 0xd5, 0x69, 0x15,
0xff, 0xd1, 0x08, 0x96, 0x8f, 0xa9, 0xe9, 0xd2, 0x60, 0x6c, 0xa5, 0x15, 0x45, 0x63, 0xc3, 0x98,
0xbb, 0x60, 0x6b, 0x3f, 0xec, 0xef, 0x24, 0x60, 0xb8, 0x7e, 0x4c, 0xd3, 0x81, 0xde, 0x86, 0x7a,
0x66, 0x0e, 0x55, 0x61, 0xb1, 0xb7, 0xdf, 0x33, 0xb4, 0x05, 0x04, 0x50, 0xe9, 0x6e, 0xe3, 0xfd,
0xfd, 0x81, 0x8c, 0xda, 0x3b, 0x7b, 0x9d, 0x2d, 0x43, 0x2b, 0xea, 0xbf, 0x2f, 0x03, 0x4c, 0xd2,
0x27, 0x6a, 0x40, 0x31, 0xb5, 0x74, 0xd1, 0x75, 0xf8, 0xc7, 0xf8, 0x96, 0x47, 0x94, 0xf7, 0x88,
0xff, 0x68, 0x03, 0x6e, 0x7a, 0x74, 0x18, 0x5a, 0xf6, 0x89, 0xa9, 0xb2, 0x9e, 0x2d, 0x98, 0xc5,
0x57, 0x2d, 0xe3, 0xeb, 0x6a, 0x52, 0x49, 0x2d, 0x71, 0x77, 0xa1, 0x44, 0xfc, 0xd3, 0xe6, 0xa2,
0xa8, 0x0e, 0x1f, 0xcc, 0x9c, 0xd6, 0xdb, 0x86, 0x7f, 0x2a, 0xab, 0x41, 0x0e, 0x83, 0x7a, 0x50,
0x8b, 0x08, 0x0d, 0xe2, 0xc8, 0x26, 0xb4, 0x59, 0x9e, 0xe9, 0x90, 0xe1, 0x84, 0x0f, 0x4f, 0x20,
0xd0, 0x26, 0x54, 0xbc, 0x20, 0xf6, 0x19, 0x6d, 0x56, 0x84, 0x80, 0x6f, 0xe7, 0x04, 0xdb, 0xe3,
0x4c, 0x58, 0xf1, 0xa2, 0x2d, 0x58, 0x72, 0xc8, 0xa9, 0xcb, 0x65, 0x5a, 0x12, 0x30, 0xb7, 0xf3,
0xda, 0x57, 0x70, 0xe1, 0x84, 0x9b, 0x2b, 0x3d, 0xa6, 0x24, 0x6a, 0x56, 0xa5, 0xd2, 0xf9, 0x7f,
0xf4, 0x2a, 0xd4, 0xac, 0xf1, 0x38, 0xb0, 0x4d, 0xc7, 0x8d, 0x9a, 0x35, 0x31, 0x51, 0x15, 0x84,
0x4d, 0x37, 0x42, 0xaf, 0x41, 0x5d, 0x9e, 0x0c, 0x33, 0xb4, 0xd8, 0xa8, 0x09, 0x62, 0x1a, 0x24,
0xe9, 0xc0, 0x62, 0x23, 0xb5, 0x80, 0x44, 0x91, 0x5c, 0x50, 0x4f, 0x17, 0x90, 0x28, 0x12, 0x0b,
0xbe, 0x05, 0xab, 0xe2, 0x98, 0x0f, 0xa3, 0x20, 0x0e, 0x4d, 0x61, 0xf2, 0x65, 0xb1, 0x68, 0x85,
0x93, 0xb7, 0x38, 0xb5, 0xc7, 0x6d, 0xff, 0x0a, 0x54, 0x9f, 0x06, 0x47, 0x72, 0xc1, 0x8a, 0x58,
0xb0, 0xf4, 0x34, 0x38, 0x4a, 0xa6, 0xa4, 0x84, 0xae, 0xd3, 0x6c, 0xc8, 0x29, 0x31, 0xde, 0x71,
0x5a, 0x77, 0xa0, 0x9a, 0x18, 0xf0, 0x8a, 0x02, 0xf9, 0x46, 0xb6, 0x40, 0xae, 0x65, 0xab, 0xdd,
0x7f, 0x14, 0xa0, 0x96, 0x1a, 0x0c, 0xf9, 0x70, 0x5d, 0x00, 0x5a, 0x8c, 0x38, 0xe6, 0xc4, 0xfe,
0x32, 0xc8, 0xbe, 0x9f, 0x53, 0xd7, 0x9d, 0x04, 0x41, 0x05, 0x1a, 0xe5, 0x0c, 0x28, 0x45, 0x9e,
0xec, 0xf7, 0x39, 0xac, 0x8e, 0x5d, 0x3f, 0x3e, 0xcb, 0xec, 0x25, 0xb3, 0xd8, 0xb7, 0x73, 0xee,
0xb5, 0xcb, 0xb9, 0x27, 0x7b, 0x34, 0xc6, 0x53, 0x63, 0xfd, 0xab, 0x22, 0xbc, 0x74, 0xb5, 0x38,
0xa8, 0x07, 0x25, 0x3b, 0x8c, 0xd5, 0xa7, 0x7d, 0x77, 0xd6, 0x4f, 0xeb, 0x86, 0xf1, 0x64, 0x57,
0x0e, 0xc4, 0x2b, 0x5f, 0x8f, 0x78, 0x41, 0x74, 0xae, 0xbe, 0xe0, 0xc3, 0x59, 0x21, 0xf7, 0x04,
0xf7, 0x04, 0x55, 0xc1, 0x21, 0x0c, 0x55, 0x95, 0x3f, 0xf9, 0x41, 0x2c, 0xcd, 0x9e, 0x87, 0x13,
0x48, 0x9c, 0xe2, 0xe8, 0x77, 0xe0, 0xe6, 0x95, 0x9f, 0x82, 0xfe, 0x0f, 0xc0, 0x0e, 0x63, 0x53,
0xdc, 0x93, 0xa4, 0xdd, 0x4b, 0xb8, 0x66, 0x87, 0x71, 0x5f, 0x10, 0xf4, 0xbb, 0xd0, 0x7c, 0x96,
0xbc, 0xfc, 0xf8, 0x48, 0x89, 0x4d, 0xef, 0x48, 0xe8, 0xa0, 0x84, 0xab, 0x92, 0xb0, 0x77, 0xa4,
0xff, 0xae, 0x08, 0xab, 0x17, 0xc4, 0xe1, 0x29, 0x46, 0x1e, 0xc7, 0x24, 0xed, 0xc9, 0x11, 0x3f,
0x9b, 0xb6, 0xeb, 0x24, 0xb5, 0xa5, 0xf8, 0x2f, 0x82, 0x66, 0xa8, 0xea, 0xbe, 0xa2, 0x1b, 0x72,
0x87, 0xf6, 0x8e, 0x5c, 0x46, 0x45, 0x39, 0x5e, 0xc6, 0x72, 0x80, 0x9e, 0x40, 0x23, 0x22, 0x94,
0x44, 0xa7, 0xc4, 0x31, 0xc3, 0x20, 0x62, 0x89, 0xc2, 0x36, 0x66, 0x53, 0xd8, 0x41, 0x10, 0x31,
0xbc, 0x92, 0x20, 0xf1, 0x11, 0x45, 0x8f, 0x61, 0xc5, 0x39, 0xf7, 0x2d, 0xcf, 0xb5, 0x15, 0x72,
0x65, 0x6e, 0xe4, 0x65, 0x05, 0x24, 0x80, 0xf9, 0x75, 0x33, 0x33, 0xc9, 0x3f, 0x6c, 0x6c, 0x1d,
0x91, 0xb1, 0xd2, 0x89, 0x1c, 0x4c, 0x9f, 0xdf, 0xb2, 0x3a, 0xbf, 0xfa, 0x1f, 0x8b, 0xd0, 0x98,
0x3e, 0x00, 0x89, 0xfd, 0x42, 0x12, 0xb9, 0x81, 0x93, 0xb1, 0xdf, 0x81, 0x20, 0x70, 0x1b, 0xf1,
0xe9, 0x2f, 0xe2, 0x80, 0x59, 0x89, 0x8d, 0xec, 0x30, 0xfe, 0x1e, 0x1f, 0x5f, 0xb0, 0x7d, 0xe9,
0x82, 0xed, 0xd1, 0xdb, 0x80, 0x94, 0x7d, 0xc7, 0xae, 0xe7, 0x32, 0xf3, 0xe8, 0x9c, 0x11, 0xa9,
0xff, 0x12, 0xd6, 0xe4, 0xcc, 0x2e, 0x9f, 0xf8, 0x98, 0xd3, 0x91, 0x0e, 0x2b, 0x41, 0xe0, 0x99,
0xd4, 0x0e, 0x22, 0x62, 0x5a, 0xce, 0x53, 0x91, 0x43, 0x4a, 0xb8, 0x1e, 0x04, 0x5e, 0x9f, 0xd3,
0x3a, 0xce, 0x53, 0x1e, 0x32, 0xed, 0x30, 0xa6, 0x84, 0x99, 0xfc, 0xa7, 0x59, 0x91, 0x21, 0x53,
0x92, 0xba, 0x61, 0x4c, 0x33, 0x0b, 0x3c, 0xe2, 0xf1, 0x90, 0x9f, 0x59, 0xb0, 0x47, 0x3c, 0xbe,
0xcb, 0xf2, 0x01, 0x89, 0x6c, 0xe2, 0xb3, 0x81, 0x6b, 0x9f, 0x50, 0x11, 0xce, 0x0b, 0x78, 0x8a,
0xa6, 0x7f, 0x06, 0x65, 0x91, 0x44, 0xf8, 0xc7, 0x8b, 0x00, 0x2c, 0xe2, 0xb3, 0x54, 0x6f, 0x95,
0x13, 0x44, 0x74, 0x7e, 0x15, 0x6a, 0xa3, 0x80, 0xaa, 0xe8, 0x2e, 0x3d, 0xaf, 0xca, 0x09, 0x62,
0xb2, 0x05, 0xd5, 0x88, 0x58, 0x4e, 0xe0, 0x8f, 0xcf, 0x85, 0x5e, 0xaa, 0x38, 0x1d, 0xeb, 0x5f,
0x40, 0x45, 0x26, 0x97, 0x17, 0xc0, 0xbf, 0x0d, 0xc8, 0x96, 0x69, 0x21, 0x24, 0x91, 0xe7, 0x52,
0xea, 0x06, 0x3e, 0x4d, 0xde, 0x44, 0xe4, 0xcc, 0xc1, 0x64, 0x42, 0xff, 0x5b, 0x41, 0x16, 0x14,
0xf2, 0xb6, 0xca, 0x4b, 0x32, 0x55, 0x1d, 0xcc, 0x7d, 0xa5, 0x57, 0x00, 0x49, 0x59, 0x4d, 0xd4,
0xdb, 0xcf, 0xac, 0x65, 0x35, 0x91, 0x65, 0x35, 0xe1, 0x35, 0x9c, 0xaa, 0x5b, 0x24, 0x9c, 0x2c,
0x5b, 0xea, 0x4e, 0x7a, 0xdf, 0x20, 0xfa, 0xbf, 0x0b, 0x69, 0x44, 0x48, 0xee, 0x05, 0xe8, 0x73,
0xa8, 0xf2, 0xc3, 0x65, 0x7a, 0x56, 0xa8, 0x5e, 0xb9, 0xba, 0xf3, 0x5d, 0x39, 0xda, 0xfc, 0x2c,
0xed, 0x59, 0xa1, 0x2c, 0x68, 0x96, 0x42, 0x39, 0xe2, 0x91, 0xc5, 0x72, 0x26, 0x91, 0x85, 0xff,
0x47, 0x6f, 0x40, 0xc3, 0x8a, 0x59, 0x60, 0x5a, 0xce, 0x29, 0x89, 0x98, 0x4b, 0x89, 0xb2, 0xf0,
0x0a, 0xa7, 0x76, 0x12, 0x62, 0xeb, 0x01, 0x2c, 0x67, 0x31, 0x9f, 0x97, 0x63, 0xcb, 0xd9, 0x1c,
0xfb, 0x23, 0x80, 0x49, 0xf9, 0xcb, 0x3d, 0x81, 0x9c, 0xb9, 0xcc, 0xb4, 0x03, 0x47, 0x46, 0xbe,
0x32, 0xae, 0x72, 0x42, 0x37, 0x70, 0xc8, 0x85, 0xcb, 0x44, 0x39, 0xb9, 0x4c, 0xf0, 0xb3, 0xc9,
0x8f, 0xd3, 0x89, 0x3b, 0x1e, 0x13, 0x47, 0x49, 0x58, 0x0b, 0x02, 0xef, 0x91, 0x20, 0xe8, 0x5f,
0x17, 0xa5, 0x47, 0xc8, 0xab, 0x5c, 0xae, 0x12, 0x33, 0x35, 0x75, 0xe9, 0xc5, 0x4c, 0x7d, 0x1f,
0x80, 0x32, 0x2b, 0xe2, 0x05, 0x83, 0xc5, 0xd4, 0xeb, 0x48, 0xeb, 0xd2, 0x6d, 0x64, 0x90, 0xbc,
0x48, 0xe3, 0x9a, 0x5a, 0xdd, 0x61, 0xe8, 0x7d, 0x58, 0xb6, 0x03, 0x2f, 0x1c, 0x13, 0xc5, 0x5c,
0x7e, 0x2e, 0x73, 0x3d, 0x5d, 0xdf, 0x61, 0x99, 0xab, 0x48, 0xe5, 0x45, 0xaf, 0x22, 0x7f, 0x29,
0xc8, 0x1b, 0x69, 0xf6, 0x42, 0x8c, 0x86, 0x57, 0xbc, 0xba, 0x6e, 0xcd, 0x79, 0xbb, 0xfe, 0xa6,
0x27, 0xd7, 0xd6, 0xfb, 0x79, 0xde, 0x38, 0x9f, 0x5d, 0xc2, 0xfd, 0xb5, 0x04, 0xb5, 0xf4, 0x62,
0x7b, 0xc9, 0xf6, 0xf7, 0xa0, 0x96, 0xb6, 0x03, 0x54, 0x69, 0xf2, 0x8d, 0xe6, 0x49, 0x17, 0xa3,
0x63, 0x40, 0xd6, 0x70, 0x98, 0x96, 0x66, 0x66, 0x4c, 0xad, 0x61, 0xf2, 0x14, 0x70, 0x6f, 0x06,
0x3d, 0x24, 0xd9, 0xe9, 0x90, 0xf3, 0x63, 0xcd, 0x1a, 0x0e, 0xa7, 0x28, 0xe8, 0xc7, 0x70, 0x73,
0x7a, 0x0f, 0xf3, 0xe8, 0xdc, 0x0c, 0x5d, 0x47, 0x5d, 0x65, 0xb6, 0x67, 0xbd, 0xdb, 0xb7, 0xa7,
0xe0, 0x3f, 0x3e, 0x3f, 0x70, 0x1d, 0xa9, 0x73, 0x14, 0x5d, 0x9a, 0x68, 0xfd, 0x14, 0x5e, 0x7e,
0xc6, 0xf2, 0x2b, 0x6c, 0xd0, 0x9b, 0x7e, 0x67, 0x9e, 0x5f, 0x09, 0x19, 0xeb, 0xfd, 0xa1, 0x20,
0x9f, 0x20, 0xa6, 0x75, 0xd2, 0xc9, 0x56, 0xa7, 0xeb, 0x39, 0xf7, 0xe9, 0x1e, 0x1c, 0x4a, 0x78,
0x51, 0x90, 0x7e, 0x72, 0xa1, 0x20, 0xcd, 0x5b, 0xaa, 0xc8, 0xba, 0x4e, 0x02, 0x29, 0x04, 0xfd,
0xcf, 0x25, 0xa8, 0x26, 0xe8, 0xe2, 0xa6, 0x73, 0x4e, 0x19, 0xf1, 0x4c, 0x2f, 0x09, 0x61, 0x05,
0x0c, 0x92, 0xb4, 0xc7, 0x83, 0xd8, 0xab, 0x50, 0xe3, 0x17, 0x2a, 0x39, 0x5d, 0x14, 0xd3, 0x55,
0x4e, 0x10, 0x93, 0xaf, 0x41, 0x9d, 0x05, 0xcc, 0x1a, 0x9b, 0x4c, 0x64, 0xec, 0x92, 0xe4, 0x16,
0x24, 0x91, 0xaf, 0xd1, 0x5b, 0x70, 0x8d, 0x8d, 0xa2, 0x80, 0xb1, 0x31, 0xaf, 0xe2, 0x44, 0xdd,
0x22, 0xcb, 0x8c, 0x45, 0xac, 0xa5, 0x13, 0xb2, 0x9e, 0xa1, 0x3c, 0x7a, 0x4f, 0x16, 0x73, 0xd7,
0x15, 0x41, 0x64, 0x11, 0xaf, 0xa4, 0x54, 0xee, 0xda, 0xa8, 0x09, 0x4b, 0xa1, 0xac, 0x09, 0x44,
0xac, 0x28, 0xe0, 0x64, 0x88, 0x4c, 0x58, 0xf5, 0x88, 0x45, 0xe3, 0x88, 0x38, 0xe6, 0xb1, 0x4b,
0xc6, 0x8e, 0xbc, 0x59, 0x36, 0x72, 0x17, 0xd9, 0x89, 0x5a, 0xda, 0x0f, 0x05, 0x37, 0x6e, 0x24,
0x70, 0x72, 0xcc, 0xeb, 0x03, 0xf9, 0x0f, 0xad, 0x42, 0xbd, 0xff, 0xa4, 0x3f, 0x30, 0xf6, 0xcc,
0xbd, 0xfd, 0x4d, 0x43, 0xb5, 0x12, 0xfa, 0x06, 0x96, 0xc3, 0x02, 0x9f, 0x1f, 0xec, 0x0f, 0x3a,
0xbb, 0xe6, 0x60, 0xa7, 0xfb, 0xa8, 0xaf, 0x15, 0xd1, 0x4d, 0xb8, 0x36, 0xd8, 0xc6, 0xfb, 0x83,
0xc1, 0xae, 0xb1, 0x69, 0x1e, 0x18, 0x78, 0x67, 0x7f, 0xb3, 0xaf, 0x95, 0x10, 0x82, 0xc6, 0x84,
0x3c, 0xd8, 0xd9, 0x33, 0xb4, 0x45, 0x54, 0x87, 0xa5, 0x03, 0x03, 0x77, 0x8d, 0xde, 0x40, 0x2b,
0xeb, 0x7f, 0x2f, 0x42, 0x3d, 0x63, 0x45, 0xee, 0xc8, 0x11, 0x95, 0xd5, 0xfc, 0x22, 0xe6, 0x7f,
0x79, 0x30, 0xb1, 0x2d, 0x7b, 0x24, 0xad, 0xb3, 0x88, 0xe5, 0x40, 0x54, 0xf0, 0xd6, 0x59, 0xe6,
0x9c, 0x2f, 0xe2, 0xaa, 0x67, 0x9d, 0x49, 0x90, 0xd7, 0x61, 0xf9, 0x84, 0x44, 0x3e, 0x19, 0xab,
0x79, 0x69, 0x91, 0xba, 0xa4, 0xc9, 0x25, 0x6b, 0xa0, 0xa9, 0x25, 0x13, 0x18, 0x69, 0x8e, 0x86,
0xa4, 0xef, 0x25, 0x60, 0x47, 0x97, 0xb5, 0x5e, 0x11, 0x5a, 0xbf, 0x3f, 0xbb, 0x93, 0x3e, 0x4b,
0xf1, 0xfd, 0x54, 0xf1, 0x4b, 0x50, 0xc2, 0xc9, 0xab, 0x7a, 0xb7, 0xd3, 0xdd, 0xe6, 0xca, 0x5e,
0x81, 0xda, 0x5e, 0xe7, 0x53, 0xf3, 0xb0, 0x2f, 0xde, 0x68, 0x90, 0x06, 0xcb, 0x8f, 0x0c, 0xdc,
0x33, 0x76, 0x15, 0xa5, 0x84, 0x6e, 0x80, 0xa6, 0x28, 0x93, 0x75, 0x8b, 0xfa, 0x9f, 0x8a, 0xb0,
0x2a, 0xe3, 0x7a, 0xfa, 0x6c, 0xf8, 0xec, 0xf7, 0xbb, 0xf9, 0x43, 0x6f, 0x13, 0x96, 0x3c, 0x42,
0x53, 0x3b, 0xd4, 0x70, 0x32, 0x44, 0x2e, 0xd4, 0x2d, 0xdf, 0x0f, 0x98, 0x78, 0x7b, 0xa2, 0x2a,
0x44, 0x6e, 0xcd, 0xf4, 0xca, 0x95, 0x4a, 0xde, 0xee, 0x4c, 0x90, 0x64, 0x84, 0xcc, 0x62, 0xb7,
0x3e, 0x00, 0xed, 0xe2, 0x82, 0x59, 0xf2, 0xd2, 0x9b, 0xef, 0x4e, 0xd2, 0x12, 0xe1, 0x0e, 0x7a,
0xd8, 0x7b, 0xd4, 0xdb, 0x7f, 0xdc, 0xd3, 0x16, 0xf8, 0x00, 0x1f, 0xf6, 0x7a, 0x3b, 0xbd, 0x2d,
0xad, 0x80, 0x00, 0x2a, 0xc6, 0xa7, 0x3b, 0x03, 0x63, 0x53, 0x2b, 0x6e, 0xfc, 0x73, 0x05, 0x2a,
0x52, 0x48, 0xf4, 0x95, 0x4a, 0xc9, 0xd9, 0x76, 0x30, 0xfa, 0x60, 0xe6, 0xd2, 0x76, 0xaa, 0xc5,
0xdc, 0xfa, 0x70, 0x6e, 0x7e, 0xf5, 0x7c, 0xbb, 0x80, 0x7e, 0x5d, 0x80, 0xe5, 0xa9, 0xf7, 0xca,
0xbc, 0x4f, 0x6d, 0x57, 0x74, 0x9f, 0x5b, 0xdf, 0x99, 0x8b, 0x37, 0x95, 0xe5, 0x57, 0x05, 0xa8,
0x67, 0xfa, 0xae, 0xe8, 0xfe, 0x3c, 0xbd, 0x5a, 0x29, 0xc9, 0x83, 0xf9, 0xdb, 0xbc, 0xfa, 0xc2,
0x3b, 0x05, 0xf4, 0xcb, 0x02, 0xd4, 0x33, 0x1d, 0xc8, 0xdc, 0xa2, 0x5c, 0xee, 0x97, 0xe6, 0x16,
0xe5, 0xaa, 0x86, 0xe7, 0x02, 0xfa, 0x59, 0x01, 0x6a, 0x69, 0x37, 0x11, 0xdd, 0x9d, 0xbd, 0xff,
0x28, 0x85, 0xb8, 0x37, 0x6f, 0xe3, 0x52, 0x5f, 0x40, 0x3f, 0x81, 0x6a, 0xd2, 0x7a, 0x43, 0x79,
0xd3, 0xc8, 0x85, 0xbe, 0x5e, 0xeb, 0xee, 0xcc, 0x7c, 0xd9, 0xed, 0x93, 0x7e, 0x58, 0xee, 0xed,
0x2f, 0x74, 0xee, 0x5a, 0x77, 0x67, 0xe6, 0x4b, 0xb7, 0xe7, 0x9e, 0x90, 0x69, 0x9b, 0xe5, 0xf6,
0x84, 0xcb, 0xfd, 0xba, 0xdc, 0x9e, 0x70, 0x55, 0x97, 0x4e, 0x0a, 0x92, 0x69, 0xbc, 0xe5, 0x16,
0xe4, 0x72, 0x73, 0x2f, 0xb7, 0x20, 0x57, 0xf4, 0xf9, 0x94, 0x4b, 0x4e, 0x0a, 0xf4, 0xbb, 0x33,
0xf7, 0xaa, 0x66, 0x74, 0xc9, 0x4b, 0xdd, 0x32, 0x7d, 0x01, 0xfd, 0x5c, 0x3d, 0x19, 0xc8, 0x46,
0x17, 0x9a, 0x05, 0x6a, 0xaa, 0x37, 0xd6, 0xba, 0x33, 0x5f, 0xaa, 0x11, 0x31, 0xe2, 0x17, 0x05,
0x80, 0x49, 0x4b, 0x2c, 0xb7, 0x10, 0x97, 0x7a, 0x71, 0xad, 0xfb, 0x73, 0x70, 0x66, 0x8f, 0x47,
0xd2, 0x05, 0xcb, 0x7d, 0x3c, 0x2e, 0xb4, 0xec, 0x72, 0x1f, 0x8f, 0x8b, 0xed, 0x36, 0x7d, 0xe1,
0xe3, 0xa5, 0xef, 0x97, 0x65, 0xee, 0xaf, 0x88, 0x9f, 0xf7, 0xfe, 0x1b, 0x00, 0x00, 0xff, 0xff,
0xdc, 0x12, 0xd9, 0x00, 0x29, 0x26, 0x00, 0x00,
}

View File

@ -345,20 +345,27 @@ message TaskConfig {
message Resources {
// RawResources are the resources set for the task
RawResources raw_resources = 1;
// AllocatedResources are the resources set for the task
AllocatedTaskResources allocated_resources = 1;
// LinuxResources are the computed values to set for specific Linux features
LinuxResources linux_resources = 2;
}
message RawResources {
int64 cpu = 1;
int64 memory = 2;
int64 disk = 3;
message AllocatedTaskResources {
AllocatedCpuResources cpu = 1;
AllocatedMemoryResources memory = 2;
repeated NetworkResource networks = 5;
}
message AllocatedCpuResources {
int64 cpu_shares = 1;
}
message AllocatedMemoryResources {
int64 memory_mb = 2;
}
message NetworkResource {
string device = 1;
string cidr = 2;

View File

@ -110,10 +110,14 @@ func (h *DriverHarness) MkAllocDir(t *drivers.TaskConfig, enableLogs bool) func(
Name: t.Name,
Env: t.Env,
}
// Create the mock allocation
alloc := mock.Alloc()
if t.Resources != nil {
task.Resources = t.Resources.NomadResources
alloc.AllocatedResources.Tasks[task.Name] = t.Resources.NomadResources
}
taskBuilder := taskenv.NewBuilder(mock.Node(), mock.Alloc(), task, "global")
taskBuilder := taskenv.NewBuilder(mock.Node(), alloc, task, "global")
utils.SetEnvvars(taskBuilder, fsi, taskDir, config.DefaultConfig())
taskEnv := taskBuilder.Build()

View File

@ -96,14 +96,18 @@ func ResourcesFromProto(pb *proto.Resources) *Resources {
return &r
}
if pb.RawResources != nil {
r.NomadResources = &structs.Resources{
CPU: int(pb.RawResources.Cpu),
MemoryMB: int(pb.RawResources.Memory),
DiskMB: int(pb.RawResources.Disk),
if pb.AllocatedResources != nil {
r.NomadResources = &structs.AllocatedTaskResources{}
if pb.AllocatedResources.Cpu != nil {
r.NomadResources.Cpu.CpuShares = pb.AllocatedResources.Cpu.CpuShares
}
for _, network := range pb.RawResources.Networks {
if pb.AllocatedResources.Memory != nil {
r.NomadResources.Memory.MemoryMB = pb.AllocatedResources.Memory.MemoryMb
}
for _, network := range pb.AllocatedResources.Networks {
var n structs.NetworkResource
n.Device = network.Device
n.IP = network.Ip
@ -145,12 +149,16 @@ func ResourcesToProto(r *Resources) *proto.Resources {
if r == nil {
return nil
}
var pb proto.Resources
if r.NomadResources != nil {
pb.RawResources = &proto.RawResources{
Cpu: int64(r.NomadResources.CPU),
Memory: int64(r.NomadResources.MemoryMB),
Disk: int64(r.NomadResources.DiskMB),
pb.AllocatedResources = &proto.AllocatedTaskResources{
Cpu: &proto.AllocatedCpuResources{
CpuShares: r.NomadResources.Cpu.CpuShares,
},
Memory: &proto.AllocatedMemoryResources{
MemoryMb: r.NomadResources.Memory.MemoryMB,
},
Networks: make([]*proto.NetworkResource, len(r.NomadResources.Networks)),
}
@ -173,7 +181,7 @@ func ResourcesToProto(r *Resources) *proto.Resources {
Value: int32(port.Value),
})
}
pb.RawResources.Networks[i] = &n
pb.AllocatedResources.Networks[i] = &n
}
}