From 92b6cf3b871c707364c3420260ab4625dacaace7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toma=C5=BE=20Jerman?= Date: Tue, 17 Nov 2020 15:32:31 +0100 Subject: [PATCH] Tweak resource helpers * Define InterfaceSet, * rename resource types with RBAC types, * some smaller bits. --- pkg/envoy/resource/types.go | 55 +++++++++++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 12 deletions(-) diff --git a/pkg/envoy/resource/types.go b/pkg/envoy/resource/types.go index e0a7945d4..ad83ac099 100644 --- a/pkg/envoy/resource/types.go +++ b/pkg/envoy/resource/types.go @@ -1,5 +1,10 @@ package resource +import ( + ct "github.com/cortezaproject/corteza-server/compose/types" + st "github.com/cortezaproject/corteza-server/system/types" +) + type ( Interface interface { Identifiers() Identifiers @@ -7,6 +12,14 @@ type ( Refs() RefSet } + InterfaceSet []Interface + + IdentifiableInterface interface { + Interface + + SysID() uint64 + } + RefSet []*Ref Ref struct { // @todo check with Denis regarding strings here (the cdocs comment) @@ -18,18 +31,25 @@ type ( Identifiers map[string]bool ) -const ( - APPLICATION_RESOURCE_TYPE = "application" - COMPOSE_CHART_RESOURCE_TYPE = "composeChart" - COMPOSE_MODULE_RESOURCE_TYPE = "composeModule" - COMPOSE_NAMESPACE_RESOURCE_TYPE = "composeNamespace" - COMPOSE_PAGE_RESOURCE_TYPE = "composePage" - COMPOSE_RECORD_RESOURCE_TYPE = "ComposeRecord" - RBAC_RESOURCE_TYPE = "rbacRule" - ROLE_RESOURCE_TYPE = "role" - USER_RESOURCE_TYPE = "user" +var ( + APPLICATION_RESOURCE_TYPE = st.ApplicationRBACResource.String() + COMPOSE_CHART_RESOURCE_TYPE = ct.ChartRBACResource.String() + COMPOSE_MODULE_RESOURCE_TYPE = ct.ModuleRBACResource.String() + COMPOSE_NAMESPACE_RESOURCE_TYPE = ct.NamespaceRBACResource.String() + COMPOSE_PAGE_RESOURCE_TYPE = ct.PageRBACResource.String() + COMPOSE_RECORD_RESOURCE_TYPE = "compose:record:" + RBAC_RESOURCE_TYPE = "rbac:rule:" + ROLE_RESOURCE_TYPE = st.RoleRBACResource.String() + SETTINGS_RESOURCE_TYPE = "system:setting:" + USER_RESOURCE_TYPE = st.UserRBACResource.String() ) +func MakeIdentifiers(ss ...string) Identifiers { + ii := make(Identifiers) + ii.Add(ss...) + return ii +} + func (ri Identifiers) Add(ii ...string) Identifiers { for _, i := range ii { if len(i) > 0 { @@ -48,8 +68,8 @@ func (ri Identifiers) Remove(ii ...string) Identifiers { return ri } -func (ri Identifiers) HasAny(ii ...string) bool { - for _, i := range ii { +func (ri Identifiers) HasAny(ii Identifiers) bool { + for i := range ii { if ri[i] { return true } @@ -77,3 +97,14 @@ func (ss RefSet) FilterByResourceType(rt string) RefSet { return rr } + +func (rr InterfaceSet) Walk(f func(r Interface) error) (err error) { + for _, r := range rr { + err = f(r) + if err != nil { + return + } + } + + return nil +}