Skip to content

Commit

Permalink
Only initialize task.VolumeMounts when not-nil
Browse files Browse the repository at this point in the history
1.1.3 had a bug where task.VolumeMounts will be an empty slice instead
  of nil. Eventually, it gets canonicalized and is set to `nil`, but it
seems to confuse dry-run planning.
  • Loading branch information
Mahmood Ali committed Aug 2, 2021
1 parent 6d00c68 commit 5a6f7f4
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 19 deletions.
22 changes: 12 additions & 10 deletions command/agent/job_endpoint.go
Original file line number Diff line number Diff line change
Expand Up @@ -1047,16 +1047,18 @@ func ApiTaskToStructsTask(job *structs.Job, group *structs.TaskGroup,
}
}

structsTask.VolumeMounts = []*structs.VolumeMount{}
for _, mount := range apiTask.VolumeMounts {
if mount != nil && mount.Volume != nil {
structsTask.VolumeMounts = append(structsTask.VolumeMounts,
&structs.VolumeMount{
Volume: *mount.Volume,
Destination: *mount.Destination,
ReadOnly: *mount.ReadOnly,
PropagationMode: *mount.PropagationMode,
})
if len(apiTask.VolumeMounts) > 0 {
structsTask.VolumeMounts = []*structs.VolumeMount{}
for _, mount := range apiTask.VolumeMounts {
if mount != nil && mount.Volume != nil {
structsTask.VolumeMounts = append(structsTask.VolumeMounts,
&structs.VolumeMount{
Volume: *mount.Volume,
Destination: *mount.Destination,
ReadOnly: *mount.ReadOnly,
PropagationMode: *mount.PropagationMode,
})
}
}
}

Expand Down
27 changes: 18 additions & 9 deletions command/agent/job_endpoint_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,10 @@ import (
"net/http"
"net/http/httptest"
"reflect"
"strings"
"testing"
"time"

"github.com/golang/snappy"
"github.com/kr/pretty"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

Expand Down Expand Up @@ -2144,6 +2142,14 @@ func TestJobs_ApiJobToStructsJob(t *testing.T) {
Weight: helper.Int8ToPtr(50),
},
},
VolumeMounts: []*api.VolumeMount{
{
Volume: helper.StringToPtr("vol"),
Destination: helper.StringToPtr("dest"),
ReadOnly: helper.BoolToPtr(false),
PropagationMode: helper.StringToPtr("a"),
},
},
RestartPolicy: &api.RestartPolicy{
Interval: helper.TimeToPtr(2 * time.Second),
Attempts: helper.IntToPtr(10),
Expand Down Expand Up @@ -2526,6 +2532,14 @@ func TestJobs_ApiJobToStructsJob(t *testing.T) {
Env: map[string]string{
"hello": "world",
},
VolumeMounts: []*structs.VolumeMount{
{
Volume: "vol",
Destination: "dest",
ReadOnly: false,
PropagationMode: "a",
},
},
RestartPolicy: &structs.RestartPolicy{
Interval: 2 * time.Second,
Attempts: 10,
Expand Down Expand Up @@ -2684,9 +2698,7 @@ func TestJobs_ApiJobToStructsJob(t *testing.T) {

structsJob := ApiJobToStructJob(apiJob)

if diff := pretty.Diff(expected, structsJob); len(diff) > 0 {
t.Fatalf("bad:\n%s", strings.Join(diff, "\n"))
}
require.Equal(t, expected, structsJob)

systemAPIJob := &api.Job{
Stop: helper.BoolToPtr(true),
Expand Down Expand Up @@ -2928,10 +2940,7 @@ func TestJobs_ApiJobToStructsJob(t *testing.T) {
}

systemStructsJob := ApiJobToStructJob(systemAPIJob)

if diff := pretty.Diff(expectedSystemJob, systemStructsJob); len(diff) > 0 {
t.Fatalf("bad:\n%s", strings.Join(diff, "\n"))
}
require.Equal(t, expectedSystemJob, systemStructsJob)
}

func TestJobs_ApiJobToStructsJobUpdate(t *testing.T) {
Expand Down

0 comments on commit 5a6f7f4

Please sign in to comment.