Skip to content

Commit

Permalink
Merge pull request #7684 from hashicorp/b-connect-sidecar-name
Browse files Browse the repository at this point in the history
connect: enable configuring sidecar_task.name
  • Loading branch information
shoenig committed Apr 10, 2020
2 parents ce3b57e + 0eb2844 commit 47dfa76
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 54 deletions.
27 changes: 1 addition & 26 deletions jobspec/parse_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -263,32 +263,7 @@ func parseSidecarService(o *ast.ObjectItem) (*api.ConsulSidecarService, error) {
}

func parseSidecarTask(item *ast.ObjectItem) (*api.SidecarTask, error) {
// We need this later
var listVal *ast.ObjectList
if ot, ok := item.Val.(*ast.ObjectType); ok {
listVal = ot.List
} else {
return nil, fmt.Errorf("should be an object")
}

// Check for invalid keys
valid := []string{
"config",
"driver",
"env",
"kill_timeout",
"logs",
"meta",
"resources",
"shutdown_delay",
"user",
"kill_signal",
}
if err := helper.CheckHCLKeys(listVal, valid); err != nil {
return nil, err
}

task, err := parseTask(item)
task, err := parseTask(item, sidecarTaskKeys)
if err != nil {
return nil, err
}
Expand Down
66 changes: 38 additions & 28 deletions jobspec/parse_task.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,41 @@ import (
"github.com/mitchellh/mapstructure"
)

var (
commonTaskKeys = []string{
"driver",
"user",
"config",
"env",
"resources",
"meta",
"logs",
"kill_timeout",
"shutdown_delay",
"kill_signal",
}

normalTaskKeys = append(commonTaskKeys,
"artifact",
"constraint",
"affinity",
"dispatch_payload",
"lifecycle",
"leader",
"restart",
"service",
"template",
"vault",
"kind",
"volume_mount",
"csi_plugin",
)

sidecarTaskKeys = append(commonTaskKeys,
"name",
)
)

func parseTasks(result *[]*api.Task, list *ast.ObjectList) error {
list = list.Children()
if len(list.Items) == 0 {
Expand All @@ -29,7 +64,7 @@ func parseTasks(result *[]*api.Task, list *ast.ObjectList) error {
}
seen[n] = struct{}{}

t, err := parseTask(item)
t, err := parseTask(item, normalTaskKeys)
if err != nil {
return multierror.Prefix(err, fmt.Sprintf("'%s',", n))
}
Expand All @@ -42,7 +77,7 @@ func parseTasks(result *[]*api.Task, list *ast.ObjectList) error {
return nil
}

func parseTask(item *ast.ObjectItem) (*api.Task, error) {
func parseTask(item *ast.ObjectItem, keys []string) (*api.Task, error) {
// We need this later
var listVal *ast.ObjectList
if ot, ok := item.Val.(*ast.ObjectType); ok {
Expand All @@ -52,32 +87,7 @@ func parseTask(item *ast.ObjectItem) (*api.Task, error) {
}

// Check for invalid keys
valid := []string{
"artifact",
"config",
"constraint",
"affinity",
"dispatch_payload",
"lifecycle",
"driver",
"env",
"kill_timeout",
"leader",
"logs",
"meta",
"resources",
"restart",
"service",
"shutdown_delay",
"template",
"user",
"vault",
"kill_signal",
"kind",
"volume_mount",
"csi_plugin",
}
if err := helper.CheckHCLKeys(listVal, valid); err != nil {
if err := helper.CheckHCLKeys(listVal, keys); err != nil {
return nil, err
}

Expand Down
22 changes: 22 additions & 0 deletions jobspec/parse_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -894,6 +894,28 @@ func TestParse(t *testing.T) {
},
false,
},
{
"service-connect-sidecar_task-name.hcl",
&api.Job{
ID: helper.StringToPtr("sidecar_task_name"),
Name: helper.StringToPtr("sidecar_task_name"),
Type: helper.StringToPtr("service"),
TaskGroups: []*api.TaskGroup{{
Name: helper.StringToPtr("group"),
Services: []*api.Service{{
Name: "example",
Connect: &api.ConsulConnect{
Native: false,
SidecarService: &api.ConsulSidecarService{},
SidecarTask: &api.SidecarTask{
Name: "my-sidecar",
},
},
}},
}},
},
false,
},
{
"reschedule-job.hcl",
&api.Job{
Expand Down
15 changes: 15 additions & 0 deletions jobspec/test-fixtures/service-connect-sidecar_task-name.hcl
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
job "sidecar_task_name" {
type = "service"

group "group" {
service {
name = "example"
connect {
sidecar_service {}
sidecar_task {
name = "my-sidecar"
}
}
}
}
}

0 comments on commit 47dfa76

Please sign in to comment.