Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ent only ADP Metrics #21681

Merged
merged 16 commits into from
Jul 10, 2023
3 changes: 3 additions & 0 deletions changelog/21681.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:improvement
sys/metrics (enterprise): Adds a gauge metric that tracks whether enterprise builtin secret plugins are enabled.
```
10 changes: 10 additions & 0 deletions helper/builtinplugins/registry_util.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
//go:build !enterprise

package builtinplugins

import "github.com/hashicorp/vault/sdk/helper/consts"

// IsBuiltinEntPlugin checks whether the plugin is an enterprise only builtin plugin
func (r *registry) IsBuiltinEntPlugin(name string, pluginType consts.PluginType) bool {
return false
}
15 changes: 15 additions & 0 deletions helper/testhelpers/corehelpers/corehelpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ import (
"github.com/mitchellh/go-testing-interface"
)

var externalPlugins = []string{"transform", "kmip", "keymgmt"}

// RetryUntil runs f until it returns a nil result or the timeout is reached.
// If a nil result hasn't been obtained by timeout, calls t.Fatal.
func RetryUntil(t testing.T, timeout time.Duration, f func() error) {
Expand Down Expand Up @@ -180,10 +182,23 @@ func (m *mockBuiltinRegistry) Keys(pluginType consts.PluginType) []string {
"pending-removal-test-plugin",
"approle",
}

case consts.PluginTypeSecrets:
return append(externalPlugins, "kv")
}

return []string{}
}

func (r *mockBuiltinRegistry) IsBuiltinEntPlugin(name string, pluginType consts.PluginType) bool {
for _, i := range externalPlugins {
if i == name {
return true
}
}
return false
}

func (m *mockBuiltinRegistry) Contains(name string, pluginType consts.PluginType) bool {
for _, key := range m.Keys(pluginType) {
if key == name {
Expand Down
1 change: 1 addition & 0 deletions vault/core.go
Original file line number Diff line number Diff line change
Expand Up @@ -3181,6 +3181,7 @@ type BuiltinRegistry interface {
Get(name string, pluginType consts.PluginType) (func() (interface{}, error), bool)
Keys(pluginType consts.PluginType) []string
DeprecationStatus(name string, pluginType consts.PluginType) (consts.DeprecationStatus, bool)
IsBuiltinEntPlugin(name string, pluginType consts.PluginType) bool
}

func (c *Core) AuditLogger() AuditLogger {
Expand Down
8 changes: 8 additions & 0 deletions vault/mount.go
Original file line number Diff line number Diff line change
Expand Up @@ -728,6 +728,10 @@ func (c *Core) mountInternal(ctx context.Context, entry *MountEntry, updateStora
if err := c.router.Mount(backend, entry.Path, entry, view); err != nil {
return err
}
if err = c.entBuiltinPluginMetrics(ctx, entry, 1); err != nil {
c.logger.Error("failed to emit enabled ent builtin plugin metrics", "error", err)
return err
}

// Re-evaluate filtered paths
if err := runFilteredPathsEvaluation(ctx, c, false); err != nil {
Expand Down Expand Up @@ -915,6 +919,10 @@ func (c *Core) unmountInternal(ctx context.Context, path string, updateStorage b
if err := c.router.Unmount(ctx, path); err != nil {
return err
}
if err = c.entBuiltinPluginMetrics(ctx, entry, -1); err != nil {
mpalmi marked this conversation as resolved.
Show resolved Hide resolved
c.logger.Error("failed to emit disabled ent builtin plugin metrics", "error", err)
return err
}

removePathCheckers(c, entry, viewPath)

Expand Down
4 changes: 4 additions & 0 deletions vault/mount_util.go
Original file line number Diff line number Diff line change
Expand Up @@ -72,3 +72,7 @@ func (c *Core) mountEntrySysView(entry *MountEntry) extendedSystemView {
}
return c.NewAcmeBillingSystemView(esi)
}

func (c *Core) entBuiltinPluginMetrics(ctx context.Context, entry *MountEntry, val float32) error {
return nil
}