mirror of
https://github.com/kemko/nomad.git
synced 2026-01-07 10:55:42 +03:00
add docker labels
This commit is contained in:
@@ -66,6 +66,13 @@ var (
|
||||
nvidiaVisibleDevices = "NVIDIA_VISIBLE_DEVICES"
|
||||
)
|
||||
|
||||
const (
|
||||
dockerLabelTaskID = "com.hashicorp.nomad.task_id"
|
||||
dockerLabelTaskName = "com.hashicorp.nomad.task_name"
|
||||
dockerLabelAllocID = "com.hashicorp.nomad.alloc_id"
|
||||
dockerLabelJobName = "com.hashicorp.nomad.job_name"
|
||||
)
|
||||
|
||||
type Driver struct {
|
||||
// eventer is used to handle multiplexing of TaskEvents calls such that an
|
||||
// event can be broadcast to all callers
|
||||
@@ -981,9 +988,19 @@ func (d *Driver) createContainerConfig(task *drivers.TaskConfig, driverConfig *T
|
||||
|
||||
if len(driverConfig.Labels) > 0 {
|
||||
config.Labels = driverConfig.Labels
|
||||
logger.Debug("applied labels on the container", "labels", config.Labels)
|
||||
}
|
||||
|
||||
config.Labels = map[string]string{
|
||||
dockerLabelTaskID: task.ID,
|
||||
dockerLabelTaskName: task.Name,
|
||||
dockerLabelAllocID: task.AllocID,
|
||||
dockerLabelJobName: task.JobName,
|
||||
}
|
||||
for k, v := range driverConfig.Labels {
|
||||
config.Labels[k] = v
|
||||
}
|
||||
logger.Debug("applied labels on the container", "labels", config.Labels)
|
||||
|
||||
config.Env = task.EnvList()
|
||||
|
||||
containerName := fmt.Sprintf("%s-%s", strings.Replace(task.Name, "/", "_", -1), task.AllocID)
|
||||
|
||||
@@ -905,7 +905,8 @@ func TestDockerDriver_Labels(t *testing.T) {
|
||||
t.Fatalf("err: %v", err)
|
||||
}
|
||||
|
||||
require.Equal(t, 2, len(container.Config.Labels))
|
||||
// expect to see 4 additional standard labels
|
||||
require.Equal(t, len(cfg.Labels)+4, len(container.Config.Labels))
|
||||
for k, v := range cfg.Labels {
|
||||
require.Equal(t, v, container.Config.Labels[k])
|
||||
}
|
||||
@@ -1008,6 +1009,38 @@ func TestDockerDriver_CreateContainerConfig(t *testing.T) {
|
||||
require.Equal(t, containerName, c.Name)
|
||||
}
|
||||
|
||||
func TestDockerDriver_CreateContainerConfig_Labels(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
task, cfg, _ := dockerTask(t)
|
||||
task.AllocID = uuid.Generate()
|
||||
task.JobName = "redis-demo-job"
|
||||
|
||||
cfg.Labels = map[string]string{
|
||||
"user_label": "user_value",
|
||||
}
|
||||
|
||||
require.NoError(t, task.EncodeConcreteDriverConfig(cfg))
|
||||
|
||||
dh := dockerDriverHarness(t, nil)
|
||||
driver := dh.Impl().(*Driver)
|
||||
|
||||
c, err := driver.createContainerConfig(task, cfg, "org/repo:0.1")
|
||||
require.NoError(t, err)
|
||||
|
||||
expectedLabels := map[string]string{
|
||||
// user provided labels
|
||||
"user_label": "user_value",
|
||||
// default labels
|
||||
"com.hashicorp.nomad.alloc_id": task.AllocID,
|
||||
"com.hashicorp.nomad.job_name": "redis-demo-job",
|
||||
"com.hashicorp.nomad.task_id": task.ID,
|
||||
"com.hashicorp.nomad.task_name": "redis-demo",
|
||||
}
|
||||
|
||||
require.Equal(t, expectedLabels, c.Config.Labels)
|
||||
}
|
||||
|
||||
func TestDockerDriver_CreateContainerConfig_Logging(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user