Merge pull request #7684 from hashicorp/b-connect-sidecar-name
connect: enable configuring sidecar_task.name
This commit is contained in:
commit
43804d8ca9
|
@ -263,32 +263,7 @@ func parseSidecarService(o *ast.ObjectItem) (*api.ConsulSidecarService, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseSidecarTask(item *ast.ObjectItem) (*api.SidecarTask, error) {
|
func parseSidecarTask(item *ast.ObjectItem) (*api.SidecarTask, error) {
|
||||||
// We need this later
|
task, err := parseTask(item, sidecarTaskKeys)
|
||||||
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)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,41 @@ import (
|
||||||
"github.com/mitchellh/mapstructure"
|
"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 {
|
func parseTasks(result *[]*api.Task, list *ast.ObjectList) error {
|
||||||
list = list.Children()
|
list = list.Children()
|
||||||
if len(list.Items) == 0 {
|
if len(list.Items) == 0 {
|
||||||
|
@ -29,7 +64,7 @@ func parseTasks(result *[]*api.Task, list *ast.ObjectList) error {
|
||||||
}
|
}
|
||||||
seen[n] = struct{}{}
|
seen[n] = struct{}{}
|
||||||
|
|
||||||
t, err := parseTask(item)
|
t, err := parseTask(item, normalTaskKeys)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return multierror.Prefix(err, fmt.Sprintf("'%s',", n))
|
return multierror.Prefix(err, fmt.Sprintf("'%s',", n))
|
||||||
}
|
}
|
||||||
|
@ -42,7 +77,7 @@ func parseTasks(result *[]*api.Task, list *ast.ObjectList) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseTask(item *ast.ObjectItem) (*api.Task, error) {
|
func parseTask(item *ast.ObjectItem, keys []string) (*api.Task, error) {
|
||||||
// We need this later
|
// We need this later
|
||||||
var listVal *ast.ObjectList
|
var listVal *ast.ObjectList
|
||||||
if ot, ok := item.Val.(*ast.ObjectType); ok {
|
if ot, ok := item.Val.(*ast.ObjectType); ok {
|
||||||
|
@ -52,32 +87,7 @@ func parseTask(item *ast.ObjectItem) (*api.Task, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check for invalid keys
|
// Check for invalid keys
|
||||||
valid := []string{
|
if err := helper.CheckHCLKeys(listVal, keys); err != nil {
|
||||||
"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 {
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -894,6 +894,28 @@ func TestParse(t *testing.T) {
|
||||||
},
|
},
|
||||||
false,
|
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",
|
"reschedule-job.hcl",
|
||||||
&api.Job{
|
&api.Job{
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
job "sidecar_task_name" {
|
||||||
|
type = "service"
|
||||||
|
|
||||||
|
group "group" {
|
||||||
|
service {
|
||||||
|
name = "example"
|
||||||
|
connect {
|
||||||
|
sidecar_service {}
|
||||||
|
sidecar_task {
|
||||||
|
name = "my-sidecar"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue