From da1828642c140c8cdf690a767ec39d15edadc6fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Toma=C5=BE=20Jerman?= Date: Wed, 29 Dec 2021 13:37:14 +0100 Subject: [PATCH] Expand envoy.Resource defs for easier state access --- pkg/envoy/builder_test.go | 4 ++++ pkg/envoy/resource/api_gateway.go | 4 ++++ pkg/envoy/resource/application.go | 4 ++++ pkg/envoy/resource/automation_workflow.go | 4 ++++ pkg/envoy/resource/compose_chart.go | 4 ++++ pkg/envoy/resource/compose_module.go | 8 ++++++++ pkg/envoy/resource/compose_namespace.go | 4 ++++ pkg/envoy/resource/compose_page.go | 4 ++++ pkg/envoy/resource/compose_record.go | 4 ++++ pkg/envoy/resource/compose_record_shaper.go | 4 ++++ pkg/envoy/resource/compose_record_template.go | 4 ++++ pkg/envoy/resource/dataset.go | 4 ++++ pkg/envoy/resource/rbac_rule.go | 4 ++++ pkg/envoy/resource/report.go | 4 ++++ pkg/envoy/resource/resource_translation.go | 4 ++++ pkg/envoy/resource/role.go | 4 ++++ pkg/envoy/resource/settings.go | 8 ++++++++ pkg/envoy/resource/template.go | 4 ++++ pkg/envoy/resource/types.go | 1 + pkg/envoy/resource/user.go | 4 ++++ 20 files changed, 85 insertions(+) diff --git a/pkg/envoy/builder_test.go b/pkg/envoy/builder_test.go index 931d19a84..d69c29e74 100644 --- a/pkg/envoy/builder_test.go +++ b/pkg/envoy/builder_test.go @@ -37,6 +37,10 @@ func (t *testResource) Placeholder() bool { return t.ph } +func (r *testResource) Resource() interface{} { + return nil +} + func (t *testResource) ReID(ii resource.Identifiers) { // no need for implementation panic("not implemented") diff --git a/pkg/envoy/resource/api_gateway.go b/pkg/envoy/resource/api_gateway.go index 07407ee57..3499bc1e9 100644 --- a/pkg/envoy/resource/api_gateway.go +++ b/pkg/envoy/resource/api_gateway.go @@ -38,6 +38,10 @@ func NewAPIGateway(res *types.ApigwRoute) *APIGateway { return r } +func (r *APIGateway) Resource() interface{} { + return r.Res +} + func (r *APIGateway) RBACParts() (resource string, ref *Ref, path []*Ref) { ref = r.Ref() path = nil diff --git a/pkg/envoy/resource/application.go b/pkg/envoy/resource/application.go index 897f596bc..add0f1f22 100644 --- a/pkg/envoy/resource/application.go +++ b/pkg/envoy/resource/application.go @@ -34,6 +34,10 @@ func NewApplication(res *types.Application) *Application { return r } +func (r *Application) Resource() interface{} { + return r.Res +} + func (r *Application) SysID() uint64 { return r.Res.ID } diff --git a/pkg/envoy/resource/automation_workflow.go b/pkg/envoy/resource/automation_workflow.go index 6a8243f31..a9d539fda 100644 --- a/pkg/envoy/resource/automation_workflow.go +++ b/pkg/envoy/resource/automation_workflow.go @@ -54,6 +54,10 @@ func NewAutomationWorkflow(res *types.Workflow) *AutomationWorkflow { return r } +func (r *AutomationWorkflow) Resource() interface{} { + return r.Res +} + func (r *AutomationWorkflow) AddAutomationTrigger(res *types.Trigger) *AutomationTrigger { t := &AutomationTrigger{ base: &base{}, diff --git a/pkg/envoy/resource/compose_chart.go b/pkg/envoy/resource/compose_chart.go index 1b9a936f0..6e88a371d 100644 --- a/pkg/envoy/resource/compose_chart.go +++ b/pkg/envoy/resource/compose_chart.go @@ -40,6 +40,10 @@ func NewComposeChart(res *types.Chart, nsRef string, mmRef []string) *ComposeCha return r } +func (r *ComposeChart) Resource() interface{} { + return r.Res +} + func (r *ComposeChart) ReRef(old RefSet, new RefSet) { r.base.ReRef(old, new) diff --git a/pkg/envoy/resource/compose_module.go b/pkg/envoy/resource/compose_module.go index da1a29e2b..6b12e1179 100644 --- a/pkg/envoy/resource/compose_module.go +++ b/pkg/envoy/resource/compose_module.go @@ -76,6 +76,10 @@ func NewComposeModule(res *types.Module, nsRef string) *ComposeModule { return r } +func (r *ComposeModule) Resource() interface{} { + return r.Res +} + func (r *ComposeModule) ReRef(old RefSet, new RefSet) { r.base.ReRef(old, new) @@ -227,6 +231,10 @@ func NewComposeModuleField(res *types.ModuleField, nsRef, modRef string) *Compos return r } +func (r *ComposeModuleField) Resource() interface{} { + return r.Res +} + // ComposeModuleFieldExtractUserFieldRoles is a helper to extract roles // from the given filer options. func ComposeModuleFieldExtractUserFieldRoles(i interface{}) []string { diff --git a/pkg/envoy/resource/compose_namespace.go b/pkg/envoy/resource/compose_namespace.go index b1e79ccb7..f0a64dbed 100644 --- a/pkg/envoy/resource/compose_namespace.go +++ b/pkg/envoy/resource/compose_namespace.go @@ -27,6 +27,10 @@ func NewComposeNamespace(ns *types.Namespace) *ComposeNamespace { return r } +func (r *ComposeNamespace) Resource() interface{} { + return r.Res +} + func (r *ComposeNamespace) RBACParts() (resource string, ref *Ref, path []*Ref) { ref = r.Ref() path = nil diff --git a/pkg/envoy/resource/compose_page.go b/pkg/envoy/resource/compose_page.go index 3a3d3a267..cb88d0059 100644 --- a/pkg/envoy/resource/compose_page.go +++ b/pkg/envoy/resource/compose_page.go @@ -129,6 +129,10 @@ func NewComposePage(pg *types.Page, nsRef, modRef, parentRef string) *ComposePag return r } +func (r *ComposePage) Resource() interface{} { + return r.Res +} + func (r *ComposePage) ReRef(old RefSet, new RefSet) { r.base.ReRef(old, new) diff --git a/pkg/envoy/resource/compose_record.go b/pkg/envoy/resource/compose_record.go index 005bf0136..addb428eb 100644 --- a/pkg/envoy/resource/compose_record.go +++ b/pkg/envoy/resource/compose_record.go @@ -65,6 +65,10 @@ func NewComposeRecordSet(w CrsWalker, nsRef, modRef string) *ComposeRecord { return r } +func (r *ComposeRecord) Resource() interface{} { + return nil +} + func (r *ComposeRecord) SetUserFlakes(uu UserstampIndex) { r.UserFlakes = uu diff --git a/pkg/envoy/resource/compose_record_shaper.go b/pkg/envoy/resource/compose_record_shaper.go index 6ee3d3351..b0f59eee0 100644 --- a/pkg/envoy/resource/compose_record_shaper.go +++ b/pkg/envoy/resource/compose_record_shaper.go @@ -38,6 +38,10 @@ func (crt *composeRecordShaper) Shape(rr []Interface) ([]Interface, error) { return ii, nil } +func (r *composeRecordShaper) Resource() interface{} { + return nil +} + func (crt *composeRecordShaper) toResource(def *ComposeRecordTemplate, dt *ResourceDataset) Interface { w := func(f func(r *ComposeRecordRaw) error) error { if err := dt.P.Reset(); err != nil { diff --git a/pkg/envoy/resource/compose_record_template.go b/pkg/envoy/resource/compose_record_template.go index 1195219f4..128587589 100644 --- a/pkg/envoy/resource/compose_record_template.go +++ b/pkg/envoy/resource/compose_record_template.go @@ -55,6 +55,10 @@ func NewComposeRecordTemplate(modRef, nsRef, name string, defaultable bool, fiel return r } +func (r *ComposeRecordTemplate) Resource() interface{} { + return nil +} + // MapToMappingTplSet converts the given string map to a propper MappingTplSet func MapToMappingTplSet(b map[string]string) MappingTplSet { mp := make(MappingTplSet, 0, len(b)) diff --git a/pkg/envoy/resource/dataset.go b/pkg/envoy/resource/dataset.go index 368019254..cc52868cb 100644 --- a/pkg/envoy/resource/dataset.go +++ b/pkg/envoy/resource/dataset.go @@ -24,3 +24,7 @@ func NewResourceDataset(name string, p provider) *ResourceDataset { return r } + +func (r *ResourceDataset) Resource() interface{} { + return nil +} diff --git a/pkg/envoy/resource/rbac_rule.go b/pkg/envoy/resource/rbac_rule.go index 7259da5ba..e13426af9 100644 --- a/pkg/envoy/resource/rbac_rule.go +++ b/pkg/envoy/resource/rbac_rule.go @@ -50,6 +50,10 @@ func NewRbacRule(res *rbac.Rule, refRole string, refRes *Ref, refResource string return r } +func (r *RbacRule) Resource() interface{} { + return r.Res +} + func (r *RbacRule) handleComposeRecord(res *rbac.Rule, refPath []*Ref) { // records are grouped under module diff --git a/pkg/envoy/resource/report.go b/pkg/envoy/resource/report.go index 813f4cc1e..f16df4a13 100644 --- a/pkg/envoy/resource/report.go +++ b/pkg/envoy/resource/report.go @@ -43,6 +43,10 @@ func NewReport(res *types.Report) *Report { return r } +func (r *Report) Resource() interface{} { + return r.Res +} + func (r *Report) AddReportSource(res *types.ReportDataSource) *ReportSource { s := &ReportSource{ base: &base{}, diff --git a/pkg/envoy/resource/resource_translation.go b/pkg/envoy/resource/resource_translation.go index 72cf5ee67..f2c9e33ed 100644 --- a/pkg/envoy/resource/resource_translation.go +++ b/pkg/envoy/resource/resource_translation.go @@ -48,6 +48,10 @@ func NewResourceTranslation(res types.ResourceTranslationSet, refResource string return r } +func (r *ResourceTranslation) Resource() interface{} { + return r.Res +} + func (r *ResourceTranslation) ReRef(old RefSet, new RefSet) { r.base.ReRef(old, new) diff --git a/pkg/envoy/resource/role.go b/pkg/envoy/resource/role.go index 0497ee48d..404a47863 100644 --- a/pkg/envoy/resource/role.go +++ b/pkg/envoy/resource/role.go @@ -28,6 +28,10 @@ func NewRole(rl *types.Role) *Role { return r } +func (r *Role) Resource() interface{} { + return r.Res +} + func (r *Role) SysID() uint64 { return r.Res.ID } diff --git a/pkg/envoy/resource/settings.go b/pkg/envoy/resource/settings.go index a7658180b..32dbedd38 100644 --- a/pkg/envoy/resource/settings.go +++ b/pkg/envoy/resource/settings.go @@ -47,3 +47,11 @@ func NewSetting(s *types.SettingValue) *Setting { return r } + +func (r *Setting) Resource() interface{} { + return r.Res +} + +func (r *Settings) Resource() interface{} { + return r.Res +} diff --git a/pkg/envoy/resource/template.go b/pkg/envoy/resource/template.go index 351b36774..8e5679c8b 100644 --- a/pkg/envoy/resource/template.go +++ b/pkg/envoy/resource/template.go @@ -28,6 +28,10 @@ func NewTemplate(t *types.Template) *Template { return r } +func (r *Template) Resource() interface{} { + return r.Res +} + func (r *Template) SysID() uint64 { return r.Res.ID } diff --git a/pkg/envoy/resource/types.go b/pkg/envoy/resource/types.go index 3f08c66eb..2394550c4 100644 --- a/pkg/envoy/resource/types.go +++ b/pkg/envoy/resource/types.go @@ -8,6 +8,7 @@ type ( Interface interface { Identifiers() Identifiers ResourceType() string + Resource() interface{} Refs() RefSet MarkPlaceholder() Placeholder() bool diff --git a/pkg/envoy/resource/user.go b/pkg/envoy/resource/user.go index c0fc1dac8..f38f822e2 100644 --- a/pkg/envoy/resource/user.go +++ b/pkg/envoy/resource/user.go @@ -28,6 +28,10 @@ func NewUser(u *types.User) *User { return r } +func (r *User) Resource() interface{} { + return r.Res +} + func (r *User) SysID() uint64 { return r.Res.ID }