From 97ed7fc42f8b40e915d0ececb7266a3bf3ce0689 Mon Sep 17 00:00:00 2001 From: Morlay Date: Sat, 27 Feb 2021 04:53:58 +0800 Subject: [PATCH] fix(jsonnet): TLA in export panic (#519) Assigning to an improperly initialized map type caused a panic. Fixed by properly initializing --- pkg/jsonnet/eval.go | 3 ++- pkg/tanka/find.go | 13 +++++++------ pkg/tanka/parallel.go | 2 +- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/pkg/jsonnet/eval.go b/pkg/jsonnet/eval.go index 23c78733b..0c6ca08f2 100644 --- a/pkg/jsonnet/eval.go +++ b/pkg/jsonnet/eval.go @@ -34,7 +34,8 @@ type Opts struct { // Clone returns a deep copy of Opts func (o Opts) Clone() Opts { - var extCode, tlaCode InjectedCode + extCode, tlaCode := InjectedCode{}, InjectedCode{} + for k, v := range o.ExtCode { extCode[k] = v } diff --git a/pkg/tanka/find.go b/pkg/tanka/find.go index 36d15dbcf..ad32477c4 100644 --- a/pkg/tanka/find.go +++ b/pkg/tanka/find.go @@ -11,6 +11,7 @@ import ( // FindOpts are optional arguments for FindEnvs type FindOpts struct { + JsonnetOpts Selector labels.Selector } @@ -20,7 +21,7 @@ type FindOpts struct { // are not checked. func FindEnvs(path string, opts FindOpts) ([]*v1alpha1.Environment, error) { // find all environments at dir - envs, err := find(path) + envs, err := find(path, Opts{JsonnetOpts: opts.JsonnetOpts}) if err != nil { return nil, err } @@ -42,9 +43,9 @@ func FindEnvs(path string, opts FindOpts) ([]*v1alpha1.Environment, error) { } // find implements the actual functionality described at 'FindEnvs' -func find(path string) ([]*v1alpha1.Environment, error) { +func find(path string, opts Opts) ([]*v1alpha1.Environment, error) { // try if this has envs - list, err := List(path, Opts{}) + list, err := List(path, opts) if len(list) != 0 && err == nil { // it has. don't search deeper return list, nil @@ -77,7 +78,7 @@ func find(path string) ([]*v1alpha1.Environment, error) { } routines++ - go findShim(filepath.Join(path, fi.Name()), ch) + go findShim(filepath.Join(path, fi.Name()), opts, ch) } // collect parallel results @@ -105,7 +106,7 @@ type findOut struct { err error } -func findShim(dir string, ch chan findOut) { - envs, err := find(dir) +func findShim(dir string, opts Opts, ch chan findOut) { + envs, err := find(dir, opts) ch <- findOut{envs: envs, err: err} } diff --git a/pkg/tanka/parallel.go b/pkg/tanka/parallel.go index 75f84e94f..2d23f5ea1 100644 --- a/pkg/tanka/parallel.go +++ b/pkg/tanka/parallel.go @@ -21,7 +21,7 @@ func parallelLoadEnvironments(paths []string, opts parallelOpts) ([]*v1alpha1.En jobsCh := make(chan parallelJob) list := make(map[string]string) for _, path := range paths { - envs, err := FindEnvs(path, FindOpts{opts.Selector}) + envs, err := FindEnvs(path, FindOpts{Selector: opts.Selector, JsonnetOpts: opts.JsonnetOpts}) if err != nil { return nil, err }