From 7df16e9233d6b5402d4343f3cefb02461945c1de Mon Sep 17 00:00:00 2001 From: Delyan Raychev Date: Tue, 27 Oct 2020 09:14:25 -0700 Subject: [PATCH] debugger: Expose all feature flags via /debug/feature-flags endpoint (#1926) --- pkg/debugger/feature_flags.go | 19 +++++++++++++++++++ pkg/debugger/server.go | 14 ++++++++------ 2 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 pkg/debugger/feature_flags.go diff --git a/pkg/debugger/feature_flags.go b/pkg/debugger/feature_flags.go new file mode 100644 index 0000000000..d51f3c39a1 --- /dev/null +++ b/pkg/debugger/feature_flags.go @@ -0,0 +1,19 @@ +package debugger + +import ( + "encoding/json" + "fmt" + "net/http" + + "github.com/openservicemesh/osm/pkg/featureflags" +) + +func (ds debugServer) getFeatureFlags() http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if featureFlagsJSON, err := json.Marshal(featureflags.Features); err != nil { + log.Error().Err(err).Msgf("Error marshaling feature flags struct: %+v", featureflags.Features) + } else { + _, _ = fmt.Fprint(w, string(featureFlagsJSON)) + } + }) +} diff --git a/pkg/debugger/server.go b/pkg/debugger/server.go index 48e41afc31..77aa9ef2be 100644 --- a/pkg/debugger/server.go +++ b/pkg/debugger/server.go @@ -14,12 +14,14 @@ import ( // GetHandlers implements DebugServer interface and returns the rest of URLs and the handling functions. func (ds debugServer) GetHandlers() map[string]http.Handler { handlers := map[string]http.Handler{ - "/debug/certs": ds.getCertHandler(), - "/debug/xds": ds.getXDSHandler(), - "/debug/proxy": ds.getProxies(), - "/debug/policies": ds.getSMIPoliciesHandler(), - "/debug/config": ds.getOSMConfigHandler(), - "/debug/namespaces": ds.getMonitoredNamespacesHandler(), + "/debug/certs": ds.getCertHandler(), + "/debug/xds": ds.getXDSHandler(), + "/debug/proxy": ds.getProxies(), + "/debug/policies": ds.getSMIPoliciesHandler(), + "/debug/config": ds.getOSMConfigHandler(), + "/debug/namespaces": ds.getMonitoredNamespacesHandler(), + "/debug/feature-flags": ds.getFeatureFlags(), + // Pprof handlers "/debug/pprof/": http.HandlerFunc(pprof.Index), "/debug/pprof/cmdline": http.HandlerFunc(pprof.Cmdline),