From 9086bf34f4a10ed053e74de1c56145b26c792b24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toma=C5=BE=20Jerman?= Date: Fri, 14 Jan 2022 15:26:18 +0100 Subject: [PATCH] Improve resource identification * Stop relying on names (eg. module name), * use slices as underlying structure to avoid potential hashmap order related accidents. --- pkg/envoy/builder_test.go | 24 ++++---- pkg/envoy/graph_test.go | 68 +++++++++++------------ pkg/envoy/node.go | 4 +- pkg/envoy/resource/application.go | 2 +- pkg/envoy/resource/resource.go | 6 +- pkg/envoy/resource/types.go | 60 +++++++++++--------- pkg/envoy/store/compose_module_marshal.go | 4 +- pkg/envoy/store/compose_page_marshal.go | 6 +- pkg/envoy/store/compose_record_marshal.go | 8 +-- pkg/envoy/store/rbac_rule_marshal.go | 2 +- pkg/envoy/store/util.go | 2 +- pkg/envoy/yaml/compose_chart.go | 2 +- pkg/envoy/yaml/compose_chart_marshal.go | 3 +- pkg/envoy/yaml/compose_namespace.go | 10 +--- pkg/envoy/yaml/compose_page_marshal.go | 5 +- pkg/envoy/yaml/rbac_rules_marshal.go | 2 +- 16 files changed, 104 insertions(+), 104 deletions(-) diff --git a/pkg/envoy/builder_test.go b/pkg/envoy/builder_test.go index 578e2b358..931d19a84 100644 --- a/pkg/envoy/builder_test.go +++ b/pkg/envoy/builder_test.go @@ -57,7 +57,7 @@ func TestGraphBuilder_Rel(t *testing.T) { rr := []resource.Interface{ &testResource{ resType: "test:resource:1:", - identifiers: resource.Identifiers{"id1": true}, + identifiers: resource.Identifiers{"id1"}, refs: nil, }, } @@ -78,12 +78,12 @@ func TestGraphBuilder_Rel(t *testing.T) { rr := []resource.Interface{ &testResource{ resType: "test:resource:1:", - identifiers: resource.Identifiers{"id1": true}, - refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id2": true}}}, + identifiers: resource.Identifiers{"id1"}, + refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id2"}}}, }, &testResource{ resType: "test:resource:1:", - identifiers: resource.Identifiers{"id2": true}, + identifiers: resource.Identifiers{"id2"}, refs: nil, }, } @@ -108,13 +108,13 @@ func TestGraphBuilder_Rel(t *testing.T) { rr := []resource.Interface{ &testResource{ resType: "test:resource:1:", - identifiers: resource.Identifiers{"id1": true}, - refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id2": true}}}, + identifiers: resource.Identifiers{"id1"}, + refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id2"}}}, }, &testResource{ resType: "test:resource:1:", - identifiers: resource.Identifiers{"id2": true}, - refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id1": true}}}, + identifiers: resource.Identifiers{"id2"}, + refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id1"}}}, }, } @@ -142,8 +142,8 @@ func TestGraphBuilder_Rel(t *testing.T) { rr := []resource.Interface{ &testResource{ resType: "test:resource:1:", - identifiers: resource.Identifiers{"id1": true}, - refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id2": true}}}, + identifiers: resource.Identifiers{"id1"}, + refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id2"}}}, }, } @@ -163,8 +163,8 @@ func TestGraphBuilder_Rel(t *testing.T) { rr := []resource.Interface{ &testResource{ resType: "test:resource:1:", - identifiers: resource.Identifiers{"id1": true}, - refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id1": true}}}, + identifiers: resource.Identifiers{"id1"}, + refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id1"}}}, }, } diff --git a/pkg/envoy/graph_test.go b/pkg/envoy/graph_test.go index 2129458db..1314b22ad 100644 --- a/pkg/envoy/graph_test.go +++ b/pkg/envoy/graph_test.go @@ -17,13 +17,13 @@ func TestGraph_Walk(t *testing.T) { a := &testResource{ resType: "test:resource:1:", - identifiers: resource.Identifiers{"id1": true}, - refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id2": true}}}, + identifiers: resource.Identifiers{"id1"}, + refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id2"}}}, } b := &testResource{ resType: "test:resource:1:", - identifiers: resource.Identifiers{"id2": true}, + identifiers: resource.Identifiers{"id2"}, refs: nil, } @@ -50,14 +50,14 @@ func TestGraph_Walk(t *testing.T) { a := &testResource{ resType: "test:resource:1:", - identifiers: resource.Identifiers{"id1": true}, - refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id2": true}}}, + identifiers: resource.Identifiers{"id1"}, + refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id2"}}}, } b := &testResource{ resType: "test:resource:1:", - identifiers: resource.Identifiers{"id2": true}, - refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id1": true}}}, + identifiers: resource.Identifiers{"id2"}, + refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id1"}}}, } rr := []resource.Interface{ @@ -87,8 +87,8 @@ func TestGraph_Walk(t *testing.T) { a := &testResource{ resType: "test:resource:1:", - identifiers: resource.Identifiers{"id1": true}, - refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id1": true}}}, + identifiers: resource.Identifiers{"id1"}, + refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id1"}}}, } rr := []resource.Interface{ @@ -118,19 +118,19 @@ func TestGraph_WalkFlags(t *testing.T) { a := &testResource{ resType: "test:resource:1:", - identifiers: resource.Identifiers{"id1": true}, - refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id2": true}}}, + identifiers: resource.Identifiers{"id1"}, + refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id2"}}}, } b := &testResource{ resType: "test:resource:1:", - identifiers: resource.Identifiers{"id2": true}, - refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id3": true}}}, + identifiers: resource.Identifiers{"id2"}, + refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id3"}}}, } c := &testResource{ resType: "test:resource:1:", - identifiers: resource.Identifiers{"id3": true}, - refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id3": true}}}, + identifiers: resource.Identifiers{"id3"}, + refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id3"}}}, } rr := []resource.Interface{ @@ -172,28 +172,28 @@ func TestGraph_WalkFlags(t *testing.T) { a := &testResource{ resType: "test:resource:1:", - identifiers: resource.Identifiers{"id1": true}, - refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id2": true}}}, + identifiers: resource.Identifiers{"id1"}, + refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id2"}}}, } b := &testResource{ resType: "test:resource:1:", - identifiers: resource.Identifiers{"id2": true}, - refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id3": true}}, &resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id5": true}}}, + identifiers: resource.Identifiers{"id2"}, + refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id3"}}, &resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id5"}}}, } c := &testResource{ resType: "test:resource:1:", - identifiers: resource.Identifiers{"id3": true}, - refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id4": true}}}, + identifiers: resource.Identifiers{"id3"}, + refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id4"}}}, } d := &testResource{ resType: "test:resource:1:", - identifiers: resource.Identifiers{"id4": true}, - refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id2": true}}}, + identifiers: resource.Identifiers{"id4"}, + refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id2"}}}, } e := &testResource{ resType: "test:resource:1:", - identifiers: resource.Identifiers{"id5": true}, + identifiers: resource.Identifiers{"id5"}, refs: nil, } @@ -248,29 +248,29 @@ func TestGraph_WalkFlags(t *testing.T) { a := &testResource{ resType: "test:resource:1:", - identifiers: resource.Identifiers{"id1": true}, - refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id2": true}}}, + identifiers: resource.Identifiers{"id1"}, + refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id2"}}}, } b := &testResource{ resType: "test:resource:1:", - identifiers: resource.Identifiers{"id2": true}, - refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id3": true}}}, + identifiers: resource.Identifiers{"id2"}, + refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id3"}}}, } c := &testResource{ resType: "test:resource:1:", - identifiers: resource.Identifiers{"id3": true}, - refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id4": true}}, &resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id5": true}}}, + identifiers: resource.Identifiers{"id3"}, + refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id4"}}, &resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id5"}}}, } d := &testResource{ resType: "test:resource:1:", - identifiers: resource.Identifiers{"id4": true}, - refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id2": true}}}, + identifiers: resource.Identifiers{"id4"}, + refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id2"}}}, } e := &testResource{ resType: "test:resource:1:", - identifiers: resource.Identifiers{"id5": true}, - refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id2": true}}}, + identifiers: resource.Identifiers{"id5"}, + refs: resource.RefSet{&resource.Ref{ResourceType: "test:resource:1:", Identifiers: resource.Identifiers{"id2"}}}, } rr := []resource.Interface{ diff --git a/pkg/envoy/node.go b/pkg/envoy/node.go index c817fb54e..1c588bc9b 100644 --- a/pkg/envoy/node.go +++ b/pkg/envoy/node.go @@ -66,7 +66,7 @@ func (ri nodeIndex) Add(nn ...*node) { ri[rt] = make(map[string]nodeSet) } - for i := range n.res.Identifiers() { + for _, i := range n.res.Identifiers() { if ri[rt][i] == nil { ri[rt][i] = make(nodeSet, 0, 5) } @@ -81,7 +81,7 @@ func (ri nodeIndex) GetRef(ref *resource.Ref) *node { return nil } - for i := range ref.Identifiers { + for _, i := range ref.Identifiers { rr, has := refIi[i] if !has || len(rr) == 0 { continue diff --git a/pkg/envoy/resource/application.go b/pkg/envoy/resource/application.go index 8913e41dd..897f596bc 100644 --- a/pkg/envoy/resource/application.go +++ b/pkg/envoy/resource/application.go @@ -41,7 +41,7 @@ func (r *Application) SysID() uint64 { func (r *Application) RBACParts() (resource string, ref *Ref, path []*Ref) { ref = r.Ref() path = nil - resource = fmt.Sprintf(types.ApplicationRbacResourceTpl(), types.ApplicationResourceType, firstOkString(strconv.FormatUint(r.Res.ID, 10), r.Res.Name)) + resource = fmt.Sprintf(types.ApplicationRbacResourceTpl(), types.ApplicationResourceType, firstOkString(strconv.FormatUint(r.Res.ID, 10))) return } diff --git a/pkg/envoy/resource/resource.go b/pkg/envoy/resource/resource.go index 83c744fad..8f448cd6c 100644 --- a/pkg/envoy/resource/resource.go +++ b/pkg/envoy/resource/resource.go @@ -97,11 +97,7 @@ func Check(a string, ii ...interface{}) bool { // AddIdentifier adds a set of identifiers to the current resource func (t *base) AddIdentifier(ss ...string) { - if t.ii == nil { - t.ii = make(Identifiers) - } - - t.ii.Add(ss...) + t.ii = t.ii.Add(ss...) } // SetIdentifier sets the identifiers to whatever was provided diff --git a/pkg/envoy/resource/types.go b/pkg/envoy/resource/types.go index 5c8aff527..7becb6148 100644 --- a/pkg/envoy/resource/types.go +++ b/pkg/envoy/resource/types.go @@ -1,6 +1,8 @@ package resource -import "strconv" +import ( + "strconv" +) type ( Interface interface { @@ -55,7 +57,7 @@ type ( Constraints RefSet } - Identifiers map[string]bool + Identifiers []string ) var ( @@ -74,15 +76,15 @@ func MakeWildRef(rt string) *Ref { } func MakeIdentifiers(ss ...string) Identifiers { - ii := make(Identifiers) - ii.Add(ss...) + ii := make(Identifiers, 0, len(ss)) + ii = ii.Add(ss...) return ii } func (ri Identifiers) Add(ii ...string) Identifiers { for _, i := range ii { if len(i) > 0 { - ri[i] = true + ri = append(ri, i) } } @@ -90,18 +92,21 @@ func (ri Identifiers) Add(ii ...string) Identifiers { } func (ri Identifiers) Clone() Identifiers { - out := make(Identifiers) - for i := range ri { - out[i] = true + out := make(Identifiers, 0, len(ri)) + for _, i := range ri { + out = append(out, i) } return out } -func (ri Identifiers) HasAny(ii Identifiers) bool { - for i := range ii { - if ri[i] { - return true +func (ri Identifiers) HasAny(check Identifiers) bool { + // The size of these will be tiny so no need for hashmaps + for _, i := range ri { + for _, j := range check { + if i == j { + return true + } } } @@ -109,28 +114,22 @@ func (ri Identifiers) HasAny(ii Identifiers) bool { } func (ri Identifiers) StringSlice() []string { - ss := make([]string, 0, len(ri)) - for k := range ri { - ss = append(ss, k) - } - return ss + return ri } func (ri Identifiers) First() string { - ss := ri.StringSlice() - if len(ss) <= 0 { + if len(ri) == 0 { return "" } - return ss[0] + return ri[0] } func (ri Identifiers) FirstID() uint64 { - ss := ri.StringSlice() - if len(ss) <= 0 { + if len(ri) <= 0 { return 0 } - for _, s := range ss { + for _, s := range ri { if v, err := strconv.ParseUint(s, 10, 64); err != nil { continue } else { @@ -198,7 +197,16 @@ func (r *Ref) Constraint(c *Ref) *Ref { // IsWildcard checks if this Ref points to all resources of a specific resource type func (r *Ref) IsWildcard() bool { - return r.Identifiers != nil && r.Identifiers["*"] + if len(r.Identifiers) == 0 { + return false + } + + for _, i := range r.Identifiers { + if i == "*" { + return true + } + } + return false } func (a *Ref) equals(b *Ref) bool { @@ -284,9 +292,7 @@ func (rr RefSet) Unique() RefSet { // not yet seen if !ii.HasAny(r.Identifiers) { out = append(out, r) - for i := range r.Identifiers { - seen[r.ResourceType][i] = true - } + seen[r.ResourceType] = seen[r.ResourceType].Add(r.Identifiers...) } } diff --git a/pkg/envoy/store/compose_module_marshal.go b/pkg/envoy/store/compose_module_marshal.go index e7d297180..06a27cc9b 100644 --- a/pkg/envoy/store/compose_module_marshal.go +++ b/pkg/envoy/store/compose_module_marshal.go @@ -58,7 +58,7 @@ func (n *composeModule) Prepare(ctx context.Context, pl *payload) (err error) { return composeModuleErrUnresolvedRecordField(refMod.Identifiers) } - for i := range refMod.Identifiers { + for _, i := range refMod.Identifiers { n.recFields[i] = mod.ID } } @@ -77,7 +77,7 @@ func (n *composeModule) Prepare(ctx context.Context, pl *payload) (err error) { return composeModuleErrUnresolvedUserField(refRole.Identifiers) } - for i := range refRole.Identifiers { + for _, i := range refRole.Identifiers { n.userFields[i] = rl.ID } } diff --git a/pkg/envoy/store/compose_page_marshal.go b/pkg/envoy/store/compose_page_marshal.go index acbb51a4d..9557ce150 100644 --- a/pkg/envoy/store/compose_page_marshal.go +++ b/pkg/envoy/store/compose_page_marshal.go @@ -70,7 +70,7 @@ func (n *composePage) Prepare(ctx context.Context, pl *payload) (err error) { if wf == nil { return resource.AutomationWorkflowErrUnresolved(wfr.Identifiers) } - for id := range wfr.Identifiers { + for _, id := range wfr.Identifiers { n.relWfs[id] = wf } } @@ -84,7 +84,7 @@ func (n *composePage) Prepare(ctx context.Context, pl *payload) (err error) { if mod == nil { return resource.ComposeModuleErrUnresolved(mr.Identifiers) } - for id := range mr.Identifiers { + for _, id := range mr.Identifiers { n.relMods[id] = mod } } @@ -98,7 +98,7 @@ func (n *composePage) Prepare(ctx context.Context, pl *payload) (err error) { if chr == nil { return resource.ComposeChartErrUnresolved(refChart.Identifiers) } - for id := range refChart.Identifiers { + for _, id := range refChart.Identifiers { n.relCharts[id] = chr } } diff --git a/pkg/envoy/store/compose_record_marshal.go b/pkg/envoy/store/compose_record_marshal.go index 7568e6b0c..713c691f3 100644 --- a/pkg/envoy/store/compose_record_marshal.go +++ b/pkg/envoy/store/compose_record_marshal.go @@ -111,7 +111,7 @@ func (n *composeRecord) Prepare(ctx context.Context, pl *payload) (err error) { return err } auxMap := make(map[string]uint64) - for i := range ref.Identifiers { + for _, i := range ref.Identifiers { n.externalRef[i] = auxMap } @@ -153,7 +153,7 @@ func (n *composeRecord) Prepare(ctx context.Context, pl *payload) (err error) { // Map existing records so we can perform updates // Map to xref map for easier use later auxMap := make(map[string]uint64) - for i := range n.res.RefMod.Identifiers { + for _, i := range n.res.RefMod.Identifiers { n.externalRef[i] = auxMap } for _, r := range rr { @@ -206,7 +206,7 @@ func (n *composeRecord) Encode(ctx context.Context, pl *payload) (err error) { for _, ref := range pl.state.ParentResources { if ref.ResourceType() == systemTypes.UserResourceType { refUsr := ref.(*resource.User) - for i := range refUsr.Identifiers() { + for _, i := range refUsr.Identifiers() { ux[i] = refUsr.SysID() } } @@ -226,7 +226,7 @@ func (n *composeRecord) Encode(ctx context.Context, pl *payload) (err error) { checkXRef := func(ii resource.Identifiers, ref string) (uint64, error) { var auxMap map[string]uint64 - for ri := range ii { + for _, ri := range ii { if mp, ok := n.externalRef[ri]; ok { auxMap = mp break diff --git a/pkg/envoy/store/rbac_rule_marshal.go b/pkg/envoy/store/rbac_rule_marshal.go index 1164fc89d..d59ae8545 100644 --- a/pkg/envoy/store/rbac_rule_marshal.go +++ b/pkg/envoy/store/rbac_rule_marshal.go @@ -253,7 +253,7 @@ func (n *rbacRule) makeRBACResource(pl *payload) (string, error) { return "", resource.ComposeRecordErrUnresolved(n.refRbacRes.Identifiers) } - for i := range n.refRbacRes.Identifiers { + for _, i := range n.refRbacRes.Identifiers { if p2ID = p2.IDMap[i]; p2ID > 0 { break } diff --git a/pkg/envoy/store/util.go b/pkg/envoy/store/util.go index 1552cc42f..c45c24c5d 100644 --- a/pkg/envoy/store/util.go +++ b/pkg/envoy/store/util.go @@ -41,7 +41,7 @@ var ( ) func makeGenericFilter(ii resource.Identifiers) (f genericFilter) { - for i := range ii { + for _, i := range ii { if i == "" { continue } diff --git a/pkg/envoy/yaml/compose_chart.go b/pkg/envoy/yaml/compose_chart.go index 1866b761b..85680c99f 100644 --- a/pkg/envoy/yaml/compose_chart.go +++ b/pkg/envoy/yaml/compose_chart.go @@ -48,5 +48,5 @@ func (nn composeChartSet) configureEncoder(cfg *EncoderConfig) { } func relChartToRef(chr *types.Chart) string { - return firstOkString(chr.Handle, chr.Name, strconv.FormatUint(chr.ID, 10)) + return firstOkString(chr.Handle, strconv.FormatUint(chr.ID, 10)) } diff --git a/pkg/envoy/yaml/compose_chart_marshal.go b/pkg/envoy/yaml/compose_chart_marshal.go index 728210371..b2ff39132 100644 --- a/pkg/envoy/yaml/compose_chart_marshal.go +++ b/pkg/envoy/yaml/compose_chart_marshal.go @@ -2,6 +2,7 @@ package yaml import ( "context" + "strconv" composeTypes "github.com/cortezaproject/corteza-server/compose/types" "github.com/cortezaproject/corteza-server/pkg/envoy" @@ -116,7 +117,7 @@ func (c *composeChartConfig) MarshalYAML() (interface{}, error) { func (c *composeChartConfigReport) MarshalYAML() (interface{}, error) { nn, err := makeMap( "filter", c.report.Filter, - "module", firstOkString(c.relModule.Handle, c.relModule.Name), + "module", firstOkString(c.relModule.Handle, strconv.FormatUint(c.relModule.ID, 10)), "metrics", c.report.Metrics, "dimensions", c.report.Dimensions, "yAxis", c.report.YAxis, diff --git a/pkg/envoy/yaml/compose_namespace.go b/pkg/envoy/yaml/compose_namespace.go index d00d8b35e..a5dd734b3 100644 --- a/pkg/envoy/yaml/compose_namespace.go +++ b/pkg/envoy/yaml/compose_namespace.go @@ -142,19 +142,15 @@ func (c composeNamespaceMeta) empty() bool { } func relNsToRef(ns *types.Namespace) string { - return firstOkString(ns.Slug, ns.Name, strconv.FormatUint(ns.ID, 10)) + return firstOkString(ns.Slug, strconv.FormatUint(ns.ID, 10)) } func relModToRef(mod *types.Module) string { - return firstOkString(mod.Handle, mod.Name, strconv.FormatUint(mod.ID, 10)) + return firstOkString(mod.Handle, strconv.FormatUint(mod.ID, 10)) } func relWfToRef(mod *atypes.Workflow) string { - name := "" - if mod.Meta != nil { - name = mod.Meta.Name - } - return firstOkString(mod.Handle, name, strconv.FormatUint(mod.ID, 10)) + return firstOkString(mod.Handle, strconv.FormatUint(mod.ID, 10)) } func composeNamespaceErrNotFound(i string) error { diff --git a/pkg/envoy/yaml/compose_page_marshal.go b/pkg/envoy/yaml/compose_page_marshal.go index 9529b7ec9..6dc7b3e0b 100644 --- a/pkg/envoy/yaml/compose_page_marshal.go +++ b/pkg/envoy/yaml/compose_page_marshal.go @@ -2,6 +2,7 @@ package yaml import ( "context" + "strconv" automationTypes "github.com/cortezaproject/corteza-server/automation/types" composeTypes "github.com/cortezaproject/corteza-server/compose/types" @@ -138,14 +139,14 @@ func (p *composePage) MarshalYAML() (interface{}, error) { nn, _ := makeMap() if p.relMod != nil { - nn, err = addMap(nn, "module", firstOkString(p.relMod.Handle, p.relMod.Name)) + nn, err = addMap(nn, "module", firstOkString(p.relMod.Handle, strconv.FormatUint(p.relMod.ID, 10))) if err != nil { return nil, err } } if p.relParent != nil { - nn, err = addMap(nn, "parent", firstOkString(p.relParent.Handle, p.relParent.Title)) + nn, err = addMap(nn, "parent", firstOkString(p.relParent.Handle, strconv.FormatUint(p.relParent.ID, 10))) if err != nil { return nil, err } diff --git a/pkg/envoy/yaml/rbac_rules_marshal.go b/pkg/envoy/yaml/rbac_rules_marshal.go index b8281b7e7..8aee74d63 100644 --- a/pkg/envoy/yaml/rbac_rules_marshal.go +++ b/pkg/envoy/yaml/rbac_rules_marshal.go @@ -186,7 +186,7 @@ func (r *rbacRule) makeRBACResource(state *envoy.ResourceState) (string, error) return "", resource.ComposeRecordErrUnresolved(res.RefRes.Identifiers) } - for i := range res.RefRes.Identifiers { + for _, i := range res.RefRes.Identifiers { if _, ok := p2.IDMap[i]; ok { p2ID = res.RefRes.Identifiers.First() break